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>
Sat, 19 Feb 2022 10:31:31 +0000 (19:31 +0900)
commitf6d2ca26fd90677f3c015fc55934e74891896244
tree558fe497f7d94e7327f497f1553ce9ee9022e268
parent3c30cf91b5ecc7272b3d2942ae0505dd8320b81c
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