xref: /linux/Documentation/devicetree/bindings/media/qcom,milos-iris.yaml (revision f4cdf7ca9a1fdcca413157df19753f388a5a224e)
1*305b0615SAlexander Koskovich# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*305b0615SAlexander Koskovich%YAML 1.2
3*305b0615SAlexander Koskovich---
4*305b0615SAlexander Koskovich$id: http://devicetree.org/schemas/media/qcom,milos-iris.yaml#
5*305b0615SAlexander Koskovich$schema: http://devicetree.org/meta-schemas/core.yaml#
6*305b0615SAlexander Koskovich
7*305b0615SAlexander Koskovichtitle: Qualcomm Milos SoC Iris video encoder and decoder
8*305b0615SAlexander Koskovich
9*305b0615SAlexander Koskovichmaintainers:
10*305b0615SAlexander Koskovich  - Alexander Koskovich <akoskovich@pm.me>
11*305b0615SAlexander Koskovich
12*305b0615SAlexander Koskovichdescription:
13*305b0615SAlexander Koskovich  The Iris video processing unit on Qualcomm Milos SoC is a video encode and
14*305b0615SAlexander Koskovich  decode accelerator.
15*305b0615SAlexander Koskovich
16*305b0615SAlexander Koskovichproperties:
17*305b0615SAlexander Koskovich  compatible:
18*305b0615SAlexander Koskovich    enum:
19*305b0615SAlexander Koskovich      - qcom,milos-iris
20*305b0615SAlexander Koskovich
21*305b0615SAlexander Koskovich  clocks:
22*305b0615SAlexander Koskovich    maxItems: 3
23*305b0615SAlexander Koskovich
24*305b0615SAlexander Koskovich  clock-names:
25*305b0615SAlexander Koskovich    items:
26*305b0615SAlexander Koskovich      - const: iface
27*305b0615SAlexander Koskovich      - const: core
28*305b0615SAlexander Koskovich      - const: vcodec0_core
29*305b0615SAlexander Koskovich
30*305b0615SAlexander Koskovich  dma-coherent: true
31*305b0615SAlexander Koskovich
32*305b0615SAlexander Koskovich  interconnects:
33*305b0615SAlexander Koskovich    maxItems: 2
34*305b0615SAlexander Koskovich
35*305b0615SAlexander Koskovich  interconnect-names:
36*305b0615SAlexander Koskovich    items:
37*305b0615SAlexander Koskovich      - const: cpu-cfg
38*305b0615SAlexander Koskovich      - const: video-mem
39*305b0615SAlexander Koskovich
40*305b0615SAlexander Koskovich  iommus:
41*305b0615SAlexander Koskovich    maxItems: 2
42*305b0615SAlexander Koskovich
43*305b0615SAlexander Koskovich  operating-points-v2: true
44*305b0615SAlexander Koskovich  opp-table:
45*305b0615SAlexander Koskovich    type: object
46*305b0615SAlexander Koskovich
47*305b0615SAlexander Koskovich  power-domains:
48*305b0615SAlexander Koskovich    maxItems: 4
49*305b0615SAlexander Koskovich
50*305b0615SAlexander Koskovich  power-domain-names:
51*305b0615SAlexander Koskovich    items:
52*305b0615SAlexander Koskovich      - const: venus
53*305b0615SAlexander Koskovich      - const: vcodec0
54*305b0615SAlexander Koskovich      - const: cx
55*305b0615SAlexander Koskovich      - const: mx
56*305b0615SAlexander Koskovich
57*305b0615SAlexander Koskovich  resets:
58*305b0615SAlexander Koskovich    maxItems: 2
59*305b0615SAlexander Koskovich
60*305b0615SAlexander Koskovich  reset-names:
61*305b0615SAlexander Koskovich    items:
62*305b0615SAlexander Koskovich      - const: bus
63*305b0615SAlexander Koskovich      - const: core
64*305b0615SAlexander Koskovich
65*305b0615SAlexander Koskovichrequired:
66*305b0615SAlexander Koskovich  - compatible
67*305b0615SAlexander Koskovich  - dma-coherent
68*305b0615SAlexander Koskovich  - interconnects
69*305b0615SAlexander Koskovich  - interconnect-names
70*305b0615SAlexander Koskovich  - iommus
71*305b0615SAlexander Koskovich  - power-domain-names
72*305b0615SAlexander Koskovich  - resets
73*305b0615SAlexander Koskovich  - reset-names
74*305b0615SAlexander Koskovich
75*305b0615SAlexander KoskovichallOf:
76*305b0615SAlexander Koskovich  - $ref: qcom,venus-common.yaml#
77*305b0615SAlexander Koskovich
78*305b0615SAlexander KoskovichunevaluatedProperties: false
79*305b0615SAlexander Koskovich
80*305b0615SAlexander Koskovichexamples:
81*305b0615SAlexander Koskovich  - |
82*305b0615SAlexander Koskovich    #include <dt-bindings/clock/qcom,rpmh.h>
83*305b0615SAlexander Koskovich    #include <dt-bindings/clock/qcom,milos-gcc.h>
84*305b0615SAlexander Koskovich    #include <dt-bindings/clock/qcom,milos-videocc.h>
85*305b0615SAlexander Koskovich    #include <dt-bindings/interrupt-controller/arm-gic.h>
86*305b0615SAlexander Koskovich    #include <dt-bindings/interconnect/qcom,icc.h>
87*305b0615SAlexander Koskovich    #include <dt-bindings/interconnect/qcom,milos-rpmh.h>
88*305b0615SAlexander Koskovich    #include <dt-bindings/power/qcom-rpmpd.h>
89*305b0615SAlexander Koskovich    #include <dt-bindings/power/qcom,rpmhpd.h>
90*305b0615SAlexander Koskovich
91*305b0615SAlexander Koskovich    video-codec@aa00000 {
92*305b0615SAlexander Koskovich        compatible = "qcom,milos-iris";
93*305b0615SAlexander Koskovich        reg = <0x0aa00000 0xf0000>;
94*305b0615SAlexander Koskovich
95*305b0615SAlexander Koskovich        clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
96*305b0615SAlexander Koskovich                 <&videocc VIDEO_CC_MVS0C_CLK>,
97*305b0615SAlexander Koskovich                 <&videocc VIDEO_CC_MVS0_CLK>;
98*305b0615SAlexander Koskovich        clock-names = "iface",
99*305b0615SAlexander Koskovich                      "core",
100*305b0615SAlexander Koskovich                      "vcodec0_core";
101*305b0615SAlexander Koskovich
102*305b0615SAlexander Koskovich        dma-coherent;
103*305b0615SAlexander Koskovich        iommus = <&apps_smmu 0x1960 0>,
104*305b0615SAlexander Koskovich                 <&apps_smmu 0x1967 0>;
105*305b0615SAlexander Koskovich
106*305b0615SAlexander Koskovich        interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
107*305b0615SAlexander Koskovich                         &cnoc_cfg SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
108*305b0615SAlexander Koskovich                        <&mmss_noc MASTER_VIDEO QCOM_ICC_TAG_ALWAYS
109*305b0615SAlexander Koskovich                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
110*305b0615SAlexander Koskovich        interconnect-names = "cpu-cfg",
111*305b0615SAlexander Koskovich                             "video-mem";
112*305b0615SAlexander Koskovich
113*305b0615SAlexander Koskovich        interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
114*305b0615SAlexander Koskovich
115*305b0615SAlexander Koskovich        operating-points-v2 = <&iris_opp_table>;
116*305b0615SAlexander Koskovich
117*305b0615SAlexander Koskovich        memory-region = <&video_mem>;
118*305b0615SAlexander Koskovich
119*305b0615SAlexander Koskovich        power-domains = <&videocc VIDEO_CC_MVS0C_GDSC>,
120*305b0615SAlexander Koskovich                        <&videocc VIDEO_CC_MVS0_GDSC>,
121*305b0615SAlexander Koskovich                        <&rpmhpd RPMHPD_CX>,
122*305b0615SAlexander Koskovich                        <&rpmhpd RPMHPD_MX>;
123*305b0615SAlexander Koskovich        power-domain-names = "venus",
124*305b0615SAlexander Koskovich                             "vcodec0",
125*305b0615SAlexander Koskovich                             "cx",
126*305b0615SAlexander Koskovich                             "mx";
127*305b0615SAlexander Koskovich
128*305b0615SAlexander Koskovich        resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>,
129*305b0615SAlexander Koskovich                 <&videocc VIDEO_CC_MVS0C_CLK_ARES>;
130*305b0615SAlexander Koskovich        reset-names = "bus",
131*305b0615SAlexander Koskovich                      "core";
132*305b0615SAlexander Koskovich
133*305b0615SAlexander Koskovich        iris_opp_table: opp-table {
134*305b0615SAlexander Koskovich            compatible = "operating-points-v2";
135*305b0615SAlexander Koskovich
136*305b0615SAlexander Koskovich            opp-240000000 {
137*305b0615SAlexander Koskovich                opp-hz = /bits/ 64 <240000000>;
138*305b0615SAlexander Koskovich                required-opps = <&rpmhpd_opp_low_svs>,
139*305b0615SAlexander Koskovich                                <&rpmhpd_opp_svs>;
140*305b0615SAlexander Koskovich            };
141*305b0615SAlexander Koskovich
142*305b0615SAlexander Koskovich            opp-338000000 {
143*305b0615SAlexander Koskovich                opp-hz = /bits/ 64 <338000000>;
144*305b0615SAlexander Koskovich                required-opps = <&rpmhpd_opp_svs>,
145*305b0615SAlexander Koskovich                                <&rpmhpd_opp_svs>;
146*305b0615SAlexander Koskovich            };
147*305b0615SAlexander Koskovich
148*305b0615SAlexander Koskovich            opp-366000000 {
149*305b0615SAlexander Koskovich                opp-hz = /bits/ 64 <366000000>;
150*305b0615SAlexander Koskovich                required-opps = <&rpmhpd_opp_svs_l1>,
151*305b0615SAlexander Koskovich                                <&rpmhpd_opp_svs>;
152*305b0615SAlexander Koskovich            };
153*305b0615SAlexander Koskovich
154*305b0615SAlexander Koskovich            opp-444000000 {
155*305b0615SAlexander Koskovich                opp-hz = /bits/ 64 <444000000>;
156*305b0615SAlexander Koskovich                required-opps = <&rpmhpd_opp_nom>,
157*305b0615SAlexander Koskovich                                <&rpmhpd_opp_svs_l1>;
158*305b0615SAlexander Koskovich            };
159*305b0615SAlexander Koskovich
160*305b0615SAlexander Koskovich            opp-552000000 {
161*305b0615SAlexander Koskovich                opp-hz = /bits/ 64 <552000000>;
162*305b0615SAlexander Koskovich                required-opps = <&rpmhpd_opp_turbo>,
163*305b0615SAlexander Koskovich                                <&rpmhpd_opp_nom>;
164*305b0615SAlexander Koskovich            };
165*305b0615SAlexander Koskovich        };
166*305b0615SAlexander Koskovich    };
167