[RFC PATCH 01/11] dt-bindings: media: qcom,sm8550-iris: Add vpu sub nodes

From: Vikash Garodia

Date: Thu Jul 09 2026 - 08:51:41 EST


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>;
+ iris_non_pixel: non-pixel {
+ 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