1 /* Copyright (c) 2014-2015, 2017, The Linux Foundation. All rights reserved.
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
13 #include <dt-bindings/interrupt-controller/arm-gic.h>
16 msm_vidc: qcom,vidc@c00000 {
17 compatible = "qcom,msm-vidc";
19 reg = <0xC00000 0xff000>;
20 interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
22 qcom,hfi-version = "3xx";
23 qcom,reg-presets = <0x80010 0xffffffff>,
26 qcom,qdss-presets = <0x08180000 0x2000>,
34 qcom,max-hw-load = <2563200>; /* Full 4k @ 60 + 1080p @ 60 */
35 qcom,power-conf = <8294400>; /* WxH - 3840*2160 */
36 qcom,firmware-name = "venus";
37 qcom,imem-size = <524288>; /* 512 kB */
39 qcom,sw-power-collapse;
40 qcom,max-secure-instances = <5>;
43 <972000 490000000 0x55555555>, /* 4k UHD @ 30 */
44 <489600 320000000 0x55555555>, /* 1080p @ 60 */
45 <244800 150000000 0x55555555>, /* 1080p @ 30 */
46 <108000 75000000 0x55555555>, /* 720p @ 30 */
49 <1944000 490000000 0xffffffff>, /* 4k UHD @ 60 */
50 < 972000 320000000 0xffffffff>, /* 4k UHD @ 30 */
51 < 489600 150000000 0xffffffff>, /* 1080p @ 60 */
52 < 244800 75000000 0xffffffff>; /* 1080p @ 30 */
55 <972000 972000 19944000 0x3f00000c>, /* UHD 30 */
56 <489600 489600 972000 0x3f00000c>, /* 1080p 60 */
57 <244800 244800 489600 0x3f00000c>, /* 1080p 30 */
58 <829440 489600 972000 0x04000004>; /* DCI 24 */
61 <32400 30>, /* Encoder UHD */
62 <14400 30>; /* Decoder WQHD */
64 /* Table lists <video_core_freq imem_ab> pairs.
65 * imem_ab value determines the imem clock frequency for the
66 * corresponding video core frequency.
69 <75000000 1500000>, /* imem @ svs2 freq 75 Mhz */
70 <150000000 1500000>, /* imem @ svs2 freq 75 Mhz */
71 <320000000 2500000>, /* imem @ svs freq 171 Mhz */
72 <490000000 6000000>; /* imem @ noimal freq 320 Mhz */
75 /* Note: don't change the order of the regulators below as they
76 * correspond to the order in which the driver enables them.
78 mmagic-venus-supply = <&gdsc_mmagic_video>;
79 venus-supply = <&gdsc_venus>;
80 venus-core0-supply = <&gdsc_venus_core0>;
81 venus-core1-supply = <&gdsc_venus_core1>;
84 clock-names = "smmu_ahb_clk", "smmu_axi_clk",
85 "mmagic_video_axi", "core_clk", "iface_clk",
86 "bus_clk", "maxi_clk", "core0_clk", "core1_clk";
87 clocks = <&clock_mmss clk_smmu_video_ahb_clk>,
88 <&clock_mmss clk_smmu_video_axi_clk>,
89 <&clock_mmss clk_mmagic_video_axi_clk>,
90 <&clock_mmss clk_video_core_clk>,
91 <&clock_mmss clk_video_ahb_clk>,
92 <&clock_mmss clk_video_axi_clk>,
93 <&clock_mmss clk_video_maxi_clk>,
94 <&clock_mmss clk_video_subcore0_clk>,
95 <&clock_mmss clk_video_subcore1_clk>;
96 qcom,clock-configs = <0x0 0x0 0x0 0x1 0x0 0x0 0x0 0x1 0x1>;
100 compatible = "qcom,msm-vidc,bus";
102 qcom,bus-master = <MSM_BUS_MASTER_AMPSS_M0>;
103 qcom,bus-slave = <MSM_BUS_SLAVE_VENUS_CFG>;
104 qcom,bus-governor = "performance";
105 qcom,bus-range-kbps = <1 1>;
109 compatible = "qcom,msm-vidc,bus";
111 qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
112 qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
113 qcom,bus-governor = "msm-vidc-ddr";
114 qcom,bus-range-kbps = <1000 3388000>;
118 compatible = "qcom,msm-vidc,bus";
119 label = "venus-vmem";
120 qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0_OCMEM>;
121 qcom,bus-slave = <MSM_BUS_SLAVE_VMEM>;
122 qcom,bus-governor = "msm-vidc-vmem+";
123 qcom,bus-range-kbps = <1000 6776000>;
127 compatible = "qcom,msm-vidc,bus";
128 label = "venus-arm9-ddr";
129 qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
130 qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
131 qcom,bus-governor = "performance";
132 qcom,bus-range-kbps = <1 1>;
137 compatible = "qcom,msm-vidc,context-bank";
139 iommus = <&venus_smmu 0x00>,
159 buffer-types = <0xfff>;
160 virtual-addr-pool = <0x70800000 0x8F800000>;
164 compatible = "qcom,msm-vidc,context-bank";
165 qcom,fw-context-bank;
166 iommus = <&venus_smmu 0x180>,
170 secure_bitstream_cb {
171 compatible = "qcom,msm-vidc,context-bank";
172 label = "venus_sec_bitstream";
173 iommus = <&venus_smmu 0x100>,
182 buffer-types = <0x241>;
183 virtual-addr-pool = <0x4b000000 0x25800000>;
184 qcom,secure-context-bank;
187 venus_secure_pixel_cb: secure_pixel_cb {
188 compatible = "qcom,msm-vidc,context-bank";
189 label = "venus_sec_pixel";
190 iommus = <&venus_smmu 0x104>,
194 buffer-types = <0x106>;
195 virtual-addr-pool = <0x25800000 0x25800000>;
196 qcom,secure-context-bank;
199 venus_secure_non_pixel_cb: secure_non_pixel_cb {
200 compatible = "qcom,msm-vidc,context-bank";
201 label = "venus_sec_non_pixel";
202 iommus = <&venus_smmu 0x105>,
211 buffer-types = <0x480>;
212 virtual-addr-pool = <0x1000000 0x24800000>;
213 qcom,secure-context-bank;
217 vmem: qcom,vmem@880000 {
218 compatible = "qcom,msm-vmem";
219 interrupts = <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>;
221 reg = <0x880000 0x800>,
223 reg-names = "reg-base", "mem-base";
225 vdd-supply = <&gdsc_mmagic_video>;
226 clocks = <&clock_mmss clk_vmem_ahb_clk>,
227 <&clock_mmss clk_vmem_maxi_clk>;
228 clock-names = "ahb", "maxi";
229 clock-config = <0x0 0x0 0x0 0x1>;
231 qcom,msm-bus,name = "vmem";
232 qcom,msm-bus,num-cases = <2>;
233 qcom,msm-bus,num-paths = <1>;
234 qcom,msm-bus,vectors-KBps =
235 <MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_VMEM_CFG 0 0>,
236 <MSM_BUS_MASTER_AMPSS_M0 MSM_BUS_SLAVE_VMEM_CFG 500 800>;
238 qcom,bank-size = <131072>; /* 128 kB */