Merge tag 'for-4.19/post-20180822' of git://git.kernel.dk/linux-block
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / media / qcom,venus.txt
1 * Qualcomm Venus video encoder/decoder accelerators
2
3 - compatible:
4         Usage: required
5         Value type: <stringlist>
6         Definition: Value should contain one of:
7                 - "qcom,msm8916-venus"
8                 - "qcom,msm8996-venus"
9                 - "qcom,sdm845-venus"
10 - reg:
11         Usage: required
12         Value type: <prop-encoded-array>
13         Definition: Register base address and length of the register map.
14 - interrupts:
15         Usage: required
16         Value type: <prop-encoded-array>
17         Definition: Should contain interrupt line number.
18 - clocks:
19         Usage: required
20         Value type: <prop-encoded-array>
21         Definition: A List of phandle and clock specifier pairs as listed
22                     in clock-names property.
23 - clock-names:
24         Usage: required for msm8916
25         Value type: <stringlist>
26         Definition: Should contain the following entries:
27                 - "core"        Core video accelerator clock
28                 - "iface"       Video accelerator AHB clock
29                 - "bus"         Video accelerator AXI clock
30 - clock-names:
31         Usage: required for msm8996
32         Value type: <stringlist>
33         Definition: Should contain the following entries:
34                 - "core"        Core video accelerator clock
35                 - "iface"       Video accelerator AHB clock
36                 - "bus"         Video accelerator AXI clock
37                 - "mbus"        Video MAXI clock
38 - power-domains:
39         Usage: required
40         Value type: <prop-encoded-array>
41         Definition: A phandle and power domain specifier pairs to the
42                     power domain which is responsible for collapsing
43                     and restoring power to the peripheral.
44 - iommus:
45         Usage: required
46         Value type: <prop-encoded-array>
47         Definition: A list of phandle and IOMMU specifier pairs.
48 - memory-region:
49         Usage: required
50         Value type: <phandle>
51         Definition: reference to the reserved-memory for the firmware
52                     memory region.
53
54 * Subnodes
55 The Venus video-codec node must contain two subnodes representing
56 video-decoder and video-encoder.
57
58 Every of video-encoder or video-decoder subnode should have:
59
60 - compatible:
61         Usage: required
62         Value type: <stringlist>
63         Definition: Value should contain "venus-decoder" or "venus-encoder"
64 - clocks:
65         Usage: required for msm8996
66         Value type: <prop-encoded-array>
67         Definition: A List of phandle and clock specifier pairs as listed
68                     in clock-names property.
69 - clock-names:
70         Usage: required for msm8996
71         Value type: <stringlist>
72         Definition: Should contain the following entries:
73                 - "core"        Subcore video accelerator clock
74
75 - power-domains:
76         Usage: required for msm8996
77         Value type: <prop-encoded-array>
78         Definition: A phandle and power domain specifier pairs to the
79                     power domain which is responsible for collapsing
80                     and restoring power to the subcore.
81
82 * An Example
83         video-codec@1d00000 {
84                 compatible = "qcom,msm8916-venus";
85                 reg = <0x01d00000 0xff000>;
86                 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
87                 clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
88                          <&gcc GCC_VENUS0_AHB_CLK>,
89                          <&gcc GCC_VENUS0_AXI_CLK>;
90                 clock-names = "core", "iface", "bus";
91                 power-domains = <&gcc VENUS_GDSC>;
92                 iommus = <&apps_iommu 5>;
93                 memory-region = <&venus_mem>;
94
95                 video-decoder {
96                         compatible = "venus-decoder";
97                         clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
98                         clock-names = "core";
99                         power-domains = <&mmcc VENUS_CORE0_GDSC>;
100                 };
101
102                 video-encoder {
103                         compatible = "venus-encoder";
104                         clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
105                         clock-names = "core";
106                         power-domains = <&mmcc VENUS_CORE1_GDSC>;
107                 };
108         };