linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Use proper printk format in appletbdrm
@ 2025-03-13 11:18 Aditya Garg
  2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-13 11:18 UTC (permalink / raw)
  To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
	Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
	airlied@redhat.com, Simona Vetter, Steven Rostedt,
	Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
	Andrew Morton, apw@canonical.com, joe@perches.com,
	dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
  Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, Hector Martin,
	Asahi Linux Mailing List

The vsprint patch was originally being sent as a seperate patch [1], and
I was waiting it to be taken up. But since 6.15 merge window is near, a
potential delay between the drm and vsprintf patch might make the vsprint
patch as an unused addition in 6.15. So, I am sending it together. From
what I have observed in LKML, vsprintf patches are being preferred to be
taken upon by trees which are actually using them.

v2:
Remove printf tests, will merge later through Kees' tree

[1]: https://lore.kernel.org/lkml/1A03A5B4-93AC-4307-AE6A-4A4C4B7E9472@live.com/

Aditya Garg (1):
  drm/appletbdrm: use %p4cl instead of %p4cc

Hector Martin (1):
  lib/vsprintf: Add support for generic FourCCs by extending %p4cc

 Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
 drivers/gpu/drm/tiny/appletbdrm.c         |  4 +--
 lib/vsprintf.c                            | 35 +++++++++++++++++++----
 scripts/checkpatch.pl                     |  2 +-
 4 files changed, 64 insertions(+), 9 deletions(-)

-- 
2.47.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc
  2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
@ 2025-03-13 11:19 ` Aditya Garg
  2025-03-14  3:49   ` Aditya Garg
  2025-03-13 11:20 ` [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc Aditya Garg
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Aditya Garg @ 2025-03-13 11:19 UTC (permalink / raw)
  To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
	Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
	airlied@redhat.com, Simona Vetter, Steven Rostedt,
	Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
	Andrew Morton, apw@canonical.com, joe@perches.com,
	dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
  Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, Hector Martin,
	Asahi Linux Mailing List

From: Hector Martin <marcan@marcan.st>

%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

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. %p4cn would
allow printing LSByte-first FourCCs stored in host endian order
(other than the hex form being in character order, not the integer
value).

Acked-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Hector Martin <marcan@marcan.st>
Signed-off-by: Aditya Garg <gargaditya08@live.com>
---
 Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
 lib/vsprintf.c                            | 35 +++++++++++++++++++----
 scripts/checkpatch.pl                     |  2 +-
 3 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/Documentation/core-api/printk-formats.rst b/Documentation/core-api/printk-formats.rst
index ecccc0473..bd420e8aa 100644
--- a/Documentation/core-api/printk-formats.rst
+++ b/Documentation/core-api/printk-formats.rst
@@ -648,6 +648,38 @@ Examples::
 	%p4cc	Y10  little-endian (0x20303159)
 	%p4cc	NV12 big-endian (0xb231564e)
 
+Generic FourCC code
+-------------------
+
+::
+	%p4c[hnlb]	gP00 (0x67503030)
+
+Print a generic FourCC code, as both ASCII characters and its numerical
+value as hexadecimal.
+
+The generic FourCC code is always printed in the big-endian format,
+the most significant byte first. This is the opposite of V4L/DRM FourCCs.
+
+The additional ``h``, ``n``, ``l``, and ``b`` specifiers define what
+endianness is used to load the stored bytes. The data might be interpreted
+using the host byte order, network byte order, little-endian, or big-endian.
+
+Passed by reference.
+
+Examples for a little-endian machine, given &(u32)0x67503030::
+
+	%p4ch	gP00 (0x67503030)
+	%p4cn	00Pg (0x30305067)
+	%p4cl	gP00 (0x67503030)
+	%p4cb	00Pg (0x30305067)
+
+Examples for a big-endian machine, given &(u32)0x67503030::
+
+	%p4ch	gP00 (0x67503030)
+	%p4cn	00Pg (0x30305067)
+	%p4cl	00Pg (0x30305067)
+	%p4cb	gP00 (0x67503030)
+
 Rust
 ----
 
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 56fe96319..56511a994 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -1781,27 +1781,50 @@ char *fourcc_string(char *buf, char *end, const u32 *fourcc,
 	char output[sizeof("0123 little-endian (0x01234567)")];
 	char *p = output;
 	unsigned int i;
+	bool pixel_fmt = false;
 	u32 orig, val;
 
-	if (fmt[1] != 'c' || fmt[2] != 'c')
+	if (fmt[1] != 'c')
 		return error_string(buf, end, "(%p4?)", spec);
 
 	if (check_pointer(&buf, end, fourcc, spec))
 		return buf;
 
 	orig = get_unaligned(fourcc);
-	val = orig & ~BIT(31);
+	switch (fmt[2]) {
+	case 'h':
+		break;
+	case 'n':
+		orig = swab32(orig);
+		break;
+	case 'l':
+		orig = (__force u32)cpu_to_le32(orig);
+		break;
+	case 'b':
+		orig = (__force u32)cpu_to_be32(orig);
+		break;
+	case 'c':
+		/* Pixel formats are printed LSB-first */
+		pixel_fmt = true;
+		break;
+	default:
+		return error_string(buf, end, "(%p4?)", spec);
+	}
+
+	val = pixel_fmt ? swab32(orig & ~BIT(31)) : orig;
 
 	for (i = 0; i < sizeof(u32); i++) {
-		unsigned char c = val >> (i * 8);
+		unsigned char c = val >> ((3 - i) * 8);
 
 		/* Print non-control ASCII characters as-is, dot otherwise */
 		*p++ = isascii(c) && isprint(c) ? c : '.';
 	}
 
-	*p++ = ' ';
-	strcpy(p, orig & BIT(31) ? "big-endian" : "little-endian");
-	p += strlen(p);
+	if (pixel_fmt) {
+		*p++ = ' ';
+		strcpy(p, orig & BIT(31) ? "big-endian" : "little-endian");
+		p += strlen(p);
+	}
 
 	*p++ = ' ';
 	*p++ = '(';
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7b28ad331..5595a0898 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6904,7 +6904,7 @@ sub process {
 					    ($extension eq "f" &&
 					     defined $qualifier && $qualifier !~ /^w/) ||
 					    ($extension eq "4" &&
-					     defined $qualifier && $qualifier !~ /^cc/)) {
+					     defined $qualifier && $qualifier !~ /^c[hnlbc]/)) {
 						$bad_specifier = $specifier;
 						last;
 					}
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc
  2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
  2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
@ 2025-03-13 11:20 ` Aditya Garg
  2025-03-13 14:29 ` [PATCH v2 0/2] Use proper printk format in appletbdrm Alyssa Rosenzweig
  2025-03-21 13:29 ` Aditya Garg
  3 siblings, 0 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-13 11:20 UTC (permalink / raw)
  To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
	Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
	airlied@redhat.com, Simona Vetter, Steven Rostedt,
	Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
	Andrew Morton, apw@canonical.com, joe@perches.com,
	dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
  Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, Hector Martin,
	Asahi Linux Mailing List

