162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/dts-v1/; 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#include "jz4770.dtsi" 562306a36Sopenharmony_ci#include <dt-bindings/clock/ingenic,tcu.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 862306a36Sopenharmony_ci#include <dt-bindings/iio/adc/ingenic,adc.h> 962306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/ { 1262306a36Sopenharmony_ci compatible = "gcw,zero", "ingenic,jz4770"; 1362306a36Sopenharmony_ci model = "GCW Zero"; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci aliases { 1662306a36Sopenharmony_ci serial0 = &uart0; 1762306a36Sopenharmony_ci serial1 = &uart1; 1862306a36Sopenharmony_ci serial2 = &uart2; 1962306a36Sopenharmony_ci serial3 = &uart3; 2062306a36Sopenharmony_ci }; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci memory: memory { 2362306a36Sopenharmony_ci device_type = "memory"; 2462306a36Sopenharmony_ci reg = <0x0 0x10000000>, 2562306a36Sopenharmony_ci <0x30000000 0x10000000>; 2662306a36Sopenharmony_ci }; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci chosen { 2962306a36Sopenharmony_ci stdout-path = "serial2:57600n8"; 3062306a36Sopenharmony_ci }; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci vcc: regulator@0 { 3362306a36Sopenharmony_ci compatible = "regulator-fixed"; 3462306a36Sopenharmony_ci regulator-name = "vcc"; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 3762306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 3862306a36Sopenharmony_ci regulator-always-on; 3962306a36Sopenharmony_ci }; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci mmc1_power: regulator@1 { 4262306a36Sopenharmony_ci compatible = "regulator-fixed"; 4362306a36Sopenharmony_ci regulator-name = "mmc1_vcc"; 4462306a36Sopenharmony_ci gpio = <&gpe 9 0>; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 4762306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 4862306a36Sopenharmony_ci vin-supply = <&vcc>; 4962306a36Sopenharmony_ci }; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci headphones_amp: analog-amplifier@0 { 5262306a36Sopenharmony_ci compatible = "simple-audio-amplifier"; 5362306a36Sopenharmony_ci enable-gpios = <&gpf 3 GPIO_ACTIVE_LOW>; 5462306a36Sopenharmony_ci enable-delay-ms = <50>; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci VCC-supply = <&ldo5>; 5762306a36Sopenharmony_ci sound-name-prefix = "Headphones Amp"; 5862306a36Sopenharmony_ci }; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci speaker_amp: analog-amplifier@1 { 6162306a36Sopenharmony_ci compatible = "simple-audio-amplifier"; 6262306a36Sopenharmony_ci enable-gpios = <&gpf 20 GPIO_ACTIVE_HIGH>; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci VCC-supply = <&ldo5>; 6562306a36Sopenharmony_ci sound-name-prefix = "Speaker Amp"; 6662306a36Sopenharmony_ci }; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci sound { 6962306a36Sopenharmony_ci compatible = "simple-audio-card"; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci simple-audio-card,name = "gcw0-audio"; 7262306a36Sopenharmony_ci simple-audio-card,format = "i2s"; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci simple-audio-card,widgets = 7562306a36Sopenharmony_ci "Speaker", "Speaker", 7662306a36Sopenharmony_ci "Headphone", "Headphones", 7762306a36Sopenharmony_ci "Microphone", "Built-in Mic"; 7862306a36Sopenharmony_ci simple-audio-card,routing = 7962306a36Sopenharmony_ci "Headphones Amp INL", "LHPOUT", 8062306a36Sopenharmony_ci "Headphones Amp INR", "RHPOUT", 8162306a36Sopenharmony_ci "Headphones", "Headphones Amp OUTL", 8262306a36Sopenharmony_ci "Headphones", "Headphones Amp OUTR", 8362306a36Sopenharmony_ci "Speaker Amp INL", "LOUT", 8462306a36Sopenharmony_ci "Speaker Amp INR", "ROUT", 8562306a36Sopenharmony_ci "Speaker", "Speaker Amp OUTL", 8662306a36Sopenharmony_ci "Speaker", "Speaker Amp OUTR", 8762306a36Sopenharmony_ci "LLINEIN", "Cap-less", 8862306a36Sopenharmony_ci "RLINEIN", "Cap-less", 8962306a36Sopenharmony_ci "Built-in Mic", "MICBIAS", 9062306a36Sopenharmony_ci "MIC1P", "Built-in Mic", 9162306a36Sopenharmony_ci "MIC1N", "Built-in Mic"; 9262306a36Sopenharmony_ci simple-audio-card,pin-switches = "Speaker", "Headphones"; 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci simple-audio-card,hp-det-gpio = <&gpf 21 GPIO_ACTIVE_LOW>; 9562306a36Sopenharmony_ci simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci simple-audio-card,bitclock-master = <&dai_codec>; 9862306a36Sopenharmony_ci simple-audio-card,frame-master = <&dai_codec>; 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci dai_cpu: simple-audio-card,cpu { 10162306a36Sopenharmony_ci sound-dai = <&aic>; 10262306a36Sopenharmony_ci }; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci dai_codec: simple-audio-card,codec { 10562306a36Sopenharmony_ci sound-dai = <&codec>; 10662306a36Sopenharmony_ci }; 10762306a36Sopenharmony_ci }; 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci rumble { 11062306a36Sopenharmony_ci compatible = "pwm-vibrator"; 11162306a36Sopenharmony_ci pwms = <&pwm 4 2000000 0>; 11262306a36Sopenharmony_ci pwm-names = "enable"; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci pinctrl-names = "default"; 11562306a36Sopenharmony_ci pinctrl-0 = <&pins_pwm4>; 11662306a36Sopenharmony_ci }; 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci backlight: backlight { 11962306a36Sopenharmony_ci compatible = "pwm-backlight"; 12062306a36Sopenharmony_ci pwms = <&pwm 1 40000 0>; 12162306a36Sopenharmony_ci power-supply = <&vcc>; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci brightness-levels = <0 16 32 48 64 80 96 112 128 12462306a36Sopenharmony_ci 144 160 176 192 208 224 240 255>; 12562306a36Sopenharmony_ci default-brightness-level = <12>; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci pinctrl-names = "default"; 12862306a36Sopenharmony_ci pinctrl-0 = <&pins_pwm1>; 12962306a36Sopenharmony_ci }; 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci gpio-keys { 13262306a36Sopenharmony_ci compatible = "gpio-keys"; 13362306a36Sopenharmony_ci autorepeat; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci button-0 { 13662306a36Sopenharmony_ci label = "D-pad up"; 13762306a36Sopenharmony_ci linux,code = <KEY_UP>; 13862306a36Sopenharmony_ci linux,can-disable; 13962306a36Sopenharmony_ci gpios = <&gpe 21 GPIO_ACTIVE_LOW>; 14062306a36Sopenharmony_ci }; 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci button-1 { 14362306a36Sopenharmony_ci label = "D-pad down"; 14462306a36Sopenharmony_ci linux,code = <KEY_DOWN>; 14562306a36Sopenharmony_ci linux,can-disable; 14662306a36Sopenharmony_ci gpios = <&gpe 25 GPIO_ACTIVE_LOW>; 14762306a36Sopenharmony_ci }; 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci button-2 { 15062306a36Sopenharmony_ci label = "D-pad left"; 15162306a36Sopenharmony_ci linux,code = <KEY_LEFT>; 15262306a36Sopenharmony_ci linux,can-disable; 15362306a36Sopenharmony_ci gpios = <&gpe 23 GPIO_ACTIVE_LOW>; 15462306a36Sopenharmony_ci }; 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci button-3 { 15762306a36Sopenharmony_ci label = "D-pad right"; 15862306a36Sopenharmony_ci linux,code = <KEY_RIGHT>; 15962306a36Sopenharmony_ci linux,can-disable; 16062306a36Sopenharmony_ci gpios = <&gpe 24 GPIO_ACTIVE_LOW>; 16162306a36Sopenharmony_ci }; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci button-4 { 16462306a36Sopenharmony_ci label = "Button A"; 16562306a36Sopenharmony_ci linux,code = <KEY_LEFTCTRL>; 16662306a36Sopenharmony_ci linux,can-disable; 16762306a36Sopenharmony_ci gpios = <&gpe 29 GPIO_ACTIVE_LOW>; 16862306a36Sopenharmony_ci }; 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci button-5 { 17162306a36Sopenharmony_ci label = "Button B"; 17262306a36Sopenharmony_ci linux,code = <KEY_LEFTALT>; 17362306a36Sopenharmony_ci linux,can-disable; 17462306a36Sopenharmony_ci gpios = <&gpe 20 GPIO_ACTIVE_LOW>; 17562306a36Sopenharmony_ci }; 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci button-6 { 17862306a36Sopenharmony_ci label = "Button Y"; 17962306a36Sopenharmony_ci linux,code = <KEY_SPACE>; 18062306a36Sopenharmony_ci linux,can-disable; 18162306a36Sopenharmony_ci gpios = <&gpe 27 GPIO_ACTIVE_LOW>; 18262306a36Sopenharmony_ci }; 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci button-7 { 18562306a36Sopenharmony_ci label = "Button X"; 18662306a36Sopenharmony_ci linux,code = <KEY_LEFTSHIFT>; 18762306a36Sopenharmony_ci linux,can-disable; 18862306a36Sopenharmony_ci gpios = <&gpe 28 GPIO_ACTIVE_LOW>; 18962306a36Sopenharmony_ci }; 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci button-8 { 19262306a36Sopenharmony_ci label = "Left shoulder button"; 19362306a36Sopenharmony_ci linux,code = <KEY_TAB>; 19462306a36Sopenharmony_ci linux,can-disable; 19562306a36Sopenharmony_ci gpios = <&gpb 20 GPIO_ACTIVE_LOW>; 19662306a36Sopenharmony_ci }; 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci button-9 { 19962306a36Sopenharmony_ci label = "Right shoulder button"; 20062306a36Sopenharmony_ci linux,code = <KEY_BACKSPACE>; 20162306a36Sopenharmony_ci linux,can-disable; 20262306a36Sopenharmony_ci gpios = <&gpe 26 GPIO_ACTIVE_LOW>; 20362306a36Sopenharmony_ci }; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci button-10 { 20662306a36Sopenharmony_ci label = "Start button"; 20762306a36Sopenharmony_ci linux,code = <KEY_ENTER>; 20862306a36Sopenharmony_ci linux,can-disable; 20962306a36Sopenharmony_ci gpios = <&gpb 21 GPIO_ACTIVE_LOW>; 21062306a36Sopenharmony_ci }; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci button-11 { 21362306a36Sopenharmony_ci label = "Select button"; 21462306a36Sopenharmony_ci linux,code = <KEY_ESC>; 21562306a36Sopenharmony_ci linux,can-disable; 21662306a36Sopenharmony_ci /* 21762306a36Sopenharmony_ci * This is the only button that is active high, 21862306a36Sopenharmony_ci * since it doubles as BOOT_SEL1. 21962306a36Sopenharmony_ci */ 22062306a36Sopenharmony_ci gpios = <&gpd 18 GPIO_ACTIVE_HIGH>; 22162306a36Sopenharmony_ci }; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci button-12 { 22462306a36Sopenharmony_ci label = "Power slider"; 22562306a36Sopenharmony_ci linux,code = <KEY_POWER>; 22662306a36Sopenharmony_ci linux,can-disable; 22762306a36Sopenharmony_ci gpios = <&gpa 30 GPIO_ACTIVE_LOW>; 22862306a36Sopenharmony_ci wakeup-source; 22962306a36Sopenharmony_ci }; 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci button-13 { 23262306a36Sopenharmony_ci label = "Power hold"; 23362306a36Sopenharmony_ci linux,code = <KEY_PAUSE>; 23462306a36Sopenharmony_ci linux,can-disable; 23562306a36Sopenharmony_ci gpios = <&gpf 11 GPIO_ACTIVE_LOW>; 23662306a36Sopenharmony_ci }; 23762306a36Sopenharmony_ci }; 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci i2c3: i2c-controller@3 { 24062306a36Sopenharmony_ci compatible = "i2c-gpio"; 24162306a36Sopenharmony_ci #address-cells = <1>; 24262306a36Sopenharmony_ci #size-cells = <0>; 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci sda-gpios = <&gpd 5 GPIO_ACTIVE_HIGH>; 24562306a36Sopenharmony_ci scl-gpios = <&gpd 4 GPIO_ACTIVE_HIGH>; 24662306a36Sopenharmony_ci i2c-gpio,delay-us = <2>; /* 250 kHz */ 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci act8600: pmic@5a { 24962306a36Sopenharmony_ci compatible = "active-semi,act8600"; 25062306a36Sopenharmony_ci reg = <0x5a>; 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci regulators { 25362306a36Sopenharmony_ci /* USB OTG */ 25462306a36Sopenharmony_ci otg_vbus: SUDCDC_REG4 { 25562306a36Sopenharmony_ci /* 25662306a36Sopenharmony_ci * 5.3V instead of 5.0V to compensate 25762306a36Sopenharmony_ci * for the voltage drop of a diode 25862306a36Sopenharmony_ci * between the regulator and the 25962306a36Sopenharmony_ci * connector. 26062306a36Sopenharmony_ci */ 26162306a36Sopenharmony_ci regulator-min-microvolt = <5300000>; 26262306a36Sopenharmony_ci regulator-max-microvolt = <5300000>; 26362306a36Sopenharmony_ci inl-supply = <&vcc>; 26462306a36Sopenharmony_ci }; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci /* 26762306a36Sopenharmony_ci * When this is off, there is no sound, but also 26862306a36Sopenharmony_ci * no USB networking. 26962306a36Sopenharmony_ci */ 27062306a36Sopenharmony_ci ldo5: LDO5 { 27162306a36Sopenharmony_ci regulator-min-microvolt = <2500000>; 27262306a36Sopenharmony_ci regulator-max-microvolt = <2500000>; 27362306a36Sopenharmony_ci inl-supply = <&vcc>; 27462306a36Sopenharmony_ci }; 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci /* LCD panel and FM radio */ 27762306a36Sopenharmony_ci ldo6: LDO6 { 27862306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 27962306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 28062306a36Sopenharmony_ci inl-supply = <&vcc>; 28162306a36Sopenharmony_ci }; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci /* ??? */ 28462306a36Sopenharmony_ci LDO7 { 28562306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 28662306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 28762306a36Sopenharmony_ci /*regulator-always-on;*/ 28862306a36Sopenharmony_ci inl-supply = <&vcc>; 28962306a36Sopenharmony_ci }; 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci /* 29262306a36Sopenharmony_ci * The colors on the LCD are wrong when this is 29362306a36Sopenharmony_ci * off. Which is strange, since the LCD panel 29462306a36Sopenharmony_ci * data sheet only mentions a 3.3V input. 29562306a36Sopenharmony_ci */ 29662306a36Sopenharmony_ci LDO8 { 29762306a36Sopenharmony_ci regulator-min-microvolt = <1800000>; 29862306a36Sopenharmony_ci regulator-max-microvolt = <1800000>; 29962306a36Sopenharmony_ci regulator-always-on; 30062306a36Sopenharmony_ci inl-supply = <&vcc>; 30162306a36Sopenharmony_ci }; 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci /* RTC fixed 3.3V */ 30462306a36Sopenharmony_ci LDO_REG9 { 30562306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 30662306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 30762306a36Sopenharmony_ci regulator-always-on; 30862306a36Sopenharmony_ci inl-supply = <&vcc>; 30962306a36Sopenharmony_ci }; 31062306a36Sopenharmony_ci 31162306a36Sopenharmony_ci /* Unused fixed 1.2V */ 31262306a36Sopenharmony_ci LDO_REG10 { 31362306a36Sopenharmony_ci inl-supply = <&vcc>; 31462306a36Sopenharmony_ci }; 31562306a36Sopenharmony_ci }; 31662306a36Sopenharmony_ci }; 31762306a36Sopenharmony_ci }; 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci leds { 32062306a36Sopenharmony_ci compatible = "gpio-leds"; 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci led { 32362306a36Sopenharmony_ci gpios = <&gpb 30 GPIO_ACTIVE_LOW>; 32462306a36Sopenharmony_ci default-state = "on"; 32562306a36Sopenharmony_ci }; 32662306a36Sopenharmony_ci }; 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_ci spi { 32962306a36Sopenharmony_ci compatible = "spi-gpio"; 33062306a36Sopenharmony_ci #address-cells = <1>; 33162306a36Sopenharmony_ci #size-cells = <0>; 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ci sck-gpios = <&gpe 15 GPIO_ACTIVE_HIGH>; 33462306a36Sopenharmony_ci mosi-gpios = <&gpe 17 GPIO_ACTIVE_HIGH>; 33562306a36Sopenharmony_ci cs-gpios = <&gpe 16 GPIO_ACTIVE_HIGH>; 33662306a36Sopenharmony_ci num-chipselects = <1>; 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci nt39016@0 { 33962306a36Sopenharmony_ci compatible = "kingdisplay,kd035g6-54nt"; 34062306a36Sopenharmony_ci reg = <0>; 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ci spi-max-frequency = <3125000>; 34362306a36Sopenharmony_ci spi-3wire; 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci reset-gpios = <&gpe 2 GPIO_ACTIVE_LOW>; 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci backlight = <&backlight>; 34862306a36Sopenharmony_ci power-supply = <&ldo6>; 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci port { 35162306a36Sopenharmony_ci panel_input: endpoint { 35262306a36Sopenharmony_ci remote-endpoint = <&panel_output>; 35362306a36Sopenharmony_ci }; 35462306a36Sopenharmony_ci }; 35562306a36Sopenharmony_ci }; 35662306a36Sopenharmony_ci }; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ci connector { 35962306a36Sopenharmony_ci compatible = "gpio-usb-b-connector", "usb-b-connector"; 36062306a36Sopenharmony_ci label = "mini-USB"; 36162306a36Sopenharmony_ci type = "mini"; 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_ci /* 36462306a36Sopenharmony_ci * USB OTG is not yet working reliably, the ID detection 36562306a36Sopenharmony_ci * mechanism tends to fry easily for unknown reasons. 36662306a36Sopenharmony_ci * Until this is fixed, disable OTG by not providing the 36762306a36Sopenharmony_ci * ID GPIO to the driver. 36862306a36Sopenharmony_ci */ 36962306a36Sopenharmony_ci //id-gpios = <&gpf 18 GPIO_ACTIVE_LOW>; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>; 37262306a36Sopenharmony_ci vbus-supply = <&otg_vbus>; 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci pinctrl-names = "default"; 37562306a36Sopenharmony_ci pinctrl-0 = <&pins_otg>; 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ci port { 37862306a36Sopenharmony_ci usb_ep: endpoint { 37962306a36Sopenharmony_ci remote-endpoint = <&usb_otg_ep>; 38062306a36Sopenharmony_ci }; 38162306a36Sopenharmony_ci }; 38262306a36Sopenharmony_ci }; 38362306a36Sopenharmony_ci}; 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci&ext { 38662306a36Sopenharmony_ci clock-frequency = <12000000>; 38762306a36Sopenharmony_ci}; 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ci&pinctrl { 39062306a36Sopenharmony_ci pins_lcd: lcd { 39162306a36Sopenharmony_ci function = "lcd"; 39262306a36Sopenharmony_ci groups = "lcd-24bit"; 39362306a36Sopenharmony_ci }; 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci pins_uart2: uart2 { 39662306a36Sopenharmony_ci function = "uart2"; 39762306a36Sopenharmony_ci groups = "uart2-data"; 39862306a36Sopenharmony_ci }; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci pins_mmc0: mmc0 { 40162306a36Sopenharmony_ci function = "mmc0"; 40262306a36Sopenharmony_ci groups = "mmc0-1bit-a", "mmc0-4bit-a"; 40362306a36Sopenharmony_ci }; 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci pins_mmc1: mmc1 { 40662306a36Sopenharmony_ci function = "mmc1"; 40762306a36Sopenharmony_ci groups = "mmc1-1bit-d", "mmc1-4bit-d"; 40862306a36Sopenharmony_ci }; 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci pins_otg: otg { 41162306a36Sopenharmony_ci otg-vbus-pin { 41262306a36Sopenharmony_ci function = "otg"; 41362306a36Sopenharmony_ci groups = "otg-vbus"; 41462306a36Sopenharmony_ci }; 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci vbus-pin { 41762306a36Sopenharmony_ci pins = "PB5"; 41862306a36Sopenharmony_ci bias-disable; 41962306a36Sopenharmony_ci }; 42062306a36Sopenharmony_ci }; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci pins_pwm1: pwm1 { 42362306a36Sopenharmony_ci function = "pwm1"; 42462306a36Sopenharmony_ci groups = "pwm1"; 42562306a36Sopenharmony_ci }; 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_ci pins_pwm4: pwm4 { 42862306a36Sopenharmony_ci function = "pwm4"; 42962306a36Sopenharmony_ci groups = "pwm4"; 43062306a36Sopenharmony_ci }; 43162306a36Sopenharmony_ci}; 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ci&uart2 { 43462306a36Sopenharmony_ci pinctrl-names = "default"; 43562306a36Sopenharmony_ci pinctrl-0 = <&pins_uart2>; 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_ci status = "okay"; 43862306a36Sopenharmony_ci}; 43962306a36Sopenharmony_ci 44062306a36Sopenharmony_ci&cgu { 44162306a36Sopenharmony_ci /* 44262306a36Sopenharmony_ci * Put high-speed peripherals under PLL1, such that we can change the 44362306a36Sopenharmony_ci * PLL0 frequency on demand without having to suspend peripherals. 44462306a36Sopenharmony_ci * We use a rate of 432 MHz, which is the least common multiple of 44562306a36Sopenharmony_ci * 27 MHz (required by TV encoder) and 48 MHz (required by USB host). 44662306a36Sopenharmony_ci * Put the GPU under PLL0 since we want a higher frequency. 44762306a36Sopenharmony_ci * Use the 32 kHz oscillator as the parent of the RTC for a higher 44862306a36Sopenharmony_ci * precision. 44962306a36Sopenharmony_ci */ 45062306a36Sopenharmony_ci assigned-clocks = 45162306a36Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 45262306a36Sopenharmony_ci <&cgu JZ4770_CLK_GPU>, 45362306a36Sopenharmony_ci <&cgu JZ4770_CLK_RTC>, 45462306a36Sopenharmony_ci <&cgu JZ4770_CLK_UHC>, 45562306a36Sopenharmony_ci <&cgu JZ4770_CLK_LPCLK_MUX>, 45662306a36Sopenharmony_ci <&cgu JZ4770_CLK_MMC0_MUX>, 45762306a36Sopenharmony_ci <&cgu JZ4770_CLK_MMC1_MUX>; 45862306a36Sopenharmony_ci assigned-clock-parents = 45962306a36Sopenharmony_ci <0>, 46062306a36Sopenharmony_ci <&cgu JZ4770_CLK_PLL0>, 46162306a36Sopenharmony_ci <&cgu JZ4770_CLK_OSC32K>, 46262306a36Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 46362306a36Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 46462306a36Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 46562306a36Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>; 46662306a36Sopenharmony_ci assigned-clock-rates = 46762306a36Sopenharmony_ci <432000000>, 46862306a36Sopenharmony_ci <600000000>; 46962306a36Sopenharmony_ci}; 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_ci&uhc { 47262306a36Sopenharmony_ci /* The WiFi module is connected to the UHC. */ 47362306a36Sopenharmony_ci status = "okay"; 47462306a36Sopenharmony_ci}; 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_ci&tcu { 47762306a36Sopenharmony_ci /* 47862306a36Sopenharmony_ci * 750 kHz for the system timer and clocksource, 12 MHz for the OST, 47962306a36Sopenharmony_ci * and use RTC as the parent for the watchdog clock 48062306a36Sopenharmony_ci */ 48162306a36Sopenharmony_ci assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>, 48262306a36Sopenharmony_ci <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>; 48362306a36Sopenharmony_ci assigned-clock-parents = <0>, <0>, <0>, <&cgu JZ4770_CLK_RTC>; 48462306a36Sopenharmony_ci assigned-clock-rates = <750000>, <750000>, <12000000>; 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_ci /* PWM1 is in use, so use channel #2 for the clocksource */ 48762306a36Sopenharmony_ci ingenic,pwm-channels-mask = <0xfa>; 48862306a36Sopenharmony_ci}; 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ci&usb_otg { 49162306a36Sopenharmony_ci port { 49262306a36Sopenharmony_ci usb_otg_ep: endpoint { 49362306a36Sopenharmony_ci remote-endpoint = <&usb_ep>; 49462306a36Sopenharmony_ci }; 49562306a36Sopenharmony_ci }; 49662306a36Sopenharmony_ci}; 49762306a36Sopenharmony_ci 49862306a36Sopenharmony_ci&otg_phy { 49962306a36Sopenharmony_ci vcc-supply = <&ldo5>; 50062306a36Sopenharmony_ci}; 50162306a36Sopenharmony_ci 50262306a36Sopenharmony_ci&rtc { 50362306a36Sopenharmony_ci clocks = <&cgu JZ4770_CLK_RTC>; 50462306a36Sopenharmony_ci clock-names = "rtc"; 50562306a36Sopenharmony_ci 50662306a36Sopenharmony_ci system-power-controller; 50762306a36Sopenharmony_ci}; 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ci&mmc0 { 51062306a36Sopenharmony_ci status = "okay"; 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_ci bus-width = <4>; 51362306a36Sopenharmony_ci max-frequency = <48000000>; 51462306a36Sopenharmony_ci vmmc-supply = <&vcc>; 51562306a36Sopenharmony_ci non-removable; 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_ci pinctrl-names = "default"; 51862306a36Sopenharmony_ci pinctrl-0 = <&pins_mmc0>; 51962306a36Sopenharmony_ci}; 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ci&mmc1 { 52262306a36Sopenharmony_ci status = "okay"; 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ci bus-width = <4>; 52562306a36Sopenharmony_ci max-frequency = <48000000>; 52662306a36Sopenharmony_ci cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>; 52762306a36Sopenharmony_ci vmmc-supply = <&mmc1_power>; 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_ci pinctrl-names = "default"; 53062306a36Sopenharmony_ci pinctrl-0 = <&pins_mmc1>; 53162306a36Sopenharmony_ci}; 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_ci&lcd { 53462306a36Sopenharmony_ci pinctrl-names = "default"; 53562306a36Sopenharmony_ci pinctrl-0 = <&pins_lcd>; 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_ci port { 53862306a36Sopenharmony_ci panel_output: endpoint { 53962306a36Sopenharmony_ci remote-endpoint = <&panel_input>; 54062306a36Sopenharmony_ci }; 54162306a36Sopenharmony_ci }; 54262306a36Sopenharmony_ci}; 543