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