From: Aditya Garg <gargaditya08@live.com>

Due to lack of a proper printk format, %p4cc was being used instead of
%p4cl for the purpose of printing FourCCs. But the disadvange was that
they were being printed in a reverse order. %p4cl should correct this
issue.

Signed-off-by: Aditya Garg <gargaditya08@live.com>
---
 drivers/gpu/drm/tiny/appletbdrm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/tiny/appletbdrm.c b/drivers/gpu/drm/tiny/appletbdrm.c
index 703b9a41a..751b05753 100644
--- a/drivers/gpu/drm/tiny/appletbdrm.c
+++ b/drivers/gpu/drm/tiny/appletbdrm.c
@@ -212,7 +212,7 @@ static int appletbdrm_read_response(struct appletbdrm_device *adev,
 	}
 
 	if (response->msg != expected_response) {
-		drm_err(drm, "Unexpected response from device (expected %p4cc found %p4cc)\n",
+		drm_err(drm, "Unexpected response from device (expected %p4cl found %p4cl)\n",
 			&expected_response, &response->msg);
 		return -EIO;
 	}
@@ -286,7 +286,7 @@ static int appletbdrm_get_information(struct appletbdrm_device *adev)
 	}
 
 	if (pixel_format != APPLETBDRM_PIXEL_FORMAT) {
-		drm_err(drm, "Encountered unknown pixel format (%p4cc)\n", &pixel_format);
+		drm_err(drm, "Encountered unknown pixel format (%p4cl)\n", &pixel_format);
 		ret = -EINVAL;
 		goto free_info;
 	}
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/2] Use proper printk format in appletbdrm
  2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
  2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
  2025-03-13 11:20 ` [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc Aditya Garg
@ 2025-03-13 14:29 ` Alyssa Rosenzweig
  2025-03-21 13:29 ` Aditya Garg
  3 siblings, 0 replies; 6+ messages in thread
From: Alyssa Rosenzweig @ 2025-03-13 14:29 UTC (permalink / raw)
  To: Aditya Garg
  Cc: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
	Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
	airlied@redhat.com, Simona Vetter, Steven Rostedt,
	Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
	Andrew Morton, apw@canonical.com, joe@perches.com,
	dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com,
	Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, Hector Martin,
	Asahi Linux Mailing List

series looks ok to me. Who is pushing this to drm-misc-next? (I can if
nobody else does)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc
  2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
@ 2025-03-14  3:49   ` Aditya Garg
  0 siblings, 0 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-14  3:49 UTC (permalink / raw)
  To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
	Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
	airlied@redhat.com, Simona Vetter, Steven Rostedt,
	Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
	Andrew Morton, apw@canonical.com, joe@perches.com,
	dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com,
	Alyssa Rosenzweig
  Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, Hector Martin,
	Asahi Linux Mailing List



