From b41972e7d17fb920cc50db5b363209685b1251e5 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 14 Jun 2015 16:48:56 +0200 Subject: [PATCH] sunxi: musb: Move vbus check to sunxi_musb_enable This way it can be re-checked on "usb reset". Signed-off-by: Hans de Goede Acked-by: Ian Campbell --- drivers/usb/musb-new/sunxi.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c index c123d61af2..ee018c7e6e 100644 --- a/drivers/usb/musb-new/sunxi.c +++ b/drivers/usb/musb-new/sunxi.c @@ -201,6 +201,8 @@ static bool enabled = false; static int sunxi_musb_enable(struct musb *musb) { + int ret; + pr_debug("%s():\n", __func__); if (enabled) @@ -209,8 +211,14 @@ static int sunxi_musb_enable(struct musb *musb) /* select PIO mode */ musb_writeb(musb->mregs, USBC_REG_o_VEND0, 0); - if (is_host_enabled(musb)) + if (is_host_enabled(musb)) { + ret = sunxi_usb_phy_vbus_detect(0); + if (ret) { + printf("A charger is plugged into the OTG: "); + return -ENODEV; + } sunxi_usb_phy_power_on(0); /* port power on */ + } USBC_ForceVbusValidToHigh(musb->mregs); @@ -237,18 +245,9 @@ static void sunxi_musb_disable(struct musb *musb) static int sunxi_musb_init(struct musb *musb) { struct sunxi_ccm_reg *ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; - int err; pr_debug("%s():\n", __func__); - if (is_host_enabled(musb)) { - err = sunxi_usb_phy_vbus_detect(0); - if (err) { - eprintf("Error: A charger is plugged into the OTG\n"); - return -EIO; - } - } - musb->isr = sunxi_musb_interrupt; setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_USB0); -- 2.39.5