diff options
| author | Ajay Kumar Gupta <ajay.gupta@ti.com> | 2011-12-13 10:50:58 -0800 | 
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2011-12-13 10:50:58 -0800 | 
| commit | 8f718d2414c2c13f7c886df1d1802ad0d32faaca (patch) | |
| tree | fa9269ec9553e6cad9caa01a343a0a8886e66506 /arch/arm/mach-omap2/omap_phy_internal.c | |
| parent | cada691f8675c36f738d41741a6ec5d966f39a10 (diff) | |
| download | olio-linux-3.10-8f718d2414c2c13f7c886df1d1802ad0d32faaca.tar.xz olio-linux-3.10-8f718d2414c2c13f7c886df1d1802ad0d32faaca.zip  | |
ARM: OMAP: musb: Add ti81xx phy power function
Adding ti81xx_musb_phy_power() which will be used by musb driver through
its function pointer in board_data.
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Ravi Babu <ravibabu@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/omap_phy_internal.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_phy_internal.c | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index 58775e3c847..4c90477e6f8 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c @@ -260,3 +260,38 @@ void am35x_set_mode(u8 musb_mode)  	omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);  } + +void ti81xx_musb_phy_power(u8 on) +{ +	void __iomem *scm_base = NULL; +	u32 usbphycfg; + +	scm_base = ioremap(TI81XX_SCM_BASE, SZ_2K); +	if (!scm_base) { +		pr_err("system control module ioremap failed\n"); +		return; +	} + +	usbphycfg = __raw_readl(scm_base + USBCTRL0); + +	if (on) { +		if (cpu_is_ti816x()) { +			usbphycfg |= TI816X_USBPHY0_NORMAL_MODE; +			usbphycfg &= ~TI816X_USBPHY_REFCLK_OSC; +		} else if (cpu_is_ti814x()) { +			usbphycfg &= ~(USBPHY_CM_PWRDN | USBPHY_OTG_PWRDN +				| USBPHY_DPINPUT | USBPHY_DMINPUT); +			usbphycfg |= (USBPHY_OTGVDET_EN | USBPHY_OTGSESSEND_EN +				| USBPHY_DPOPBUFCTL | USBPHY_DMOPBUFCTL); +		} +	} else { +		if (cpu_is_ti816x()) +			usbphycfg &= ~TI816X_USBPHY0_NORMAL_MODE; +		else if (cpu_is_ti814x()) +			usbphycfg |= USBPHY_CM_PWRDN | USBPHY_OTG_PWRDN; + +	} +	__raw_writel(usbphycfg, scm_base + USBCTRL0); + +	iounmap(scm_base); +}  |