lib/vsprintf: Add support for generic FOURCCs by extending %p4cc
authorHector Martin <marcan@marcan.st>
Mon, 31 Jan 2022 15:40:51 +0000 (00:40 +0900)
committerHector Martin <marcan@marcan.st>
Tue, 15 Feb 2022 09:57:44 +0000 (18:57 +0900)
commit2673fc45605f47d8741404f5fe27a1948ae4fe85
treeae96dae0ee19ec72eddbe4abec92cdeaf2cd9c2d
parent11c140423f34e589a6390d378267811426f82984
lib/vsprintf: Add support for generic FOURCCs by extending %p4cc

%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-endian
%p4cl Little-endian
%p4cb Big-endian
%p4cr Reverse-endian

The endianness determines how bytes are interpreted as a u32, and the
FOURCC is then always printed MSByte-first (this is the opposite of
V4L/DRM FOURCCs). This covers most practical cases, e.g. %p4cr would
allow printing LSByte-first FOURCCs stored in host endian order
(other than the hex form being in character order, not the integer
value).

Signed-off-by: Hector Martin <marcan@marcan.st>
Documentation/core-api/printk-formats.rst
lib/vsprintf.c