* [PATCH v3 1/5] docs: uapi: media: Document Raspberry Pi NV12 column format
2025-04-23 17:20 [PATCH v3 0/5] Raspberry Pi HEVC decoder driver Dave Stevenson
@ 2025-04-23 17:20 ` Dave Stevenson
2025-05-24 0:30 ` Nicolas Dufresne
2025-04-23 17:20 ` [PATCH v3 2/5] media: ioctl: Add pixel formats NV12MT_COL128 and NV12MT_10_COL128 Dave Stevenson
` (2 subsequent siblings)
3 siblings, 1 reply; 13+ messages in thread
From: Dave Stevenson @ 2025-04-23 17:20 UTC (permalink / raw)
To: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia
Cc: John Cox, linux-media, linux-kernel, devicetree, linux-rpi-kernel,
linux-arm-kernel, Dave Stevenson
The Raspberry Pi HEVC decoder uses a tiled format based on
columns for 8 and 10 bit YUV images, so document them as
NV12MT_COL128 and NV12MT_10_COL128.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
.../userspace-api/media/v4l/pixfmt-yuv-planar.rst | 42 ++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
index b788f6933855..b5b590f234b0 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
@@ -827,6 +827,48 @@ Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian ord
- Cb\ :sub:`11`
- Cr\ :sub:`11`
+V4L2_PIX_FMT_NV12MT_COL128 and V4L2_PIX_FMT_NV12MT_10_COL128
+------------------------------------------------------------
+
+``V4L2_PIX_FMT_NV12MT_COL128`` is a tiled version of
+``V4L2_PIX_FMT_NV12M`` where the two planes are split into 128 byte wide columns
+of Y or interleaved CbCr.
+
+V4L2_PIX_FMT_NV12MT_10_COL128 expands that as a 10 bit format where 3 10 bit
+values are packed into a 32bit word. A 128 byte wide column therefore holds 96
+samples (either Y or interleaved CrCb). That effectively makes it 6 values in a
+64 bit word for the CbCr plane, as the values always go in pairs.
+
+Bit-packed representation.
+
+.. tabularcolumns:: |p{1.2cm}||p{1.2cm}||p{1.2cm}||p{1.2cm}|p{3.2cm}|p{3.2cm}|
+
+.. flat-table::
+ :header-rows: 0
+ :stub-columns: 0
+ :widths: 8 8 8 8
+
+ * - Y'\ :sub:`00[7:0]`
+ - Y'\ :sub:`01[5:0] (bits 7--2)` Y'\ :sub:`00[9:8]`\ (bits 1--0)
+ - Y'\ :sub:`02[3:0] (bits 7--4)` Y'\ :sub:`01[9:6]`\ (bits 3--0)
+ - unused (bits 7--6)` Y'\ :sub:`02[9:4]`\ (bits 5--0)
+
+.. tabularcolumns:: |p{1.2cm}||p{1.2cm}||p{1.2cm}||p{1.2cm}|p{3.2cm}|p{3.2cm}|
+
+.. flat-table::
+ :header-rows: 0
+ :stub-columns: 0
+ :widths: 12 12 12 12 12 12 12 12
+
+ * - Cb\ :sub:`00[7:0]`
+ - Cr\ :sub:`00[5:0]`\ (bits 7--2) Cb\ :sub:`00[9:8]`\ (bits 1--0)
+ - Cb\ :sub:`01[3:0]`\ (bits 7--4) Cr\ :sub:`00[9:6]`\ (bits 3--0)
+ - unused (bits 7--6) Cb\ :sub:`02[9:4]`\ (bits 5--0)
+ - Cr\ :sub:`01[7:0]`
+ - Cb\ :sub:`02[5:0]`\ (bits 7--2) Cr\ :sub:`01[9:8]`\ (bits 1--0)
+ - Cr\ :sub:`02[3:0]`\ (bits 7--4) Cb\ :sub:`02[9:6]`\ (bits 3--0)
+ - unused (bits 7--6) Cr\ :sub:`02[9:4]`\ (bits 5--0)
+
Fully Planar YUV Formats
========================
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 1/5] docs: uapi: media: Document Raspberry Pi NV12 column format
2025-04-23 17:20 ` [PATCH v3 1/5] docs: uapi: media: Document Raspberry Pi NV12 column format Dave Stevenson
@ 2025-05-24 0:30 ` Nicolas Dufresne
0 siblings, 0 replies; 13+ messages in thread
From: Nicolas Dufresne @ 2025-05-24 0:30 UTC (permalink / raw)
To: Dave Stevenson, Sakari Ailus, Laurent Pinchart,
Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia
Cc: John Cox, linux-media, linux-kernel, devicetree, linux-rpi-kernel,
linux-arm-kernel
Le mercredi 23 avril 2025 à 18:20 +0100, Dave Stevenson a écrit :
> The Raspberry Pi HEVC decoder uses a tiled format based on
> columns for 8 and 10 bit YUV images, so document them as
> NV12MT_COL128 and NV12MT_10_COL128.
>
> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
> ---
> .../userspace-api/media/v4l/pixfmt-yuv-planar.rst | 42 ++++++++++++++++++++++
> 1 file changed, 42 insertions(+)
>
> diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-
> api/media/v4l/pixfmt-yuv-planar.rst
> index b788f6933855..b5b590f234b0 100644
> --- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
> +++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
> @@ -827,6 +827,48 @@ Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian ord
> - Cb\ :sub:`11`
> - Cr\ :sub:`11`
>
> +V4L2_PIX_FMT_NV12MT_COL128 and V4L2_PIX_FMT_NV12MT_10_COL128
> +------------------------------------------------------------
> +
> +``V4L2_PIX_FMT_NV12MT_COL128`` is a tiled version of
> +``V4L2_PIX_FMT_NV12M`` where the two planes are split into 128 byte wide columns
> +of Y or interleaved CbCr.
> +
> +V4L2_PIX_FMT_NV12MT_10_COL128 expands that as a 10 bit format where 3 10 bit
> +values are packed into a 32bit word. A 128 byte wide column therefore holds 96
> +samples (either Y or interleaved CrCb). That effectively makes it 6 values in a
> +64 bit word for the CbCr plane, as the values always go in pairs.
Could be nice to mention that this has a verticalement alignment of 8, allowing
to represent it as a 128x8 tiled format with a column layout. This was handy for
the GStreamer integration your showed me.
Nicolas
> +
> +Bit-packed representation.
> +
> +.. tabularcolumns:: |p{1.2cm}||p{1.2cm}||p{1.2cm}||p{1.2cm}|p{3.2cm}|p{3.2cm}|
> +
> +.. flat-table::
> + :header-rows: 0
> + :stub-columns: 0
> + :widths: 8 8 8 8
> +
> + * - Y'\ :sub:`00[7:0]`
> + - Y'\ :sub:`01[5:0] (bits 7--2)` Y'\ :sub:`00[9:8]`\ (bits 1--0)
> + - Y'\ :sub:`02[3:0] (bits 7--4)` Y'\ :sub:`01[9:6]`\ (bits 3--0)
> + - unused (bits 7--6)` Y'\ :sub:`02[9:4]`\ (bits 5--0)
> +
> +.. tabularcolumns:: |p{1.2cm}||p{1.2cm}||p{1.2cm}||p{1.2cm}|p{3.2cm}|p{3.2cm}|
> +
> +.. flat-table::
> + :header-rows: 0
> + :stub-columns: 0
> + :widths: 12 12 12 12 12 12 12 12
> +
> + * - Cb\ :sub:`00[7:0]`
> + - Cr\ :sub:`00[5:0]`\ (bits 7--2) Cb\ :sub:`00[9:8]`\ (bits 1--0)
> + - Cb\ :sub:`01[3:0]`\ (bits 7--4) Cr\ :sub:`00[9:6]`\ (bits 3--0)
> + - unused (bits 7--6) Cb\ :sub:`02[9:4]`\ (bits 5--0)
> + - Cr\ :sub:`01[7:0]`
> + - Cb\ :sub:`02[5:0]`\ (bits 7--2) Cr\ :sub:`01[9:8]`\ (bits 1--0)
> + - Cr\ :sub:`02[3:0]`\ (bits 7--4) Cb\ :sub:`02[9:6]`\ (bits 3--0)
> + - unused (bits 7--6) Cr\ :sub:`02[9:4]`\ (bits 5--0)
> +
>
> Fully Planar YUV Formats
> ========================
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 2/5] media: ioctl: Add pixel formats NV12MT_COL128 and NV12MT_10_COL128
2025-04-23 17:20 [PATCH v3 0/5] Raspberry Pi HEVC decoder driver Dave Stevenson
2025-04-23 17:20 ` [PATCH v3 1/5] docs: uapi: media: Document Raspberry Pi NV12 column format Dave Stevenson
@ 2025-04-23 17:20 ` Dave Stevenson
2025-04-23 17:20 ` [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder Dave Stevenson
2025-04-23 17:20 ` [PATCH v3 5/5] arm: dts: bcm2711-rpi: Add HEVC decoder node Dave Stevenson
3 siblings, 0 replies; 13+ messages in thread
From: Dave Stevenson @ 2025-04-23 17:20 UTC (permalink / raw)
To: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia
Cc: John Cox, linux-media, linux-kernel, devicetree, linux-rpi-kernel,
linux-arm-kernel, Dave Stevenson
Add V4L2_PIXFMT_NV12MT_COL128 and V4L2_PIXFMT_NV12MT_10_COL128
to describe the Raspberry Pi HEVC decoder NV12 multiplanar formats.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
drivers/media/v4l2-core/v4l2-ioctl.c | 2 ++
include/uapi/linux/videodev2.h | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index a16fb44c7246..9405e1391617 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1379,7 +1379,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
case V4L2_PIX_FMT_NV16M: descr = "Y/UV 4:2:2 (N-C)"; break;
case V4L2_PIX_FMT_NV61M: descr = "Y/VU 4:2:2 (N-C)"; break;
case V4L2_PIX_FMT_NV12MT: descr = "Y/UV 4:2:0 (64x32 MB, N-C)"; break;
+ case V4L2_PIX_FMT_NV12MT_COL128: descr = "Y/CbCr 4:2:0 (128b cols)"; break;
case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/UV 4:2:0 (16x16 MB, N-C)"; break;
+ case V4L2_PIX_FMT_NV12MT_10_COL128: descr = "10-bit Y/CbCr 4:2:0 (128b cols)"; break;
case V4L2_PIX_FMT_P012M: descr = "12-bit Y/UV 4:2:0 (N-C)"; break;
case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-C)"; break;
case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break;
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index c8cb2796130f..fbccb471e3cb 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -687,6 +687,10 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
+#define V4L2_PIX_FMT_NV12MT_COL128 v4l2_fourcc('N', 'c', '1', '2') /* 12 Y/CbCr 4:2:0 128 pixel wide column */
+#define V4L2_PIX_FMT_NV12MT_10_COL128 v4l2_fourcc('N', 'c', '3', '0')
+ /* Y/CbCr 4:2:0 10bpc, 3x10 packed as 4 bytes in a 128 bytes / 96 pixel wide column */
+
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-04-23 17:20 [PATCH v3 0/5] Raspberry Pi HEVC decoder driver Dave Stevenson
2025-04-23 17:20 ` [PATCH v3 1/5] docs: uapi: media: Document Raspberry Pi NV12 column format Dave Stevenson
2025-04-23 17:20 ` [PATCH v3 2/5] media: ioctl: Add pixel formats NV12MT_COL128 and NV12MT_10_COL128 Dave Stevenson
@ 2025-04-23 17:20 ` Dave Stevenson
2025-04-25 7:53 ` Krzysztof Kozlowski
2025-04-25 7:54 ` Krzysztof Kozlowski
2025-04-23 17:20 ` [PATCH v3 5/5] arm: dts: bcm2711-rpi: Add HEVC decoder node Dave Stevenson
3 siblings, 2 replies; 13+ messages in thread
From: Dave Stevenson @ 2025-04-23 17:20 UTC (permalink / raw)
To: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia
Cc: John Cox, linux-media, linux-kernel, devicetree, linux-rpi-kernel,
linux-arm-kernel, Dave Stevenson
Adds a binding for the HEVC decoder found on the BCM2711 / Raspberry Pi 4,
and BCM2712 / Raspberry Pi 5.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
.../bindings/media/raspberrypi,hevc-dec.yaml | 70 ++++++++++++++++++++++
1 file changed, 70 insertions(+)
diff --git a/Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml b/Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml
new file mode 100644
index 000000000000..b86534f2689f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/raspberrypi,hevc-dec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Raspberry Pi HEVC Decoder
+
+maintainers:
+ - John Cox <john.cox@raspberrypi.com>
+ - Dom Cobley <dom@raspberrypi.com>
+ - Dave Stevenson <dave.stevenson@raspberrypi.com>
+ - Raspberry Pi internal review list <kernel-list@raspberrypi.com>
+
+description:
+ The Raspberry Pi HEVC decoder is a hardware video decode accelerator block
+ found in the BCM2711 and BCM2712 processors used on Raspberry Pi 4 and 5
+ boards respectively.
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - brcm,bcm2711-hevc-dec
+ - brcm,bcm2712-hevc-dec
+ - const: raspberrypi,hevc-dec
+
+ reg:
+ items:
+ - description: The HEVC main register region
+ - description: The Interrupt control register region
+
+ reg-names:
+ items:
+ - const: hevc
+ - const: intc
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: The HEVC block clock
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - interrupts
+ - clocks
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ video-codec@7eb10000 {
+ compatible = "brcm,bcm2711-hevc-dec", "raspberrypi,hevc-dec";
+ reg = <0x7eb00000 0x10000>, /* HEVC */
+ <0x7eb10000 0x1000>; /* INTC */
+ reg-names = "hevc",
+ "intc";
+
+ interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+
+ clocks = <&clk 0>;
+ };
+
+...
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-04-23 17:20 ` [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder Dave Stevenson
@ 2025-04-25 7:53 ` Krzysztof Kozlowski
2025-04-28 10:03 ` Dave Stevenson
2025-04-25 7:54 ` Krzysztof Kozlowski
1 sibling, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-25 7:53 UTC (permalink / raw)
To: Dave Stevenson
Cc: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia, John Cox, linux-media, linux-kernel,
devicetree, linux-rpi-kernel, linux-arm-kernel
On Wed, Apr 23, 2025 at 06:20:20PM GMT, Dave Stevenson wrote:
> Adds a binding for the HEVC decoder found on th +maintainers:
> + - John Cox <john.cox@raspberrypi.com>
> + - Dom Cobley <dom@raspberrypi.com>
> + - Dave Stevenson <dave.stevenson@raspberrypi.com>
> + - Raspberry Pi internal review list <kernel-list@raspberrypi.com>
Drop, no mailing lists in bindings maintainers. These must be people.
> +
> +description:
> + The Raspberry Pi HEVC decoder is a hardware video decode accelerator block
> + found in the BCM2711 and BCM2712 processors used on Raspberry Pi 4 and 5
> + boards respectively.
> +
> +properties:
> + compatible:
> + items:
> + - enum:
> + - brcm,bcm2711-hevc-dec
> + - brcm,bcm2712-hevc-dec
> + - const: raspberrypi,hevc-dec
Not what Rob asked. You should use specific SoC compatible as fallback.
You referred to file "raspberrypi,pisbe.yaml" before, but there is no
such file in the next.
Before you reply that there is a binding using different rules: well,
there is always poor code. Above two comments are repeated, especially
this about specific compatible - all the time, so these are not new
rules. These are given in reviews since some years.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-04-25 7:53 ` Krzysztof Kozlowski
@ 2025-04-28 10:03 ` Dave Stevenson
2025-04-28 17:56 ` Krzysztof Kozlowski
0 siblings, 1 reply; 13+ messages in thread
From: Dave Stevenson @ 2025-04-28 10:03 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia, John Cox, linux-media, linux-kernel,
devicetree, linux-rpi-kernel, linux-arm-kernel
Hi Krzysztof
On Fri, 25 Apr 2025 at 08:53, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On Wed, Apr 23, 2025 at 06:20:20PM GMT, Dave Stevenson wrote:
> > Adds a binding for the HEVC decoder found on th +maintainers:
> > + - John Cox <john.cox@raspberrypi.com>
> > + - Dom Cobley <dom@raspberrypi.com>
> > + - Dave Stevenson <dave.stevenson@raspberrypi.com>
>
> > + - Raspberry Pi internal review list <kernel-list@raspberrypi.com>
>
> Drop, no mailing lists in bindings maintainers. These must be people.
Ack
> > +
> > +description:
> > + The Raspberry Pi HEVC decoder is a hardware video decode accelerator block
> > + found in the BCM2711 and BCM2712 processors used on Raspberry Pi 4 and 5
> > + boards respectively.
> > +
> > +properties:
> > + compatible:
> > + items:
> > + - enum:
> > + - brcm,bcm2711-hevc-dec
> > + - brcm,bcm2712-hevc-dec
> > + - const: raspberrypi,hevc-dec
>
> Not what Rob asked. You should use specific SoC compatible as fallback.
In which case I don't understand what Rob was asking for.
I asked for clarification in [1], but got no reply. Sending a new
version has at least got an answer, but I'm none the wiser.
Staring at this trying to work out your meaning, you want the generic
first, and SoC specific second? ie
+ compatible:
+ items:
+ - const: raspberrypi,hevc-dec
+ - enum:
+ - brcm,bcm2711-hevc-dec
+ - brcm,bcm2712-hevc-dec
> You referred to file "raspberrypi,pisbe.yaml" before, but there is no
> such file in the next.
Typo.
https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/media/raspberrypi%2Cpispbe.yaml
Reviewed by Rob only just over a year ago [2]
> Before you reply that there is a binding using different rules: well,
> there is always poor code. Above two comments are repeated, especially
> this about specific compatible - all the time, so these are not new
> rules. These are given in reviews since some years.
My Google-foo is totally failing with the only directly relevant
mention of "fallback compatible" I find is [3], which just says to use
them.
You're effectively saying I can't take anything in the kernel tree as
being a valid example as it could be poor code, and a layman such as
myself has no way of telling.
Could you please point me at documentation and examples I can rely on,
or educate me with what is wanted in this situation to avoid me having
to guess?
A further mailing list search has brought up [4] which is a thread
with yourself from 2 years ago which looks to be a very similar
situation. Other than missing the const on the SoC strings (although
that isn't in the merged version of cnm,wave521c.yaml), and two SoC
specific strings, I'm not seeing an obvious difference between there
and here either.
Many thanks
Dave
> Best regards,
> Krzysztof
[1] https://lore.kernel.org/linux-media/CAPY8ntD3Frq5HzV06OrS1051QfjJFzvqs9H4mUkVnd4QKqiMhg@mail.gmail.com/
[2] https://www.spinics.net/lists/linux-media/msg250095.html
[3] https://www.kernel.org/doc/html/latest/devicetree/bindings/writing-bindings.html#properties
[4] https://patchwork.kernel.org/project/linux-arm-kernel/patch/20230929-wave5_v13_media_master-v13-6-5ac60ccbf2ce@collabora.com/#25567148
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-04-28 10:03 ` Dave Stevenson
@ 2025-04-28 17:56 ` Krzysztof Kozlowski
2025-06-23 17:54 ` Dave Stevenson
0 siblings, 1 reply; 13+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-28 17:56 UTC (permalink / raw)
To: Dave Stevenson
Cc: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia, John Cox, linux-media, linux-kernel,
devicetree, linux-rpi-kernel, linux-arm-kernel
On 28/04/2025 12:03, Dave Stevenson wrote:
> Hi Krzysztof
>
> On Fri, 25 Apr 2025 at 08:53, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>>
>> On Wed, Apr 23, 2025 at 06:20:20PM GMT, Dave Stevenson wrote:
>>> Adds a binding for the HEVC decoder found on th +maintainers:
>>> + - John Cox <john.cox@raspberrypi.com>
>>> + - Dom Cobley <dom@raspberrypi.com>
>>> + - Dave Stevenson <dave.stevenson@raspberrypi.com>
>>
>>> + - Raspberry Pi internal review list <kernel-list@raspberrypi.com>
>>
>> Drop, no mailing lists in bindings maintainers. These must be people.
>
> Ack
>
>>> +
>>> +description:
>>> + The Raspberry Pi HEVC decoder is a hardware video decode accelerator block
>>> + found in the BCM2711 and BCM2712 processors used on Raspberry Pi 4 and 5
>>> + boards respectively.
>>> +
>>> +properties:
>>> + compatible:
>>> + items:
>>> + - enum:
>>> + - brcm,bcm2711-hevc-dec
>>> + - brcm,bcm2712-hevc-dec
>>> + - const: raspberrypi,hevc-dec
>>
>> Not what Rob asked. You should use specific SoC compatible as fallback.
>
> In which case I don't understand what Rob was asking for.
> I asked for clarification in [1], but got no reply. Sending a new
> version has at least got an answer, but I'm none the wiser.
>
> Staring at this trying to work out your meaning, you want the generic
> first, and SoC specific second? ie
> + compatible:
> + items:
> + - const: raspberrypi,hevc-dec
Drop
> + - enum:
That's enum, not fallback.
> + - brcm,bcm2711-hevc-dec
> + - brcm,bcm2712-hevc-dec
>
>> You referred to file "raspberrypi,pisbe.yaml" before, but there is no
>> such file in the next.
>
> Typo.
> https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/media/raspberrypi%2Cpispbe.yaml
> Reviewed by Rob only just over a year ago [2]
There were some discussions and reasons with explanations.
Feel free to use same arguments and accurately describe the hardware, so
we won't be needing to ask usual questions.
Anyway, we asked for fallback, so you need items, just like every SoC
compatible (see also example schema).
>
>> Before you reply that there is a binding using different rules: well,
>> there is always poor code. Above two comments are repeated, especially
>> this about specific compatible - all the time, so these are not new
>> rules. These are given in reviews since some years.
>
> My Google-foo is totally failing with the only directly relevant
> mention of "fallback compatible" I find is [3], which just says to use
> them.
>
> You're effectively saying I can't take anything in the kernel tree as
> being a valid example as it could be poor code, and a layman such as
> myself has no way of telling.
No, I am saying that argument "I saw someone doing this, so I am allowed
to do the same" is not correct. There are good and bad examples. For
example in my talks I mentioned good examples. The list of good examples
was not accepted to the kernel so well... I just use as an example any
recent Qcom binding using specific compatibles.
> Could you please point me at documentation and examples I can rely on,
> or educate me with what is wanted in this situation to avoid me having
> to guess?
>
> A further mailing list search has brought up [4] which is a thread
> with yourself from 2 years ago which looks to be a very similar
> situation. Other than missing the const on the SoC strings (although
> that isn't in the merged version of cnm,wave521c.yaml), and two SoC
> specific strings, I'm not seeing an obvious difference between there
> and here either.
How is the [4] relevant? That's IP block from other vendor.
https://www.kernel.org/doc/html/latest/devicetree/bindings/writing-bindings.html#properties
https://elixir.bootlin.com/linux/v6.3-rc6/source/Documentation/devicetree/bindings/sound/nvidia,tegra210-ope.yaml#L31
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-04-28 17:56 ` Krzysztof Kozlowski
@ 2025-06-23 17:54 ` Dave Stevenson
2025-06-24 6:01 ` Krzysztof Kozlowski
0 siblings, 1 reply; 13+ messages in thread
From: Dave Stevenson @ 2025-06-23 17:54 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia, John Cox, linux-media, linux-kernel,
devicetree, linux-rpi-kernel, linux-arm-kernel
Thanks Krzysztof
Sorry for the delay in replying - other priorities.
On Mon, 28 Apr 2025 at 18:57, Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 28/04/2025 12:03, Dave Stevenson wrote:
> > Hi Krzysztof
> >
> > On Fri, 25 Apr 2025 at 08:53, Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >>
> >> On Wed, Apr 23, 2025 at 06:20:20PM GMT, Dave Stevenson wrote:
> >>> Adds a binding for the HEVC decoder found on th +maintainers:
> >>> + - John Cox <john.cox@raspberrypi.com>
> >>> + - Dom Cobley <dom@raspberrypi.com>
> >>> + - Dave Stevenson <dave.stevenson@raspberrypi.com>
> >>
> >>> + - Raspberry Pi internal review list <kernel-list@raspberrypi.com>
> >>
> >> Drop, no mailing lists in bindings maintainers. These must be people.
> >
> > Ack
> >
> >>> +
> >>> +description:
> >>> + The Raspberry Pi HEVC decoder is a hardware video decode accelerator block
> >>> + found in the BCM2711 and BCM2712 processors used on Raspberry Pi 4 and 5
> >>> + boards respectively.
> >>> +
> >>> +properties:
> >>> + compatible:
> >>> + items:
> >>> + - enum:
> >>> + - brcm,bcm2711-hevc-dec
> >>> + - brcm,bcm2712-hevc-dec
> >>> + - const: raspberrypi,hevc-dec
> >>
> >> Not what Rob asked. You should use specific SoC compatible as fallback.
> >
> > In which case I don't understand what Rob was asking for.
> > I asked for clarification in [1], but got no reply. Sending a new
> > version has at least got an answer, but I'm none the wiser.
> >
> > Staring at this trying to work out your meaning, you want the generic
> > first, and SoC specific second? ie
> > + compatible:
> > + items:
> > + - const: raspberrypi,hevc-dec
>
> Drop
>
> > + - enum:
>
> That's enum, not fallback.
>
> > + - brcm,bcm2711-hevc-dec
> > + - brcm,bcm2712-hevc-dec
> >
> >> You referred to file "raspberrypi,pisbe.yaml" before, but there is no
> >> such file in the next.
> >
> > Typo.
> > https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/media/raspberrypi%2Cpispbe.yaml
> > Reviewed by Rob only just over a year ago [2]
>
> There were some discussions and reasons with explanations.
> Feel free to use same arguments and accurately describe the hardware, so
> we won't be needing to ask usual questions.
Sorry if the previous descriptions hadn't been clear. All the same
points as for raspberrypi,pispbe.yaml apply here, which is why I'd
tried to link to it originally.
Describe the hardware:
Raspberry Pi designed and are the sole owners of the IP for this HEVC
decoder block. This is *not* Broadcom IP.
That design was given to Broadcom as Verilog to wire into the
bus/interrupt/clock fabric of BCM2711, and to manufacture it via TSMC
on a 28nm process node.
A few years later the same design was given to Broadcom to wire into
BCM2712, and to manufacture it on a 16nm process node.
As it is Raspberry Pi owned IP it can be used in other places than
Broadcom SoCs.
Broadcom does not have a licence to use the IP in any other of their chips.
It is the same situation as for raspberrypi,pispbe.yaml except the
block already exists in 2 chips rather than just the 1. There also
isn't a version register in the hardware that is different between
those chips (an oversight noted for future chips).
It could be compared to a Synopsis or Cadence IP block dropped into an
SoC. The vendor prefix happens to be raspberrypi instead of snps or
cdns.
Is there any part that needs to be further clarified?
> Anyway, we asked for fallback, so you need items, just like every SoC
> compatible (see also example schema).
>
>
> >
> >> Before you reply that there is a binding using different rules: well,
> >> there is always poor code. Above two comments are repeated, especially
> >> this about specific compatible - all the time, so these are not new
> >> rules. These are given in reviews since some years.
> >
> > My Google-foo is totally failing with the only directly relevant
> > mention of "fallback compatible" I find is [3], which just says to use
> > them.
> >
> > You're effectively saying I can't take anything in the kernel tree as
> > being a valid example as it could be poor code, and a layman such as
> > myself has no way of telling.
>
> No, I am saying that argument "I saw someone doing this, so I am allowed
> to do the same" is not correct. There are good and bad examples. For
> example in my talks I mentioned good examples. The list of good examples
> was not accepted to the kernel so well... I just use as an example any
> recent Qcom binding using specific compatibles.
>
> > Could you please point me at documentation and examples I can rely on,
> > or educate me with what is wanted in this situation to avoid me having
> > to guess?
> >
> > A further mailing list search has brought up [4] which is a thread
> > with yourself from 2 years ago which looks to be a very similar
> > situation. Other than missing the const on the SoC strings (although
> > that isn't in the merged version of cnm,wave521c.yaml), and two SoC
> > specific strings, I'm not seeing an obvious difference between there
> > and here either.
>
> How is the [4] relevant? That's IP block from other vendor.
It was another example of an IP block belonging to vendor A being
added into an SoC from vendor B, same as the situation here. Raspberry
Pi != Broadcom.
Thanks
Dave
> https://www.kernel.org/doc/html/latest/devicetree/bindings/writing-bindings.html#properties
>
> https://elixir.bootlin.com/linux/v6.3-rc6/source/Documentation/devicetree/bindings/sound/nvidia,tegra210-ope.yaml#L31
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-06-23 17:54 ` Dave Stevenson
@ 2025-06-24 6:01 ` Krzysztof Kozlowski
0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2025-06-24 6:01 UTC (permalink / raw)
To: Dave Stevenson
Cc: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia, John Cox, linux-media, linux-kernel,
devicetree, linux-rpi-kernel, linux-arm-kernel
On 23/06/2025 19:54, Dave Stevenson wrote:
>>
>>> + - brcm,bcm2711-hevc-dec
>>> + - brcm,bcm2712-hevc-dec
>>>
>>>> You referred to file "raspberrypi,pisbe.yaml" before, but there is no
>>>> such file in the next.
>>>
>>> Typo.
>>> https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/media/raspberrypi%2Cpispbe.yaml
>>> Reviewed by Rob only just over a year ago [2]
>>
>> There were some discussions and reasons with explanations.
>> Feel free to use same arguments and accurately describe the hardware, so
>> we won't be needing to ask usual questions.
>
> Sorry if the previous descriptions hadn't been clear. All the same
> points as for raspberrypi,pispbe.yaml apply here, which is why I'd
> tried to link to it originally.
>
> Describe the hardware:
> Raspberry Pi designed and are the sole owners of the IP for this HEVC
> decoder block. This is *not* Broadcom IP.
>
> That design was given to Broadcom as Verilog to wire into the
> bus/interrupt/clock fabric of BCM2711, and to manufacture it via TSMC
> on a 28nm process node.
>
> A few years later the same design was given to Broadcom to wire into
> BCM2712, and to manufacture it on a 16nm process node.
>
> As it is Raspberry Pi owned IP it can be used in other places than
> Broadcom SoCs.
> Broadcom does not have a licence to use the IP in any other of their chips.
>
> It is the same situation as for raspberrypi,pispbe.yaml except the
> block already exists in 2 chips rather than just the 1. There also
> isn't a version register in the hardware that is different between
> those chips (an oversight noted for future chips).
> It could be compared to a Synopsis or Cadence IP block dropped into an
> SoC. The vendor prefix happens to be raspberrypi instead of snps or
> cdns.
>
> Is there any part that needs to be further clarified?
Dunno, thread is way too old to be in my inbox. Anyway, it is part of
the SoC as you said, so SoC compatibles rules apply here. It's the same
for Synopsys.
>
>> Anyway, we asked for fallback, so you need items, just like every SoC
>> compatible (see also example schema).
Just implement the feedback.
>>
>>
>>>
>>>> Before you reply that there is a binding using different rules: well,
>>>> there is always poor code. Above two comments are repeated, especially
>>>> this about specific compatible - all the time, so these are not new
>>>> rules. These are given in reviews since some years.
>>>
>>> My Google-foo is totally failing with the only directly relevant
>>> mention of "fallback compatible" I find is [3], which just says to use
>>> them.
>>>
>>> You're effectively saying I can't take anything in the kernel tree as
>>> being a valid example as it could be poor code, and a layman such as
>>> myself has no way of telling.
>>
>> No, I am saying that argument "I saw someone doing this, so I am allowed
>> to do the same" is not correct. There are good and bad examples. For
>> example in my talks I mentioned good examples. The list of good examples
>> was not accepted to the kernel so well... I just use as an example any
>> recent Qcom binding using specific compatibles.
>>
>>> Could you please point me at documentation and examples I can rely on,
>>> or educate me with what is wanted in this situation to avoid me having
>>> to guess?
>>>
>>> A further mailing list search has brought up [4] which is a thread
>>> with yourself from 2 years ago which looks to be a very similar
>>> situation. Other than missing the const on the SoC strings (although
>>> that isn't in the merged version of cnm,wave521c.yaml), and two SoC
>>> specific strings, I'm not seeing an obvious difference between there
>>> and here either.
>>
>> How is the [4] relevant? That's IP block from other vendor.
>
> It was another example of an IP block belonging to vendor A being
> added into an SoC from vendor B, same as the situation here. Raspberry
> Pi != Broadcom.
People hide real explanation, real facts, so don't use one example for
other case. I was told *explicitly* that Raspberry ISP or whatetever it
was called, was NOT PART OF the SoC. Now you said:
"A few years later the same design was given to Broadcom to wire into
BCM2712, and to manufacture it on a 16nm process node."
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder
2025-04-23 17:20 ` [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder Dave Stevenson
2025-04-25 7:53 ` Krzysztof Kozlowski
@ 2025-04-25 7:54 ` Krzysztof Kozlowski
1 sibling, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-25 7:54 UTC (permalink / raw)
To: Dave Stevenson
Cc: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia, John Cox, linux-media, linux-kernel,
devicetree, linux-rpi-kernel, linux-arm-kernel
On Wed, Apr 23, 2025 at 06:20:20PM GMT, Dave Stevenson wrote:
> Adds a binding for the HEVC decoder found on the BCM2711 / Raspberry Pi 4,
> and BCM2712 / Raspberry Pi 5.
>
> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Also:
subject: only one media prefix. You really do not need two prefixes.
See DT submitting patches.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v3 5/5] arm: dts: bcm2711-rpi: Add HEVC decoder node
2025-04-23 17:20 [PATCH v3 0/5] Raspberry Pi HEVC decoder driver Dave Stevenson
` (2 preceding siblings ...)
2025-04-23 17:20 ` [PATCH v3 3/5] media: dt-bindings: media: Add binding for the Raspberry Pi HEVC decoder Dave Stevenson
@ 2025-04-23 17:20 ` Dave Stevenson
2025-04-25 7:56 ` Krzysztof Kozlowski
3 siblings, 1 reply; 13+ messages in thread
From: Dave Stevenson @ 2025-04-23 17:20 UTC (permalink / raw)
To: Sakari Ailus, Laurent Pinchart, Mauro Carvalho Chehab,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia
Cc: John Cox, linux-media, linux-kernel, devicetree, linux-rpi-kernel,
linux-arm-kernel, Dave Stevenson
Add the configuration information for the HEVC decoder.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi | 4 ++++
arch/arm/boot/dts/broadcom/bcm2711.dtsi | 9 +++++++++
2 files changed, 13 insertions(+)
diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
index c78ed064d166..7984caa861e6 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
@@ -68,6 +68,10 @@ &hdmi1 {
wifi-2.4ghz-coexistence;
};
+&hevc_dec {
+ clocks = <&firmware_clocks 11>;
+};
+
&hvs {
clocks = <&firmware_clocks 4>;
};
diff --git a/arch/arm/boot/dts/broadcom/bcm2711.dtsi b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
index c06d9f5e53c8..bdb80f3611ca 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
@@ -617,6 +617,15 @@ xhci: usb@7e9c0000 {
status = "disabled";
};
+ hevc_dec: codec@7eb10000 {
+ compatible = "brcm,bcm2711-hevc-dec", "raspberrypi,hevc-dec";
+ reg = <0x0 0x7eb00000 0x10000>, /* HEVC */
+ <0x0 0x7eb10000 0x1000>; /* INTC */
+ reg-names = "hevc",
+ "intc";
+ interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
v3d: gpu@7ec00000 {
compatible = "brcm,2711-v3d";
reg = <0x0 0x7ec00000 0x4000>,
--
2.34.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v3 5/5] arm: dts: bcm2711-rpi: Add HEVC decoder node
2025-04-23 17:20 ` [PATCH v3 5/5] arm: dts: bcm2711-rpi: Add HEVC decoder node Dave Stevenson
@ 2025-04-25 7:56 ` Krzysztof Kozlowski
0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-25 7:56 UTC (permalink / raw)
To: Dave Stevenson, Sakari Ailus, Laurent Pinchart,
Mauro Carvalho Chehab, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Florian Fainelli,
Broadcom internal kernel review list, John Cox, Dom Cobley,
review list, Ezequiel Garcia
Cc: John Cox, linux-media, linux-kernel, devicetree, linux-rpi-kernel,
linux-arm-kernel
On 23/04/2025 19:20, Dave Stevenson wrote:
> diff --git a/arch/arm/boot/dts/broadcom/bcm2711.dtsi b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
> index c06d9f5e53c8..bdb80f3611ca 100644
> --- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi
> +++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
> @@ -617,6 +617,15 @@ xhci: usb@7e9c0000 {
> status = "disabled";
> };
>
> + hevc_dec: codec@7eb10000 {
It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).
Maybe you need to update your dtschema and yamllint. Don't rely on
distro packages for dtschema and be sure you are using the latest
released dtschema.
> + compatible = "brcm,bcm2711-hevc-dec", "raspberrypi,hevc-dec";
> + reg = <0x0 0x7eb00000 0x10000>, /* HEVC */
> + <0x0 0x7eb10000 0x1000>; /* INTC */
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread