hcm's fixes
[kernel-power] / usbhost / drivers / usb / musb / musb_core.c
index 27c7948..07e21e7 100644 (file)
@@ -143,42 +143,35 @@ MODULE_LICENSE("GPL");
 MODULE_ALIAS("platform:" MUSB_DRIVER_NAME);
 
 
-
-inline void mbusywait(int ms)
-{
-       unsigned long end_time = jiffies + msecs_to_jiffies(ms);
-       while(time_before(jiffies,end_time))
-               cpu_relax();
-
-}
-
 void musb_force_term(void __iomem *addr, enum musb_term term)
 {
        u8 r;
 
-
+       /* activate pulldown resistors on datalines */
        r = musb_ulpi_readb(addr, ISP1704_OTG_CTRL);
        r |= ISP1704_OTG_CTRL_DP_PULLDOWN | ISP1704_OTG_CTRL_DM_PULLDOWN;
        musb_ulpi_writeb(addr, ISP1704_OTG_CTRL, r);
 
        r = musb_ulpi_readb(addr, ISP1704_FUNC_CTRL);
-
+       /* clear speed-selection  bits */
+       r &= ~ISP1704_FUNC_CTRL_XCVRSELECT_MASK;
+       /* set new speed-selection bits */
        switch(term) {
 
        case MUSB_TERM_HOST_HIGHSPEED:
-               r &= ~ISP1704_FUNC_CTRL_XCVRSELECT;
+               r |= ISP1704_FUNC_CTRL_HIGH_SPEED;
                r &= ~ISP1704_FUNC_CTRL_TERMSELECT;
                r &= ~ISP1704_FUNC_CTRL_OPMODE;
                break;
 
        case MUSB_TERM_HOST_FULLSPEED:
-               r |= 1 << ISP1704_FUNC_CTRL_XCVRSELECT_SHIFT;
+               r |= ISP1704_FUNC_CTRL_FULL_SPEED;
                r |= ISP1704_FUNC_CTRL_TERMSELECT;
                r &= ~ISP1704_FUNC_CTRL_OPMODE;
                break;
 
        case MUSB_TERM_HOST_LOWSPEED:
-               r |= 2 << ISP1704_FUNC_CTRL_XCVRSELECT_SHIFT;
+               r |= ISP1704_FUNC_CTRL_LOW_SPEED;
                r |= ISP1704_FUNC_CTRL_TERMSELECT;
                r &= ~ISP1704_FUNC_CTRL_OPMODE;
                break;
@@ -188,7 +181,6 @@ void musb_force_term(void __iomem *addr, enum musb_term term)
                return;
        }
 
-       r |= ISP1704_OTG_CTRL_IDPULLUP;
        musb_ulpi_writeb(addr, ISP1704_FUNC_CTRL, r);
 
 }