101950c46SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 201950c46SEmmanuel Vadot/* 301950c46SEmmanuel Vadot * Copyright (c) 2023 Theobroma Systems Design und Consulting GmbH 401950c46SEmmanuel Vadot */ 501950c46SEmmanuel Vadot 601950c46SEmmanuel Vadot/dts-v1/; 701950c46SEmmanuel Vadot#include <dt-bindings/input/input.h> 801950c46SEmmanuel Vadot#include "rk3588-tiger.dtsi" 901950c46SEmmanuel Vadot 1001950c46SEmmanuel Vadot/ { 1101950c46SEmmanuel Vadot model = "Theobroma Systems RK3588-Q7 SoM on Haikou devkit"; 1201950c46SEmmanuel Vadot compatible = "tsd,rk3588-tiger-haikou", "tsd,rk3588-tiger", "rockchip,rk3588"; 1301950c46SEmmanuel Vadot 1401950c46SEmmanuel Vadot aliases { 1501950c46SEmmanuel Vadot ethernet0 = &gmac0; 1601950c46SEmmanuel Vadot mmc1 = &sdmmc; 1701950c46SEmmanuel Vadot }; 1801950c46SEmmanuel Vadot 1901950c46SEmmanuel Vadot chosen { 2001950c46SEmmanuel Vadot stdout-path = "serial2:115200n8"; 2101950c46SEmmanuel Vadot }; 2201950c46SEmmanuel Vadot 2301950c46SEmmanuel Vadot dc_12v: dc-12v-regulator { 2401950c46SEmmanuel Vadot compatible = "regulator-fixed"; 2501950c46SEmmanuel Vadot regulator-name = "dc_12v"; 2601950c46SEmmanuel Vadot regulator-always-on; 2701950c46SEmmanuel Vadot regulator-boot-on; 2801950c46SEmmanuel Vadot regulator-min-microvolt = <12000000>; 2901950c46SEmmanuel Vadot regulator-max-microvolt = <12000000>; 3001950c46SEmmanuel Vadot }; 3101950c46SEmmanuel Vadot 3201950c46SEmmanuel Vadot gpio-keys { 3301950c46SEmmanuel Vadot compatible = "gpio-keys"; 3401950c46SEmmanuel Vadot pinctrl-names = "default"; 3501950c46SEmmanuel Vadot pinctrl-0 = <&haikou_keys_pin>; 3601950c46SEmmanuel Vadot 3701950c46SEmmanuel Vadot button-batlow-n { 3801950c46SEmmanuel Vadot label = "BATLOW#"; 3901950c46SEmmanuel Vadot linux,code = <KEY_BATTERY>; 4001950c46SEmmanuel Vadot gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>; 4101950c46SEmmanuel Vadot }; 4201950c46SEmmanuel Vadot 4301950c46SEmmanuel Vadot button-slp-btn-n { 4401950c46SEmmanuel Vadot label = "SLP_BTN#"; 4501950c46SEmmanuel Vadot linux,code = <KEY_SLEEP>; 4601950c46SEmmanuel Vadot gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>; 4701950c46SEmmanuel Vadot }; 4801950c46SEmmanuel Vadot 4901950c46SEmmanuel Vadot button-wake-n { 5001950c46SEmmanuel Vadot label = "WAKE#"; 5101950c46SEmmanuel Vadot linux,code = <KEY_WAKEUP>; 5201950c46SEmmanuel Vadot gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>; 5301950c46SEmmanuel Vadot wakeup-source; 5401950c46SEmmanuel Vadot }; 5501950c46SEmmanuel Vadot 5601950c46SEmmanuel Vadot switch-lid-btn-n { 5701950c46SEmmanuel Vadot label = "LID_BTN#"; 5801950c46SEmmanuel Vadot linux,code = <SW_LID>; 5901950c46SEmmanuel Vadot linux,input-type = <EV_SW>; 6001950c46SEmmanuel Vadot gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>; 6101950c46SEmmanuel Vadot }; 6201950c46SEmmanuel Vadot }; 6301950c46SEmmanuel Vadot 6401950c46SEmmanuel Vadot i2s3-sound { 6501950c46SEmmanuel Vadot compatible = "simple-audio-card"; 6601950c46SEmmanuel Vadot simple-audio-card,format = "i2s"; 6701950c46SEmmanuel Vadot simple-audio-card,name = "Haikou,I2S-codec"; 6801950c46SEmmanuel Vadot simple-audio-card,mclk-fs = <512>; 6901950c46SEmmanuel Vadot simple-audio-card,frame-master = <&sgtl5000_codec>; 7001950c46SEmmanuel Vadot simple-audio-card,bitclock-master = <&sgtl5000_codec>; 7101950c46SEmmanuel Vadot 7201950c46SEmmanuel Vadot sgtl5000_codec: simple-audio-card,codec { 7301950c46SEmmanuel Vadot sound-dai = <&sgtl5000>; 7401950c46SEmmanuel Vadot }; 7501950c46SEmmanuel Vadot 7601950c46SEmmanuel Vadot simple-audio-card,cpu { 7701950c46SEmmanuel Vadot sound-dai = <&i2s3_2ch>; 7801950c46SEmmanuel Vadot }; 7901950c46SEmmanuel Vadot }; 8001950c46SEmmanuel Vadot 8101950c46SEmmanuel Vadot sgtl5000_clk: sgtl5000-oscillator { 8201950c46SEmmanuel Vadot compatible = "fixed-clock"; 8301950c46SEmmanuel Vadot #clock-cells = <0>; 8401950c46SEmmanuel Vadot clock-frequency = <24576000>; 8501950c46SEmmanuel Vadot }; 8601950c46SEmmanuel Vadot 8701950c46SEmmanuel Vadot vcc3v3_baseboard: vcc3v3-baseboard-regulator { 8801950c46SEmmanuel Vadot compatible = "regulator-fixed"; 8901950c46SEmmanuel Vadot regulator-name = "vcc3v3_baseboard"; 9001950c46SEmmanuel Vadot regulator-always-on; 9101950c46SEmmanuel Vadot regulator-boot-on; 9201950c46SEmmanuel Vadot regulator-min-microvolt = <3300000>; 9301950c46SEmmanuel Vadot regulator-max-microvolt = <3300000>; 9401950c46SEmmanuel Vadot vin-supply = <&dc_12v>; 9501950c46SEmmanuel Vadot }; 9601950c46SEmmanuel Vadot 9701950c46SEmmanuel Vadot vcc3v3_low_noise: vcc3v3-low-noise-regulator { 9801950c46SEmmanuel Vadot compatible = "regulator-fixed"; 9901950c46SEmmanuel Vadot regulator-name = "vcc3v3_low_noise"; 10001950c46SEmmanuel Vadot regulator-boot-on; 10101950c46SEmmanuel Vadot regulator-min-microvolt = <3300000>; 10201950c46SEmmanuel Vadot regulator-max-microvolt = <3300000>; 10301950c46SEmmanuel Vadot vin-supply = <&vcc5v0_usb>; 10401950c46SEmmanuel Vadot }; 10501950c46SEmmanuel Vadot 10601950c46SEmmanuel Vadot vcc5v0_baseboard: vcc5v0-baseboard-regulator { 10701950c46SEmmanuel Vadot compatible = "regulator-fixed"; 10801950c46SEmmanuel Vadot regulator-name = "vcc5v0_baseboard"; 10901950c46SEmmanuel Vadot regulator-always-on; 11001950c46SEmmanuel Vadot regulator-boot-on; 11101950c46SEmmanuel Vadot regulator-min-microvolt = <5000000>; 11201950c46SEmmanuel Vadot regulator-max-microvolt = <5000000>; 11301950c46SEmmanuel Vadot vin-supply = <&dc_12v>; 11401950c46SEmmanuel Vadot }; 11501950c46SEmmanuel Vadot 116*7d0873ebSEmmanuel Vadot vcc5v0_otg: vcc5v0-otg-regulator { 117*7d0873ebSEmmanuel Vadot compatible = "regulator-fixed"; 118*7d0873ebSEmmanuel Vadot enable-active-high; 119*7d0873ebSEmmanuel Vadot gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; 120*7d0873ebSEmmanuel Vadot pinctrl-names = "default"; 121*7d0873ebSEmmanuel Vadot pinctrl-0 = <&otg_vbus_drv>; 122*7d0873ebSEmmanuel Vadot regulator-name = "vcc5v0_otg"; 123*7d0873ebSEmmanuel Vadot regulator-always-on; 124*7d0873ebSEmmanuel Vadot }; 125*7d0873ebSEmmanuel Vadot 12601950c46SEmmanuel Vadot vcc5v0_usb: vcc5v0-usb-regulator { 12701950c46SEmmanuel Vadot compatible = "regulator-fixed"; 12801950c46SEmmanuel Vadot regulator-name = "vcc5v0_usb"; 12901950c46SEmmanuel Vadot regulator-always-on; 13001950c46SEmmanuel Vadot regulator-boot-on; 13101950c46SEmmanuel Vadot regulator-min-microvolt = <5000000>; 13201950c46SEmmanuel Vadot regulator-max-microvolt = <5000000>; 13301950c46SEmmanuel Vadot vin-supply = <&dc_12v>; 13401950c46SEmmanuel Vadot }; 13501950c46SEmmanuel Vadot 13601950c46SEmmanuel Vadot vddd_audio_1v6: vddd-audio-1v6-regulator { 13701950c46SEmmanuel Vadot compatible = "regulator-fixed"; 13801950c46SEmmanuel Vadot regulator-name = "vddd_audio_1v6"; 13901950c46SEmmanuel Vadot regulator-boot-on; 14001950c46SEmmanuel Vadot regulator-min-microvolt = <1600000>; 14101950c46SEmmanuel Vadot regulator-max-microvolt = <1600000>; 14201950c46SEmmanuel Vadot vin-supply = <&vcc5v0_usb>; 14301950c46SEmmanuel Vadot }; 14401950c46SEmmanuel Vadot}; 14501950c46SEmmanuel Vadot 14601950c46SEmmanuel Vadot&combphy2_psu { 14701950c46SEmmanuel Vadot status = "okay"; 14801950c46SEmmanuel Vadot}; 14901950c46SEmmanuel Vadot 150*7d0873ebSEmmanuel Vadot&extcon_usb3 { 151*7d0873ebSEmmanuel Vadot status = "okay"; 152*7d0873ebSEmmanuel Vadot}; 153*7d0873ebSEmmanuel Vadot 15401950c46SEmmanuel Vadot&gmac0 { 15501950c46SEmmanuel Vadot status = "okay"; 15601950c46SEmmanuel Vadot}; 15701950c46SEmmanuel Vadot 15801950c46SEmmanuel Vadot&i2c1 { 15901950c46SEmmanuel Vadot status = "okay"; 16001950c46SEmmanuel Vadot 16101950c46SEmmanuel Vadot eeprom@50 { 16201950c46SEmmanuel Vadot reg = <0x50>; 16301950c46SEmmanuel Vadot compatible = "atmel,24c01"; 16401950c46SEmmanuel Vadot pagesize = <8>; 16501950c46SEmmanuel Vadot size = <128>; 16601950c46SEmmanuel Vadot vcc-supply = <&vcc3v3_baseboard>; 16701950c46SEmmanuel Vadot }; 16801950c46SEmmanuel Vadot}; 16901950c46SEmmanuel Vadot 17001950c46SEmmanuel Vadot&i2c5 { 17101950c46SEmmanuel Vadot clock-frequency = <400000>; 17201950c46SEmmanuel Vadot status = "okay"; 17301950c46SEmmanuel Vadot 17401950c46SEmmanuel Vadot sgtl5000: codec@a { 17501950c46SEmmanuel Vadot compatible = "fsl,sgtl5000"; 17601950c46SEmmanuel Vadot reg = <0x0a>; 17701950c46SEmmanuel Vadot clocks = <&sgtl5000_clk>; 17801950c46SEmmanuel Vadot #sound-dai-cells = <0>; 17901950c46SEmmanuel Vadot VDDA-supply = <&vcc3v3_low_noise>; 18001950c46SEmmanuel Vadot VDDIO-supply = <&vcc3v3_baseboard>; 18101950c46SEmmanuel Vadot VDDD-supply = <&vddd_audio_1v6>; 18201950c46SEmmanuel Vadot }; 18301950c46SEmmanuel Vadot}; 18401950c46SEmmanuel Vadot 18501950c46SEmmanuel Vadot&i2c8 { 18601950c46SEmmanuel Vadot status = "okay"; 18701950c46SEmmanuel Vadot}; 18801950c46SEmmanuel Vadot 18901950c46SEmmanuel Vadot&i2s3_2ch { 19001950c46SEmmanuel Vadot status = "okay"; 19101950c46SEmmanuel Vadot}; 19201950c46SEmmanuel Vadot 19301950c46SEmmanuel Vadot&pcie30phy { 19401950c46SEmmanuel Vadot status = "okay"; 19501950c46SEmmanuel Vadot}; 19601950c46SEmmanuel Vadot 19701950c46SEmmanuel Vadot&pcie3x4 { 19801950c46SEmmanuel Vadot vpcie3v3-supply = <&vcc3v3_baseboard>; 19901950c46SEmmanuel Vadot status = "okay"; 20001950c46SEmmanuel Vadot}; 20101950c46SEmmanuel Vadot 20201950c46SEmmanuel Vadot&pinctrl { 20301950c46SEmmanuel Vadot haikou { 20401950c46SEmmanuel Vadot haikou_keys_pin: haikou-keys-pin { 20501950c46SEmmanuel Vadot rockchip,pins = 20601950c46SEmmanuel Vadot /* BATLOW# */ 20701950c46SEmmanuel Vadot <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, 20801950c46SEmmanuel Vadot /* SLP_BTN# */ 20901950c46SEmmanuel Vadot <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, 21001950c46SEmmanuel Vadot /* WAKE# */ 21101950c46SEmmanuel Vadot <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>, 21201950c46SEmmanuel Vadot /* LID_BTN */ 21301950c46SEmmanuel Vadot <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>; 21401950c46SEmmanuel Vadot }; 21501950c46SEmmanuel Vadot }; 216*7d0873ebSEmmanuel Vadot 217*7d0873ebSEmmanuel Vadot usb2 { 218*7d0873ebSEmmanuel Vadot otg_vbus_drv: otg-vbus-drv { 219*7d0873ebSEmmanuel Vadot rockchip,pins = 220*7d0873ebSEmmanuel Vadot <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; 221*7d0873ebSEmmanuel Vadot }; 222*7d0873ebSEmmanuel Vadot }; 22301950c46SEmmanuel Vadot}; 22401950c46SEmmanuel Vadot 22501950c46SEmmanuel Vadot&sdmmc { 22601950c46SEmmanuel Vadot /* while the same pin, sdmmc_det does not detect card changes */ 22701950c46SEmmanuel Vadot cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>; 22801950c46SEmmanuel Vadot disable-wp; 22901950c46SEmmanuel Vadot pinctrl-0 = <&sdmmc_bus4 &sdmmc_cmd &sdmmc_clk>; 23001950c46SEmmanuel Vadot sd-uhs-sdr12; 23101950c46SEmmanuel Vadot sd-uhs-sdr25; 23201950c46SEmmanuel Vadot sd-uhs-sdr50; 23301950c46SEmmanuel Vadot sd-uhs-sdr104; 23401950c46SEmmanuel Vadot vmmc-supply = <&vcc3v3_baseboard>; 23501950c46SEmmanuel Vadot status = "okay"; 23601950c46SEmmanuel Vadot}; 23701950c46SEmmanuel Vadot 238*7d0873ebSEmmanuel Vadot&u2phy0 { 239*7d0873ebSEmmanuel Vadot status = "okay"; 240*7d0873ebSEmmanuel Vadot}; 241*7d0873ebSEmmanuel Vadot 242*7d0873ebSEmmanuel Vadot&u2phy0_otg { 243*7d0873ebSEmmanuel Vadot phy-supply = <&vcc5v0_otg>; 244*7d0873ebSEmmanuel Vadot status = "okay"; 245*7d0873ebSEmmanuel Vadot}; 246*7d0873ebSEmmanuel Vadot 247*7d0873ebSEmmanuel Vadot&u2phy1 { 248*7d0873ebSEmmanuel Vadot status = "okay"; 249*7d0873ebSEmmanuel Vadot}; 250*7d0873ebSEmmanuel Vadot 251*7d0873ebSEmmanuel Vadot&u2phy1_otg { 252*7d0873ebSEmmanuel Vadot status = "okay"; 253*7d0873ebSEmmanuel Vadot}; 254*7d0873ebSEmmanuel Vadot 25501950c46SEmmanuel Vadot&u2phy2 { 25601950c46SEmmanuel Vadot status = "okay"; 25701950c46SEmmanuel Vadot}; 25801950c46SEmmanuel Vadot 25901950c46SEmmanuel Vadot&u2phy2_host { 26001950c46SEmmanuel Vadot status = "okay"; 26101950c46SEmmanuel Vadot}; 26201950c46SEmmanuel Vadot 26301950c46SEmmanuel Vadot&u2phy3 { 26401950c46SEmmanuel Vadot status = "okay"; 26501950c46SEmmanuel Vadot}; 26601950c46SEmmanuel Vadot 26701950c46SEmmanuel Vadot&u2phy3_host { 26801950c46SEmmanuel Vadot status = "okay"; 26901950c46SEmmanuel Vadot}; 27001950c46SEmmanuel Vadot 27101950c46SEmmanuel Vadot&uart2 { 27201950c46SEmmanuel Vadot status = "okay"; 27301950c46SEmmanuel Vadot}; 27401950c46SEmmanuel Vadot 27501950c46SEmmanuel Vadot&uart5 { 27601950c46SEmmanuel Vadot rts-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>; 277*7d0873ebSEmmanuel Vadot}; 278*7d0873ebSEmmanuel Vadot 279*7d0873ebSEmmanuel Vadot&usbdp_phy0 { 28001950c46SEmmanuel Vadot status = "okay"; 28101950c46SEmmanuel Vadot}; 28201950c46SEmmanuel Vadot 283*7d0873ebSEmmanuel Vadot&usbdp_phy1 { 284*7d0873ebSEmmanuel Vadot status = "okay"; 285*7d0873ebSEmmanuel Vadot}; 286*7d0873ebSEmmanuel Vadot 287*7d0873ebSEmmanuel Vadot/* host0 on Q7_USB_P2, upper usb3 port */ 28801950c46SEmmanuel Vadot&usb_host0_ehci { 28901950c46SEmmanuel Vadot status = "okay"; 29001950c46SEmmanuel Vadot}; 29101950c46SEmmanuel Vadot 292*7d0873ebSEmmanuel Vadot/* host0 on Q7_USB_P2, upper usb3 port */ 29301950c46SEmmanuel Vadot&usb_host0_ohci { 29401950c46SEmmanuel Vadot status = "okay"; 29501950c46SEmmanuel Vadot}; 29601950c46SEmmanuel Vadot 297*7d0873ebSEmmanuel Vadot/* host0_xhci on Q7_USB_P1, usb3-otg port */ 298*7d0873ebSEmmanuel Vadot&usb_host0_xhci { 299*7d0873ebSEmmanuel Vadot dr_mode = "otg"; 300*7d0873ebSEmmanuel Vadot extcon = <&extcon_usb3>; 301*7d0873ebSEmmanuel Vadot status = "okay"; 302*7d0873ebSEmmanuel Vadot}; 303*7d0873ebSEmmanuel Vadot 30401950c46SEmmanuel Vadot/* host1 on Q7_USB_P3, usb2 port */ 30501950c46SEmmanuel Vadot&usb_host1_ehci { 30601950c46SEmmanuel Vadot status = "okay"; 30701950c46SEmmanuel Vadot}; 30801950c46SEmmanuel Vadot 30901950c46SEmmanuel Vadot/* host1 on Q7_USB_P3, usb2 port */ 31001950c46SEmmanuel Vadot&usb_host1_ohci { 31101950c46SEmmanuel Vadot status = "okay"; 31201950c46SEmmanuel Vadot}; 31301950c46SEmmanuel Vadot 314*7d0873ebSEmmanuel Vadot/* host1_xhci on Q7_USB_P0, lower usb3 port */ 315*7d0873ebSEmmanuel Vadot&usb_host1_xhci { 316*7d0873ebSEmmanuel Vadot dr_mode = "host"; 317*7d0873ebSEmmanuel Vadot status = "okay"; 318*7d0873ebSEmmanuel Vadot}; 319*7d0873ebSEmmanuel Vadot 320*7d0873ebSEmmanuel Vadot/* host2 on Q7_USB_P2, upper usb3 port */ 32101950c46SEmmanuel Vadot&usb_host2_xhci { 32201950c46SEmmanuel Vadot status = "okay"; 32301950c46SEmmanuel Vadot}; 324