1ac6b1381SPaul Cercueil// SPDX-License-Identifier: GPL-2.0 2ac6b1381SPaul Cercueil/dts-v1/; 3ac6b1381SPaul Cercueil 4ac6b1381SPaul Cercueil#include "jz4725b.dtsi" 5ac6b1381SPaul Cercueil 6ac6b1381SPaul Cercueil#include <dt-bindings/gpio/gpio.h> 7ac6b1381SPaul Cercueil#include <dt-bindings/iio/adc/ingenic,adc.h> 8ac6b1381SPaul Cercueil#include <dt-bindings/input/linux-event-codes.h> 9ac6b1381SPaul Cercueil 10ac6b1381SPaul Cercueil/ { 11ac6b1381SPaul Cercueil compatible = "ylm,rs90", "ingenic,jz4725b"; 12ac6b1381SPaul Cercueil model = "RS-90"; 13ac6b1381SPaul Cercueil 14ac6b1381SPaul Cercueil memory { 15ac6b1381SPaul Cercueil device_type = "memory"; 16ac6b1381SPaul Cercueil reg = <0x0 0x2000000>; 17ac6b1381SPaul Cercueil }; 18ac6b1381SPaul Cercueil 190fe0fbc8SPaul Cercueil reserved-memory { 200fe0fbc8SPaul Cercueil #address-cells = <1>; 210fe0fbc8SPaul Cercueil #size-cells = <1>; 220fe0fbc8SPaul Cercueil ranges; 230fe0fbc8SPaul Cercueil 240fe0fbc8SPaul Cercueil vmem: video-memory@1f00000 { 250fe0fbc8SPaul Cercueil compatible = "shared-dma-pool"; 260fe0fbc8SPaul Cercueil reg = <0x1f00000 0x100000>; 270fe0fbc8SPaul Cercueil reusable; 280fe0fbc8SPaul Cercueil }; 290fe0fbc8SPaul Cercueil }; 300fe0fbc8SPaul Cercueil 31ac6b1381SPaul Cercueil vcc: regulator { 32ac6b1381SPaul Cercueil compatible = "regulator-fixed"; 33ac6b1381SPaul Cercueil 34ac6b1381SPaul Cercueil regulator-name = "vcc"; 35ac6b1381SPaul Cercueil regulaor-min-microvolt = <3300000>; 36ac6b1381SPaul Cercueil regulaor-max-microvolt = <3300000>; 37ac6b1381SPaul Cercueil regulator-always-on; 38ac6b1381SPaul Cercueil }; 39ac6b1381SPaul Cercueil 40ac6b1381SPaul Cercueil backlight: backlight { 41ac6b1381SPaul Cercueil compatible = "pwm-backlight"; 42ac6b1381SPaul Cercueil pwms = <&pwm 3 40000 0>; 43ac6b1381SPaul Cercueil 44ac6b1381SPaul Cercueil brightness-levels = <0 16 32 48 64 80 112 144 192 255>; 45ac6b1381SPaul Cercueil default-brightness-level = <8>; 46ac6b1381SPaul Cercueil 47ac6b1381SPaul Cercueil pinctrl-names = "default"; 48ac6b1381SPaul Cercueil pinctrl-0 = <&pins_pwm3>; 49ac6b1381SPaul Cercueil 50ac6b1381SPaul Cercueil power-supply = <&vcc>; 51ac6b1381SPaul Cercueil }; 52ac6b1381SPaul Cercueil 53ac6b1381SPaul Cercueil keys@0 { 54ac6b1381SPaul Cercueil compatible = "gpio-keys"; 55ac6b1381SPaul Cercueil 565ee46bfbSKrzysztof Kozlowski key-0 { 57ac6b1381SPaul Cercueil label = "D-pad up"; 58ac6b1381SPaul Cercueil linux,code = <KEY_UP>; 59ac6b1381SPaul Cercueil gpios = <&gpc 10 GPIO_ACTIVE_LOW>; 60ac6b1381SPaul Cercueil }; 61ac6b1381SPaul Cercueil 625ee46bfbSKrzysztof Kozlowski key-1 { 63ac6b1381SPaul Cercueil label = "D-pad down"; 64ac6b1381SPaul Cercueil linux,code = <KEY_DOWN>; 65ac6b1381SPaul Cercueil gpios = <&gpc 11 GPIO_ACTIVE_LOW>; 66ac6b1381SPaul Cercueil }; 67ac6b1381SPaul Cercueil 685ee46bfbSKrzysztof Kozlowski key-2 { 69ac6b1381SPaul Cercueil label = "D-pad left"; 70ac6b1381SPaul Cercueil linux,code = <KEY_LEFT>; 71ac6b1381SPaul Cercueil gpios = <&gpb 31 GPIO_ACTIVE_LOW>; 72ac6b1381SPaul Cercueil }; 73ac6b1381SPaul Cercueil 745ee46bfbSKrzysztof Kozlowski key-3 { 75ac6b1381SPaul Cercueil label = "D-pad right"; 76ac6b1381SPaul Cercueil linux,code = <KEY_RIGHT>; 77ac6b1381SPaul Cercueil gpios = <&gpd 21 GPIO_ACTIVE_LOW>; 78ac6b1381SPaul Cercueil }; 79ac6b1381SPaul Cercueil 805ee46bfbSKrzysztof Kozlowski key-4 { 81ac6b1381SPaul Cercueil label = "Button A"; 82ac6b1381SPaul Cercueil linux,code = <KEY_LEFTCTRL>; 83ac6b1381SPaul Cercueil gpios = <&gpc 31 GPIO_ACTIVE_LOW>; 84ac6b1381SPaul Cercueil }; 85ac6b1381SPaul Cercueil 865ee46bfbSKrzysztof Kozlowski key-5 { 87ac6b1381SPaul Cercueil label = "Button B"; 88ac6b1381SPaul Cercueil linux,code = <KEY_LEFTALT>; 89ac6b1381SPaul Cercueil gpios = <&gpc 30 GPIO_ACTIVE_LOW>; 90ac6b1381SPaul Cercueil }; 91ac6b1381SPaul Cercueil 925ee46bfbSKrzysztof Kozlowski key-6 { 93ac6b1381SPaul Cercueil label = "Right shoulder button"; 94ac6b1381SPaul Cercueil linux,code = <KEY_BACKSPACE>; 95ac6b1381SPaul Cercueil gpios = <&gpc 12 GPIO_ACTIVE_LOW>; 96ac6b1381SPaul Cercueil debounce-interval = <10>; 97ac6b1381SPaul Cercueil }; 98ac6b1381SPaul Cercueil 995ee46bfbSKrzysztof Kozlowski key-7 { 100ac6b1381SPaul Cercueil label = "Start button"; 101ac6b1381SPaul Cercueil linux,code = <KEY_ENTER>; 102ac6b1381SPaul Cercueil gpios = <&gpd 17 GPIO_ACTIVE_LOW>; 103ac6b1381SPaul Cercueil }; 104ac6b1381SPaul Cercueil }; 105ac6b1381SPaul Cercueil 106ac6b1381SPaul Cercueil keys@1 { 107ac6b1381SPaul Cercueil compatible = "adc-keys"; 108ac6b1381SPaul Cercueil io-channels = <&adc INGENIC_ADC_AUX>; 109ac6b1381SPaul Cercueil io-channel-names = "buttons"; 110ac6b1381SPaul Cercueil keyup-threshold-microvolt = <1400000>; 111ac6b1381SPaul Cercueil poll-interval = <30>; 112ac6b1381SPaul Cercueil 113ac6b1381SPaul Cercueil key@0 { 114ac6b1381SPaul Cercueil label = "Left shoulder button"; 115ac6b1381SPaul Cercueil linux,code = <KEY_TAB>; 116ac6b1381SPaul Cercueil press-threshold-microvolt = <800000>; 117ac6b1381SPaul Cercueil }; 118ac6b1381SPaul Cercueil 119ac6b1381SPaul Cercueil key@1 { 120ac6b1381SPaul Cercueil label = "Select button"; 121ac6b1381SPaul Cercueil linux,code = <KEY_ESC>; 122ac6b1381SPaul Cercueil press-threshold-microvolt = <1100000>; 123ac6b1381SPaul Cercueil }; 124ac6b1381SPaul Cercueil }; 125ac6b1381SPaul Cercueil 126ac6b1381SPaul Cercueil amp: analog-amplifier { 127ac6b1381SPaul Cercueil compatible = "simple-audio-amplifier"; 128ac6b1381SPaul Cercueil enable-gpios = <&gpc 15 GPIO_ACTIVE_HIGH>; 129ac6b1381SPaul Cercueil 130ac6b1381SPaul Cercueil VCC-supply = <&vcc>; 131ac6b1381SPaul Cercueil }; 132ac6b1381SPaul Cercueil 133ac6b1381SPaul Cercueil sound { 134ac6b1381SPaul Cercueil compatible = "simple-audio-card"; 135ac6b1381SPaul Cercueil 136ac6b1381SPaul Cercueil simple-audio-card,name = "rs90-audio"; 137ac6b1381SPaul Cercueil simple-audio-card,format = "i2s"; 138ac6b1381SPaul Cercueil 139ac6b1381SPaul Cercueil simple-audio-card,widgets = 140ac6b1381SPaul Cercueil "Speaker", "Speaker", 141ac6b1381SPaul Cercueil "Headphone", "Headphones"; 142ac6b1381SPaul Cercueil simple-audio-card,routing = 143ac6b1381SPaul Cercueil "INL", "LHPOUT", 144ac6b1381SPaul Cercueil "INR", "RHPOUT", 145ac6b1381SPaul Cercueil "Headphones", "LHPOUT", 146ac6b1381SPaul Cercueil "Headphones", "RHPOUT", 147ac6b1381SPaul Cercueil "Speaker", "OUTL", 148ac6b1381SPaul Cercueil "Speaker", "OUTR"; 149ac6b1381SPaul Cercueil simple-audio-card,pin-switches = "Speaker"; 150ac6b1381SPaul Cercueil 151*2398902fSGeert Uytterhoeven simple-audio-card,hp-det-gpios = <&gpd 16 GPIO_ACTIVE_LOW>; 152ac6b1381SPaul Cercueil simple-audio-card,aux-devs = <&>; 153ac6b1381SPaul Cercueil 154ac6b1381SPaul Cercueil simple-audio-card,bitclock-master = <&dai_codec>; 155ac6b1381SPaul Cercueil simple-audio-card,frame-master = <&dai_codec>; 156ac6b1381SPaul Cercueil 157ac6b1381SPaul Cercueil dai_cpu: simple-audio-card,cpu { 158ac6b1381SPaul Cercueil sound-dai = <&aic>; 159ac6b1381SPaul Cercueil }; 160ac6b1381SPaul Cercueil 161ac6b1381SPaul Cercueil dai_codec: simple-audio-card,codec { 162ac6b1381SPaul Cercueil sound-dai = <&codec>; 163ac6b1381SPaul Cercueil }; 164ac6b1381SPaul Cercueil 165ac6b1381SPaul Cercueil }; 166ac6b1381SPaul Cercueil 167ac6b1381SPaul Cercueil usb_phy: usb-phy { 168ac6b1381SPaul Cercueil compatible = "usb-nop-xceiv"; 169ac6b1381SPaul Cercueil #phy-cells = <0>; 170ac6b1381SPaul Cercueil 171ac6b1381SPaul Cercueil clocks = <&cgu JZ4725B_CLK_UDC_PHY>; 172ac6b1381SPaul Cercueil clock-names = "main_clk"; 173ac6b1381SPaul Cercueil vcc-supply = <&vcc>; 174ac6b1381SPaul Cercueil }; 175ac6b1381SPaul Cercueil 176ac6b1381SPaul Cercueil panel { 177ac6b1381SPaul Cercueil compatible = "sharp,ls020b1dd01d"; 178ac6b1381SPaul Cercueil 179ac6b1381SPaul Cercueil backlight = <&backlight>; 180ac6b1381SPaul Cercueil power-supply = <&vcc>; 181ac6b1381SPaul Cercueil 182ac6b1381SPaul Cercueil port { 183ac6b1381SPaul Cercueil panel_input: endpoint { 184ac6b1381SPaul Cercueil remote-endpoint = <&panel_output>; 185ac6b1381SPaul Cercueil }; 186ac6b1381SPaul Cercueil }; 187ac6b1381SPaul Cercueil }; 188ac6b1381SPaul Cercueil}; 189ac6b1381SPaul Cercueil 190ac6b1381SPaul Cercueil&ext { 191ac6b1381SPaul Cercueil clock-frequency = <12000000>; 192ac6b1381SPaul Cercueil}; 193ac6b1381SPaul Cercueil 194ac6b1381SPaul Cercueil&rtc_dev { 195ac6b1381SPaul Cercueil system-power-controller; 196ac6b1381SPaul Cercueil}; 197ac6b1381SPaul Cercueil 198ac6b1381SPaul Cercueil&udc { 199ac6b1381SPaul Cercueil phys = <&usb_phy>; 200ac6b1381SPaul Cercueil}; 201ac6b1381SPaul Cercueil 202ac6b1381SPaul Cercueil&pinctrl { 203ac6b1381SPaul Cercueil pins_mmc1: mmc1 { 204ac6b1381SPaul Cercueil function = "mmc1"; 205ac6b1381SPaul Cercueil groups = "mmc1-1bit"; 206ac6b1381SPaul Cercueil }; 207ac6b1381SPaul Cercueil 208ac6b1381SPaul Cercueil pins_nemc: nemc { 209ac6b1381SPaul Cercueil function = "nand"; 210ac6b1381SPaul Cercueil groups = "nand-cs1", "nand-cle-ale", "nand-fre-fwe"; 211ac6b1381SPaul Cercueil }; 212ac6b1381SPaul Cercueil 213ac6b1381SPaul Cercueil pins_pwm3: pwm3 { 214ac6b1381SPaul Cercueil function = "pwm3"; 215ac6b1381SPaul Cercueil groups = "pwm3"; 216ac6b1381SPaul Cercueil bias-disable; 217ac6b1381SPaul Cercueil }; 218ac6b1381SPaul Cercueil 219ac6b1381SPaul Cercueil pins_lcd: lcd { 220ac6b1381SPaul Cercueil function = "lcd"; 221ac6b1381SPaul Cercueil groups = "lcd-8bit", "lcd-16bit", "lcd-special"; 222ac6b1381SPaul Cercueil }; 223ac6b1381SPaul Cercueil}; 224ac6b1381SPaul Cercueil 225ac6b1381SPaul Cercueil&mmc0 { 226ac6b1381SPaul Cercueil status = "disabled"; 227ac6b1381SPaul Cercueil}; 228ac6b1381SPaul Cercueil 229ac6b1381SPaul Cercueil&mmc1 { 230ac6b1381SPaul Cercueil bus-width = <1>; 231ac6b1381SPaul Cercueil max-frequency = <48000000>; 232ac6b1381SPaul Cercueil 233ac6b1381SPaul Cercueil pinctrl-names = "default"; 234ac6b1381SPaul Cercueil pinctrl-0 = <&pins_mmc1>; 235ac6b1381SPaul Cercueil 236ac6b1381SPaul Cercueil cd-gpios = <&gpc 20 GPIO_ACTIVE_LOW>; 237ac6b1381SPaul Cercueil}; 238ac6b1381SPaul Cercueil 239ac6b1381SPaul Cercueil&uart { 240ac6b1381SPaul Cercueil /* 241ac6b1381SPaul Cercueil * The pins for RX/TX are used for the right shoulder button and 242ac6b1381SPaul Cercueil * backlight PWM. 243ac6b1381SPaul Cercueil */ 244ac6b1381SPaul Cercueil status = "disabled"; 245ac6b1381SPaul Cercueil}; 246ac6b1381SPaul Cercueil 247ac6b1381SPaul Cercueil&nemc { 248ac6b1381SPaul Cercueil nandc: nand-controller@1 { 249ac6b1381SPaul Cercueil compatible = "ingenic,jz4725b-nand"; 250ac6b1381SPaul Cercueil reg = <1 0 0x4000000>; 251ac6b1381SPaul Cercueil 252ac6b1381SPaul Cercueil #address-cells = <1>; 253ac6b1381SPaul Cercueil #size-cells = <0>; 254ac6b1381SPaul Cercueil 255ac6b1381SPaul Cercueil ecc-engine = <&bch>; 256ac6b1381SPaul Cercueil 257ac6b1381SPaul Cercueil ingenic,nemc-tAS = <10>; 258ac6b1381SPaul Cercueil ingenic,nemc-tAH = <5>; 259ac6b1381SPaul Cercueil ingenic,nemc-tBP = <10>; 260ac6b1381SPaul Cercueil ingenic,nemc-tAW = <15>; 261ac6b1381SPaul Cercueil ingenic,nemc-tSTRV = <100>; 262ac6b1381SPaul Cercueil 263ac6b1381SPaul Cercueil pinctrl-names = "default"; 264ac6b1381SPaul Cercueil pinctrl-0 = <&pins_nemc>; 265ac6b1381SPaul Cercueil 266ac6b1381SPaul Cercueil rb-gpios = <&gpc 27 GPIO_ACTIVE_HIGH>; 267ac6b1381SPaul Cercueil 268ac6b1381SPaul Cercueil nand@1 { 269ac6b1381SPaul Cercueil reg = <1>; 270ac6b1381SPaul Cercueil 271ac6b1381SPaul Cercueil nand-ecc-step-size = <512>; 272ac6b1381SPaul Cercueil nand-ecc-strength = <8>; 273ac6b1381SPaul Cercueil nand-ecc-mode = "hw"; 274ac6b1381SPaul Cercueil nand-is-boot-medium; 275ac6b1381SPaul Cercueil nand-on-flash-bbt; 276ac6b1381SPaul Cercueil 277ac6b1381SPaul Cercueil partitions { 278ac6b1381SPaul Cercueil compatible = "fixed-partitions"; 279ac6b1381SPaul Cercueil #address-cells = <1>; 280ac6b1381SPaul Cercueil #size-cells = <1>; 281ac6b1381SPaul Cercueil 282ac6b1381SPaul Cercueil partition@0 { 283ac6b1381SPaul Cercueil label = "bootloader"; 284ac6b1381SPaul Cercueil reg = <0x0 0x20000>; 285ac6b1381SPaul Cercueil }; 286ac6b1381SPaul Cercueil 287ac6b1381SPaul Cercueil partition@20000 { 288ac6b1381SPaul Cercueil label = "system"; 289ac6b1381SPaul Cercueil reg = <0x20000 0x0>; 290ac6b1381SPaul Cercueil }; 291ac6b1381SPaul Cercueil }; 292ac6b1381SPaul Cercueil }; 293ac6b1381SPaul Cercueil }; 294ac6b1381SPaul Cercueil}; 295ac6b1381SPaul Cercueil 296ac6b1381SPaul Cercueil&cgu { 297ac6b1381SPaul Cercueil /* Use 32kHz oscillator as the parent of the RTC clock */ 298ac6b1381SPaul Cercueil assigned-clocks = <&cgu JZ4725B_CLK_RTC>; 299ac6b1381SPaul Cercueil assigned-clock-parents = <&cgu JZ4725B_CLK_OSC32K>; 300ac6b1381SPaul Cercueil}; 301ac6b1381SPaul Cercueil 302ac6b1381SPaul Cercueil&tcu { 303ac6b1381SPaul Cercueil /* 304ac6b1381SPaul Cercueil * 750 kHz for the system timer and clocksource, and use RTC as the 305ac6b1381SPaul Cercueil * parent for the watchdog clock. 306ac6b1381SPaul Cercueil */ 307ac6b1381SPaul Cercueil assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, <&tcu TCU_CLK_WDT>; 308ac6b1381SPaul Cercueil assigned-clock-parents = <0>, <0>, <&cgu JZ4725B_CLK_RTC>; 309ac6b1381SPaul Cercueil assigned-clock-rates = <750000>, <750000>; 310ac6b1381SPaul Cercueil}; 311ac6b1381SPaul Cercueil 312ac6b1381SPaul Cercueil&lcd { 3130fe0fbc8SPaul Cercueil memory-region = <&vmem>; 3140fe0fbc8SPaul Cercueil 315ac6b1381SPaul Cercueil pinctrl-names = "default"; 316ac6b1381SPaul Cercueil pinctrl-0 = <&pins_lcd>; 317d8727385SPaul Cercueil}; 318ac6b1381SPaul Cercueil 319d8727385SPaul Cercueil&lcd_ports { 320d8727385SPaul Cercueil port@0 { 321d8727385SPaul Cercueil reg = <0>; 322d8727385SPaul Cercueil 323ac6b1381SPaul Cercueil panel_output: endpoint { 324ac6b1381SPaul Cercueil remote-endpoint = <&panel_input>; 325ac6b1381SPaul Cercueil }; 326ac6b1381SPaul Cercueil }; 327ac6b1381SPaul Cercueil}; 328