mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-22 01:10:28 +00:00
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: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
6bc2146e2b
commit
d163ef2483
@ -35,6 +35,7 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/memory.h>
|
||||
#include <mach/gpio.h>
|
||||
#include <mach/cputype.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
@ -411,6 +412,21 @@ int __init musb_platform_init(struct musb *musb)
|
||||
__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 */
|
||||
musb_writel(tibase, DAVINCI_USB_CTRL_REG, 0x1);
|
||||
|
||||
@ -437,6 +453,15 @@ int musb_platform_exit(struct musb *musb)
|
||||
if (is_host_enabled(musb))
|
||||
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);
|
||||
|
||||
/* delay, to avoid problems with module reload */
|
||||
|
Loading…
Reference in New Issue
Block a user