summaryrefslogtreecommitdiff
path: root/bindings/msm-cam-lrme.txt
blob: 409be3f08de42b2f1e3b592e4037caaa2edb126c (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
* Qualcomm Technologies, Inc. MSM Camera LRME

The MSM camera Low Resolution Motion Estimation device provides dependency
definitions for enabling Camera LRME HW. MSM camera LRME is implemented in
multiple device nodes. The root LRME device node has properties defined to
hint the driver about the LRME HW nodes available during the probe sequence.
Each node has multiple properties defined for interrupts, clocks and
regulators.

=======================
Required Node Structure
=======================
LRME root interface node takes care of the handling LRME high level
driver handling and controls underlying LRME hardware present.

- compatible
  Usage: required
  Value type: <string>
  Definition: Should be "qcom,cam-lrme"

- compat-hw-name
  Usage: required
  Value type: <string>
  Definition: Should be "qcom,lrme"

- num-lrme
  Usage: required
  Value type: <u32>
  Definition: Number of supported LRME HW blocks

Example:
	qcom,cam-lrme {
		compatible = "qcom,cam-lrme";
		compat-hw-name = "qcom,lrme";
		num-lrme = <1>;
	};

=======================
Required Node Structure
=======================
LRME Node provides interface for Low Resolution Motion Estimation hardware
driver about the device register map, interrupt map, clocks, regulators.

- cell-index
  Usage: required
  Value type: <u32>
  Definition: Node instance number

- compatible
  Usage: required
  Value type: <string>
  Definition: Should be "qcom,lrme"

- reg-names
  Usage: optional
  Value type: <string>
  Definition: Name of the register resources

- reg
  Usage: optional
  Value type: <u32>
  Definition: Register values

- reg-cam-base
  Usage: optional
  Value type: <u32>
  Definition: Offset of the register space compared to
		to Camera base register space

- interrupt-names
  Usage: optional
  Value type: <string>
  Definition: Name of the interrupt

- interrupts
  Usage: optional
  Value type: <u32>
  Definition: Interrupt line associated with LRME HW

- regulator-names
  Usage: required
  Value type: <string>
  Definition: Name of the regulator resources for LRME HW

- camss-supply
  Usage: required
  Value type: <phandle>
  Definition: Regulator reference corresponding to the names listed
		in "regulator-names"

- clock-names
  Usage: required
  Value type: <string>
  Definition: List of clock names required for LRME HW

- clocks
  Usage: required
  Value type: <phandle>
  Definition: List of clocks required for LRME HW

- clock-rates
  Usage: required
  Value type: <u32>
  Definition: List of clocks rates

- clock-cntl-level
  Usage: required
  Value type: <string>
  Definition: List of strings corresponds clock-rates levels
  Supported strings: minsvs, lowsvs, svs, svs_l1, nominal, turbo

- src-clock-name
  Usage: required
  Value type: <string>
  Definition: Source clock name

Examples:
	cam_lrme: qcom,lrme@ac6b000 {
		cell-index = <0>;
		compatible = "qcom,lrme";
		reg-names = "lrme";
		reg = <0xac6b000 0xa00>;
		reg-cam-base = <0x6b000>;
		interrupt-names = "lrme";
		interrupts = <0 476 0>;
		regulator-names = "camss";
		camss-supply = <&titan_top_gdsc>;
		clock-names = "camera_ahb",
			"camera_axi",
			"soc_ahb_clk",
			"cpas_ahb_clk",
			"camnoc_axi_clk",
			"lrme_clk_src",
			"lrme_clk";
		clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
			<&clock_gcc GCC_CAMERA_AXI_CLK>,
			<&clock_camcc CAM_CC_SOC_AHB_CLK>,
			<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
			<&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
			<&clock_camcc CAM_CC_LRME_CLK_SRC>,
			<&clock_camcc CAM_CC_LRME_CLK>;
		clock-rates = <0 0 0 0 0 0 0>,
			<0 0 0 0 0 19200000 19200000>,
			<0 0 0 0 0 19200000 19200000>,
			<0 0 0 0 0 19200000 19200000>;
		clock-cntl-level = "lowsvs", "svs", "svs_l1", "turbo";
		src-clock-name = "lrme_core_clk_src";
	};