]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
ARM: dts: rockchip: rk3588-rock-5b-u-boot: add USB3 support
authorEugen Hristev <eugen.hristev@collabora.com>
Mon, 29 May 2023 10:01:35 +0000 (13:01 +0300)
committerKever Yang <kever.yang@rock-chips.com>
Fri, 28 Jul 2023 10:45:02 +0000 (18:45 +0800)
Enable the USB3.0 host node, and gadget node.
The gadget is available through the USB type C connector on the board.
The connector is tied to a Fairchild fusb302b device, which currently
does not have a driver in U-boot, but the node is here for correct
description of the board + Linux future compatibility.
It will be easier to move the node as-is when it will be available
in the DT from Linux

Signed-off-by: Eugen Hristev <eugen.hristev@collabora.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/dts/rk3588-rock-5b-u-boot.dtsi

index 1cd8a57a6fa603ecb7c4aac944af8c544a478565..5a3292699640ad308baa6bafb36923b78feda67c 100644 (file)
@@ -7,6 +7,7 @@
 #include <dt-bindings/pinctrl/rockchip.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/usb/pd.h>
 
 / {
        aliases {
                u-boot,spl-boot-order = "same-as-spl", &sdmmc, &sdhci;
        };
 
+       vcc12v_dcin: vcc12v-dcin-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc12v_dcin";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       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_host: vcc5v0-host-regulator {
                compatible = "regulator-fixed";
                regulator-name = "vcc5v0_host";
                pinctrl-0 = <&vcc5v0_host_en>;
                vin-supply = <&vcc5v0_sys>;
        };
+
+       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>;
+       };
+
+       vbus5v0_typec: vbus5v0-typec {
+               compatible = "regulator-fixed";
+               regulator-name = "vbus5v0_typec";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&gpio2 RK_PB6 GPIO_ACTIVE_HIGH>;
+               vin-supply = <&vcc5v0_usb>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&typec5v_pwren>;
+       };
 };
 
 &combphy0_ps {
                        rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
+
+       usb-typec {
+               usbc0_int: usbc0-int {
+                       rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               typec5v_pwren: typec5v-pwren {
+                       rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
 };
 
 &pcfg_pull_none {
        status = "okay";
 };
 
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       rockchip,typec-vbus-det;
+       status = "okay";
+};
+
 &u2phy2 {
        resets = <&cru SRST_OTGPHY_U2_0>, <&cru SRST_P_USB2PHY_U2_0_GRF0>;
        reset-names = "phy", "apb";
        status = "okay";
 };
 
+&usbdp_phy0 {
+       orientation-switch;
+       svid = <0xff01>;
+       sbu1-dc-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
+       sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+
+       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>;
+               };
+       };
+};
+
+&usbdp_phy0_u3 {
+       status = "okay";
+};
+
+&usbdrd3_0 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+       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>;
+               };
+       };
+};
+
+&usbdp_phy1 {
+       rockchip,dp-lane-mux = <2 3>;
+       status = "okay";
+};
+
+&usbdp_phy1_u3 {
+       status = "okay";
+};
+
+&usbdrd3_1 {
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       status = "okay";
+};
+
+&i2c4 {
+       pinctrl-0 = <&i2c4m1_xfer>;
+       status = "okay";
+
+       usbc0: fusb302@22 {
+               compatible = "fcs,fusb302";
+               reg = <0x22>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <RK_PB4 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usbc0_int>;
+               vbus-supply = <&vbus5v0_typec>;
+               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 =
+                               <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
+                       source-pdos =
+                               <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+
+                       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>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+