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