Commit d163ef24 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

USB: musb: davinci dm355 updates (remainder)

Finish merging updates for DM355 chips into musb/davinci.c now
that its support is in mainline:  kick in new DRVVBUS controls.
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 6bc2146e
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/memory.h> #include <mach/memory.h>
#include <mach/gpio.h> #include <mach/gpio.h>
#include <mach/cputype.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -411,6 +412,21 @@ int __init musb_platform_init(struct musb *musb) ...@@ -411,6 +412,21 @@ int __init musb_platform_init(struct musb *musb)
__raw_writel(phy_ctrl, USB_PHY_CTRL); __raw_writel(phy_ctrl, USB_PHY_CTRL);
} }
/* On dm355, the default-A state machine needs DRVVBUS control.
* If we won't be a host, there's no need to turn it on.
*/
if (cpu_is_davinci_dm355()) {
u32 deepsleep = __raw_readl(DM355_DEEPSLEEP);
if (is_host_enabled(musb)) {
deepsleep &= ~DRVVBUS_OVERRIDE;
} else {
deepsleep &= ~DRVVBUS_FORCE;
deepsleep |= DRVVBUS_OVERRIDE;
}
__raw_writel(deepsleep, DM355_DEEPSLEEP);
}
/* reset the controller */ /* reset the controller */
musb_writel(tibase, DAVINCI_USB_CTRL_REG, 0x1); musb_writel(tibase, DAVINCI_USB_CTRL_REG, 0x1);
...@@ -437,6 +453,15 @@ int musb_platform_exit(struct musb *musb) ...@@ -437,6 +453,15 @@ int musb_platform_exit(struct musb *musb)
if (is_host_enabled(musb)) if (is_host_enabled(musb))
del_timer_sync(&otg_workaround); del_timer_sync(&otg_workaround);
/* force VBUS off */
if (cpu_is_davinci_dm355()) {
u32 deepsleep = __raw_readl(DM355_DEEPSLEEP);
deepsleep &= ~DRVVBUS_FORCE;
deepsleep |= DRVVBUS_OVERRIDE;
__raw_writel(deepsleep, DM355_DEEPSLEEP);
}
davinci_source_power(musb, 0 /*off*/, 1); davinci_source_power(musb, 0 /*off*/, 1);
/* delay, to avoid problems with module reload */ /* delay, to avoid problems with module reload */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment