~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/boot/dts/ingenic/gcw0.dts

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php