MIPS: dts/ingenic: Cleanup qi_lb60.dts
[linux-2.6-microblaze.git] / arch / mips / boot / dts / ingenic / qi_lb60.dts
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 = <&amp_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 = <&amp>;
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 };