From: Philipp Tomsich <philipp.toms...@theobroma-systems.com> sunxi_usb_phy_passby will deal PHY's other than 0 and it not require to use it for MUSB so use directly for HCI.
Also update the function proto type for with index and bool enable for better usability. Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com> [jagan: reowrked on entire patch] Signed-off-by: Jagan Teki <ja...@amarulasolutions.com> --- arch/arm/include/asm/arch-sunxi/usb_phy.h | 1 + arch/arm/mach-sunxi/usb_phy.c | 9 ++------- drivers/usb/host/ehci-sunxi.c | 2 ++ drivers/usb/host/ohci-sunxi.c | 2 ++ 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/arm/include/asm/arch-sunxi/usb_phy.h b/arch/arm/include/asm/arch-sunxi/usb_phy.h index f97d415..83ada78 100644 --- a/arch/arm/include/asm/arch-sunxi/usb_phy.h +++ b/arch/arm/include/asm/arch-sunxi/usb_phy.h @@ -20,3 +20,4 @@ int sunxi_usb_phy_vbus_detect(int index); int sunxi_usb_phy_id_detect(int index); void sunxi_usb_phy_enable_squelch_detect(int index, int enable); void sunxi_usb_phy_clear_SIDDP(void *base); +void sunxi_usb_phy_passby(int index, bool enable); diff --git a/arch/arm/mach-sunxi/usb_phy.c b/arch/arm/mach-sunxi/usb_phy.c index 1bfee40..4bc47a1 100644 --- a/arch/arm/mach-sunxi/usb_phy.c +++ b/arch/arm/mach-sunxi/usb_phy.c @@ -201,8 +201,9 @@ void sunxi_usb_phy_clear_SIDDP(void *base) } #endif -static void sunxi_usb_phy_passby(struct sunxi_usb_phy *phy, int enable) +void sunxi_usb_phy_passby(int index, bool enable) { + struct sunxi_usb_phy *phy = &sunxi_usb_phy[index]; unsigned long bits = 0; void *addr; @@ -250,9 +251,6 @@ void sunxi_usb_phy_init(int index) sunxi_usb_phy_config(phy); - if (phy->id != 0) - sunxi_usb_phy_passby(phy, SUNXI_USB_PASSBY_EN); - #ifdef CONFIG_MACH_SUN8I_A83T if (phy->id == 0) { setbits_le32(SUNXI_USB0_BASE + SUNXI_USB_CSR, @@ -272,9 +270,6 @@ void sunxi_usb_phy_exit(int index) if (phy->init_count != 0) return; - if (phy->id != 0) - sunxi_usb_phy_passby(phy, !SUNXI_USB_PASSBY_EN); - #ifdef CONFIG_MACH_SUN8I_A83T if (phy->id == 0) { setbits_le32(SUNXI_USB0_BASE + SUNXI_USB_CSR, diff --git a/drivers/usb/host/ehci-sunxi.c b/drivers/usb/host/ehci-sunxi.c index c3432aa..4eef739 100644 --- a/drivers/usb/host/ehci-sunxi.c +++ b/drivers/usb/host/ehci-sunxi.c @@ -69,6 +69,7 @@ static int ehci_usb_probe(struct udevice *dev) */ sunxi_usb_phy_clear_SIDDP((void *)hccr + 0x400); #endif + sunxi_usb_phy_passby(priv->phy_index, true); sunxi_usb_phy_power_on(priv->phy_index); hcor = (struct ehci_hcor *)((uintptr_t)hccr + @@ -87,6 +88,7 @@ static int ehci_usb_remove(struct udevice *dev) if (ret) return ret; + sunxi_usb_phy_passby(priv->phy_index, false); sunxi_usb_phy_exit(priv->phy_index); #ifdef CONFIG_SUNXI_GEN_SUN6I diff --git a/drivers/usb/host/ohci-sunxi.c b/drivers/usb/host/ohci-sunxi.c index e9eeb56..cb052d4 100644 --- a/drivers/usb/host/ohci-sunxi.c +++ b/drivers/usb/host/ohci-sunxi.c @@ -74,6 +74,7 @@ static int ohci_usb_probe(struct udevice *dev) */ sunxi_usb_phy_clear_SIDDP(regs); #endif + sunxi_usb_phy_passby(priv->phy_index, true); sunxi_usb_phy_power_on(priv->phy_index); return ohci_register(dev, regs); @@ -89,6 +90,7 @@ static int ohci_usb_remove(struct udevice *dev) if (ret) return ret; + sunxi_usb_phy_passby(priv->phy_index, false); sunxi_usb_phy_exit(priv->phy_index); #ifdef CONFIG_SUNXI_GEN_SUN6I -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot