phy: renesas: rcar-gen3-usb2: add conditions for uses_otg_pins == false
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Fri, 21 Sep 2018 11:53:23 +0000 (20:53 +0900)
committerKishon Vijay Abraham I <kishon@ti.com>
Tue, 25 Sep 2018 10:40:11 +0000 (16:10 +0530)
If uses_otg_pins is set to false, this driver 1) should disable otg
related interruptions, and 2) should not get ID pin signal, to avoid
unexpected behaviors. So, this patch adds conditions for it.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/renesas/phy-rcar-gen3-usb2.c

index 93ab860f09beb7a33b390ce9160d817d09cf8a4e..3f2efe55940c6227be3e0b78fe5e14aaf2c71e27 100644 (file)
@@ -148,7 +148,7 @@ static void rcar_gen3_control_otg_irq(struct rcar_gen3_chan *ch, int enable)
        void __iomem *usb2_base = ch->base;
        u32 val = readl(usb2_base + USB2_OBINTEN);
 
-       if (enable)
+       if (ch->uses_otg_pins && enable)
                val |= USB2_OBINT_BITS;
        else
                val &= ~USB2_OBINT_BITS;
@@ -210,6 +210,9 @@ static void rcar_gen3_init_from_a_peri_to_a_host(struct rcar_gen3_chan *ch)
 
 static bool rcar_gen3_check_id(struct rcar_gen3_chan *ch)
 {
+       if (!ch->uses_otg_pins)
+               return (ch->dr_mode == USB_DR_MODE_HOST) ? false : true;
+
        return !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_IDDIG);
 }