RE: [PATCH v3 2/9] dt-bindings: media: nxp: Add Wave6 video codec device
From: Nas Chung <nas.chung@chipsnmedia.com>
Date: 2025-09-02 07:42:54
Also in:
linux-devicetree, linux-media, lkml
Hi, Krzysztof.
-----Original Message----- From: Nas Chung <nas.chung@chipsnmedia.com> Sent: Tuesday, September 2, 2025 2:46 PM To: Krzysztof Kozlowski <krzk@kernel.org>; mchehab@kernel.org; hverkuil@xs4all.nl; robh@kernel.org; krzk+dt@kernel.org; conor+dt@kernel.org; shawnguo@kernel.org; s.hauer@pengutronix.de Cc: linux-media@vger.kernel.org; devicetree@vger.kernel.org; linux- kernel@vger.kernel.org; linux-imx@nxp.com; linux-arm- kernel@lists.infradead.org; jackson.lee [off-list ref]; lafley.kim [off-list ref] Subject: RE: [PATCH v3 2/9] dt-bindings: media: nxp: Add Wave6 video codec device Hi, Krzysztof.quoted
-----Original Message----- From: Krzysztof Kozlowski <krzk@kernel.org> Sent: Friday, August 29, 2025 10:57 PM To: Nas Chung <nas.chung@chipsnmedia.com>; mchehab@kernel.org; hverkuil@xs4all.nl; robh@kernel.org; krzk+dt@kernel.org; conor+dt@kernel.org; shawnguo@kernel.org; s.hauer@pengutronix.de Cc: linux-media@vger.kernel.org; devicetree@vger.kernel.org; linux- kernel@vger.kernel.org; linux-imx@nxp.com; linux-arm- kernel@lists.infradead.org; jackson.lee [off-list ref]; lafley.kim [off-list ref] Subject: Re: [PATCH v3 2/9] dt-bindings: media: nxp: Add Wave6 video codec device On 29/08/2025 10:46, Nas Chung wrote:quoted
Add documents for the Wave6 video codec on NXP i.MX SoCs.Pretty incomplete commit msg. Nothing explaining hardware, nothing documenting resolution of previous discussions (where is all this chip&media?).I see, I'll improve the commit message in v4 to include hardware details.quoted
...quoted
+ +properties: + compatible: + enum: + - nxp,imx95-vpu + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + power-domains: + maxItems: 1 + + memory-region: + maxItems: 1 + + sram: + $ref: /schemas/types.yaml#/definitions/phandle + description: phandle of the SRAM memory region node. + + "#cooling-cells": + const: 2 + + "#address-cells": + const: 2 + + "#size-cells": + const: 2 + + ranges: true + +patternProperties: + "^video-core@[0-9a-f]+$": + type: objectMissing description.I'll add a description in v4.quoted
quoted
+ additionalProperties: false + + properties: + compatible: + enum: + - nxp,imx95-vpu-coreWhy do you need here compatible? Can this child be anything else? Can it be re-used? Is it actually a separate block? Your example suggests that the only distinctive resource are the interrupt and address space and that's on the edge of calling it a separate device. There is some tendency to call such "pseudo-cores" a separate devices in case of video codec bindings and experience shows these are usually fake. It's not the same as DP or HDMI sub-block of display pipeline. That's why you should come here with strong argument what separate piece of hardware this is.Thanks for your feedback. As you mentioned, I wanted to represent the interrupts and address space as separate "cores". This is because, from an external perspective (e.g. multi-VM), each of these resources is a VPU interface and can be accessed independently to operate the VPU.
Apologies, I forgot to mention one detail in my previous reply. I did not include the SMMU-related properties in the core nodes. On this SoC, however, each of these cores has its own SMMU ID as part of the SoC's isolation policy. This allows them to be treated as independent interfaces, even though there is only one actual VPU engine. Would adding the iommu property be the appropriate way to describe this in the device tree? Thanks, Nas.
However, there is indeed only one actual VPU processing engine. I understand your point about "pseudo-cores". I would appreciate any guidance on the preferred way to represent these resources in the device tree.quoted
quoted
+ + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + power-domains: + maxItems: 1 + + interrupts: + maxItems: 1 + + required: + - compatible + - reg + - clocks + - power-domains + - interrupts + +required: + - compatible + - reg + - clocks + - power-domains + - memory-region + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/clock/nxp,imx95-clock.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + vpu: video-codec@4c4c0000 {Unused label, dropOkay. I'll drop the unused label.quoted
quoted
+ compatible = "nxp,imx95-vpu"; + reg = <0x0 0x4c4c0000 0x0 0x10000>; + clocks = <&vpu_blk_ctrl IMX95_CLK_VPUBLK_WAVE>; + power-domains = <&scmi_perf 10>; + memory-region = <&vpu_boot>; + sram = <&sram1>; + #cooling-cells = <2>; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + vpucore0: video-core@4c480000 {None of these labels are used, drop.I'll drop it. Thanks, Nas.quoted
quoted
+ compatible = "nxp,imx95-vpu-core"; + reg = <0x0 0x4c480000 0x0 0x10000>; + clocks = <&scmi_clk 115>; + power-domains = <&scmi_devpd 21>; + interrupts = <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>; + }; + + vpucore1: video-core@4c490000 { + compatible = "nxp,imx95-vpu-core"; + reg = <0x0 0x4c490000 0x0 0x10000>; + clocks = <&scmi_clk 115>; + power-domains = <&scmi_devpd 21>; + interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>; + }; +Best regards, Krzysztof