// SPDX-License-Identifier: GPL-2.0 /* * Copyright 2020, Compass Electronics Group, LLC */ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/clock/versaclock.h> / { backlight_lvds: backlight-lvds { compatible = "pwm-backlight"; power-supply = <®_lcd>; enable-gpios = <&gpio_exp1 3 GPIO_ACTIVE_HIGH>; pwms = <&pwm2 0 25000>; brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <6>; }; backlight_dpi: backlight-dpi { compatible = "pwm-backlight"; power-supply = <®_lcd>; enable-gpios = <&gpio_exp1 7 GPIO_ACTIVE_LOW>; pwms = <&pwm0 0 25000>; brightness-levels = <0 25 33 50 63 75 88 100>; default-brightness-level = <6>; }; hdmi0-out { compatible = "hdmi-connector"; type = "a"; port { hdmi0_con: endpoint { remote-endpoint = <&rcar_dw_hdmi0_out>; }; }; }; keys { compatible = "gpio-keys"; key-1 { /* S19 */ gpios = <&gpio4 6 GPIO_ACTIVE_LOW>; linux,code = <KEY_UP>; label = "Up"; wakeup-source; debounce-interval = <20>; }; key-2 { /*S20 */ gpios = <&gpio3 13 GPIO_ACTIVE_LOW>; linux,code = <KEY_LEFT>; label = "Left"; wakeup-source; debounce-interval = <20>; }; key-3 { /* S21 */ gpios = <&gpio5 17 GPIO_ACTIVE_LOW>; linux,code = <KEY_DOWN>; label = "Down"; wakeup-source; debounce-interval = <20>; }; key-4 { /* S22 */ gpios = <&gpio5 20 GPIO_ACTIVE_LOW>; linux,code = <KEY_RIGHT>; label = "Right"; wakeup-source; debounce-interval = <20>; }; key-5 { /* S23 */ gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; linux,code = <KEY_ENTER>; label = "Center"; wakeup-source; debounce-interval = <20>; }; }; leds { compatible = "gpio-leds"; pinctrl-0 = <&led_pins>; pinctrl-names = "default"; led0 { gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; label = "LED0"; linux,default-trigger = "heartbeat"; }; led1 { gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>; label = "LED1"; }; led2 { gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>; label = "LED2"; }; led3 { gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>; label = "LED3"; }; }; lvds { compatible = "panel-lvds"; power-supply = <®_lcd_reset>; width-mm = <223>; height-mm = <125>; backlight = <&backlight_lvds>; data-mapping = "vesa-24"; panel-timing { /* 800x480@60Hz */ clock-frequency = <30000000>; hactive = <800>; vactive = <480>; hsync-len = <48>; hfront-porch = <40>; hback-porch = <40>; vfront-porch = <13>; vback-porch = <29>; vsync-len = <1>; hsync-active = <1>; vsync-active = <3>; de-active = <1>; pixelclk-active = <0>; }; port { panel_in: endpoint { remote-endpoint = <&lvds0_out>; }; }; }; rgb { /* Different LCD with compatible timings */ compatible = "rocktech,rk070er9427"; backlight = <&backlight_dpi>; enable-gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>; power-supply = <®_lcd>; port { rgb_panel: endpoint { remote-endpoint = <&du_out_rgb>; }; }; }; reg_audio: regulator-audio { compatible = "regulator-fixed"; regulator-name = "audio-1.8V"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&gpio_exp4 1 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_lcd: regulator-lcd { compatible = "regulator-fixed"; regulator-name = "lcd_panel_pwr"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio_exp1 1 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_lcd_reset: regulator-lcd-reset { compatible = "regulator-fixed"; regulator-name = "nLCD_RESET"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>; enable-active-high; vin-supply = <®_lcd>; }; reg_cam0: regulator-cam0 { compatible = "regulator-fixed"; regulator-name = "reg_cam0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&gpio_exp2 2 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_cam1: regulator-cam1 { compatible = "regulator-fixed"; regulator-name = "reg_cam1"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&gpio_exp2 5 GPIO_ACTIVE_HIGH>; enable-active-high; startup-delay-us = <100000>; }; sound_card { compatible = "audio-graph-card"; label = "rcar-sound"; dais = <&rsnd_port0>, <&rsnd_port1>; widgets = "Microphone", "Mic Jack", "Line", "Line In Jack", "Headphone", "Headphone Jack"; mic-det-gpio = <&gpio0 2 GPIO_ACTIVE_LOW>; routing = "Headphone Jack", "HPOUTL", "Headphone Jack", "HPOUTR", "IN3R", "MICBIAS", "Mic Jack", "IN3R"; }; vccq_sdhi0: regulator-vccq-sdhi0 { compatible = "regulator-gpio"; regulator-name = "SDHI0 VccQ"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; gpios-states = <1>; states = <3300000 1>, <1800000 0>; }; /* External DU dot clocks */ x302_clk: x302-clock { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <33000000>; }; x304_clk: x304-clock { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <25000000>; }; connector { compatible = "usb-c-connector"; label = "USB-C"; data-role = "dual"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hs_ep: endpoint { remote-endpoint = <&usb3_hs_ep>; }; }; port@1 { reg = <1>; ss_ep: endpoint { remote-endpoint = <&hd3ss3220_in_ep>; }; }; }; }; }; &audio_clk_b { clock-frequency = <22579200>; }; &can0 { pinctrl-0 = <&can0_pins>; pinctrl-names = "default"; renesas,can-clock-select = <0x0>; status = "okay"; }; &can1 { pinctrl-0 = <&can1_pins>; pinctrl-names = "default"; renesas,can-clock-select = <0x0>; status = "okay"; }; &du { ports { port@0 { du_out_rgb: endpoint { remote-endpoint = <&rgb_panel>; }; }; }; }; &ehci0 { dr_mode = "otg"; status = "okay"; clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&usb2_clksel>, <&versaclock5 3>; }; &ehci1 { status = "okay"; clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&usb2_clksel>, <&versaclock5 3>; }; &hdmi0 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; dw_hdmi0_in: endpoint { remote-endpoint = <&du_out_hdmi0>; }; }; port@1 { reg = <1>; rcar_dw_hdmi0_out: endpoint { remote-endpoint = <&hdmi0_con>; }; }; port@2 { reg = <2>; dw_hdmi0_snd_in: endpoint { remote-endpoint = <&rsnd_endpoint1>; }; }; }; }; &hscif1 { pinctrl-0 = <&hscif1_pins>; pinctrl-names = "default"; uart-has-rtscts; status = "okay"; }; &hsusb { dr_mode = "otg"; status = "okay"; }; &i2c2 { status = "okay"; clock-frequency = <400000>; pinctrl-0 = <&i2c2_pins>; pinctrl-names = "default"; gpio_exp2: gpio@21 { compatible = "onnn,pca9654"; reg = <0x21>; gpio-controller; #gpio-cells = <2>; }; gpio_exp3: gpio@22 { compatible = "onnn,pca9654"; reg = <0x22>; gpio-controller; #gpio-cells = <2>; }; gpio_exp4: gpio@23 { compatible = "onnn,pca9654"; reg = <0x23>; gpio-controller; #gpio-cells = <2>; }; versaclock6_bb: clock-controller@6a { compatible = "idt,5p49v6965"; reg = <0x6a>; #clock-cells = <1>; clocks = <&x304_clk>; clock-names = "xin"; assigned-clocks = <&versaclock6_bb 1>, <&versaclock6_bb 2>, <&versaclock6_bb 3>, <&versaclock6_bb 4>; assigned-clock-rates = <24000000>, <24000000>, <24576000>, <24576000>; OUT1 { idt,mode = <VC5_CMOS>; idt,voltage-microvolt = <1800000>; idt,slew-percent = <100>; }; OUT2 { idt,mode = <VC5_CMOS>; idt,voltage-microvolt = <1800000>; idt,slew-percent = <100>; }; OUT3 { idt,mode = <VC5_CMOS>; idt,voltage-microvolt = <3300000>; idt,slew-percent = <100>; }; OUT4 { idt,mode = <VC5_CMOS>; idt,voltage-microvolt = <3300000>; idt,slew-percent = <100>; }; }; }; &i2c0 { status = "okay"; clock-frequency = <400000>; pinctrl-0 = <&i2c0_pins>; pinctrl-names = "default"; }; &i2c5 { status = "okay"; clock-frequency = <400000>; pinctrl-0 = <&i2c5_pins>; pinctrl-names = "default"; codec: wm8962@1a { compatible = "wlf,wm8962"; reg = <0x1a>; clocks = <&versaclock6_bb 3>; DCVDD-supply = <®_audio>; DBVDD-supply = <®_audio>; AVDD-supply = <®_audio>; CPVDD-supply = <®_audio>; MICVDD-supply = <®_audio>; PLLVDD-supply = <®_audio>; SPKVDD1-supply = <®_audio>; SPKVDD2-supply = <®_audio>; gpio-cfg = < 0x0000 /* 0:Default */ 0x0000 /* 1:Default */ 0x0000 /* 2:Default */ 0x0000 /* 3:Default */ 0x0000 /* 4:Default */ 0x0000 /* 5:Default */ >; port { wm8962_endpoint: endpoint { remote-endpoint = <&rsnd_endpoint0>; }; }; }; touchscreen@26 { compatible = "ilitek,ili2117"; reg = <0x26>; interrupt-parent = <&gpio5>; interrupts = <9 IRQ_TYPE_EDGE_RISING>; wakeup-source; }; hd3ss3220@47 { compatible = "ti,hd3ss3220"; reg = <0x47>; interrupt-parent = <&gpio6>; interrupts = <4 IRQ_TYPE_LEVEL_LOW>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; hd3ss3220_in_ep: endpoint { remote-endpoint = <&ss_ep>; }; }; port@1 { reg = <1>; hd3ss3220_out_ep: endpoint { remote-endpoint = <&usb3_role_switch>; }; }; }; }; gpio_exp1: gpio@70 { compatible = "nxp,pca9538"; reg = <0x70>; gpio-controller; #gpio-cells = <2>; gpio-line-names = "lcd_reset", "lcd_pwr", "lcd_select", "backlight-enable", "Touch_shdwn", "LCD_H_pol", "lcd_V_pol"; }; }; &lvds0 { status = "okay"; ports { port@1 { lvds0_out: endpoint { remote-endpoint = <&panel_in>; }; }; }; }; &msiof1 { pinctrl-0 = <&msiof1_pins>; pinctrl-names = "default"; status = "okay"; cs-gpios = <&gpio3 10 GPIO_ACTIVE_LOW>; }; &ohci0 { dr_mode = "otg"; status = "okay"; }; &ohci1 { status = "okay"; }; &pciec0 { status = "okay"; }; &pciec1 { status = "okay"; }; &pcie_bus_clk { clock-frequency = <100000000>; }; &pfc { can0_pins: can0 { groups = "can0_data_a"; function = "can0"; }; can1_pins: can1 { groups = "can1_data"; function = "can1"; }; du_pins: du { groups = "du_rgb888", "du_sync", "du_clk_out_1", "du_disp"; function = "du"; }; i2c2_pins: i2c2 { groups = "i2c2_a"; function = "i2c2"; }; i2c5_pins: i2c5 { groups = "i2c5"; function = "i2c5"; }; led_pins: leds { /* GP_0_4 , AVS1, AVS2, GP_7_3 */ pins = "GP_0_4", "GP_7_0", "GP_7_1", "GP_7_3"; bias-pull-down; }; msiof1_pins: msiof1 { groups = "msiof1_clk_g", "msiof1_rxd_g", "msiof1_txd_g"; function = "msiof1"; }; pwm0_pins: pwm0 { groups = "pwm0"; function = "pwm0"; }; pwm2_pins: pwm2 { groups = "pwm2_a"; function = "pwm2"; }; sdhi0_pins: sd0 { groups = "sdhi0_data4", "sdhi0_ctrl"; function = "sdhi0"; power-source = <3300>; }; sdhi0_pins_uhs: sd0_uhs { groups = "sdhi0_data4", "sdhi0_ctrl"; function = "sdhi0"; power-source = <1800>; }; sound_pins: sound { groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; function = "ssi"; }; sound_clk_pins: sound_clk { groups = "audio_clk_a_a", "audio_clk_b_a"; function = "audio_clk"; }; usb0_pins: usb0 { mux { groups = "usb0"; function = "usb0"; }; }; usb1_pins: usb1 { mux { groups = "usb1"; function = "usb1"; }; }; usb30_pins: usb30 { mux { groups = "usb30"; function = "usb30"; }; }; }; &pwm0 { pinctrl-0 = <&pwm0_pins>; pinctrl-names = "default"; status = "okay"; }; &pwm2 { pinctrl-0 = <&pwm2_pins>; pinctrl-names = "default"; status = "okay"; }; &rcar_sound { pinctrl-0 = <&sound_pins>, <&sound_clk_pins>; pinctrl-names = "default"; /* Single DAI */ #sound-dai-cells = <0>; /* audio_clkout0/1/2/3 */ #clock-cells = <1>; clock-frequency = <11289600>; /* Reference versaclock instead of audio_clk_a */ clocks = <&cpg CPG_MOD 1005>, <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>, <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>, <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>, <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>, <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>, <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>, <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>, <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>, <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>, <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>, <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>, <&versaclock6_bb 4>, <&audio_clk_b>, <&audio_clk_c>, <&cpg CPG_CORE CPG_AUDIO_CLK_I>; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; rsnd_port0: port@0 { reg = <0>; rsnd_endpoint0: endpoint { remote-endpoint = <&wm8962_endpoint>; dai-format = "i2s"; bitclock-master = <&rsnd_endpoint0>; frame-master = <&rsnd_endpoint0>; playback = <&ssi1>, <&dvc1>, <&src1>; capture = <&ssi0>; }; }; rsnd_port1: port@1 { reg = <0x01>; rsnd_endpoint1: endpoint { remote-endpoint = <&dw_hdmi0_snd_in>; dai-format = "i2s"; bitclock-master = <&rsnd_endpoint1>; frame-master = <&rsnd_endpoint1>; playback = <&ssi2>; }; }; }; }; &rwdt { status = "okay"; timeout-sec = <60>; }; &scif0 { pinctrl-0 = <&scif0_pins>; pinctrl-names = "default"; status = "okay"; }; &scif5 { pinctrl-0 = <&scif5_pins>; pinctrl-names = "default"; status = "okay"; }; &scif_clk { clock-frequency = <14745600>; }; &sdhi0 { pinctrl-0 = <&sdhi0_pins>; pinctrl-1 = <&sdhi0_pins_uhs>; pinctrl-names = "default", "state_uhs"; vmmc-supply = <®_3p3v>; vqmmc-supply = <&vccq_sdhi0>; cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>; bus-width = <4>; sd-uhs-sdr50; sd-uhs-sdr104; status = "okay"; }; &ssi1 { shared-pin; }; &tmu0 { status = "okay"; }; &tmu1 { status = "okay"; }; &tmu2 { status = "okay"; }; &tmu3 { status = "okay"; }; &tmu4 { status = "okay"; }; &usb2_phy0 { pinctrl-0 = <&usb0_pins>; pinctrl-names = "default"; status = "okay"; }; &usb2_phy1 { pinctrl-0 = <&usb1_pins>; pinctrl-names = "default"; status = "okay"; }; &usb3_peri0 { companion = <&xhci0>; status = "okay"; usb-role-switch; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb3_hs_ep: endpoint { remote-endpoint = <&hs_ep>; }; }; port@1 { reg = <1>; usb3_role_switch: endpoint { remote-endpoint = <&hd3ss3220_out_ep>; }; }; }; }; &usb3_phy0 { status = "okay"; }; &vin0 { status = "okay"; }; &vin1 { status = "okay"; }; &vin2 { status = "okay"; }; &vin3 { status = "okay"; }; &vin4 { status = "okay"; }; &vin5 { status = "okay"; }; &vin6 { status = "okay"; }; &vin7 { status = "okay"; }; &xhci0 { pinctrl-0 = <&usb30_pins>; pinctrl-names = "default"; status = "okay"; };