Re: [PATCH 3/6 v3] omap: musb: ti81xx: Add phy power function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 09, 2011 at 07:17:47PM +0530, Ajay Kumar Gupta wrote:
> 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@xxxxxx>
> Signed-off-by: Ravi Babu <ravibabu@xxxxxx>

this should go through OMAP tree.

> ---
>  arch/arm/mach-omap2/omap_phy_internal.c |   24 +++++++++++++++++++++++
>  arch/arm/plat-omap/include/plat/usb.h   |   32 +++++++++++++++++++++++++++++++
>  2 files changed, 56 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c
> index 58775e3..d5e8497 100644
> --- a/arch/arm/mach-omap2/omap_phy_internal.c
> +++ b/arch/arm/mach-omap2/omap_phy_internal.c
> @@ -260,3 +260,27 @@ void am35x_set_mode(u8 musb_mode)
>  
>  	omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);
>  }
> +
> +void ti81xx_musb_phy_power(u8 on)
> +{
> +	u32 usbphycfg = omap_ctrl_readl(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;
> +
> +	}
> +	omap_ctrl_writel(usbphycfg, USBCTRL0);

don't use omap_ctrl_*(). ioremap your memory space.

> diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h
> index 17d3c93..c616385 100644
> --- a/arch/arm/plat-omap/include/plat/usb.h
> +++ b/arch/arm/plat-omap/include/plat/usb.h
> @@ -114,6 +114,7 @@ extern void am35x_musb_reset(void);
>  extern void am35x_musb_phy_power(u8 on);
>  extern void am35x_musb_clear_irq(void);
>  extern void am35x_set_mode(u8 musb_mode);
> +extern void ti81xx_musb_phy_power(u8 on);
>  
>  /*
>   * FIXME correct answer depends on hmc_mode,
> @@ -273,6 +274,37 @@ static inline void omap2_usbfs_init(struct omap_usb_config *pdata)
>  #define CONF2_OTGPWRDN		(1 << 2)
>  #define CONF2_DATPOL		(1 << 1)
>  
> +/* TI81XX specific definitions */
> +#define USBCTRL0	0x620
> +#define USBSTAT0	0x624
> +
> +/* TI816X PHY controls bits */
> +#define TI816X_USBPHY0_NORMAL_MODE	(1 << 0)
> +#define TI816X_USBPHY_REFCLK_OSC	(1 << 8)
> +
> +/* TI814X PHY controls bits */
> +#define USBPHY_CM_PWRDN		(1 << 0)
> +#define USBPHY_OTG_PWRDN	(1 << 1)
> +#define USBPHY_CHGDET_DIS	(1 << 2)
> +#define USBPHY_CHGDET_RSTRT	(1 << 3)
> +#define USBPHY_SRCONDM		(1 << 4)
> +#define USBPHY_SINKONDP		(1 << 5)
> +#define USBPHY_CHGISINK_EN	(1 << 6)
> +#define USBPHY_CHGVSRC_EN	(1 << 7)
> +#define USBPHY_DMPULLUP		(1 << 8)
> +#define USBPHY_DPPULLUP		(1 << 9)
> +#define USBPHY_CDET_EXTCTL	(1 << 10)
> +#define USBPHY_GPIO_MODE	(1 << 12)
> +#define USBPHY_DPOPBUFCTL	(1 << 13)
> +#define USBPHY_DMOPBUFCTL	(1 << 14)
> +#define USBPHY_DPINPUT		(1 << 15)
> +#define USBPHY_DMINPUT		(1 << 16)
> +#define USBPHY_DPGPIO_PD	(1 << 17)
> +#define USBPHY_DMGPIO_PD	(1 << 18)
> +#define USBPHY_OTGVDET_EN	(1 << 19)
> +#define USBPHY_OTGSESSEND_EN	(1 << 20)
> +#define USBPHY_DATA_POLARITY	(1 << 23)
> +
>  #if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_USB)
>  u32 omap1_usb0_init(unsigned nwires, unsigned is_device);
>  u32 omap1_usb1_init(unsigned nwires);
> -- 
> 1.6.2.4
> 

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux