Re: [RFC PATCH 01/11] dt-bindings: media: qcom,sm8550-iris: Add vpu sub nodes
From: Dmitry Baryshkov
Date: Fri Jul 10 2026 - 12:00:41 EST
On Fri, Jul 10, 2026 at 11:32:20AM +0530, Vikash Garodia wrote:
>
> On 7/9/2026 6:20 PM, Dmitry Baryshkov wrote:
> > On Thu, Jul 09, 2026 at 06:05:47PM +0530, Vikash Garodia wrote:
> > > VPU hardwares have a limitation where VPU streams are associated with
> > > dedicated addressable address range, as illustrated below
> > >
> > > +-----------------------------------------------------------+
> > > | Stream A reserved region (600 MB) |
> > > | 0x00000000 - 0x25800000 |
> > > +-----------------------------------------------------------+
> > > | Stream B reserved region (3.5 GB) |
> > > | 0x00000000 - 0xe0000000 |
> > > +-----------------------------------------------------------+
> > > | Other reserved regions |
> > > +-----------------------------------------------------------+
> > >
> > > Mapping a stream outside its expected range can cause unintended
> > > behavior, including device crashes, as reported at:
> > > https://gitlab.freedesktop.org/drm/msm/-/work_items/100
> > >
> > > To address this limitation, the subset of stream/s are now represented as
> > > sub nodes, so that they can be associated to the respective addressable
> > > range.
> > > The limitation could be exposed when running usecase like concurrent
> > > video sessions. The binding have been validated with higher concurrent
> > > sessions across the SOCs supported under this schema.
> > >
> > > Co-developed-by: Vishnu Reddy <busanna.reddy@xxxxxxxxxxxxxxxx>
> > > Signed-off-by: Vishnu Reddy <busanna.reddy@xxxxxxxxxxxxxxxx>
> > > Signed-off-by: Vikash Garodia <vikash.garodia@xxxxxxxxxxxxxxxx>
> > > ---
> > > .../bindings/media/qcom,sm8550-iris.yaml | 66 +++++++++++++++++++++-
> > > 1 file changed, 63 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml b/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml
> > > index 0400ca1bff05dcef6b742c3fbf77e38adca9f280..bf4d24ce90bd38666704274390b98be450f708c0 100644
> > > --- a/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml
> > > +++ b/Documentation/devicetree/bindings/media/qcom,sm8550-iris.yaml
> > > @@ -91,6 +91,51 @@ properties:
> > > opp-table:
> > > type: object
> > > + '#address-cells':
> > > + const: 2
> > > +
> > > + '#size-cells':
> > > + const: 2
> > > +
> > > + non-pixel:
> > > + type: object
> > > + description:
> > > + Non pixel context bank is needed when video hardware have distinct iommus for non pixel
> > > + buffers. Non pixel buffers are compressed and internal buffers.
> > > + properties:
> > > + iommus:
> > > + maxItems: 1
> > > + memory-region:
> > > + maxItems: 1
> > > + required:
> > > + - iommus
> > > + - memory-region
> > > + additionalProperties: false
> > > +
> > > + pixel:
> > > + type: object
> > > + description:
> > > + Pixel context bank is needed when video hardware have distinct iommus for pixel buffers.
> > > + Pixel buffers are uncompressed buffers.
> > > + properties:
> > > + iommus:
> > > + maxItems: 1
> > > + required:
> > > + - iommus
> > > + additionalProperties: false
> > > +
> > > + firmware:
> > > + type: object
> > > + description:
> > > + Firmware context bank represents the firmware processing domain of the VPU. Required to boot
> > > + VPU when no hypervisor is present.
> > > + properties:
> > > + iommus:
> > > + maxItems: 1
> > > + required:
> > > + - iommus
> > > + additionalProperties: false
> > > +
> > > required:
> > > - compatible
> > > - power-domain-names
> > > @@ -98,9 +143,15 @@ required:
> > > - interconnect-names
> > > - resets
> > > - reset-names
> > > - - iommus
> > > - dma-coherent
> > > +oneOf:
> > > + - required:
> > > + - iommus
> > > + - required:
> > > + - non-pixel
> > > + - pixel
> > > +
> > > allOf:
> > > - if:
> > > properties:
> > > @@ -177,12 +228,21 @@ examples:
> > > resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>;
> > > reset-names = "bus";
> > > - iommus = <&apps_smmu 0x1940 0x0000>,
> > > - <&apps_smmu 0x1947 0x0000>;
> > > dma-coherent;
> > > operating-points-v2 = <&iris_opp_table>;
> > > + #address-cells = <2>;
> > > + #size-cells = <2>;
> >
> > I think you need "ranges;" here. Also an empty line before the subnodes.
>
> Could you please elaborate on what would be the use of "ranges;" in this
> case ?
That the subblock has the same address space as the parent. I might be
completely wrong here.
>
> >
> > > + iris_non_pixel: non-pixel {
> >
> > Drop useless labels.
>
> Ack, labels can be dropped from schema.
>
> >
> > > + iommus = <&apps_smmu 0x1940 0x0000>;
> > > + memory-region = <&iris_resv>;
> > > + };
> > > +
> > > + iris_pixel: pixel {
> > > + iommus = <&apps_smmu 0x1947 0x0000>;
> > > + };
> > > +
> > > iris_opp_table: opp-table {
> > > compatible = "operating-points-v2";
> > >
> > > --
> > > 2.34.1
> > >
> >
>
> Regards,
> Vikash
>
--
With best wishes
Dmitry