// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright (c) 2021 Rockchip Electronics Co., Ltd. * */ #include #include #include #include #include #include #include #include "dt-bindings/usb/pd.h" #include "dt-bindings/leds/common.h" #include "rk3588.dtsi" #include "rk3588-rk806.dtsi" / { adc_keys: adc-keys { compatible = "adc-keys"; io-channels = <&saradc 1>; io-channel-names = "buttons"; keyup-threshold-microvolt = <1800000>; poll-interval = <100>; vol-up-key { label = "volume up"; linux,code = ; press-threshold-microvolt = <17000>; }; vol-down-key { label = "volume down"; linux,code = ; press-threshold-microvolt = <417000>; }; home-key { label = "home"; linux,code = ; press-threshold-microvolt = <890000>; }; menu-key { label = "menu"; linux,code = ; press-threshold-microvolt = <1235000>; }; }; joypad: slpad-joypad { compatible = "rocknix-joypad"; poll-interval = <10>; status = "okay"; joypad-name = "Microsoft X-Box 360 pad"; joypad-vendor = <0x045e>; joypad-product = <0x028e>; joypad-revision = <0x0503>; /* Analog sticks */ io-channels = <&saradc 2>, <&saradc 3>, <&saradc 4>, <&saradc 5>; io-channel-names = "key-X", "key-Y", "key-RX", "key-RY"; button-adc-scale = <4>; button-adc-deadzone = <150>; button-adc-fuzz = <32>; button-adc-flat = <32>; abs_x-p-tuning = <350>; abs_x-n-tuning = <350>; abs_y-p-tuning = <350>; abs_y-n-tuning = <350>; abs_rx-p-tuning = <350>; abs_rx-n-tuning = <350>; abs_ry-p-tuning = <350>; abs_ry-n-tuning = <350>; invert-absx; invert-absy; /* gpio pincontrol setup */ pinctrl-names = "default"; pinctrl-0 = <&btn_pins>; /* gpio button auto repeat set value : default disable */ /* autorepeat; */ /* *** SLPad switch layout *** |-------------------------------------------------------| | sw15(b4) sw21(b6) sw20(b7) sw16(b5) | |-------------------------------------------------------| | sw19(b12)|-------------------| sw22(b13) | | | | | | sw1(b8) | | sw8(b2) | |sw3(b10) sw4(b11)| OLED Display | sw7(b3) sw5(b1) | | sw2(b9) | | sw6(b0) | | sw11(b14) | | sw12(b15) | | menu(sys) |-------------------| home(sys) | | | |-------------------------------------------------------| */ sw1 { gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; label = "GPIO DPAD-UP"; linux,code = ; linux,input-type = ; linux,input-value = <0xffffffff>; /* -1 */ }; sw2 { gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; label = "GPIO DPAD-DOWN"; linux,code = ; linux,input-type = ; linux,input-value= <1>; }; sw3 { gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; label = "GPIO DPAD-LEFT"; linux,code = ; linux,input-type = ; linux,input-value = <0xffffffff>; /* -1 */ }; sw4 { gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; label = "GPIO DPAD-RIGHT"; linux,code = ; linux,input-type = ; linux,input-value= <1>; }; sw5 { gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; label = "GPIO KEY BTN-A"; linux,code = ; }; sw6 { gpios = <&gpio3 RK_PA0 GPIO_ACTIVE_LOW>; label = "GPIO BTN-B"; linux,code = ; }; sw7 { gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>; label = "GPIO BTN-Y"; linux,code = ; }; sw8 { gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>; label = "GPIO BTN-X"; linux,code = ; }; sw11 { gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>; label = "GPIO BTN-THUMBR"; linux,code = ; }; sw12 { gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>; label = "GPIO BTN-THUMBL"; linux,code = ; }; sw15 { gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; label = "GPIO BTN-L"; linux,code = ; }; sw16 { gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>; label = "GPIO BTN-R"; linux,code = ; }; sw19 { gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; label = "GPIO BTN-SELECT"; linux,code = ; }; sw20 { gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; label = "GPIO BTN-ZR"; linux,code = ; linux,input-type = ; linux,input-value= <255>; }; sw21 { gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; label = "GPIO BTN-ZL"; linux,code = ; linux,input-type = ; linux,input-value= <255>; }; sw22 { gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_LOW>; label = "GPIO BTN-START"; linux,code = ; }; }; vibrator { compatible = "rk-vibrator-gpio"; status = "okay"; vibrator-gpio = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>; }; /* If hdmirx node is disabled, delete the reserved-memory node here. */ reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* Reserve 128MB memory for hdmirx-controller@fdee0000 */ cma { compatible = "shared-dma-pool"; reusable; reg = <0x0 (256 * 0x100000) 0x0 (128 * 0x100000)>; linux,cma-default; }; }; es8388_sound: es8388-sound { status = "okay"; compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip-es8388"; hp-det-gpio = <&gpio1 RK_PC4 GPIO_ACTIVE_LOW>; io-channels = <&saradc 7>; io-channel-names = "adc-detect"; keyup-threshold-microvolt = <1800000>; poll-interval = <100>; spk-con-gpio = <&gpio4 RK_PA0 GPIO_ACTIVE_HIGH>; hp-con-gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>; rockchip,aw8733-mode = <3>; rockchip,format = "i2s"; rockchip,mclk-fs = <256>; rockchip,cpu = <&i2s0_8ch>; rockchip,codec = <&es8388>; rockchip,audio-routing = "Headphone", "LOUT1", "Headphone", "ROUT1", "Speaker", "LOUT2", "Speaker", "ROUT2", "Headphone", "Headphone Power", "Headphone", "Headphone Power", "Speaker", "Speaker Power", "Speaker", "Speaker Power", "LINPUT1", "Main Mic", "LINPUT2", "Main Mic", "RINPUT1", "Headset Mic", "RINPUT2", "Headset Mic"; pinctrl-names = "default"; pinctrl-0 = <&hp_det>; play-pause-key { label = "playpause"; linux,code = ; press-threshold-microvolt = <2000>; }; }; fan: pwm-fan { compatible = "pwm-fan"; #cooling-cells = <2>; pwms = <&pwm14 0 50000 0>; cooling-levels = <0 70 130 180 200 255>; rockchip,temp-trips = < 45000 1 50000 2 55000 3 60000 4 65000 5 >; }; charge-animation { compatible = "rockchip,uboot-charge"; rockchip,uboot-charge-on = <1>; rockchip,android-charge-on = <0>; rockchip,uboot-low-power-voltage = <3300>; rockchip,screen-on-voltage = <3400>; rockchip,uboot-exit-charge-level = <2>; rockchip,uboot-exit-charge-auto = <1>; rockchip,system-suspend = <1>; regulator-on-in-mem = <&vdd_log_s0>, <&vcc_2v0_pldo_s3>, <&vdd2_ddr_s3>, <&vcc_1v8_s3>, <&avcc_1v8_s0>, <&vdd_0v75_s3>, <&pldo6_s3>, <&vcc_3v3_s3>; regulator-off-in-mem = <&vdd_gpu_s0>, <&vdd_npu_s0>, <&vdd_vdenc_s0>, <&vdd_gpu_mem_s0>, <&vdd_npu_mem_s0>, <&vdd_vdenc_mem_s0>, <&vcc_1v8_s0>, <&vcc_3v3_s0>, <&vccio_sd_s0>, <&avdd_0v75_s0>, <&avdd_0v85_s0>, <&vdd_cpu_big1_s0>, <&vdd_cpu_big0_s0>, <&vdd_cpu_lit_s0>, <&vdd_cpu_big1_mem_s0>, <&vdd_cpu_big0_mem_s0>, <&vdd_cpu_lit_mem_s0>, <&vddq_ddr_s0>, <&vdd_ddr_s0>, <&vdd_ddr_pll_s0>, <&avdd_1v2_s0>, <&vdd_0v75_s0>; status = "okay"; }; hdmi0_sound: hdmi0-sound { status = "okay"; compatible = "rockchip,hdmi"; rockchip,mclk-fs = <128>; rockchip,card-name = "rockchip-hdmi0"; rockchip,cpu = <&i2s5_8ch>; rockchip,codec = <&hdmi0>; rockchip,jack-det; }; hdmi1_sound: hdmi1-sound { status = "disabled"; compatible = "rockchip,hdmi"; rockchip,mclk-fs = <128>; rockchip,card-name = "rockchip-hdmi1"; rockchip,cpu = <&i2s6_8ch>; rockchip,codec = <&hdmi1>; rockchip,jack-det; }; dp0_sound: dp0-sound { status = "okay"; compatible = "rockchip,hdmi"; rockchip,card-name= "rockchip,dp0"; rockchip,mclk-fs = <512>; rockchip,cpu = <&spdif_tx2>; rockchip,codec = <&dp0 1>; rockchip,jack-det; }; dp1_sound: dp1-sound { status = "disabled"; compatible = "rockchip,hdmi"; rockchip,card-name= "rockchip,dp1"; rockchip,mclk-fs = <512>; rockchip,cpu = <&spdif_tx5>; rockchip,codec = <&dp1 1>; rockchip,jack-det; }; spdif_tx0_dc: spdif-tx0-dc { status = "disabled"; compatible = "linux,spdif-dit"; #sound-dai-cells = <0>; }; spdif_tx0_sound: spdif-tx0-sound { status = "disabled"; compatible = "simple-audio-card"; simple-audio-card,mclk-fs = <128>; simple-audio-card,name = "rockchip,spdif-tx0"; simple-audio-card,cpu { sound-dai = <&spdif_tx0>; }; simple-audio-card,codec { sound-dai = <&spdif_tx0_dc>; }; }; spdif_tx1_dc: spdif-tx1-dc { status = "disabled"; compatible = "linux,spdif-dit"; #sound-dai-cells = <0>; }; spdif_tx1_sound: spdif-tx1-sound { status = "disabled"; compatible = "simple-audio-card"; simple-audio-card,mclk-fs = <128>; simple-audio-card,name = "rockchip,spdif-tx1"; simple-audio-card,cpu { sound-dai = <&spdif_tx1>; }; simple-audio-card,codec { sound-dai = <&spdif_tx1_dc>; }; }; vcc12v_dcin: vcc12v-dcin { compatible = "regulator-fixed"; regulator-name = "vcc12v_dcin"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; }; vcc5v0_sys: vcc5v0-sys { compatible = "regulator-fixed"; regulator-name = "vcc5v0_sys"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&vcc12v_dcin>; }; vcc_1v1_nldo_s3: vcc-1v1-nldo-s3 { compatible = "regulator-fixed"; regulator-name = "vcc_1v1_nldo_s3"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1100000>; vin-supply = <&vcc5v0_sys>; }; vcc5v0_usbdcin: vcc5v0-usbdcin { compatible = "regulator-fixed"; regulator-name = "vcc5v0_usbdcin"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&vcc12v_dcin>; }; vcc5v0_usb: vcc5v0-usb { compatible = "regulator-fixed"; regulator-name = "vcc5v0_usb"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&vcc5v0_usbdcin>; }; sdio_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; clocks = <&hym8563>; clock-names = "ext_clock"; pinctrl-names = "default"; pinctrl-0 = <&wifi_enable_h>; /* * On the module itself this is one of these (depending * on the actual card populated): * - SDIO_RESET_L_WL_REG_ON * - PDN (power down when low) */ post-power-on-delay-ms = <200>; reset-gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>; }; wireless_bluetooth: wireless-bluetooth { compatible = "bluetooth-platdata"; clocks = <&hym8563>; clock-names = "ext_clock"; uart_rts_gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_LOW>; pinctrl-names = "default", "rts_gpio"; pinctrl-0 = <&uart9m0_rtsn>, <&bt_gpio>; pinctrl-1 = <&uart9_gpios>; BT,reset_gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>; BT,wake_gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>; BT,wake_host_irq = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; status = "okay"; }; wireless_wlan: wireless-wlan { compatible = "wlan-platdata"; wifi_chip_type = "ap6398sv"; pinctrl-names = "default"; pinctrl-0 = <&wifi_host_wake_irq>; WIFI,host_wake_irq = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; WIFI,poweren_gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; status = "okay"; }; }; &i2s0_8ch { status = "okay"; pinctrl-0 = <&i2s0_lrck &i2s0_sclk &i2s0_sdi0 &i2s0_sdo0>; }; &i2s5_8ch { status = "okay"; }; &av1d_mmu { status = "okay"; }; &cpu_l0 { cpu-supply = <&vdd_cpu_lit_s0>; mem-supply = <&vdd_cpu_lit_mem_s0>; }; &cpu_b0 { cpu-supply = <&vdd_cpu_big0_s0>; mem-supply = <&vdd_cpu_big0_mem_s0>; }; &cpu_b2 { cpu-supply = <&vdd_cpu_big1_s0>; mem-supply = <&vdd_cpu_big1_mem_s0>; }; &gpu { mali-supply = <&vdd_gpu_s0>; mem-supply = <&vdd_gpu_mem_s0>; status = "okay"; }; &iep { status = "okay"; }; &iep_mmu { status = "okay"; }; &jpegd { status = "okay"; }; &jpegd_mmu { status = "okay"; }; &jpege_ccu { status = "okay"; }; &jpege0 { status = "okay"; }; &jpege0_mmu { status = "okay"; }; &jpege1 { status = "okay"; }; &jpege1_mmu { status = "okay"; }; &jpege2 { status = "okay"; }; &jpege2_mmu { status = "okay"; }; &jpege3 { status = "okay"; }; &jpege3_mmu { status = "okay"; }; &mpp_srv { status = "okay"; }; &rga3_core0 { status = "okay"; }; &rga3_0_mmu { status = "okay"; }; &rga3_core1 { status = "okay"; }; &rga3_1_mmu { status = "okay"; }; &rga2 { status = "okay"; }; &rknpu { rknpu-supply = <&vdd_npu_s0>; mem-supply = <&vdd_npu_mem_s0>; status = "okay"; }; &rknpu_mmu { status = "okay"; }; &rkvdec_ccu { status = "okay"; }; &rkvdec0 { status = "okay"; }; &rkvdec0_mmu { status = "okay"; }; &rkvdec1 { status = "okay"; }; &rkvdec1_mmu { status = "okay"; }; &rkvenc_ccu { status = "okay"; }; &rkvenc0 { status = "okay"; }; &rkvenc0_mmu { status = "okay"; }; &rkvenc1 { status = "okay"; }; &rkvenc1_mmu { status = "okay"; }; &rockchip_suspend { status = "okay"; rockchip,sleep-debug-en = <1>; rockchip,sleep-mode-config = < (0 | RKPM_SLP_ARMOFF_LOGOFF | RKPM_SLP_PMU_PMUALIVE_32K | RKPM_SLP_PMU_DIS_OSC | RKPM_SLP_32K_EXT ) >; rockchip,wakeup-config = < (0 | RKPM_GPIO_WKUP_EN ) >; }; &saradc { status = "okay"; vref-supply = <&vcc_1v8_s0>; }; &tsadc { status = "okay"; }; &spdif_tx2 { status = "okay"; }; &combphy0_ps { status = "disabled"; }; &combphy1_ps { status = "disabled"; }; &combphy2_psu { status = "disabled"; }; &dmc { center-supply = <&vdd_ddr_s0>; mem-supply = <&vdd_log_s0>; status = "okay"; }; &dfi { status = "okay"; }; &dp0 { status = "okay"; }; &dp0_in_vp2 { status = "okay"; }; &dp1 { status = "disable"; }; &dp1_in_vp2 { status = "disabled"; }; /* * mipi_dcphy0 needs to be enabled * when dsi0 is enabled */ &mipi_dcphy0 { status = "okay"; }; &mipi_dcphy1 { status = "disabled"; }; &dsi0 { status = "okay"; //rockchip,lane-rate = <1000>; dsi0_panel: panel@0 { status = "okay"; compatible = "simple-panel-dsi"; reg = <0>; power-supply = <&vcc5v0_sys>; cmd_later_reset = <0>; //backlight = <&backlight>; reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>; pinctrl-names = "default"; pinctrl-0 = <&lcd_rst_gpio>; reset-delay-ms = <20>; init-delay-ms = <20>; enable-delay-ms = <120>; prepare-delay-ms = <120>; unprepare-delay-ms = <10>; disable-delay-ms = <60>; width-mm = <121>; height-mm = <68>; dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>; dsi,format = ; dsi,lanes = <4>; panel-init-sequence = [ 15 00 02 FE 0E 15 00 02 4B 00 15 00 02 4C 0F 15 00 02 4D 20 15 00 02 4E 40 15 00 02 4F 60 15 00 02 50 A0 15 00 02 51 C0 15 00 02 52 E0 15 00 02 53 FF 15 00 02 FE 0D 15 00 02 18 08 15 00 02 42 01 15 00 02 08 41 15 00 02 46 02 15 00 02 72 09 15 00 02 FE 0A 15 00 02 24 17 15 00 02 04 07 15 00 02 1A 0C 15 00 02 0F 44 15 00 02 FE 04 15 00 02 00 0C 15 00 02 0A E6 15 00 02 0B 8C 15 00 02 1A 12 15 00 02 29 93 15 00 02 2A 93 15 00 02 2F 02 15 00 02 31 02 15 00 02 33 05 15 00 02 37 2D 15 00 02 38 3D 15 00 02 3A 1E 15 00 02 3B 1E 15 00 02 3D 27 15 00 02 3F 80 15 00 02 40 40 15 00 02 41 E0 15 00 02 4F 3F 15 00 02 50 1E 15 00 02 FE 06 15 00 02 00 CC 15 00 02 05 05 15 00 02 07 A2 15 00 02 08 CC 15 00 02 0D 03 15 00 02 0F A2 15 00 02 32 CC 15 00 02 37 05 15 00 02 39 83 15 00 02 3A CC 15 00 02 41 04 15 00 02 43 83 15 00 02 44 CC 15 00 02 49 05 15 00 02 4B A2 15 00 02 4C CC 15 00 02 51 03 15 00 02 4B A2 15 00 02 4C CC 15 00 02 51 03 15 00 02 53 A2 15 00 02 75 CC 15 00 02 7A 03 15 00 02 7C 83 15 00 02 7D CC 15 00 02 82 02 15 00 02 84 83 15 00 02 85 EC 15 00 02 86 0F 15 00 02 87 FF 15 00 02 88 00 15 00 02 8A 02 15 00 02 8C A2 15 00 02 8D EA 15 00 02 8E 01 15 00 02 8F E8 15 00 02 90 0A 15 00 02 92 06 15 00 02 93 A0 15 00 02 94 A8 15 00 02 95 EC 15 00 02 96 0F 15 00 02 97 FF 15 00 02 98 00 15 00 02 9A 02 15 00 02 9C A2 15 00 02 AC 04 15 00 02 B1 12 15 00 02 B2 17 15 00 02 B3 17 15 00 02 B4 17 15 00 02 B5 17 15 00 02 B6 11 15 00 02 B7 08 15 00 02 B8 09 15 00 02 B9 06 15 00 02 BA 07 15 00 02 BB 17 15 00 02 BC 17 15 00 02 BD 17 15 00 02 BE 17 15 00 02 BF 17 15 00 02 C0 17 15 00 02 C1 17 15 00 02 C2 17 15 00 02 C3 17 15 00 02 C4 0F 15 00 02 C5 0E 15 00 02 C6 00 15 00 02 C7 01 15 00 02 C8 10 15 00 02 FE 00 15 00 02 C2 08 15 00 02 35 00 39 00 03 44 03 80 15 00 02 51 FF 05 78 01 11 05 64 01 29 ]; panel-exit-sequence = [ 05 00 01 28 05 00 01 10 ]; disp_timings0: display-timings { native-mode = <&dsi0_timing0>; dsi0_timing0: timing0 { clock-frequency = <135000000>; hactive = <1080>; vactive = <1920>; hback-porch = <36>; hfront-porch = <26>; vback-porch = <16>; vfront-porch = <8>; hsync-len = <2>; vsync-len = <4>; hsync-active = <0>; vsync-active = <0>; de-active = <0>; pixelclk-active = <0>; }; }; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; panel_in_dsi: endpoint { remote-endpoint = <&dsi_out_panel>; }; }; }; }; ports { #address-cells = <1>; #size-cells = <0>; port@1 { reg = <1>; dsi_out_panel: endpoint { remote-endpoint = <&panel_in_dsi>; }; }; }; }; &dsi0_in_vp3 { status = "okay"; }; &u2phy0 { status = "okay"; }; &u2phy1 { status = "disabled"; }; &u2phy2 { status = "disabled"; }; &u2phy3 { status = "disabled"; }; &u2phy0_otg { status = "okay"; rockchip,typec-vbus-det; }; &u2phy1_otg { status = "disabled"; }; &u2phy2_host { status = "disabled"; }; &u2phy3_host { status = "disabled"; }; &usb_host0_ehci { status = "okay"; }; &usb_host0_ohci { status = "okay"; }; &usb_host1_ehci { status = "disabled"; }; &usb_host1_ohci { status = "disabled"; }; &usbdp_phy0_dp { status = "okay"; }; &usbdp_phy0_u3 { status = "okay"; }; &usbdp_phy1 { status = "disabled"; }; &usbdp_phy1_dp { status = "disabled"; }; &usbdp_phy1_u3 { status = "disabled"; }; &usbdrd3_0 { status = "okay"; }; &usbhost3_0 { status = "disabled"; }; &usbhost_dwc3_0 { status = "disabled"; }; &usbdrd3_1 { status = "disabled"; }; &usbdrd_dwc3_1 { status = "disabled"; }; &hdmi0 { status = "okay"; }; &hdmi0_in_vp0 { status = "okay"; }; &hdptxphy_hdmi0 { status = "okay"; }; &spi0 { status = "okay"; pinctrl-0 = <&spi0usr_pins>; rgb@0 { compatible = "opsco,sk9822"; status = "okay"; reg = <0>; spi-max-frequency = <30000000>; #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; label = "led1"; }; }; }; &i2c3 { status = "okay"; clock-frequency = <400000>; focaltech@38 { status = "okay"; compatible = "focaltech,fts"; reg = <0x38>; interrupt-parent = <&gpio1>; interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&tp_gpio>; focaltech,irq-gpio = <&gpio1 RK_PD2 IRQ_TYPE_EDGE_FALLING>; focaltech,reset-gpio = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>; focaltech,max-touch-number = <6>; focaltech,display-coords = <0 0 1079 1919>; focaltech,touchscreen-inverted-x; focaltech,touchscreen-inverted-y; }; }; &i2c4 { status = "okay"; clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&i2c4m1_xfer>; lsm6ds3@6a { compatible = "st,lsm6ds3tr-c"; status = "okay"; reg = <0x6a>; interrupt-parent = <&gpio4>; interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&gyr_int_l>; vdd-supply = <&vcc_1v8_s0>; vddio-supply = <&vcc_1v8_s0>; st,drdy-int-pin = <1>; st,module_id = <5>; }; }; &i2c6 { status = "okay"; clock-frequency = <400000>; usbc0: fusb302@22 { compatible = "fcs,fusb302"; reg = <0x22>; interrupt-parent = <&gpio0>; interrupts = ; pinctrl-names = "default"; pinctrl-0 = <&usbc0_int>; vbus-supply = <&vbus5v0_typec>; charge-dev = <&bq25890>; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usbc0_role_sw: endpoint@0 { remote-endpoint = <&dwc3_0_role_switch>; }; }; }; usb_con: connector { compatible = "usb-c-connector"; label = "USB-C"; data-role = "dual"; power-role = "dual"; try-power-role = "sink"; op-sink-microwatt = <1000000>; sink-pdos = ; source-pdos = ; altmodes { #address-cells = <1>; #size-cells = <0>; altmode@0 { reg = <0>; svid = <0xff01>; vdo = <0xffffffff>; }; }; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usbc0_orien_sw: endpoint { remote-endpoint = <&usbdp_phy0_orientation_switch>; }; }; port@1 { reg = <1>; dp_altmode_mux: endpoint { remote-endpoint = <&usbdp_phy0_dp_altmode_mux>; }; }; }; }; }; hym8563: hym8563@51 { status = "okay"; compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; clock-frequency = <32768>; clock-output-names = "hym8563"; pinctrl-names = "default"; pinctrl-0 = <&hym8563_int>; interrupt-parent = <&gpio0>; interrupts = ; wakeup-source; }; cw2015@62 { status = "okay"; compatible = "cellwise,cw2015"; reg = <0x62>; cellwise,battery-profile = /bits/ 8 <0x18 0x0A 0x68 0x68 0x6B 0x6B 0x69 0x67 0x63 0x61 0x5E 0x61 0x5E 0x53 0x46 0x3F 0x36 0x30 0x29 0x26 0x2C 0x37 0x44 0x4E 0x1E 0x6F 0x0A 0x3E 0x18 0x31 0x52 0x60 0x6F 0x6E 0x6E 0x70 0x3E 0x1B 0x6E 0x5F 0x0B 0x2F 0x21 0x4F 0x89 0x92 0x96 0x1B 0x49 0x69 0x9D 0xBC 0x80 0x5C 0x7F 0xCB 0x2F 0x00 0x64 0xA5 0xB5 0xC1 0x46 0xAE>; cellwise,monitor-interval-ms = <5000>; power-supplies = <&bq25890>; }; bq25890: charger@6a { status = "okay"; compatible = "ti,bq25890"; reg = <0x6a>; pinctrl-names = "default"; pinctrl-0 = <&charger_ok>; interrupt-parent = <&gpio4>; interrupts = ; otg-mode-en-gpios = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>; ti,usb-charger-detection = <&usbc0>; ti,battery-regulation-voltage = <4400000>; /* 4.4V */ ti,charge-current = <5000000>; /* 5A */ ti,termination-current = <66000>; /* 66mA */ ti,precharge-current = <130000>; /* 130mA */ ti,minimum-sys-voltage = <3800000>; /* 3.8V */ ti,boost-voltage = <5000000>; /* 5V */ ti,boost-max-current = <2000000>; /* 2000mA */ regulators { vbus5v0_typec: vbus5v0-typec { regulator-compatible = "otg-vbus"; regulator-name = "vbus5v0_typec"; }; }; }; }; &uart2 { status = "disable"; }; &uart9 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&uart9m0_xfer &uart9m0_ctsn>; }; &i2c7 { status = "okay"; clock-frequency = <400000>; es8388: es8388@11 { status = "okay"; #sound-dai-cells = <0>; compatible = "everest,es8388", "everest,es8323"; reg = <0x11>; clocks = <&mclkout_i2s0>; clock-names = "mclk"; assigned-clocks = <&mclkout_i2s0>; assigned-clock-rates = <12288000>; pinctrl-names = "default"; pinctrl-0 = <&i2s0_mclk>; }; }; &pinctrl { headphone { hp_det: hp-det { rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; }; }; hym8563 { hym8563_int: hym8563-int { rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; }; }; charger { charger_ok: charger_ok { rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>; }; }; wireless-bluetooth { uart9_gpios: uart9-gpios { rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; }; bt_gpio: bt-gpio { rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>, <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>, <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>; }; }; sdio-pwrseq { wifi_enable_h: wifi-enable-h { rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; }; }; wireless-wlan { wifi_host_wake_irq: wifi-host-wake-irq { rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>; }; wifi_poweren_gpio: wifi-poweren-gpio { rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>; }; }; tp { tp_gpio: tp-gpio { rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>, <1 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; }; }; lcd { lcd_rst_gpio: lcd-rst-gpio { rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; }; }; spi0 { spi0usr_pins: spi0usr-pins { rockchip,pins = /* spi0_clk_m1 */ <4 RK_PA2 8 &pcfg_pull_up_drv_level_6>, /* spi0_mosi_m1 */ <4 RK_PA1 8 &pcfg_pull_up_drv_level_6>; }; }; usb-typec { usbc0_int: usbc0-int { rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; }; }; lsm6ds3 { gyr_int_l: gyr-int-l { rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; }; }; btns { btn_pins: btn-pins { rockchip,pins = <3 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_down>, <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>, <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; }; }; }; &pwm12 { status = "disabled"; pinctrl-names = "active"; pinctrl-0 = <&pwm12m1_pins>; }; &pwm14 { status = "okay"; pinctrl-names = "active"; pinctrl-0 = <&pwm14m1_pins>; }; &route_dsi0 { status = "okay"; logo,uboot = "logo.bmp"; logo,kernel = "logo_kernel.bmp"; logo,mode = "center"; logo,rotate = <90>; charge_logo,mode = "center"; connect = <&vp3_out_dsi0>; }; &route_dp0 { status = "okay"; logo,uboot = "logo.bmp"; logo,kernel = "logo_kernel.bmp"; logo,mode = "center"; logo,rotate = <90>; charge_logo,mode = "center"; connect = <&vp2_out_dp0>; }; &route_hdmi0 { status = "okay"; logo,uboot = "logo.bmp"; logo,kernel = "logo_kernel.bmp"; logo,mode = "center"; logo,rotate = <90>; charge_logo,mode = "center"; connect = <&vp0_out_hdmi0>; }; &sata0 { status = "disabled"; }; // emmc &sdhci { bus-width = <8>; no-sdio; no-sd; supports-sd; non-removable; max-frequency = <200000000>; mmc-hs400-1_8v; mmc-hs400-enhanced-strobe; status = "okay"; }; // WLAN &sdio { max-frequency = <150000000>; no-sd; no-mmc; bus-width = <4>; disable-wp; cap-sd-highspeed; cap-sdio-irq; keep-power-in-suspend; mmc-pwrseq = <&sdio_pwrseq>; non-removable; pinctrl-names = "default"; pinctrl-0 = <&sdiom0_pins>; sd-uhs-sdr104; status = "okay"; }; // SDCARD &sdmmc { max-frequency = <200000000>; no-sdio; no-mmc; bus-width = <4>; cap-mmc-highspeed; cap-sd-highspeed; disable-wp; sd-uhs-sdr104; supports-emmc; vmmc-supply = <&vcc_3v3_s3>; vqmmc-supply = <&vccio_sd_s0>; pinctrl-names = "default"; pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>; status = "okay"; }; // #USB3.1/DP PHY0 &usbdp_phy0 { status = "okay"; orientation-switch; svid = <0xff01>; sbu1-dc-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>; sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>; port { #address-cells = <1>; #size-cells = <0>; usbdp_phy0_orientation_switch: endpoint@0 { reg = <0>; remote-endpoint = <&usbc0_orien_sw>; }; usbdp_phy0_dp_altmode_mux: endpoint@1 { reg = <1>; remote-endpoint = <&dp_altmode_mux>; }; }; }; &usbdrd_dwc3_0 { status = "okay"; dr_mode = "otg"; usb-role-switch; port { #address-cells = <1>; #size-cells = <0>; dwc3_0_role_switch: endpoint@0 { reg = <0>; remote-endpoint = <&usbc0_role_sw>; }; }; }; &vdpu { status = "okay"; }; &vdpu_mmu { status = "okay"; }; &vepu { status = "okay"; }; &vop { status = "okay"; }; &vop_mmu { status = "okay"; }; /* vp0 & vp1 splice for 8K output */ &vp0 { rockchip,plane-mask = <(1 << ROCKCHIP_VOP2_CLUSTER0 | 1 << ROCKCHIP_VOP2_ESMART0)>; rockchip,primary-plane = ; }; &vp1 { rockchip,plane-mask = <(1 << ROCKCHIP_VOP2_CLUSTER1 | 1 << ROCKCHIP_VOP2_ESMART1)>; rockchip,primary-plane = ; }; &vp2 { rockchip,plane-mask = <(1 << ROCKCHIP_VOP2_CLUSTER2 | 1 << ROCKCHIP_VOP2_ESMART2)>; rockchip,primary-plane = ; }; &vp3 { rockchip,plane-mask = <(1 << ROCKCHIP_VOP2_CLUSTER3 | 1 << ROCKCHIP_VOP2_ESMART3)>; rockchip,primary-plane = ; }; &display_subsystem { clocks = <&hdptxphy_hdmi_clk0>; clock-names = "hdmi0_phy_pll"; }; &hdptxphy_hdmi_clk0 { status = "okay"; }; &wdt { status = "okay"; };