mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
ed2c66a95c
The micro USB3.0 port available on the Haikou evaluation kit for Puma RK3399-Q7 SoM supports dual-role model (aka drd or OTG) but its support was broken until now because of missing logic around the ID pin. This adds proper support for USB OTG on Puma Haikou by "connecting" the GPIO used for USB ID to the USB3 controller device. Cc: Quentin Schulz <foss+kernel@0leil.net> Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com> Link: https://lore.kernel.org/r/20220120125156.16217-1-quentin.schulz@theobroma-systems.com Signed-off-by: Heiko Stuebner <heiko@sntech.de>
276 lines
4.8 KiB
Text
276 lines
4.8 KiB
Text
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
/*
|
|
* Copyright (c) 2017 Theobroma Systems Design und Consulting GmbH
|
|
*/
|
|
|
|
/dts-v1/;
|
|
#include "rk3399-puma.dtsi"
|
|
|
|
/ {
|
|
model = "Theobroma Systems RK3399-Q7 SoM";
|
|
compatible = "tsd,rk3399-puma-haikou", "rockchip,rk3399";
|
|
|
|
aliases {
|
|
mmc1 = &sdmmc;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0:115200n8";
|
|
};
|
|
|
|
leds {
|
|
pinctrl-0 = <&module_led_pin>, <&sd_card_led_pin>;
|
|
|
|
sd_card_led: led-1 {
|
|
label = "sd_card_led";
|
|
gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
linux,default-trigger = "mmc0";
|
|
};
|
|
};
|
|
|
|
i2s0-sound {
|
|
compatible = "simple-audio-card";
|
|
simple-audio-card,format = "i2s";
|
|
simple-audio-card,name = "Haikou,I2S-codec";
|
|
simple-audio-card,mclk-fs = <512>;
|
|
|
|
simple-audio-card,codec {
|
|
clocks = <&sgtl5000_clk>;
|
|
sound-dai = <&sgtl5000>;
|
|
};
|
|
|
|
simple-audio-card,cpu {
|
|
bitclock-master;
|
|
frame-master;
|
|
sound-dai = <&i2s0>;
|
|
};
|
|
};
|
|
|
|
sgtl5000_clk: sgtl5000-oscillator {
|
|
compatible = "fixed-clock";
|
|
#clock-cells = <0>;
|
|
clock-frequency = <24576000>;
|
|
};
|
|
|
|
dc_12v: dc-12v {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "dc_12v";
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
regulator-min-microvolt = <12000000>;
|
|
regulator-max-microvolt = <12000000>;
|
|
};
|
|
|
|
vcc3v3_baseboard: vcc3v3-baseboard {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vcc3v3_baseboard";
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
vin-supply = <&dc_12v>;
|
|
};
|
|
|
|
vcc5v0_baseboard: vcc5v0-baseboard {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vcc5v0_baseboard";
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
vin-supply = <&dc_12v>;
|
|
};
|
|
|
|
vcc5v0_otg: vcc5v0-otg-regulator {
|
|
compatible = "regulator-fixed";
|
|
enable-active-high;
|
|
gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&otg_vbus_drv>;
|
|
regulator-name = "vcc5v0_otg";
|
|
regulator-always-on;
|
|
};
|
|
|
|
vdda_codec: vdda-codec {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vdda_codec";
|
|
regulator-boot-on;
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
vin-supply = <&vcc5v0_baseboard>;
|
|
};
|
|
|
|
vddd_codec: vddd-codec {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vddd_codec";
|
|
regulator-boot-on;
|
|
regulator-min-microvolt = <1600000>;
|
|
regulator-max-microvolt = <1600000>;
|
|
vin-supply = <&vcc5v0_baseboard>;
|
|
};
|
|
};
|
|
|
|
&hdmi {
|
|
ddc-i2c-bus = <&i2c3>;
|
|
status = "okay";
|
|
};
|
|
|
|
&i2c1 {
|
|
status = "okay";
|
|
clock-frequency = <400000>;
|
|
};
|
|
|
|
&i2c2 {
|
|
status = "okay";
|
|
clock-frequency = <400000>;
|
|
};
|
|
|
|
&i2c3 {
|
|
i2c-scl-rising-time-ns = <450>;
|
|
i2c-scl-falling-time-ns = <15>;
|
|
status = "okay";
|
|
};
|
|
|
|
&i2c4 {
|
|
status = "okay";
|
|
clock-frequency = <400000>;
|
|
|
|
sgtl5000: codec@a {
|
|
compatible = "fsl,sgtl5000";
|
|
reg = <0x0a>;
|
|
clocks = <&sgtl5000_clk>;
|
|
#sound-dai-cells = <0>;
|
|
VDDA-supply = <&vdda_codec>;
|
|
VDDIO-supply = <&vdda_codec>;
|
|
VDDD-supply = <&vddd_codec>;
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
&i2c6 {
|
|
status = "okay";
|
|
clock-frequency = <400000>;
|
|
};
|
|
|
|
&pcie_phy {
|
|
status = "okay";
|
|
};
|
|
|
|
&pcie0 {
|
|
ep-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
|
|
num-lanes = <4>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pcie_clkreqn_cpm>;
|
|
status = "okay";
|
|
};
|
|
|
|
&pinctrl {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&haikou_pin_hog>;
|
|
|
|
hog {
|
|
haikou_pin_hog: haikou-pin-hog {
|
|
rockchip,pins =
|
|
/* LID_BTN */
|
|
<0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
|
|
/* BATLOW# */
|
|
<0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>,
|
|
/* SLP_BTN# */
|
|
<0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>,
|
|
/* BIOS_DISABLE# */
|
|
<0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
};
|
|
};
|
|
|
|
leds {
|
|
sd_card_led_pin: sd-card-led-pin {
|
|
rockchip,pins =
|
|
<1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
};
|
|
};
|
|
|
|
usb2 {
|
|
otg_vbus_drv: otg-vbus-drv {
|
|
rockchip,pins =
|
|
<0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&pwm0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&sdmmc {
|
|
bus-width = <4>;
|
|
cap-mmc-highspeed;
|
|
cap-sd-highspeed;
|
|
cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
|
|
disable-wp;
|
|
max-frequency = <150000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
|
vmmc-supply = <&vcc3v3_baseboard>;
|
|
status = "okay";
|
|
};
|
|
|
|
&spi5 {
|
|
status = "okay";
|
|
};
|
|
|
|
&tcphy0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&u2phy0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usbdrd3_0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usbdrd_dwc3_0 {
|
|
dr_mode = "otg";
|
|
extcon = <&extcon_usb3>;
|
|
status = "okay";
|
|
};
|
|
|
|
&u2phy0_host {
|
|
phy-supply = <&vcc5v0_otg>;
|
|
status = "okay";
|
|
};
|
|
|
|
&uart0 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
|
|
status = "okay";
|
|
};
|
|
|
|
&uart2 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb_host0_ehci {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb_host0_ohci {
|
|
status = "okay";
|
|
};
|
|
|
|
&vopb {
|
|
status = "okay";
|
|
};
|
|
|
|
&vopb_mmu {
|
|
status = "okay";
|
|
};
|
|
|
|
&vopl {
|
|
status = "okay";
|
|
};
|
|
|
|
&vopl_mmu {
|
|
status = "okay";
|
|
};
|