Merge tag 'sched-fifo-2020-08-04' of git://git.kernel.org/pub/scm/linux/kernel/git...
[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
182         spi {
183                 compatible = "spi-gpio";
184                 #address-cells = <1>;
185                 #size-cells = <0>;
186
187                 sck-gpios = <&gpc 23 GPIO_ACTIVE_HIGH>;
188                 mosi-gpios = <&gpc 22 GPIO_ACTIVE_HIGH>;
189                 cs-gpios = <&gpc 21 GPIO_ACTIVE_LOW>;
190                 num-chipselects = <1>;
191         };
192
193         usb_charger: charger {
194                 compatible = "gpio-charger";
195                 charger-type = "usb-sdp";
196                 gpios = <&gpd 28 GPIO_ACTIVE_LOW>;
197                 status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>;
198         };
199
200         simple_battery: battery {
201                 compatible = "simple-battery";
202                 voltage-min-design-microvolt = <3600000>;
203                 voltage-max-design-microvolt = <4200000>;
204         };
205
206         pmu {
207                 compatible = "ingenic,jz4740-battery";
208                 io-channels = <&adc INGENIC_ADC_BATTERY>;
209                 io-channel-names = "battery";
210                 power-supplies = <&usb_charger>;
211                 monitored-battery = <&simple_battery>;
212         };
213
214         hwmon {
215                 compatible = "iio-hwmon";
216                 io-channels = <&adc INGENIC_ADC_AUX>;
217         };
218
219         panel: panel {
220                 compatible = "giantplus,gpm940b0";
221
222                 power-supply = <&vcc>;
223
224                 port {
225                         panel_input: endpoint {
226                                 remote-endpoint = <&panel_output>;
227                         };
228                 };
229         };
230
231         usb_phy: usb-phy {
232                 compatible = "usb-nop-xceiv";
233                 #phy-cells = <0>;
234
235                 vcc-supply = <&vcc>;
236         };
237 };
238
239 &ext {
240         clock-frequency = <12000000>;
241 };
242
243 &rtc_dev {
244         system-power-controller;
245 };
246
247 &uart0 {
248         pinctrl-names = "default";
249         pinctrl-0 = <&pins_uart0>;
250 };
251
252 &uart1 {
253         status = "disabled";
254 };
255
256 &nemc {
257         nandc: nand-controller@1 {
258                 compatible = "ingenic,jz4740-nand";
259                 reg = <1 0 0x4000000>;
260
261                 #address-cells = <1>;
262                 #size-cells = <0>;
263
264                 ingenic,bch-controller = <&ecc>;
265
266                 pinctrl-names = "default";
267                 pinctrl-0 = <&pins_nemc>;
268
269                 rb-gpios = <&gpc 30 GPIO_ACTIVE_LOW>;
270
271                 nand@1 {
272                         reg = <1>;
273
274                         nand-ecc-step-size = <512>;
275                         nand-ecc-strength = <4>;
276                         nand-ecc-mode = "hw";
277                         nand-is-boot-medium;
278                         nand-on-flash-bbt;
279
280                         partitions {
281                                 compatible = "fixed-partitions";
282                                 #address-cells = <1>;
283                                 #size-cells = <1>;
284
285                                 partition@0 {
286                                         label = "boot";
287                                         reg = <0x0 0x400000>;
288                                 };
289
290                                 partition@400000 {
291                                         label = "kernel";
292                                         reg = <0x400000 0x400000>;
293                                 };
294
295                                 partition@800000 {
296                                         label = "rootfs";
297                                         reg = <0x800000 0x0>;
298                                 };
299                         };
300                 };
301         };
302 };
303
304 &lcd {
305         pinctrl-names = "default";
306         pinctrl-0 = <&pins_lcd>;
307
308         port {
309                 panel_output: endpoint {
310                         remote-endpoint = <&panel_input>;
311                 };
312         };
313 };
314
315 &udc {
316         phys = <&usb_phy>;
317 };
318
319 &pinctrl {
320         pins_lcd: lcd {
321                 function = "lcd";
322                 groups = "lcd-8bit";
323         };
324
325         pins_nemc: nemc {
326                 function = "nand";
327                 groups = "nand-cs1";
328         };
329
330         pins_uart0: uart0 {
331                 function = "uart0";
332                 groups = "uart0-data";
333                 bias-disable;
334         };
335
336         pins_mmc: mmc {
337                 mmc {
338                         function = "mmc";
339                         groups = "mmc-1bit", "mmc-4bit";
340                         bias-disable;
341                 };
342
343                 mmc-gpios {
344                         pins = "PD0", "PD2";
345                         bias-disable;
346                 };
347         };
348 };
349
350 &mmc {
351         bus-width = <4>;
352         max-frequency = <24000000>;
353         cd-gpios = <&gpd 0 GPIO_ACTIVE_HIGH>;
354         vmmc-supply = <&mmc_power>;
355
356         pinctrl-names = "default";
357         pinctrl-0 = <&pins_mmc>;
358 };
359
360 &tcu {
361         /* 750 kHz for the system timer and clocksource */
362         assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>;
363         assigned-clock-rates = <750000>, <750000>;
364 };