diff options
Diffstat (limited to 'arch/mips/boot/dts/ingenic/qi_lb60.dts')
-rw-r--r-- | arch/mips/boot/dts/ingenic/qi_lb60.dts | 363 |
1 files changed, 363 insertions, 0 deletions
diff --git a/arch/mips/boot/dts/ingenic/qi_lb60.dts b/arch/mips/boot/dts/ingenic/qi_lb60.dts new file mode 100644 index 000000000..ba0218971 --- /dev/null +++ b/arch/mips/boot/dts/ingenic/qi_lb60.dts | |||
@@ -0,0 +1,363 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
2 | /dts-v1/; | ||
3 | |||
4 | #include "jz4740.dtsi" | ||
5 | |||
6 | #include <dt-bindings/gpio/gpio.h> | ||
7 | #include <dt-bindings/iio/adc/ingenic,adc.h> | ||
8 | #include <dt-bindings/clock/ingenic,tcu.h> | ||
9 | #include <dt-bindings/input/input.h> | ||
10 | |||
11 | #define KEY_QI_QI KEY_F13 | ||
12 | #define KEY_QI_UPRED KEY_RIGHTALT | ||
13 | #define KEY_QI_VOLUP KEY_VOLUMEUP | ||
14 | #define KEY_QI_VOLDOWN KEY_VOLUMEDOWN | ||
15 | #define KEY_QI_FN KEY_LEFTCTRL | ||
16 | |||
17 | / { | ||
18 | compatible = "qi,lb60", "ingenic,jz4740"; | ||
19 | model = "Ben Nanonote"; | ||
20 | |||
21 | memory { | ||
22 | device_type = "memory"; | ||
23 | reg = <0x0 0x2000000>; | ||
24 | }; | ||
25 | |||
26 | chosen { | ||
27 | stdout-path = &uart0; | ||
28 | }; | ||
29 | |||
30 | vcc: regulator@0 { | ||
31 | compatible = "regulator-fixed"; | ||
32 | regulator-name = "vcc"; | ||
33 | |||
34 | regulator-min-microvolt = <3300000>; | ||
35 | regulator-max-microvolt = <3300000>; | ||
36 | regulator-always-on; | ||
37 | }; | ||
38 | |||
39 | mmc_power: regulator@1 { | ||
40 | compatible = "regulator-fixed"; | ||
41 | regulator-name = "mmc_vcc"; | ||
42 | gpio = <&gpd 2 0>; | ||
43 | |||
44 | regulator-min-microvolt = <3300000>; | ||
45 | regulator-max-microvolt = <3300000>; | ||
46 | }; | ||
47 | |||
48 | amp_supply: regulator@2 { | ||
49 | compatible = "regulator-fixed"; | ||
50 | regulator-name = "amp_supply"; | ||
51 | gpio = <&gpd 4 0>; | ||
52 | enable-active-high; | ||
53 | |||
54 | regulator-min-microvolt = <3300000>; | ||
55 | regulator-max-microvolt = <3300000>; | ||
56 | }; | ||
57 | |||
58 | amp: analog-amplifier { | ||
59 | compatible = "simple-audio-amplifier"; | ||
60 | enable-gpios = <&gpb 29 GPIO_ACTIVE_HIGH>; | ||
61 | VCC-supply = <&_supply>; | ||
62 | }; | ||
63 | |||
64 | sound { | ||
65 | compatible = "simple-audio-card"; | ||
66 | |||
67 | simple-audio-card,name = "QI LB60"; | ||
68 | simple-audio-card,format = "i2s"; | ||
69 | |||
70 | simple-audio-card,widgets = | ||
71 | "Speaker", "Speaker", | ||
72 | "Microphone", "Mic"; | ||
73 | simple-audio-card,routing = | ||
74 | "MIC", "Mic", | ||
75 | "Speaker", "OUTL", | ||
76 | "Speaker", "OUTR", | ||
77 | "INL", "LOUT", | ||
78 | "INR", "ROUT"; | ||
79 | |||
80 | simple-audio-card,aux-devs = <&>; | ||
81 | |||
82 | simple-audio-card,bitclock-master = <&dai_codec>; | ||
83 | simple-audio-card,frame-master = <&dai_codec>; | ||
84 | |||
85 | dai_cpu: simple-audio-card,cpu { | ||
86 | sound-dai = <&aic>; | ||
87 | }; | ||
88 | |||
89 | dai_codec: simple-audio-card,codec { | ||
90 | sound-dai = <&codec>; | ||
91 | }; | ||
92 | }; | ||
93 | |||
94 | keys { | ||
95 | compatible = "gpio-keys"; | ||
96 | |||
97 | key { | ||
98 | label = "Power"; | ||
99 | wakeup-source; | ||
100 | linux,code = <KEY_POWER>; | ||
101 | gpios = <&gpd 29 GPIO_ACTIVE_LOW>; | ||
102 | }; | ||
103 | }; | ||
104 | |||
105 | keyboard { | ||
106 | compatible = "gpio-matrix-keypad"; | ||
107 | |||
108 | col-scan-delay-us = <10>; | ||
109 | debounce-delay-ms = <10>; | ||
110 | wakeup-source; | ||
111 | |||
112 | row-gpios = <&gpd 18 0>, <&gpd 19 0>, <&gpd 20 0>, <&gpd 21 0>, | ||
113 | <&gpd 22 0>, <&gpd 23 0>, <&gpd 24 0>, <&gpd 26 0>; | ||
114 | col-gpios = <&gpc 10 0>, <&gpc 11 0>, <&gpc 12 0>, <&gpc 13 0>, | ||
115 | <&gpc 14 0>, <&gpc 15 0>, <&gpc 16 0>, <&gpc 17 0>; | ||
116 | gpio-activelow; | ||
117 | |||
118 | linux,keymap = | ||
119 | <MATRIX_KEY(0, 0, KEY_F1)>, /* S2 */ | ||
120 | <MATRIX_KEY(0, 1, KEY_F2)>, /* S3 */ | ||
121 | <MATRIX_KEY(0, 2, KEY_F3)>, /* S4 */ | ||
122 | <MATRIX_KEY(0, 3, KEY_F4)>, /* S5 */ | ||
123 | <MATRIX_KEY(0, 4, KEY_F5)>, /* S6 */ | ||
124 | <MATRIX_KEY(0, 5, KEY_F6)>, /* S7 */ | ||
125 | <MATRIX_KEY(0, 6, KEY_F7)>, /* S8 */ | ||
126 | |||
127 | <MATRIX_KEY(1, 0, KEY_Q)>, /* S10 */ | ||
128 | <MATRIX_KEY(1, 1, KEY_W)>, /* S11 */ | ||
129 | <MATRIX_KEY(1, 2, KEY_E)>, /* S12 */ | ||
130 | <MATRIX_KEY(1, 3, KEY_R)>, /* S13 */ | ||
131 | <MATRIX_KEY(1, 4, KEY_T)>, /* S14 */ | ||
132 | <MATRIX_KEY(1, 5, KEY_Y)>, /* S15 */ | ||
133 | <MATRIX_KEY(1, 6, KEY_U)>, /* S16 */ | ||
134 | <MATRIX_KEY(1, 7, KEY_I)>, /* S17 */ | ||
135 | <MATRIX_KEY(2, 0, KEY_A)>, /* S18 */ | ||
136 | <MATRIX_KEY(2, 1, KEY_S)>, /* S19 */ | ||
137 | <MATRIX_KEY(2, 2, KEY_D)>, /* S20 */ | ||
138 | <MATRIX_KEY(2, 3, KEY_F)>, /* S21 */ | ||
139 | <MATRIX_KEY(2, 4, KEY_G)>, /* S22 */ | ||
140 | <MATRIX_KEY(2, 5, KEY_H)>, /* S23 */ | ||
141 | <MATRIX_KEY(2, 6, KEY_J)>, /* S24 */ | ||
142 | <MATRIX_KEY(2, 7, KEY_K)>, /* S25 */ | ||
143 | <MATRIX_KEY(3, 0, KEY_ESC)>, /* S26 */ | ||
144 | <MATRIX_KEY(3, 1, KEY_Z)>, /* S27 */ | ||
145 | <MATRIX_KEY(3, 2, KEY_X)>, /* S28 */ | ||
146 | <MATRIX_KEY(3, 3, KEY_C)>, /* S29 */ | ||
147 | <MATRIX_KEY(3, 4, KEY_V)>, /* S30 */ | ||
148 | <MATRIX_KEY(3, 5, KEY_B)>, /* S31 */ | ||
149 | <MATRIX_KEY(3, 6, KEY_N)>, /* S32 */ | ||
150 | <MATRIX_KEY(3, 7, KEY_M)>, /* S33 */ | ||
151 | <MATRIX_KEY(4, 0, KEY_TAB)>, /* S34 */ | ||
152 | <MATRIX_KEY(4, 1, KEY_CAPSLOCK)>, /* S35 */ | ||
153 | <MATRIX_KEY(4, 2, KEY_BACKSLASH)>, /* S36 */ | ||
154 | <MATRIX_KEY(4, 3, KEY_APOSTROPHE)>, /* S37 */ | ||
155 | <MATRIX_KEY(4, 4, KEY_COMMA)>, /* S38 */ | ||
156 | <MATRIX_KEY(4, 5, KEY_DOT)>, /* S39 */ | ||
157 | <MATRIX_KEY(4, 6, KEY_SLASH)>, /* S40 */ | ||
158 | <MATRIX_KEY(4, 7, KEY_UP)>, /* S41 */ | ||
159 | <MATRIX_KEY(5, 0, KEY_O)>, /* S42 */ | ||
160 | <MATRIX_KEY(5, 1, KEY_L)>, /* S43 */ | ||
161 | <MATRIX_KEY(5, 2, KEY_EQUAL)>, /* S44 */ | ||
162 | <MATRIX_KEY(5, 3, KEY_QI_UPRED)>, /* S45 */ | ||
163 | <MATRIX_KEY(5, 4, KEY_SPACE)>, /* S46 */ | ||
164 | <MATRIX_KEY(5, 5, KEY_QI_QI)>, /* S47 */ | ||
165 | <MATRIX_KEY(5, 6, KEY_RIGHTCTRL)>, /* S48 */ | ||
166 | <MATRIX_KEY(5, 7, KEY_LEFT)>, /* S49 */ | ||
167 | <MATRIX_KEY(6, 0, KEY_F8)>, /* S50 */ | ||
168 | <MATRIX_KEY(6, 1, KEY_P)>, /* S51 */ | ||
169 | <MATRIX_KEY(6, 2, KEY_BACKSPACE)>,/* S52 */ | ||
170 | <MATRIX_KEY(6, 3, KEY_ENTER)>, /* S53 */ | ||
171 | <MATRIX_KEY(6, 4, KEY_QI_VOLUP)>, /* S54 */ | ||
172 | <MATRIX_KEY(6, 5, KEY_QI_VOLDOWN)>, /* S55 */ | ||
173 | <MATRIX_KEY(6, 6, KEY_DOWN)>, /* S56 */ | ||
174 | <MATRIX_KEY(6, 7, KEY_RIGHT)>, /* S57 */ | ||
175 | |||
176 | <MATRIX_KEY(7, 0, KEY_LEFTSHIFT)>, /* S58 */ | ||
177 | <MATRIX_KEY(7, 1, KEY_LEFTALT)>, /* S59 */ | ||
178 | <MATRIX_KEY(7, 2, KEY_QI_FN)>; /* S60 */ | ||
179 | }; | ||
180 | |||
181 | spi { | ||
182 | compatible = "spi-gpio"; | ||
183 | #address-cells = <1>; | ||
184 | #size-cells = <0>; | ||
185 | |||
186 | sck-gpios = <&gpc 23 GPIO_ACTIVE_HIGH>; | ||
187 | mosi-gpios = <&gpc 22 GPIO_ACTIVE_HIGH>; | ||
188 | cs-gpios = <&gpc 21 GPIO_ACTIVE_LOW>; | ||
189 | num-chipselects = <1>; | ||
190 | }; | ||
191 | |||
192 | usb_charger: charger { | ||
193 | compatible = "gpio-charger"; | ||
194 | charger-type = "usb-sdp"; | ||
195 | gpios = <&gpd 28 GPIO_ACTIVE_LOW>; | ||
196 | status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>; | ||
197 | }; | ||
198 | |||
199 | simple_battery: battery { | ||
200 | compatible = "simple-battery"; | ||
201 | voltage-min-design-microvolt = <3600000>; | ||
202 | voltage-max-design-microvolt = <4200000>; | ||
203 | }; | ||
204 | |||
205 | pmu { | ||
206 | compatible = "ingenic,jz4740-battery"; | ||
207 | io-channels = <&adc INGENIC_ADC_BATTERY>; | ||
208 | io-channel-names = "battery"; | ||
209 | power-supplies = <&usb_charger>; | ||
210 | monitored-battery = <&simple_battery>; | ||
211 | }; | ||
212 | |||
213 | hwmon { | ||
214 | compatible = "iio-hwmon"; | ||
215 | io-channels = <&adc INGENIC_ADC_AUX>; | ||
216 | }; | ||
217 | |||
218 | panel: panel { | ||
219 | compatible = "giantplus,gpm940b0"; | ||
220 | |||
221 | power-supply = <&vcc>; | ||
222 | |||
223 | port { | ||
224 | panel_input: endpoint { | ||
225 | remote-endpoint = <&panel_output>; | ||
226 | }; | ||
227 | }; | ||
228 | }; | ||
229 | |||
230 | usb_phy: usb-phy { | ||
231 | compatible = "usb-nop-xceiv"; | ||
232 | #phy-cells = <0>; | ||
233 | |||
234 | vcc-supply = <&vcc>; | ||
235 | }; | ||
236 | }; | ||
237 | |||
238 | &ext { | ||
239 | clock-frequency = <12000000>; | ||
240 | }; | ||
241 | |||
242 | &rtc_dev { | ||
243 | system-power-controller; | ||
244 | }; | ||
245 | |||
246 | &uart0 { | ||
247 | pinctrl-names = "default"; | ||
248 | pinctrl-0 = <&pins_uart0>; | ||
249 | }; | ||
250 | |||
251 | &uart1 { | ||
252 | status = "disabled"; | ||
253 | }; | ||
254 | |||
255 | &nemc { | ||
256 | nandc: nand-controller@1 { | ||
257 | compatible = "ingenic,jz4740-nand"; | ||
258 | reg = <1 0 0x4000000>; | ||
259 | |||
260 | #address-cells = <1>; | ||
261 | #size-cells = <0>; | ||
262 | |||
263 | ecc-engine = <&ecc>; | ||
264 | |||
265 | pinctrl-names = "default"; | ||
266 | pinctrl-0 = <&pins_nemc>; | ||
267 | |||
268 | rb-gpios = <&gpc 30 GPIO_ACTIVE_HIGH>; | ||
269 | |||
270 | nand@1 { | ||
271 | reg = <1>; | ||
272 | |||
273 | nand-ecc-step-size = <512>; | ||
274 | nand-ecc-strength = <4>; | ||
275 | nand-ecc-mode = "hw"; | ||
276 | nand-is-boot-medium; | ||
277 | nand-on-flash-bbt; | ||
278 | |||
279 | partitions { | ||
280 | compatible = "fixed-partitions"; | ||
281 | #address-cells = <1>; | ||
282 | #size-cells = <1>; | ||
283 | |||
284 | partition@0 { | ||
285 | label = "boot"; | ||
286 | reg = <0x0 0x400000>; | ||
287 | }; | ||
288 | |||
289 | partition@400000 { | ||
290 | label = "kernel"; | ||
291 | reg = <0x400000 0x400000>; | ||
292 | }; | ||
293 | |||
294 | partition@800000 { | ||
295 | label = "rootfs"; | ||
296 | reg = <0x800000 0x0>; | ||
297 | }; | ||
298 | }; | ||
299 | }; | ||
300 | }; | ||
301 | }; | ||
302 | |||
303 | &lcd { | ||
304 | pinctrl-names = "default"; | ||
305 | pinctrl-0 = <&pins_lcd>; | ||
306 | |||
307 | port { | ||
308 | panel_output: endpoint { | ||
309 | remote-endpoint = <&panel_input>; | ||
310 | }; | ||
311 | }; | ||
312 | }; | ||
313 | |||
314 | &udc { | ||
315 | phys = <&usb_phy>; | ||
316 | }; | ||
317 | |||
318 | &pinctrl { | ||
319 | pins_lcd: lcd { | ||
320 | function = "lcd"; | ||
321 | groups = "lcd-8bit"; | ||
322 | }; | ||
323 | |||
324 | pins_nemc: nemc { | ||
325 | function = "nand"; | ||
326 | groups = "nand-fre-fwe", "nand-cs1"; | ||
327 | }; | ||
328 | |||
329 | pins_uart0: uart0 { | ||
330 | function = "uart0"; | ||
331 | groups = "uart0-data"; | ||
332 | bias-disable; | ||
333 | }; | ||
334 | |||
335 | pins_mmc: mmc { | ||
336 | mmc { | ||
337 | function = "mmc"; | ||
338 | groups = "mmc-1bit", "mmc-4bit"; | ||
339 | bias-disable; | ||
340 | }; | ||
341 | |||
342 | mmc-gpios { | ||
343 | pins = "PD0", "PD2"; | ||
344 | bias-disable; | ||
345 | }; | ||
346 | }; | ||
347 | }; | ||
348 | |||
349 | &mmc { | ||
350 | bus-width = <4>; | ||
351 | max-frequency = <24000000>; | ||
352 | cd-gpios = <&gpd 0 GPIO_ACTIVE_HIGH>; | ||
353 | vmmc-supply = <&mmc_power>; | ||
354 | |||
355 | pinctrl-names = "default"; | ||
356 | pinctrl-0 = <&pins_mmc>; | ||
357 | }; | ||
358 | |||
359 | &tcu { | ||
360 | /* 750 kHz for the system timer and clocksource */ | ||
361 | assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>; | ||
362 | assigned-clock-rates = <750000>, <750000>; | ||
363 | }; | ||