Re: [PATCH 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc

From: Aditya Garg
Date: Wed Mar 12 2025 - 15:14:55 EST




> On 12 Mar 2025, at 9:05 PM, Sven Peter <sven@xxxxxxxxxxxxx> wrote:
>
> Hi,
>
>
> On Wed, Mar 12, 2025, at 13:03, Aditya Garg wrote:
>>>> On 12 Mar 2025, at 5:29 PM, Thomas Zimmermann <tzimmermann@xxxxxxx> wrote:
>>>
>>> Hi
>>>
>>>> Am 12.03.25 um 12:49 schrieb Aditya Garg:
>>>>
>>>>>> On 12 Mar 2025, at 5:16 PM, Thomas Zimmermann <tzimmermann@xxxxxxx> wrote:
>>>>>
>>>>> Hi
>>>>>
>>>>>> Am 12.03.25 um 10:05 schrieb Aditya Garg:
>>>>>> From: Hector Martin <marcan@xxxxxxxxx>
>>>>>>
>>>>>> %p4cc is designed for DRM/V4L2 FourCCs with their specific quirks, but
>>>>>> it's useful to be able to print generic 4-character codes formatted as
>>>>>> an integer. Extend it to add format specifiers for printing generic
>>>>>> 32-bit FourCCs with various endian semantics:
>>>>>>
>>>>>> %p4ch Host byte order
>>>>>> %p4cn Network byte order
>>>>>> %p4cl Little-endian
>>>>>> %p4cb Big-endian
>>>>> That looks like someone trying to be too clever for their own good. Just my 2 cts.
>>>> I don't understand what you are trying to say. Anyways, I thought it's obvious, but Petr's Ack is still left and thus cannot be merged into DRM for now unless he says so in this thread.
>>>
>>> I'm trying to say that the author of this patch found the %p4cc functionality and over-generalized the feature. Source code should express the idea of what it's doing in clear terms. %p4ch somehow doesn't do that for me. Printing 4 bytes in various orders without context seems arbitrary and confusing.
>>>
>>> (I don't really have a say here. I'm just asking to reconsider this change.)
>>
>> Ah I see. I'll checkout the macros you sent. The Asahi Linux SMC
>> drivers would need these as well, so I'll probably first wait for the
>> vsprintf maintainers and also Asahi Linux maintainers for their views.
>
> I don't have a strong opinion either way: for SMC I just need to print
> FourCC keys for debugging / information in a few places.
>
> I'm preparing the SMC driver for upstreaming again (after a two year delay :-()
> and was just going to use macros to print the SMC FourCC keys similar to
> DRM_MODE_FMT/DRM_MODE_ARG for now to keep the series smaller and revisit
> the topic later.
>
> Right now I have these in my local tree (only compile tested so far):
>
> #define SMC_KEY_FMT "%c%c%c%c (0x%08x)"
> #define SMC_KEY_ARG(k) (k)>>24, (k)>>16, (k)>>8, (k), (k)

That seems to be a nice alternative, which I guess Thomas was also suggesting.

> which are then used like this:
>
> dev_info(dev,
> "Initialized (%d keys " SMC_KEY_FMT " .. " SMC_KEY_FMT ")\n",
> smc->key_count, SMC_KEY_ARG(smc->first_key),
> SMC_KEY_ARG(smc->last_key));
>
> Best,
>
> Sven