summaryrefslogtreecommitdiff
path: root/bindings/media/video/msm-vidc.txt
blob: 793a1a61d3dfc0166b675d5fa59b6a8dee26f696 (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
* Qualcomm Technologies, Inc. MSM VIDC

[Root level node]
Venus
=====
Required properties:
- compatible : one of:
	- "qcom,msm-vidc"
        - "qcom,kona-vidc" : Invokes driver specific data for KONA.
        - "qcom,lito-vidc" : Invokes driver specific data for LITO.
        - "qcom,bengal-vidc" : Invokes driver specific data for BENGAL.
        - "qcom,lagoon-vidc" : Invokes driver specific data for LAGOON.
        - "qcom,scuba-vidc" : Invokes driver specific data for SCUBA.
        - "qcom,qcs8250-vidc" : Invokes driver specific data for KONA.
Optional properties:
- reg : offset and length of the register set for the device.
- sku-index : sku version of the hardware.
- interrupts : should contain the vidc interrupt.
- qcom,reg-presets : list of offset-value pairs for registers to be written.
  The offsets are from the base offset specified in 'reg'. This is mainly
  used for QoS, VBIF, etc. presets for video.
- qcom,qdss-presets : list of physical address and memory allocation size pairs.
  when fw_debug_mode is set as HFI_DEBUG_MODE_QDSS, all firmware messages will be
  written to QDSS memory.
- *-supply: A phandle pointing to the appropriate regulator. Number of
  regulators vary across targets.
- clock-names: an array of clocks that the driver is supposed to be
  manipulating. The clocks names here correspond to the clock names used in
  clk_get(<name>).
- qcom,clock-configs = an array of bitmaps of clocks' configurations. The index
  of the bitmap corresponds to the clock at the same index in qcom,clock-names.
  The bitmaps describes the actions that the device needs to take regarding the
  clock (i.e. scale it based on load).

  The bitmap is defined as:
  scalable = 0x1 (if the driver should vary the clock's frequency based on load)
- qcom,allowed-clock-rates = an array of supported clock rates by the chipset.
- qcom,clock-freq-tbl = node containing individual domain nodes, each with:
     - qcom,codec-mask: a bitmap of supported codec types, every two bits
       represents a codec type.
         supports mvc encoder = 0x00000001
         supports mvc decoder = 0x00000003
         supports h264 encoder = 0x00000004
         supports h264 decoder = 0x0000000c
         supports mpeg1 encoder = 0x00000040
         supports mpeg1 decoder = 0x000000c0
         supports mpeg2 encoder = 0x00000100
         supports mpeg2 decoder = 0x00000300
         supports vp6 encoder = 0x00100000
         supports vp6 decoder = 0x00300000
         supports vp7 encoder = 0x00400000
         supports vp7 decoder = 0x00c00000
         supports vp8 encoder = 0x01000000
         supports vp8 decoder = 0x03000000
         supports hevc encoder = 0x04000000
         supports hevc decoder = 0x0c000000
     - qcom,cycles-per-mb: number of cycles required to process each macro
       block.
     - qcom,low-power-cycles-per-mb: number of cycles required to process each
       macro block in low power mode.
       the required frequency to get the final frequency, the factor is
       represented in Q16 format.
- qcom,vidc-iommu-domains = node containing individual domain nodes, each with:
     - a unique domain name for the domain node (e.g vidc,domain-ns)
     - qcom,vidc-domain-phandle: phandle for the domain as defined in
       <target>-iommu-domains.dtsi (e.g msm8974-v1-iommu-domains.dtsi)
     - qcom,vidc-buffer-types: bitmap of buffer types that can be mapped into each
       IOMMU domain.
       - Buffer types are defined as the following:
           input = 0x1
           output = 0x2
           output2 = 0x4
           extradata input = 0x8
           extradata output = 0x10
           extradata output2 = 0x20
           internal scratch = 0x40
           internal scratch1 = 0x80
           internal scratch2 = 0x100
           internal persist = 0x200
           internal persist1 = 0x400
           internal cmd queue = 0x800
- cache-slice-names = An array of supported cache slice names by llcc
- cache-slices = An array of supported cache slice ids corresponding
  to cache-slice-names by llcc

[Second level nodes]
Context Banks
=============
Required properties:
- compatible : one of:
	- "qcom,msm-vidc,context-bank"
- iommus : A phandle parsed by smmu driver. Number of entries will vary
  across targets.

Optional properties:
- label - string describing iommu domain usage.
- buffer-types : bitmap of buffer types that can be mapped into the current
	IOMMU domain.
        - Buffer types are defined as the following:
          input = 0x1
          output = 0x2
          output2 = 0x4
          extradata input = 0x8
          extradata output = 0x10
          extradata output2 = 0x20
          internal scratch = 0x40
          internal scratch1 = 0x80
          internal scratch2 = 0x100
          internal persist = 0x200
          internal persist1 = 0x400
          internal cmd queue = 0x800
- virtual-addr-pool : offset and length of virtual address pool.
- qcom,secure-context-bank : bool indicating secure context bank.

Buses
=====
Required properties:
- compatible : one of:
	- "qcom,msm-vidc,bus"
- label : an arbitrary name
- qcom,bus-master : an integer descriptor of the bus master. Refer to arch/arm/\
  boot/dts/include/dt-bindings/msm/msm-bus-ids.h for list of acceptable masters
- qcom,bus-slave : an integer descriptor of the bus slave. Refer to arch/arm/\
  boot/dts/include/dt-bindings/msm/msm-bus-ids.h for list of acceptable slaves

Optional properties:
- qcom,bus-range-kbps : an array of two items (<min max>) that indicate the
  minimum and maximum acceptable votes for the bus.
  In the absence of this property <0 INT_MAX> is used.
- qcom,ubwc-10bit : UBWC 10 bit content has different bus requirements,
  this tag will be used to pick the appropriate bus as per the session profile
  as shown below in example.
- qcom,mode : Type of BW calculations to use.
		"performance" - Use highest valid BW vote.
		"venus-ddr", "venus-llcc" - Calculate for DDR, LLCC path.

Memory Heaps
============
Required properties:
- compatible : one of:
	- "qcom,msm-vidc,mem-adsp"
	- "qcom,msm-vidc,mem-cdsp"
- memory-region : phandle to the memory heap/region.

Example:

	qcom,vidc@fdc00000 {
		compatible = "qcom,msm-vidc";
		reg = <0xfdc00000 0xff000>;
		interrupts = <0 44 0>;
		venus-supply = <&gdsc>;
		venus-core0-supply = <&gdsc1>;
		venus-core1-supply = <&gdsc2>;
		qcom,reg-presets = <0x80004 0x1>,
			<0x80178 0x00001FFF>;
		qcom,qdss-presets = <0xFC307000 0x1000>,
			<0xFC322000 0x1000>;
		clock-names = "foo_clk", "bar_clk", "baz_clk";
		qcom,clock-configs = <0x3 0x1 0x0>;
		qcom,buffer-type-tz-usage-table = <0x1 0x1>,
						<0x1fe 0x2>;
		qcom,allowed-clock-rates = <200000000 300000000 400000000>;

		bus_cnoc {
			compatible = "qcom,msm-vidc,bus";
			label = "venus-cnoc";
			qcom,bus-master = <MSM_BUS_MASTER_AMPSS_M0>;
			qcom,bus-slave = <MSM_BUS_SLAVE_VENUS_CFG>;
			qcom,bus-governor = "performance";
			qcom,bus-range-kbps = <1 1>;
		};

		venus_bus_ddr {
			compatible = "qcom,msm-vidc,bus";
			label = "venus-ddr";
			qcom,bus-master = <MSM_BUS_MASTER_VIDEO_P0>;
			qcom,bus-slave = <MSM_BUS_SLAVE_EBI_CH0>;
			qcom,bus-governor = "msm-vidc-ddr";
			qcom,bus-range-kbps = <1000 3388000>;
		};

		non_secure_cb {
			compatible = "qcom,msm-vidc,context-bank";
			label = "venus_ns";
			iommus =
				<&apps_smmu 0x1300 0x60>;
			buffer-types = <0xfff>;
			virtual-addr-pool = <0x25800000 0xba800000>;
		};

	};