From: Thomas Tanner Date: Mon, 7 Jun 2010 22:09:28 +0000 (+0200) Subject: hcm's fixes X-Git-Url: http://git.maemo.org/git/?p=kernel-power;a=commitdiff_plain;h=64443f5d6309a0e14b88521fca1d635ac515345a hcm's fixes --- diff --git a/usbhost/drivers/usb/musb/isp1704.h b/usbhost/drivers/usb/musb/isp1704.h index 7a2220a..e0e4a5c 100644 --- a/usbhost/drivers/usb/musb/isp1704.h +++ b/usbhost/drivers/usb/musb/isp1704.h @@ -39,22 +39,24 @@ #define ISP1704_PRODUCT_ID_HIGH 0x03 #define ISP1704_FUNC_CTRL 0x04 #define ISP1704_OTG_CTRL 0x0a -#define ISP1704_USB_INTRISE 0x0d -#define ISP1704_USB_INTFALL 0x10 -#define ISP1704_USB_INTSTAT 0x13 +#define ISP1704_USB_INTRISE 0x0d /* interrupt enable rising register (ds p. 35 ff)*/ +#define ISP1704_USB_INTFALL 0x10 /* interrupt enable falling register */ +#define ISP1704_USB_INTSTAT 0x13 /* interrupt status register */ #define ISP1704_DEBUG 0x15 #define ISP1704_SCRATCH 0x16 #define ISP1704_PWR_CTRL 0x3d /* Function control */ -#define ISP1704_FUNC_CTRL_FULL_SPEED (1 << 0) -#define ISP1704_FUNC_CTRL_XCVRSELECT 0x3 -#define ISP1704_FUNC_CTRL_XCVRSELECT_SHIFT (1 << 0) -#define ISP1704_FUNC_CTRL_TERMSELECT (1 << 2) -#define ISP1704_FUNC_CTRL_OPMODE (1 << 3) -#define ISP1704_FUNC_CTRL_OPMODE_SHIFT 3 -#define ISP1704_FUNC_CTRL_RESET (1 << 5) -#define ISP1704_FUNC_CTRL_SUSPENDM (1 << 6) +#define ISP1704_FUNC_CTRL_XCVRSELECT_SHIFT 0 +#define ISP1704_FUNC_CTRL_XCVRSELECT_MASK (3 << 0) +#define ISP1704_FUNC_CTRL_HIGH_SPEED (0 << 0) +#define ISP1704_FUNC_CTRL_FULL_SPEED (1 << 0) +#define ISP1704_FUNC_CTRL_LOW_SPEED (2 << 0) +#define ISP1704_FUNC_CTRL_TERMSELECT (1 << 2) +#define ISP1704_FUNC_CTRL_OPMODE (1 << 3) +#define ISP1704_FUNC_CTRL_OPMODE_SHIFT 3 +#define ISP1704_FUNC_CTRL_RESET (1 << 5) +#define ISP1704_FUNC_CTRL_SUSPENDM (1 << 6) /* OTG Control */ #define ISP1704_OTG_CTRL_IDPULLUP (1 << 0) diff --git a/usbhost/drivers/usb/musb/musb_core.c b/usbhost/drivers/usb/musb/musb_core.c index 27c7948..07e21e7 100644 --- a/usbhost/drivers/usb/musb/musb_core.c +++ b/usbhost/drivers/usb/musb/musb_core.c @@ -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); } diff --git a/usbhost/drivers/usb/musb/musb_procfs.c b/usbhost/drivers/usb/musb/musb_procfs.c index 6846f31..8e28c4a 100644 --- a/usbhost/drivers/usb/musb/musb_procfs.c +++ b/usbhost/drivers/usb/musb/musb_procfs.c @@ -616,7 +616,6 @@ done: * */ -extern inline void mbusywait(int ms); extern void musb_port_reset(struct musb *musb, bool do_reset); extern void musb_port_suspend(struct musb *musb, bool do_suspend);