xref: /freebsd/sys/contrib/device-tree/Bindings/media/qcom,sm8550-iris.yaml (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
18ccc0d23SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28ccc0d23SEmmanuel Vadot%YAML 1.2
38ccc0d23SEmmanuel Vadot---
48ccc0d23SEmmanuel Vadot$id: http://devicetree.org/schemas/media/qcom,sm8550-iris.yaml#
58ccc0d23SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68ccc0d23SEmmanuel Vadot
78ccc0d23SEmmanuel Vadottitle: Qualcomm iris video encode and decode accelerators
88ccc0d23SEmmanuel Vadot
98ccc0d23SEmmanuel Vadotmaintainers:
108ccc0d23SEmmanuel Vadot  - Vikash Garodia <quic_vgarodia@quicinc.com>
118ccc0d23SEmmanuel Vadot  - Dikshita Agarwal <quic_dikshita@quicinc.com>
128ccc0d23SEmmanuel Vadot
138ccc0d23SEmmanuel Vadotdescription:
148ccc0d23SEmmanuel Vadot  The iris video processing unit is a video encode and decode accelerator
158ccc0d23SEmmanuel Vadot  present on Qualcomm platforms.
168ccc0d23SEmmanuel Vadot
178ccc0d23SEmmanuel Vadotproperties:
188ccc0d23SEmmanuel Vadot  compatible:
19*ae5de77eSEmmanuel Vadot    oneOf:
20*ae5de77eSEmmanuel Vadot      - items:
21*ae5de77eSEmmanuel Vadot          - enum:
22*ae5de77eSEmmanuel Vadot              - qcom,sa8775p-iris
23*ae5de77eSEmmanuel Vadot          - const: qcom,sm8550-iris
24*ae5de77eSEmmanuel Vadot      - enum:
25*ae5de77eSEmmanuel Vadot          - qcom,qcs8300-iris
26*ae5de77eSEmmanuel Vadot          - qcom,sm8550-iris
27*ae5de77eSEmmanuel Vadot          - qcom,sm8650-iris
288ccc0d23SEmmanuel Vadot
298ccc0d23SEmmanuel Vadot  power-domains:
308ccc0d23SEmmanuel Vadot    maxItems: 4
318ccc0d23SEmmanuel Vadot
328ccc0d23SEmmanuel Vadot  power-domain-names:
338ccc0d23SEmmanuel Vadot    items:
348ccc0d23SEmmanuel Vadot      - const: venus
358ccc0d23SEmmanuel Vadot      - const: vcodec0
368ccc0d23SEmmanuel Vadot      - const: mxc
378ccc0d23SEmmanuel Vadot      - const: mmcx
388ccc0d23SEmmanuel Vadot
398ccc0d23SEmmanuel Vadot  clocks:
408ccc0d23SEmmanuel Vadot    maxItems: 3
418ccc0d23SEmmanuel Vadot
428ccc0d23SEmmanuel Vadot  clock-names:
438ccc0d23SEmmanuel Vadot    items:
448ccc0d23SEmmanuel Vadot      - const: iface
458ccc0d23SEmmanuel Vadot      - const: core
468ccc0d23SEmmanuel Vadot      - const: vcodec0_core
478ccc0d23SEmmanuel Vadot
488ccc0d23SEmmanuel Vadot  interconnects:
498ccc0d23SEmmanuel Vadot    maxItems: 2
508ccc0d23SEmmanuel Vadot
518ccc0d23SEmmanuel Vadot  interconnect-names:
528ccc0d23SEmmanuel Vadot    items:
538ccc0d23SEmmanuel Vadot      - const: cpu-cfg
548ccc0d23SEmmanuel Vadot      - const: video-mem
558ccc0d23SEmmanuel Vadot
568ccc0d23SEmmanuel Vadot  resets:
57*ae5de77eSEmmanuel Vadot    minItems: 1
58*ae5de77eSEmmanuel Vadot    maxItems: 3
598ccc0d23SEmmanuel Vadot
608ccc0d23SEmmanuel Vadot  reset-names:
61*ae5de77eSEmmanuel Vadot    minItems: 1
628ccc0d23SEmmanuel Vadot    items:
638ccc0d23SEmmanuel Vadot      - const: bus
64*ae5de77eSEmmanuel Vadot      - const: xo
65*ae5de77eSEmmanuel Vadot      - const: core
668ccc0d23SEmmanuel Vadot
678ccc0d23SEmmanuel Vadot  iommus:
688ccc0d23SEmmanuel Vadot    maxItems: 2
698ccc0d23SEmmanuel Vadot
708ccc0d23SEmmanuel Vadot  dma-coherent: true
718ccc0d23SEmmanuel Vadot
728ccc0d23SEmmanuel Vadot  operating-points-v2: true
738ccc0d23SEmmanuel Vadot
748ccc0d23SEmmanuel Vadot  opp-table:
758ccc0d23SEmmanuel Vadot    type: object
768ccc0d23SEmmanuel Vadot
778ccc0d23SEmmanuel Vadotrequired:
788ccc0d23SEmmanuel Vadot  - compatible
798ccc0d23SEmmanuel Vadot  - power-domain-names
808ccc0d23SEmmanuel Vadot  - interconnects
818ccc0d23SEmmanuel Vadot  - interconnect-names
828ccc0d23SEmmanuel Vadot  - resets
838ccc0d23SEmmanuel Vadot  - reset-names
848ccc0d23SEmmanuel Vadot  - iommus
858ccc0d23SEmmanuel Vadot  - dma-coherent
868ccc0d23SEmmanuel Vadot
87*ae5de77eSEmmanuel VadotallOf:
88*ae5de77eSEmmanuel Vadot  - $ref: qcom,venus-common.yaml#
89*ae5de77eSEmmanuel Vadot  - if:
90*ae5de77eSEmmanuel Vadot      properties:
91*ae5de77eSEmmanuel Vadot        compatible:
92*ae5de77eSEmmanuel Vadot          enum:
93*ae5de77eSEmmanuel Vadot            - qcom,sm8650-iris
94*ae5de77eSEmmanuel Vadot    then:
95*ae5de77eSEmmanuel Vadot      properties:
96*ae5de77eSEmmanuel Vadot        resets:
97*ae5de77eSEmmanuel Vadot          minItems: 3
98*ae5de77eSEmmanuel Vadot        reset-names:
99*ae5de77eSEmmanuel Vadot          minItems: 3
100*ae5de77eSEmmanuel Vadot    else:
101*ae5de77eSEmmanuel Vadot      properties:
102*ae5de77eSEmmanuel Vadot        resets:
103*ae5de77eSEmmanuel Vadot          maxItems: 1
104*ae5de77eSEmmanuel Vadot        reset-names:
105*ae5de77eSEmmanuel Vadot          maxItems: 1
106*ae5de77eSEmmanuel Vadot
1078ccc0d23SEmmanuel VadotunevaluatedProperties: false
1088ccc0d23SEmmanuel Vadot
1098ccc0d23SEmmanuel Vadotexamples:
1108ccc0d23SEmmanuel Vadot  - |
1118ccc0d23SEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmh.h>
1128ccc0d23SEmmanuel Vadot    #include <dt-bindings/clock/qcom,sm8550-gcc.h>
1138ccc0d23SEmmanuel Vadot    #include <dt-bindings/clock/qcom,sm8450-videocc.h>
1148ccc0d23SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
1158ccc0d23SEmmanuel Vadot    #include <dt-bindings/interconnect/qcom,icc.h>
1168ccc0d23SEmmanuel Vadot    #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
1178ccc0d23SEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
1188ccc0d23SEmmanuel Vadot    #include <dt-bindings/power/qcom,rpmhpd.h>
1198ccc0d23SEmmanuel Vadot
1208ccc0d23SEmmanuel Vadot    video-codec@aa00000 {
1218ccc0d23SEmmanuel Vadot        compatible = "qcom,sm8550-iris";
1228ccc0d23SEmmanuel Vadot        reg = <0x0aa00000 0xf0000>;
1238ccc0d23SEmmanuel Vadot        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
1248ccc0d23SEmmanuel Vadot
1258ccc0d23SEmmanuel Vadot        power-domains = <&videocc VIDEO_CC_MVS0C_GDSC>,
1268ccc0d23SEmmanuel Vadot                        <&videocc VIDEO_CC_MVS0_GDSC>,
1278ccc0d23SEmmanuel Vadot                        <&rpmhpd RPMHPD_MXC>,
1288ccc0d23SEmmanuel Vadot                        <&rpmhpd RPMHPD_MMCX>;
1298ccc0d23SEmmanuel Vadot        power-domain-names = "venus", "vcodec0", "mxc", "mmcx";
1308ccc0d23SEmmanuel Vadot
1318ccc0d23SEmmanuel Vadot        clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
1328ccc0d23SEmmanuel Vadot                 <&videocc VIDEO_CC_MVS0C_CLK>,
1338ccc0d23SEmmanuel Vadot                 <&videocc VIDEO_CC_MVS0_CLK>;
1348ccc0d23SEmmanuel Vadot        clock-names = "iface", "core", "vcodec0_core";
1358ccc0d23SEmmanuel Vadot
1368ccc0d23SEmmanuel Vadot        interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
1378ccc0d23SEmmanuel Vadot                         &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ALWAYS>,
1388ccc0d23SEmmanuel Vadot                        <&mmss_noc MASTER_VIDEO QCOM_ICC_TAG_ALWAYS
1398ccc0d23SEmmanuel Vadot                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
1408ccc0d23SEmmanuel Vadot        interconnect-names = "cpu-cfg", "video-mem";
1418ccc0d23SEmmanuel Vadot
1428ccc0d23SEmmanuel Vadot        memory-region = <&video_mem>;
1438ccc0d23SEmmanuel Vadot
1448ccc0d23SEmmanuel Vadot        resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>;
1458ccc0d23SEmmanuel Vadot        reset-names = "bus";
1468ccc0d23SEmmanuel Vadot
1478ccc0d23SEmmanuel Vadot        iommus = <&apps_smmu 0x1940 0x0000>,
1488ccc0d23SEmmanuel Vadot                 <&apps_smmu 0x1947 0x0000>;
1498ccc0d23SEmmanuel Vadot        dma-coherent;
1508ccc0d23SEmmanuel Vadot
1518ccc0d23SEmmanuel Vadot        operating-points-v2 = <&iris_opp_table>;
1528ccc0d23SEmmanuel Vadot
1538ccc0d23SEmmanuel Vadot        iris_opp_table: opp-table {
1548ccc0d23SEmmanuel Vadot            compatible = "operating-points-v2";
1558ccc0d23SEmmanuel Vadot
1568ccc0d23SEmmanuel Vadot            opp-240000000 {
1578ccc0d23SEmmanuel Vadot                opp-hz = /bits/ 64 <240000000>;
1588ccc0d23SEmmanuel Vadot                required-opps = <&rpmhpd_opp_svs>,
1598ccc0d23SEmmanuel Vadot                                <&rpmhpd_opp_low_svs>;
1608ccc0d23SEmmanuel Vadot            };
1618ccc0d23SEmmanuel Vadot
1628ccc0d23SEmmanuel Vadot            opp-338000000 {
1638ccc0d23SEmmanuel Vadot                opp-hz = /bits/ 64 <338000000>;
1648ccc0d23SEmmanuel Vadot                required-opps = <&rpmhpd_opp_svs>,
1658ccc0d23SEmmanuel Vadot                                <&rpmhpd_opp_svs>;
1668ccc0d23SEmmanuel Vadot            };
1678ccc0d23SEmmanuel Vadot
1688ccc0d23SEmmanuel Vadot            opp-366000000 {
1698ccc0d23SEmmanuel Vadot                opp-hz = /bits/ 64 <366000000>;
1708ccc0d23SEmmanuel Vadot                required-opps = <&rpmhpd_opp_svs_l1>,
1718ccc0d23SEmmanuel Vadot                                <&rpmhpd_opp_svs_l1>;
1728ccc0d23SEmmanuel Vadot            };
1738ccc0d23SEmmanuel Vadot
1748ccc0d23SEmmanuel Vadot            opp-444000000 {
1758ccc0d23SEmmanuel Vadot                opp-hz = /bits/ 64 <444000000>;
1768ccc0d23SEmmanuel Vadot                required-opps = <&rpmhpd_opp_turbo>,
1778ccc0d23SEmmanuel Vadot                                <&rpmhpd_opp_turbo>;
1788ccc0d23SEmmanuel Vadot            };
1798ccc0d23SEmmanuel Vadot
1808ccc0d23SEmmanuel Vadot            opp-533333334 {
1818ccc0d23SEmmanuel Vadot                opp-hz = /bits/ 64 <533333334>;
1828ccc0d23SEmmanuel Vadot                required-opps = <&rpmhpd_opp_turbo_l1>,
1838ccc0d23SEmmanuel Vadot                                <&rpmhpd_opp_turbo_l1>;
1848ccc0d23SEmmanuel Vadot            };
1858ccc0d23SEmmanuel Vadot        };
1868ccc0d23SEmmanuel Vadot    };
1878ccc0d23SEmmanuel Vadot...
188