]> git.karo-electronics.de Git - linux-beck.git/commitdiff
usb: dwc2: gadget: fix phy interface configuration
authorMian Yousaf Kaukab <yousaf.kaukab@intel.com>
Fri, 30 Jan 2015 08:09:35 +0000 (09:09 +0100)
committerFelipe Balbi <balbi@ti.com>
Fri, 30 Jan 2015 16:33:54 +0000 (10:33 -0600)
hsotg->phyif is set in dwc2_gadget_init according to phy interface
width. Use it for configuration instead of hardcoded value.
Moreover, set USB turnaround time according to phy width.

Tested-by: Robert Baldyga <r.baldyga@samsung.com>
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc2/gadget.c

index 38ba0221482e98ca9efcad065940ecbdbbd3de14..8c3f8f8f769a4992b5431a4dc1daae873c8982b6 100644 (file)
@@ -2290,8 +2290,9 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg *hsotg,
         */
 
        /* set the PLL on, remove the HNP/SRP and set the PHY */
+       val = (hsotg->phyif == GUSBCFG_PHYIF8) ? 9 : 5;
        writel(hsotg->phyif | GUSBCFG_TOUTCAL(7) |
-              (0x5 << 10), hsotg->regs + GUSBCFG);
+              (val << 10), hsotg->regs + GUSBCFG);
 
        s3c_hsotg_init_fifo(hsotg);
 
@@ -2978,6 +2979,7 @@ static void s3c_hsotg_phy_disable(struct dwc2_hsotg *hsotg)
  */
 static void s3c_hsotg_init(struct dwc2_hsotg *hsotg)
 {
+       u32 trdtim;
        /* unmask subset of endpoint interrupts */
 
        writel(DIEPMSK_TIMEOUTMSK | DIEPMSK_AHBERRMSK |
@@ -3002,8 +3004,10 @@ static void s3c_hsotg_init(struct dwc2_hsotg *hsotg)
        s3c_hsotg_init_fifo(hsotg);
 
        /* set the PLL on, remove the HNP/SRP and set the PHY */
-       writel(GUSBCFG_PHYIF16 | GUSBCFG_TOUTCAL(7) | (0x5 << 10),
-              hsotg->regs + GUSBCFG);
+       trdtim = (hsotg->phyif == GUSBCFG_PHYIF8) ? 9 : 5;
+       writel(hsotg->phyif | GUSBCFG_TOUTCAL(7) |
+               (trdtim << 10),
+               hsotg->regs + GUSBCFG);
 
        if (using_dma(hsotg))
                __orr32(hsotg->regs + GAHBCFG, GAHBCFG_DMA_EN);