Hi Vicente, On 25/02/18 11:03, Vicente Bergas wrote: > (cut) >>>>>> testing on the Sapphire board, which uses the RK3399 SoC, a regression >>>>>> has been found in v4.16-rc2 wrt v4.15.4 regarding the USB3 type-A port: >>>>>> In v4.15.4 it works in USB2-only mode. >>>>>> In v4.16-rc2 it does not work. > (cut) >>>>> Hmm, I'd guess the main issue would be a missing typec-phy driver >>>>> in your kernel (see drivers/phy/rockchip/phy-rockchip-typec.c > (cut) >>> I suspect that what Heiko says is right and typec-phy fails probing. Could you > (cut) > > Hello, > this is the patch to blame for the regression: > > From c301b327aea898af558b2387252a2f5fc0117dee Mon Sep 17 00:00:00 2001 > From: Enric Balletbo i Serra <enric.balletbo at collabora.com> > Date: Fri, 15 Dec 2017 12:00:03 +0100 > Subject: [PATCH] arm64: dts: rockchip: add usb3-phy otg-port support for rk3399 > > Add the usb3 phyter for the USB3.0 OTG controller. > > Signed-off-by: Enric Balletbo i Serra <enric.balletbo at collabora.com> > Signed-off-by: Heiko Stuebner <heiko at sntech.de> > --- > arch/arm64/boot/dts/rockchip/rk3399.dtsi | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi > b/arch/arm64/boot/dts/rockchip/rk3399.dtsi > index b4511503878b..7aa2144e0d47 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi > +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi > @@ -411,8 +411,8 @@ > reg = <0x0 0xfe800000 0x0 0x100000>; > interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>; > dr_mode = "otg"; > - phys = <&u2phy0_otg>; > - phy-names = "usb2-phy"; > + phys = <&u2phy0_otg>, <&tcphy0_usb3>; > + phy-names = "usb2-phy", "usb3-phy"; > phy_type = "utmi_wide"; > snps,dis_enblslpm_quirk; > snps,dis-u2-freeclk-exists-quirk; > @@ -444,8 +444,8 @@ > reg = <0x0 0xfe900000 0x0 0x100000>; > interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>; > dr_mode = "otg"; > - phys = <&u2phy1_otg>; > - phy-names = "usb2-phy"; > + phys = <&u2phy1_otg>, <&tcphy1_usb3>; > + phy-names = "usb2-phy", "usb3-phy"; > phy_type = "utmi_wide"; > snps,dis_enblslpm_quirk; > snps,dis-u2-freeclk-exists-quirk; > Can you try if the following patch solves the issue for you? diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi index f7157c1d768b..617d362eb8af 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi @@ -569,6 +569,14 @@ status = "okay"; }; +&tcphy0 { + status = "okay"; +}; + +&tcphy1 { + status = "okay"; +}; + &u2phy0 { status = "okay"; diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c b/drivers/phy/rockchip/phy-rockchip-typec.c index 1c79785a5439..6af1ec262fcb 100644 --- a/drivers/phy/rockchip/phy-rockchip-typec.c +++ b/drivers/phy/rockchip/phy-rockchip-typec.c @@ -821,6 +821,9 @@ static int tcphy_get_mode(struct rockchip_typec_phy *tcphy) u8 mode; int ret; + if (!edev) + return MODE_DFP_USB; + ufp = extcon_get_state(edev, EXTCON_USB); dp = extcon_get_state(edev, EXTCON_DISP_DP); @@ -1159,9 +1162,9 @@ static int rockchip_typec_phy_probe(struct platform_device *pdev) tcphy->extcon = extcon_get_edev_by_phandle(dev, 0); if (IS_ERR(tcphy->extcon)) { - if (PTR_ERR(tcphy->extcon) != -EPROBE_DEFER) - dev_err(dev, "Invalid or missing extcon\n"); - return PTR_ERR(tcphy->extcon); + if (PTR_ERR(tcphy->extcon) == -EPROBE_DEFER) + return PTR_ERR(tcphy->extcon); + tcphy->extcon = NULL; } pm_runtime_enable(dev); Best regards, Enric