summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/media/qcom,venus.txt
blob: b602c4c025e70553f7c19a8d187b0637d125dc74 (plain)
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
109
110
111
112
113
114
115
116
117
118
119
120
* 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, and one optional firmware subnode.
Firmware subnode is needed when the platform does not have TrustZone.

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.

The firmware subnode must have:

- iommus:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A list of phandle and IOMMU specifier pairs.

* 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>;
		};

		video-firmware {
			iommus = <&apps_iommu 0x10b2 0x0>;
		};
	};