From: Felipe Balbi Date: Tue, 29 Apr 2008 11:05:51 +0000 (+0300) Subject: USB: MUSB: Better sysconf reg settings on PM point of view X-Git-Tag: v2.6.26-omap1~123^2~157 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=b59f010ed4eb30716e528f311d7ecd1aba832f19;p=linux-2.6-omap-h63xx.git USB: MUSB: Better sysconf reg settings on PM point of view The following patch is needed because usb is preventing core powerdomain to enter sleep state. Thanks to Jouni Högander for pointing this Signed-off-by: Felipe Balbi Signed-off-by: Jouni Högander Signed-off-by: Tony Lindgren --- diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index e092393c159..36f17397d80 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -224,6 +224,14 @@ int __init musb_platform_init(struct musb *musb) musb->xceiv = *xceiv; musb_platform_resume(musb); + OTG_SYSCONFIG_REG &= ~ENABLEWAKEUP; /* disable wakeup */ + OTG_SYSCONFIG_REG &= ~NOSTDBY; /* remove possible nostdby */ + OTG_SYSCONFIG_REG |= SMARTSTDBY; /* enable smart standby */ + OTG_SYSCONFIG_REG &= ~AUTOIDLE; /* disable auto idle */ + OTG_SYSCONFIG_REG &= ~NOIDLE; /* remove possible noidle */ + OTG_SYSCONFIG_REG |= SMARTIDLE; /* enable smart idle */ + OTG_SYSCONFIG_REG |= AUTOIDLE; /* enable auto idle */ + OTG_INTERFSEL_REG |= ULPI_12PIN; pr_debug("HS USB OTG: revision 0x%x, sysconfig 0x%02x, " @@ -250,12 +258,8 @@ int musb_platform_suspend(struct musb *musb) return 0; /* in any role */ - 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 */ + OTG_FORCESTDBY_REG |= ENABLEFORCE; /* enable MSTANDBY */ + OTG_SYSCONFIG_REG |= ENABLEWAKEUP; /* enable wakeup */ if (musb->xceiv.set_suspend) musb->xceiv.set_suspend(&musb->xceiv, 1); @@ -281,11 +285,8 @@ int musb_platform_resume(struct musb *musb) else clk_enable(musb->clock); - 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 */ + OTG_SYSCONFIG_REG &= ~ENABLEWAKEUP; /* disable wakeup */ + OTG_FORCESTDBY_REG &= ~ENABLEFORCE; /* disable MSTANDBY */ return 0; }