> On 13 Mar 2025, at 4:49 PM, Aditya Garg <gargaditya08@live.com> wrote:
> 
> From: Hector Martin <marcan@marcan.st>
> 
> %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
> 
> 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. %p4cn would
> allow printing LSByte-first FourCCs stored in host endian order
> (other than the hex form being in character order, not the integer
> value).
> 
> Acked-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Petr Mladek <pmladek@suse.com>
> Tested-by: Petr Mladek <pmladek@suse.com>
> Signed-off-by: Hector Martin <marcan@marcan.st>
> Signed-off-by: Aditya Garg <gargaditya08@live.com>
> ---
> Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
> lib/vsprintf.c                            | 35 +++++++++++++++++++----
> scripts/checkpatch.pl                     |  2 +-
> 3 files changed, 62 insertions(+), 7 deletions(-)

FWIW, the test_printf.c part, as suggested by Petr, which was removed in v2, has been sent to Kees here:

https://lore.kernel.org/lkml/4378DDFE-3263-497A-8364-433DC1984FEE@live.com/T/#u

The series should be good to merge now.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/2] Use proper printk format in appletbdrm
  2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
                   ` (2 preceding siblings ...)
  2025-03-13 14:29 ` [PATCH v2 0/2] Use proper printk format in appletbdrm Alyssa Rosenzweig
@ 2025-03-21 13:29 ` Aditya Garg
  3 siblings, 0 replies; 6+ messages in thread
From: Aditya Garg @ 2025-03-21 13:29 UTC (permalink / raw)
  To: Petr Mladek, keescook@chromium.org, Andy Shevchenko, Sven Peter,
	Thomas Zimmermann, Aun-Ali Zaidi, Maxime Ripard,
	airlied@redhat.com, Simona Vetter, Steven Rostedt,
	Rasmus Villemoes, Sergey Senozhatsky, Jonathan Corbet,
	Andrew Morton, apw@canonical.com, joe@perches.com,
	dwaipayanray1@gmail.com, lukas.bulwahn@gmail.com
  Cc: Linux Kernel Mailing List, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, Hector Martin, asahi@lists.linux.dev

Hi

> On 13 Mar 2025, at 4:48 PM, Aditya Garg <gargaditya08@live.com> wrote:
> 
> The vsprint patch was originally being sent as a seperate patch [1], and
> I was waiting it to be taken up. But since 6.15 merge window is near, a
> potential delay between the drm and vsprintf patch might make the vsprint
> patch as an unused addition in 6.15. So, I am sending it together. From
> what I have observed in LKML, vsprintf patches are being preferred to be
> taken upon by trees which are actually using them.
> 
> v2:
> Remove printf tests, will merge later through Kees' tree
> 
> [1]: https://lore.kernel.org/lkml/1A03A5B4-93AC-4307-AE6A-4A4C4B7E9472@live.com/
> 
> Aditya Garg (1):
>  drm/appletbdrm: use %p4cl instead of %p4cc
> 
> Hector Martin (1):
>  lib/vsprintf: Add support for generic FourCCs by extending %p4cc
> 
> Documentation/core-api/printk-formats.rst | 32 +++++++++++++++++++++
> drivers/gpu/drm/tiny/appletbdrm.c         |  4 +--
> lib/vsprintf.c                            | 35 +++++++++++++++++++----
> scripts/checkpatch.pl                     |  2 +-
> 4 files changed, 64 insertions(+), 9 deletions(-)

Could I have an update on this? Looks like freedesktop.org is back btw.
> 
> --
> 2.47.1
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-03-21 13:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-13 11:18 [PATCH v2 0/2] Use proper printk format in appletbdrm Aditya Garg
2025-03-13 11:19 ` [PATCH v2 1/2] lib/vsprintf: Add support for generic FourCCs by extending %p4cc Aditya Garg
2025-03-14  3:49   ` Aditya Garg
2025-03-13 11:20 ` [PATCH v2 2/2] drm/appletbdrm: use %p4cl instead of %p4cc Aditya Garg
2025-03-13 14:29 ` [PATCH v2 0/2] Use proper printk format in appletbdrm Alyssa Rosenzweig
2025-03-21 13:29 ` Aditya Garg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).