arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / arch / mips / boot / dts / ingenic / gcw0.dts
1 // SPDX-License-Identifier: GPL-2.0
2 /dts-v1/;
3
4 #include "jz4770.dtsi"
5 #include <dt-bindings/clock/ingenic,tcu.h>
6
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/iio/adc/ingenic,adc.h>
9 #include <dt-bindings/input/input.h>
10
11 / {
12         compatible = "gcw,zero", "ingenic,jz4770";
13         model = "GCW Zero";
14
15         aliases {
16                 serial0 = &uart0;
17                 serial1 = &uart1;
18                 serial2 = &uart2;
19                 serial3 = &uart3;
20         };
21
22         memory: memory {
23                 device_type = "memory";
24                 reg = <0x0 0x10000000>,
25                       <0x30000000 0x10000000>;
26         };
27
28         chosen {
29                 stdout-path = "serial2:57600n8";
30         };
31
32         vcc: regulator@0 {
33                 compatible = "regulator-fixed";
34                 regulator-name = "vcc";
35
36                 regulator-min-microvolt = <3300000>;
37                 regulator-max-microvolt = <3300000>;
38                 regulator-always-on;
39         };
40
41         mmc1_power: regulator@1 {
42                 compatible = "regulator-fixed";
43                 regulator-name = "mmc1_vcc";
44                 gpio = <&gpe 9 0>;
45
46                 regulator-min-microvolt = <3300000>;
47                 regulator-max-microvolt = <3300000>;
48                 vin-supply = <&vcc>;
49         };
50
51         headphones_amp: analog-amplifier@0 {
52                 compatible = "simple-audio-amplifier";
53                 enable-gpios = <&gpf 3 GPIO_ACTIVE_LOW>;
54                 enable-delay-ms = <50>;
55
56                 VCC-supply = <&ldo5>;
57                 sound-name-prefix = "Headphones Amp";
58         };
59
60         speaker_amp: analog-amplifier@1 {
61                 compatible = "simple-audio-amplifier";
62                 enable-gpios = <&gpf 20 GPIO_ACTIVE_HIGH>;
63
64                 VCC-supply = <&ldo5>;
65                 sound-name-prefix = "Speaker Amp";
66         };
67
68         sound {
69                 compatible = "simple-audio-card";
70
71                 simple-audio-card,name = "gcw0-audio";
72                 simple-audio-card,format = "i2s";
73
74                 simple-audio-card,widgets =
75                         "Speaker", "Speaker",
76                         "Headphone", "Headphones",
77                         "Microphone", "Built-in Mic";
78                 simple-audio-card,routing =
79                         "Headphones Amp INL", "LHPOUT",
80                         "Headphones Amp INR", "RHPOUT",
81                         "Headphones", "Headphones Amp OUTL",
82                         "Headphones", "Headphones Amp OUTR",
83                         "Speaker Amp INL", "LOUT",
84                         "Speaker Amp INR", "ROUT",
85                         "Speaker", "Speaker Amp OUTL",
86                         "Speaker", "Speaker Amp OUTR",
87                         "LLINEIN", "Cap-less",
88                         "RLINEIN", "Cap-less",
89                         "Built-in Mic", "MICBIAS",
90                         "MIC1P", "Built-in Mic",
91                         "MIC1N", "Built-in Mic";
92                 simple-audio-card,pin-switches = "Speaker", "Headphones";
93
94                 simple-audio-card,hp-det-gpio = <&gpf 21 GPIO_ACTIVE_LOW>;
95                 simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>;
96
97                 simple-audio-card,bitclock-master = <&dai_codec>;
98                 simple-audio-card,frame-master = <&dai_codec>;
99
100                 dai_cpu: simple-audio-card,cpu {
101                         sound-dai = <&aic>;
102                 };
103
104                 dai_codec: simple-audio-card,codec {
105                         sound-dai = <&codec>;
106                 };
107         };
108
109         rumble {
110                 compatible = "pwm-vibrator";
111                 pwms = <&pwm 4 2000000 0>;
112                 pwm-names = "enable";
113
114                 pinctrl-names = "default";
115                 pinctrl-0 = <&pins_pwm4>;
116         };
117
118         backlight: backlight {
119                 compatible = "pwm-backlight";
120                 pwms = <&pwm 1 40000 0>;
121                 power-supply = <&vcc>;
122
123                 brightness-levels = <0 16 32 48 64 80 96 112 128
124                                      144 160 176 192 208 224 240 255>;
125                 default-brightness-level = <12>;
126
127                 pinctrl-names = "default";
128                 pinctrl-0 = <&pins_pwm1>;
129         };
130
131         gpio-keys {
132                 compatible = "gpio-keys";
133                 autorepeat;
134
135                 button-0 {
136                         label = "D-pad up";
137                         linux,code = <KEY_UP>;
138                         linux,can-disable;
139                         gpios = <&gpe 21 GPIO_ACTIVE_LOW>;
140                 };
141
142                 button-1 {
143                         label = "D-pad down";
144                         linux,code = <KEY_DOWN>;
145                         linux,can-disable;
146                         gpios = <&gpe 25 GPIO_ACTIVE_LOW>;
147                 };
148
149                 button-2 {
150                         label = "D-pad left";
151                         linux,code = <KEY_LEFT>;
152                         linux,can-disable;
153                         gpios = <&gpe 23 GPIO_ACTIVE_LOW>;
154                 };
155
156                 button-3 {
157                         label = "D-pad right";
158                         linux,code = <KEY_RIGHT>;
159                         linux,can-disable;
160                         gpios = <&gpe 24 GPIO_ACTIVE_LOW>;
161                 };
162
163                 button-4 {
164                         label = "Button A";
165                         linux,code = <KEY_LEFTCTRL>;
166                         linux,can-disable;
167                         gpios = <&gpe 29 GPIO_ACTIVE_LOW>;
168                 };
169
170                 button-5 {
171                         label = "Button B";
172                         linux,code = <KEY_LEFTALT>;
173                         linux,can-disable;
174                         gpios = <&gpe 20 GPIO_ACTIVE_LOW>;
175                 };
176
177                 button-6 {
178                         label = "Button Y";
179                         linux,code = <KEY_SPACE>;
180                         linux,can-disable;
181                         gpios = <&gpe 27 GPIO_ACTIVE_LOW>;
182                 };
183
184                 button-7 {
185                         label = "Button X";
186                         linux,code = <KEY_LEFTSHIFT>;
187                         linux,can-disable;
188                         gpios = <&gpe 28 GPIO_ACTIVE_LOW>;
189                 };
190
191                 button-8 {
192                         label = "Left shoulder button";
193                         linux,code = <KEY_TAB>;
194                         linux,can-disable;
195                         gpios = <&gpb 20 GPIO_ACTIVE_LOW>;
196                 };
197
198                 button-9 {
199                         label = "Right shoulder button";
200                         linux,code = <KEY_BACKSPACE>;
201                         linux,can-disable;
202                         gpios = <&gpe 26 GPIO_ACTIVE_LOW>;
203                 };
204
205                 button-10 {
206                         label = "Start button";
207                         linux,code = <KEY_ENTER>;
208                         linux,can-disable;
209                         gpios = <&gpb 21 GPIO_ACTIVE_LOW>;
210                 };
211
212                 button-11 {
213                         label = "Select button";
214                         linux,code = <KEY_ESC>;
215                         linux,can-disable;
216                         /*
217                          * This is the only button that is active high,
218                          * since it doubles as BOOT_SEL1.
219                          */
220                         gpios = <&gpd 18 GPIO_ACTIVE_HIGH>;
221                 };
222
223                 button-12 {
224                         label = "Power slider";
225                         linux,code = <KEY_POWER>;
226                         linux,can-disable;
227                         gpios = <&gpa 30 GPIO_ACTIVE_LOW>;
228                         wakeup-source;
229                 };
230
231                 button-13 {
232                         label = "Power hold";
233                         linux,code = <KEY_PAUSE>;
234                         linux,can-disable;
235                         gpios = <&gpf 11 GPIO_ACTIVE_LOW>;
236                 };
237         };
238
239         i2c3: i2c-controller@3 {
240                 compatible = "i2c-gpio";
241                 #address-cells = <1>;
242                 #size-cells = <0>;
243
244                 sda-gpios = <&gpd 5 GPIO_ACTIVE_HIGH>;
245                 scl-gpios = <&gpd 4 GPIO_ACTIVE_HIGH>;
246                 i2c-gpio,delay-us = <2>; /* 250 kHz */
247
248                 act8600: pmic@5a {
249                         compatible = "active-semi,act8600";
250                         reg = <0x5a>;
251
252                         regulators {
253                                 /* USB OTG */
254                                 otg_vbus: SUDCDC_REG4 {
255                                         /*
256                                          * 5.3V instead of 5.0V to compensate
257                                          * for the voltage drop of a diode
258                                          * between the regulator and the
259                                          * connector.
260                                          */
261                                         regulator-min-microvolt = <5300000>;
262                                         regulator-max-microvolt = <5300000>;
263                                         inl-supply = <&vcc>;
264                                 };
265
266                                 /*
267                                  * When this is off, there is no sound, but also
268                                  * no USB networking.
269                                  */
270                                 ldo5: LDO5 {
271                                         regulator-min-microvolt = <2500000>;
272                                         regulator-max-microvolt = <2500000>;
273                                         inl-supply = <&vcc>;
274                                 };
275
276                                 /* LCD panel and FM radio */
277                                 ldo6: LDO6 {
278                                         regulator-min-microvolt = <3300000>;
279                                         regulator-max-microvolt = <3300000>;
280                                         inl-supply = <&vcc>;
281                                 };
282
283                                 /* ??? */
284                                 LDO7 {
285                                         regulator-min-microvolt = <3300000>;
286                                         regulator-max-microvolt = <3300000>;
287                                         /*regulator-always-on;*/
288                                         inl-supply = <&vcc>;
289                                 };
290
291                                 /*
292                                  * The colors on the LCD are wrong when this is
293                                  * off. Which is strange, since the LCD panel
294                                  * data sheet only mentions a 3.3V input.
295                                  */
296                                 LDO8 {
297                                         regulator-min-microvolt = <1800000>;
298                                         regulator-max-microvolt = <1800000>;
299                                         regulator-always-on;
300                                         inl-supply = <&vcc>;
301                                 };
302
303                                 /* RTC fixed 3.3V */
304                                 LDO_REG9 {
305                                         regulator-min-microvolt = <3300000>;
306                                         regulator-max-microvolt = <3300000>;
307                                         regulator-always-on;
308                                         inl-supply = <&vcc>;
309                                 };
310
311                                 /* Unused fixed 1.2V */
312                                 LDO_REG10 {
313                                         inl-supply = <&vcc>;
314                                 };
315                         };
316                 };
317         };
318
319         leds {
320                 compatible = "gpio-leds";
321
322                 led {
323                         gpios = <&gpb 30 GPIO_ACTIVE_LOW>;
324                         default-state = "on";
325                 };
326         };
327
328         spi {
329                 compatible = "spi-gpio";
330                 #address-cells = <1>;
331                 #size-cells = <0>;
332
333                 sck-gpios = <&gpe 15 GPIO_ACTIVE_HIGH>;
334                 mosi-gpios = <&gpe 17 GPIO_ACTIVE_HIGH>;
335                 cs-gpios = <&gpe 16 GPIO_ACTIVE_HIGH>;
336                 num-chipselects = <1>;
337
338                 nt39016@0 {
339                         compatible = "kingdisplay,kd035g6-54nt";
340                         reg = <0>;
341
342                         spi-max-frequency = <3125000>;
343                         spi-3wire;
344
345                         reset-gpios = <&gpe 2 GPIO_ACTIVE_LOW>;
346
347                         backlight = <&backlight>;
348                         power-supply = <&ldo6>;
349
350                         port {
351                                 panel_input: endpoint {
352                                         remote-endpoint = <&panel_output>;
353                                 };
354                         };
355                 };
356         };
357
358         connector {
359                 compatible = "gpio-usb-b-connector", "usb-b-connector";
360                 label = "mini-USB";
361                 type = "mini";
362
363                 /*
364                  * USB OTG is not yet working reliably, the ID detection
365                  * mechanism tends to fry easily for unknown reasons.
366                  * Until this is fixed, disable OTG by not providing the
367                  * ID GPIO to the driver.
368                  */
369                 //id-gpios = <&gpf 18 GPIO_ACTIVE_LOW>;
370
371                 vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
372                 vbus-supply = <&otg_vbus>;
373
374                 pinctrl-names = "default";
375                 pinctrl-0 = <&pins_otg>;
376
377                 port {
378                         usb_ep: endpoint {
379                                 remote-endpoint = <&usb_otg_ep>;
380                         };
381                 };
382         };
383 };
384
385 &ext {
386         clock-frequency = <12000000>;
387 };
388
389 &pinctrl {
390         pins_lcd: lcd {
391                 function = "lcd";
392                 groups = "lcd-24bit";
393         };
394
395         pins_uart2: uart2 {
396                 function = "uart2";
397                 groups = "uart2-data";
398         };
399
400         pins_mmc0: mmc0 {
401                 function = "mmc0";
402                 groups = "mmc0-1bit-a", "mmc0-4bit-a";
403         };
404
405         pins_mmc1: mmc1 {
406                 function = "mmc1";
407                 groups = "mmc1-1bit-d", "mmc1-4bit-d";
408         };
409
410         pins_otg: otg {
411                 otg-vbus-pin {
412                         function = "otg";
413                         groups = "otg-vbus";
414                 };
415
416                 vbus-pin {
417                         pins = "PB5";
418                         bias-disable;
419                 };
420         };
421
422         pins_pwm1: pwm1 {
423                 function = "pwm1";
424                 groups = "pwm1";
425         };
426
427         pins_pwm4: pwm4 {
428                 function = "pwm4";
429                 groups = "pwm4";
430         };
431 };
432
433 &uart2 {
434         pinctrl-names = "default";
435         pinctrl-0 = <&pins_uart2>;
436
437         status = "okay";
438 };
439
440 &cgu {
441         /*
442          * Put high-speed peripherals under PLL1, such that we can change the
443          * PLL0 frequency on demand without having to suspend peripherals.
444          * We use a rate of 432 MHz, which is the least common multiple of
445          * 27 MHz (required by TV encoder) and 48 MHz (required by USB host).
446          * Put the GPU under PLL0 since we want a higher frequency.
447          * Use the 32 kHz oscillator as the parent of the RTC for a higher
448          * precision.
449          */
450         assigned-clocks =
451                 <&cgu JZ4770_CLK_PLL1>,
452                 <&cgu JZ4770_CLK_GPU>,
453                 <&cgu JZ4770_CLK_RTC>,
454                 <&cgu JZ4770_CLK_UHC>,
455                 <&cgu JZ4770_CLK_LPCLK_MUX>,
456                 <&cgu JZ4770_CLK_MMC0_MUX>,
457                 <&cgu JZ4770_CLK_MMC1_MUX>;
458         assigned-clock-parents =
459                 <0>,
460                 <&cgu JZ4770_CLK_PLL0>,
461                 <&cgu JZ4770_CLK_OSC32K>,
462                 <&cgu JZ4770_CLK_PLL1>,
463                 <&cgu JZ4770_CLK_PLL1>,
464                 <&cgu JZ4770_CLK_PLL1>,
465                 <&cgu JZ4770_CLK_PLL1>;
466         assigned-clock-rates =
467                 <432000000>,
468                 <600000000>;
469 };
470
471 &uhc {
472         /* The WiFi module is connected to the UHC. */
473         status = "okay";
474 };
475
476 &tcu {
477         /*
478          * 750 kHz for the system timer and clocksource, 12 MHz for the OST,
479          * and use RTC as the parent for the watchdog clock
480          */
481         assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>,
482                           <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>;
483         assigned-clock-parents = <0>, <0>, <0>, <&cgu JZ4770_CLK_RTC>;
484         assigned-clock-rates = <750000>, <750000>, <12000000>;
485
486         /* PWM1 is in use, so use channel #2 for the clocksource */
487         ingenic,pwm-channels-mask = <0xfa>;
488 };
489
490 &usb_otg {
491         port {
492                 usb_otg_ep: endpoint {
493                         remote-endpoint = <&usb_ep>;
494                 };
495         };
496 };
497
498 &otg_phy {
499         vcc-supply = <&ldo5>;
500 };
501
502 &rtc {
503         clocks = <&cgu JZ4770_CLK_RTC>;
504         clock-names = "rtc";
505
506         system-power-controller;
507 };
508
509 &mmc0 {
510         status = "okay";
511
512         bus-width = <4>;
513         max-frequency = <48000000>;
514         vmmc-supply = <&vcc>;
515         non-removable;
516
517         pinctrl-names = "default";
518         pinctrl-0 = <&pins_mmc0>;
519 };
520
521 &mmc1 {
522         status = "okay";
523
524         bus-width = <4>;
525         max-frequency = <48000000>;
526         cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>;
527         vmmc-supply = <&mmc1_power>;
528
529         pinctrl-names = "default";
530         pinctrl-0 = <&pins_mmc1>;
531 };
532
533 &lcd {
534         pinctrl-names = "default";
535         pinctrl-0 = <&pins_lcd>;
536
537         port {
538                 panel_output: endpoint {
539                         remote-endpoint = <&panel_input>;
540                 };
541         };
542 };