hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/arch/mips/boot/dts/ingenic/qi_lb60.dts
....@@ -3,11 +3,235 @@
33
44 #include "jz4740.dtsi"
55
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
+
617 / {
718 compatible = "qi,lb60", "ingenic,jz4740";
19
+ model = "Ben Nanonote";
20
+
21
+ memory {
22
+ device_type = "memory";
23
+ reg = <0x0 0x2000000>;
24
+ };
825
926 chosen {
1027 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>;
11235 };
12236 };
13237
....@@ -24,10 +248,116 @@
24248 pinctrl-0 = <&pins_uart0>;
25249 };
26250
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
+
27318 &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
+
28329 pins_uart0: uart0 {
29330 function = "uart0";
30331 groups = "uart0-data";
31332 bias-disable;
32333 };
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>;
33363 };