aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/musb/omap2430.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/musb/omap2430.c')
-rw-r--r--drivers/usb/musb/omap2430.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
index 82592633502f..e06d65e36bf7 100644
--- a/drivers/usb/musb/omap2430.c
+++ b/drivers/usb/musb/omap2430.c
@@ -32,17 +32,11 @@
32#include <linux/clk.h> 32#include <linux/clk.h>
33#include <linux/io.h> 33#include <linux/io.h>
34 34
35#include <asm/mach-types.h>
36#include <mach/hardware.h>
37#include <plat/mux.h> 35#include <plat/mux.h>
38 36
39#include "musb_core.h" 37#include "musb_core.h"
40#include "omap2430.h" 38#include "omap2430.h"
41 39
42#ifdef CONFIG_ARCH_OMAP3430
43#define get_cpu_rev() 2
44#endif
45
46 40
47static struct timer_list musb_idle_timer; 41static struct timer_list musb_idle_timer;
48 42
@@ -145,10 +139,6 @@ void musb_platform_enable(struct musb *musb)
145void musb_platform_disable(struct musb *musb) 139void musb_platform_disable(struct musb *musb)
146{ 140{
147} 141}
148static void omap_vbus_power(struct musb *musb, int is_on, int sleeping)
149{
150}
151
152static void omap_set_vbus(struct musb *musb, int is_on) 142static void omap_set_vbus(struct musb *musb, int is_on)
153{ 143{
154 u8 devctl; 144 u8 devctl;
@@ -199,9 +189,10 @@ int musb_platform_set_mode(struct musb *musb, u8 musb_mode)
199 return 0; 189 return 0;
200} 190}
201 191
202int __init musb_platform_init(struct musb *musb) 192int __init musb_platform_init(struct musb *musb, void *board_data)
203{ 193{
204 u32 l; 194 u32 l;
195 struct omap_musb_board_data *data = board_data;
205 196
206#if defined(CONFIG_ARCH_OMAP2430) 197#if defined(CONFIG_ARCH_OMAP2430)
207 omap_cfg_reg(AE5_2430_USB0HS_STP); 198 omap_cfg_reg(AE5_2430_USB0HS_STP);
@@ -235,7 +226,15 @@ int __init musb_platform_init(struct musb *musb)
235 musb_writel(musb->mregs, OTG_SYSCONFIG, l); 226 musb_writel(musb->mregs, OTG_SYSCONFIG, l);
236 227
237 l = musb_readl(musb->mregs, OTG_INTERFSEL); 228 l = musb_readl(musb->mregs, OTG_INTERFSEL);
238 l |= ULPI_12PIN; 229
230 if (data->interface_type == MUSB_INTERFACE_UTMI) {
231 /* OMAP4 uses Internal PHY GS70 which uses UTMI interface */
232 l &= ~ULPI_12PIN; /* Disable ULPI */
233 l |= UTMI_8BIT; /* Enable UTMI */
234 } else {
235 l |= ULPI_12PIN;
236 }
237
239 musb_writel(musb->mregs, OTG_INTERFSEL, l); 238 musb_writel(musb->mregs, OTG_INTERFSEL, l);
240 239
241 pr_debug("HS USB OTG: revision 0x%x, sysconfig 0x%02x, " 240 pr_debug("HS USB OTG: revision 0x%x, sysconfig 0x%02x, "
@@ -246,8 +245,6 @@ int __init musb_platform_init(struct musb *musb)
246 musb_readl(musb->mregs, OTG_INTERFSEL), 245 musb_readl(musb->mregs, OTG_INTERFSEL),
247 musb_readl(musb->mregs, OTG_SIMENABLE)); 246 musb_readl(musb->mregs, OTG_SIMENABLE));
248 247
249 omap_vbus_power(musb, musb->board_mode == MUSB_HOST, 1);
250
251 if (is_host_enabled(musb)) 248 if (is_host_enabled(musb))
252 musb->board_set_vbus = omap_set_vbus; 249 musb->board_set_vbus = omap_set_vbus;
253 250
@@ -272,7 +269,7 @@ void musb_platform_restore_context(struct musb *musb,
272} 269}
273#endif 270#endif
274 271
275int musb_platform_suspend(struct musb *musb) 272static int musb_platform_suspend(struct musb *musb)
276{ 273{
277 u32 l; 274 u32 l;
278 275
@@ -327,8 +324,6 @@ static int musb_platform_resume(struct musb *musb)
327int musb_platform_exit(struct musb *musb) 324int musb_platform_exit(struct musb *musb)
328{ 325{
329 326
330 omap_vbus_power(musb, 0 /*off*/, 1);
331
332 musb_platform_suspend(musb); 327 musb_platform_suspend(musb);
333 328
334 return 0; 329 return 0;