--- zzzz-none-000/linux-2.6.28.10/drivers/usb/musb/omap2430.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/drivers/usb/musb/omap2430.c 2010-03-30 18:41:51.000000000 +0000 @@ -35,8 +35,8 @@ #include #include -#include -#include +#include +#include #include "musb_core.h" #include "omap2430.h" @@ -53,9 +53,7 @@ { struct musb *musb = (void *)_musb; unsigned long flags; -#ifdef CONFIG_USB_MUSB_HDRC_HCD u8 power; -#endif u8 devctl; devctl = musb_readb(musb->mregs, MUSB_DEVCTL); @@ -194,7 +192,7 @@ return 0; } -static int musb_platform_resume(struct musb *musb); +int musb_platform_resume(struct musb *musb); void musb_platform_set_mode(struct musb *musb, u8 musb_mode) { @@ -217,33 +215,21 @@ int __init musb_platform_init(struct musb *musb) { - u32 l; + struct otg_transceiver *xceiv = otg_get_transceiver(); #if defined(CONFIG_ARCH_OMAP2430) omap_cfg_reg(AE5_2430_USB0HS_STP); #endif + musb->xceiv = *xceiv; musb_platform_resume(musb); - l = omap_readl(OTG_SYSCONFIG); - l &= ~ENABLEWAKEUP; /* disable wakeup */ - l &= ~NOSTDBY; /* remove possible nostdby */ - l |= SMARTSTDBY; /* enable smart standby */ - l &= ~AUTOIDLE; /* disable auto idle */ - l &= ~NOIDLE; /* remove possible noidle */ - l |= SMARTIDLE; /* enable smart idle */ - l |= AUTOIDLE; /* enable auto idle */ - omap_writel(l, OTG_SYSCONFIG); - - l = omap_readl(OTG_INTERFSEL); - l |= ULPI_12PIN; - omap_writel(l, OTG_INTERFSEL); + OTG_INTERFSEL_REG |= ULPI_12PIN; pr_debug("HS USB OTG: revision 0x%x, sysconfig 0x%02x, " "sysstatus 0x%x, intrfsel 0x%x, simenable 0x%x\n", - omap_readl(OTG_REVISION), omap_readl(OTG_SYSCONFIG), - omap_readl(OTG_SYSSTATUS), omap_readl(OTG_INTERFSEL), - omap_readl(OTG_SIMENABLE)); + OTG_REVISION_REG, OTG_SYSCONFIG_REG, OTG_SYSSTATUS_REG, + OTG_INTERFSEL_REG, OTG_SIMENABLE_REG); omap_vbus_power(musb, musb->board_mode == MUSB_HOST, 1); @@ -260,19 +246,16 @@ int musb_platform_suspend(struct musb *musb) { - u32 l; - if (!musb->clock) return 0; /* in any role */ - l = omap_readl(OTG_FORCESTDBY); - l |= ENABLEFORCE; /* enable MSTANDBY */ - omap_writel(l, OTG_FORCESTDBY); - - l = omap_readl(OTG_SYSCONFIG); - l |= ENABLEWAKEUP; /* enable wakeup */ - omap_writel(l, OTG_SYSCONFIG); + OTG_FORCESTDBY_REG &= ~ENABLEFORCE; /* disable MSTANDBY */ + OTG_SYSCONFIG_REG &= FORCESTDBY; /* enable force standby */ + OTG_SYSCONFIG_REG &= ~AUTOIDLE; /* disable auto idle */ + OTG_SYSCONFIG_REG |= SMARTIDLE; /* enable smart idle */ + OTG_FORCESTDBY_REG |= ENABLEFORCE; /* enable MSTANDBY */ + OTG_SYSCONFIG_REG |= AUTOIDLE; /* enable auto idle */ if (musb->xceiv.set_suspend) musb->xceiv.set_suspend(&musb->xceiv, 1); @@ -285,10 +268,8 @@ return 0; } -static int musb_platform_resume(struct musb *musb) +int musb_platform_resume(struct musb *musb) { - u32 l; - if (!musb->clock) return 0; @@ -300,13 +281,11 @@ else clk_enable(musb->clock); - l = omap_readl(OTG_SYSCONFIG); - l &= ~ENABLEWAKEUP; /* disable wakeup */ - omap_writel(l, OTG_SYSCONFIG); - - l = omap_readl(OTG_FORCESTDBY); - l &= ~ENABLEFORCE; /* disable MSTANDBY */ - omap_writel(l, OTG_FORCESTDBY); + OTG_FORCESTDBY_REG &= ~ENABLEFORCE; /* disable MSTANDBY */ + OTG_SYSCONFIG_REG |= SMARTSTDBY; /* enable smart standby */ + OTG_SYSCONFIG_REG &= ~AUTOIDLE; /* disable auto idle */ + OTG_SYSCONFIG_REG |= SMARTIDLE; /* enable smart idle */ + OTG_SYSCONFIG_REG |= AUTOIDLE; /* enable auto idle */ return 0; }