From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Christian Hewitt Date: Tue, 17 Aug 2021 16:16:43 +0000 Subject: arm64: dts: meson: radxa-zero: add support for the usb type-c controller Radxa Zero uses an FUSB302 type-c controller, so lets enable it. NB: Polarity swapping via GPIO is not implemented in the current driver (see drivers/usb/typec/tcpm/fusb302.c) so it is not possible to handle GPIOAO_6 for USB3 polarity control. Includes: - arm64: dts: amlogic: fix interrupt storm from fusb302 on Radxa Zero it makes load average >1. use correct pin for interrupt from fusb302. Signed-off-by: FUKAUMI Naoki Suggested-by: Neil Armstrong Signed-off-by: Christian Hewitt Signed-off-by: Yuntian Zhang --- arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts | 48 ++++++++++ 1 file changed, 48 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts index e3bb6df42ff3..28eaaa83a00e 100644 --- a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts +++ b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts @@ -60,6 +60,14 @@ sdio_pwrseq: sdio-pwrseq { clock-names = "ext_clock"; }; + typec2_vbus: regulator-typec2_vbus { + compatible = "regulator-fixed"; + regulator-name = "TYPEC2_VBUS"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&ao_5v>; + }; + ao_5v: regulator-ao_5v { compatible = "regulator-fixed"; regulator-name = "AO_5V"; @@ -191,6 +199,18 @@ wifi32k: wifi32k { }; }; +&ao_pinctrl { + /* Ensure the TYPE C controller irq pin is not driven by the SoC */ + fusb302_irq_pins: fusb302_irq { + mux { + groups = "GPIOAO_5"; + function = "gpio_aobus"; + bias-pull-up; + output-disable; + }; + }; +}; + &arb { status = "okay"; }; @@ -278,6 +298,26 @@ &ir { pinctrl-names = "default"; }; +&i2c3 { + pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; + pinctrl-names = "default"; + status = "okay"; + + fusb302@22 { + compatible = "fcs,fusb302"; + reg = <0x22>; + + pinctrl-0 = <&fusb302_irq_pins>; + pinctrl-names = "default"; + interrupt-parent = <&gpio_intc>; + interrupts = <5 IRQ_TYPE_LEVEL_LOW>; + + vbus-supply = <&typec2_vbus>; + + status = "okay"; + }; +}; + &pwm_AO_cd { pinctrl-0 = <&pwm_ao_d_e_pins>; pinctrl-names = "default"; @@ -403,3 +443,11 @@ &usb { status = "okay"; dr_mode = "host"; }; + +&usb2_phy0 { + phy-supply = <&typec2_vbus>; +}; + +&usb3_pcie_phy { + phy-supply = <&typec2_vbus>; +}; -- Armbian