Hi Jonas,

On Tue, 2023-10-10 at 22:23 +0000, Jonas Karlman wrote:
> The device tree for rk3588 and rock-5b contain usb3 nodes that have
> deviated too much from current state of submitted mainline linux usb3
> patches, see [1].
> 
> Sync usb3 related nodes from latest patches and collaboras rk3588 tree
> so that dwc3-generic driver can be updated to include support for the
> rockchip,rk3588-dwc3 compatible.
> 
> [1] 
> https://lore.kernel.org/lkml/20231009172129.43568-1-sebastian.reic...@collabora.com/
> 
> Signed-off-by: Jonas Karlman <jo...@kwiboo.se>

These will be upstream shortly. Maybe we can wait until they appear in Heiko's 
tree?

> ---
> Cc: Sebastian Reichel <sebastian.reic...@collabora.com>
> ---
>  arch/arm/dts/rk3588-rock-5b-u-boot.dtsi | 148 +++++++-----------------
>  arch/arm/dts/rk3588-u-boot.dtsi         |  39 +++----
>  arch/arm/dts/rk3588s-u-boot.dtsi        |  68 ++++++-----
>  configs/rock5b-rk3588_defconfig         |   1 -
>  4 files changed, 99 insertions(+), 157 deletions(-)
> 
> diff --git a/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi 
> b/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi
> index 3f390ef26a3f..b595ddef7028 100644
> --- a/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi
> +++ b/arch/arm/dts/rk3588-rock-5b-u-boot.dtsi
> @@ -19,38 +19,10 @@
>               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_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>;
> -     };
> +&combphy2_psu {
> +     status = "okay";
>  };
>  
>  &fspim2_pins {
> @@ -58,13 +30,9 @@
>  };
>  
>  &pinctrl {
> -     usb-typec {
> +     usb {
>               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>;
> +                     rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
>               };
>       };
>  };
> @@ -97,7 +65,6 @@
>  };
>  
>  &u2phy0_otg {
> -     rockchip,typec-vbus-det;
>       status = "okay";
>  };
>  
> @@ -109,25 +76,17 @@
>       status = "okay";
>  };
>  
> -&usb2phy2_grf {
> +&usbdp_phy1 {
>       status = "okay";
>  };
>  
> -&usb2phy3_grf {
> +&usbdp_phy1_u3 {
>       status = "okay";
>  };
>  
> -&usb_host0_ehci {
> -     companion = <&usb_host0_ohci>;
> -};
> -
> -&usb_host1_ehci {
> -     companion = <&usb_host1_ohci>;
> -};
> -
>  &usbdp_phy0 {
>       orientation-switch;
> -     svid = <0xff01>;
> +     mode-switch;
>       sbu1-dc-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
>       sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
>       status = "okay";
> @@ -135,14 +94,15 @@
>       port {
>               #address-cells = <1>;
>               #size-cells = <0>;
> -             usbdp_phy0_orientation_switch: endpoint@0 {
> +
> +             usbdp_phy0_typec_ss: endpoint@0 {
>                       reg = <0>;
> -                     remote-endpoint = <&usbc0_orien_sw>;
> +                     remote-endpoint = <&usbc0_ss>;
>               };
>  
> -             usbdp_phy0_dp_altmode_mux: endpoint@1 {
> +             usbdp_phy0_typec_sbu: endpoint@1 {
>                       reg = <1>;
> -                     remote-endpoint = <&dp_altmode_mux>;
> +                     remote-endpoint = <&usbc0_sbu>;
>               };
>       };
>  };
> @@ -151,84 +111,53 @@
>       status = "okay";
>  };
>  
> -&usbdp_phy1 {
> -     rockchip,dp-lane-mux = <2 3>;
> +&usb_host0_xhci {
> +     usb-role-switch;
>       status = "okay";
> -};
>  
> -&usbdp_phy1_u3 {
> -     status = "okay";
> -};
> +     port {
> +             #address-cells = <1>;
> +             #size-cells = <0>;
>  
> -&usbdrd3_0 {
> -     status = "okay";
> +             usb_host0_xhci_drd_sw: endpoint {
> +                     remote-endpoint = <&usbc0_hs>;
> +             };
> +     };
>  };
>  
> -&usbdrd3_1 {
> +&usb_host1_xhci {
>       status = "okay";
>  };
>  
> -&usbdrd_dwc3_0 {
> -     usb-role-switch;
> -
> -     port {
> -             #address-cells = <1>;
> -             #size-cells = <0>;
> -             dwc3_0_role_switch: endpoint@0 {
> -                     reg = <0>;
> -                     remote-endpoint = <&usbc0_role_sw>;
> -             };
> -     };
> +&usb_host2_xhci {
> +     status = "okay";
>  };
>  
>  &i2c4 {
> +     pinctrl-names = "default";
>       pinctrl-0 = <&i2c4m1_xfer>;
>       status = "okay";
>  
> -     usbc0: fusb302@22 {
> +     usbc0: usb-typec@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>;
> +             vbus-supply = <&vcc12v_dcin>;
>               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";
> +                     power-role = "sink";
>                       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>;
> -                             };
> -                     };
> +                             <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>,
> +                             <PDO_VAR(5000, 20000, 5000)>;
>  
>                       ports {
>                               #address-cells = <1>;
> @@ -236,15 +165,22 @@
>  
>                               port@0 {
>                                       reg = <0>;
> -                                     usbc0_orien_sw: endpoint {
> -                                             remote-endpoint = 
> <&usbdp_phy0_orientation_switch>;
> +                                     usbc0_hs: endpoint {
> +                                             remote-endpoint = 
> <&usb_host0_xhci_drd_sw>;
>                                       };
>                               };
>  
>                               port@1 {
>                                       reg = <1>;
> -                                     dp_altmode_mux: endpoint {
> -                                             remote-endpoint = 
> <&usbdp_phy0_dp_altmode_mux>;
> +                                     usbc0_ss: endpoint {
> +                                             remote-endpoint = 
> <&usbdp_phy0_typec_ss>;
> +                                     };
> +                             };
> +
> +                             port@2 {
> +                                     reg = <2>;
> +                                     usbc0_sbu: endpoint {
> +                                             remote-endpoint = 
> <&usbdp_phy0_typec_sbu>;
>                                       };
>                               };
>                       };
> diff --git a/arch/arm/dts/rk3588-u-boot.dtsi b/arch/arm/dts/rk3588-u-boot.dtsi
> index 15de4706254e..992f7b5d6637 100644
> --- a/arch/arm/dts/rk3588-u-boot.dtsi
> +++ b/arch/arm/dts/rk3588-u-boot.dtsi
> @@ -6,32 +6,24 @@
>  #include "rk3588s-u-boot.dtsi"
>  
>  / {
> -     usbdrd3_1: usbdrd3_1 {
> -             compatible = "rockchip,rk3588-dwc3", "rockchip,rk3399-dwc3";
> +     usb_host1_xhci: usb@fc400000 {
> +             compatible = "rockchip,rk3588-dwc3", "snps,dwc3";
> +             reg = <0x0 0xfc400000 0x0 0x400000>;
> +             interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH 0>;
>               clocks = <&cru REF_CLK_USB3OTG1>, <&cru SUSPEND_CLK_USB3OTG1>,
>                        <&cru ACLK_USB3OTG1>;
> -             clock-names = "ref", "suspend", "bus";
> -             #address-cells = <2>;
> -             #size-cells = <2>;
> -             ranges;
> +             clock-names = "ref_clk", "suspend_clk", "bus_clk";
> +             dr_mode = "host";
> +             phys = <&u2phy1_otg>, <&usbdp_phy1_u3>;
> +             phy-names = "usb2-phy", "usb3-phy";
> +             phy_type = "utmi_wide";
> +             power-domains = <&power RK3588_PD_USB>;
> +             resets = <&cru SRST_A_USB3OTG1>;
> +             snps,dis_enblslpm_quirk;
> +             snps,dis-u2-freeclk-exists-quirk;
> +             snps,dis-del-phy-power-chg-quirk;
> +             snps,dis-tx-ipgap-linecheck-quirk;
>               status = "disabled";
> -
> -             usbdrd_dwc3_1: usb@fc400000 {
> -                     compatible = "snps,dwc3";
> -                     reg = <0x0 0xfc400000 0x0 0x400000>;
> -                     interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH 0>;
> -                     power-domains = <&power RK3588_PD_USB>;
> -                     resets = <&cru SRST_A_USB3OTG1>;
> -                     reset-names = "usb3-otg";
> -                     dr_mode = "host";
> -                     phys = <&u2phy1_otg>, <&usbdp_phy1_u3>;
> -                     phy-names = "usb2-phy", "usb3-phy";
> -                     phy_type = "utmi_wide";
> -                     snps,dis_enblslpm_quirk;
> -                     snps,dis-u2-freeclk-exists-quirk;
> -                     snps,dis-del-phy-power-chg-quirk;
> -                     snps,dis-tx-ipgap-linecheck-quirk;
> -             };
>       };
>  
>       usbdpphy1_grf: syscon@fd5cc000 {
> @@ -56,7 +48,6 @@
>                       clock-names = "phyclk";
>                       clock-output-names = "usb480m_phy1";
>                       #clock-cells = <0>;
> -                     rockchip,usbctrl-grf = <&usb_grf>;
>                       status = "disabled";
>  
>                       u2phy1_otg: otg-port {
> diff --git a/arch/arm/dts/rk3588s-u-boot.dtsi 
> b/arch/arm/dts/rk3588s-u-boot.dtsi
> index 878936fa07d6..bdba4eb1df32 100644
> --- a/arch/arm/dts/rk3588s-u-boot.dtsi
> +++ b/arch/arm/dts/rk3588s-u-boot.dtsi
> @@ -21,35 +21,47 @@
>               status = "okay";
>       };
>  
> -     usbdrd3_0: usbdrd3_0 {
> -             compatible = "rockchip,rk3588-dwc3", "rockchip,rk3399-dwc3";
> +     usb_host0_xhci: usb@fc000000 {
> +             compatible = "rockchip,rk3588-dwc3", "snps,dwc3";
> +             reg = <0x0 0xfc000000 0x0 0x400000>;
> +             interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH 0>;
>               clocks = <&cru REF_CLK_USB3OTG0>, <&cru SUSPEND_CLK_USB3OTG0>,
>                        <&cru ACLK_USB3OTG0>;
> -             clock-names = "ref", "suspend", "bus";
> -             #address-cells = <2>;
> -             #size-cells = <2>;
> -             ranges;
> +             clock-names = "ref_clk", "suspend_clk", "bus_clk";
> +             dr_mode = "otg";
> +             phys = <&u2phy0_otg>, <&usbdp_phy0_u3>;
> +             phy-names = "usb2-phy", "usb3-phy";
> +             phy_type = "utmi_wide";
> +             power-domains = <&power RK3588_PD_USB>;
> +             resets = <&cru SRST_A_USB3OTG0>;
> +             snps,dis_enblslpm_quirk;
> +             snps,dis-u1-entry-quirk;
> +             snps,dis-u2-entry-quirk;
> +             snps,dis-u2-freeclk-exists-quirk;
> +             snps,dis-del-phy-power-chg-quirk;
> +             snps,dis-tx-ipgap-linecheck-quirk;
>               status = "disabled";
> +     };
>  
> -             usbdrd_dwc3_0: usb@fc000000 {
> -                     compatible = "snps,dwc3";
> -                     reg = <0x0 0xfc000000 0x0 0x400000>;
> -                     interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH 0>;
> -                     power-domains = <&power RK3588_PD_USB>;
> -                     resets = <&cru SRST_A_USB3OTG0>;
> -                     reset-names = "usb3-otg";
> -                     dr_mode = "otg";
> -                     phys = <&u2phy0_otg>, <&usbdp_phy0_u3>;
> -                     phy-names = "usb2-phy", "usb3-phy";
> -                     phy_type = "utmi_wide";
> -                     snps,dis_enblslpm_quirk;
> -                     snps,dis-u1-entry-quirk;
> -                     snps,dis-u2-entry-quirk;
> -                     snps,dis-u2-freeclk-exists-quirk;
> -                     snps,dis-del-phy-power-chg-quirk;
> -                     snps,dis-tx-ipgap-linecheck-quirk;
> -                     quirk-skip-phy-init;
> -             };
> +     usb_host2_xhci: usb@fcd00000 {
> +             compatible = "rockchip,rk3588-dwc3", "snps,dwc3";
> +             reg = <0x0 0xfcd00000 0x0 0x400000>;
> +             interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH 0>;
> +             clocks = <&cru REF_CLK_USB3OTG2>, <&cru SUSPEND_CLK_USB3OTG2>,
> +                      <&cru ACLK_USB3OTG2>, <&cru CLK_UTMI_OTG2>,
> +                      <&cru CLK_PIPEPHY2_PIPE_U3_G>;
> +             clock-names = "ref_clk", "suspend_clk", "bus_clk", "utmi", 
> "pipe";
> +             dr_mode = "host";
> +             phys = <&combphy2_psu PHY_TYPE_USB3>;
> +             phy-names = "usb3-phy";
> +             phy_type = "utmi_wide";
> +             resets = <&cru SRST_A_USB3OTG2>;
> +             snps,dis_enblslpm_quirk;
> +             snps,dis-u2-freeclk-exists-quirk;
> +             snps,dis-del-phy-power-chg-quirk;
> +             snps,dis-tx-ipgap-linecheck-quirk;
> +             snps,dis_rxdet_inp3_quirk;
> +             status = "disabled";
>       };
>  
>       pmu1_grf: syscon@fd58a000 {
> @@ -58,6 +70,11 @@
>               reg = <0x0 0xfd58a000 0x0 0x2000>;
>       };
>  
> +     usbdpphy0_grf: syscon@fd5c8000 {
> +             compatible = "rockchip,rk3588-usbdpphy-grf", "syscon";
> +             reg = <0x0 0xfd5c8000 0x0 0x4000>;
> +     };
> +
>       usb2phy0_grf: syscon@fd5d0000 {
>               compatible = "rockchip,rk3588-usb2phy-grf", "syscon",
>                            "simple-mfd";
> @@ -75,7 +92,6 @@
>                       clock-names = "phyclk";
>                       clock-output-names = "usb480m_phy0";
>                       #clock-cells = <0>;
> -                     rockchip,usbctrl-grf = <&usb_grf>;
>                       status = "disabled";
>  
>                       u2phy0_otg: otg-port {
> diff --git a/configs/rock5b-rk3588_defconfig b/configs/rock5b-rk3588_defconfig
> index ec22e70033a0..0595325e8107 100644
> --- a/configs/rock5b-rk3588_defconfig
> +++ b/configs/rock5b-rk3588_defconfig
> @@ -101,7 +101,6 @@ CONFIG_SYSRESET=y
>  CONFIG_USB=y
>  CONFIG_DM_USB_GADGET=y
>  CONFIG_USB_XHCI_HCD=y
> -# CONFIG_USB_XHCI_DWC3_OF_SIMPLE is not set
>  CONFIG_USB_EHCI_HCD=y
>  CONFIG_USB_EHCI_GENERIC=y
>  CONFIG_USB_OHCI_HCD=y

Reply via email to