From 1f15848807c20762017da29fa1dac64fb67b8128 Mon Sep 17 00:00:00 2001 From: Hema HK Date: Mon, 28 Feb 2011 14:19:35 +0530 Subject: [PATCH 1/4] usb: musb: OMAP4430: Power down the PHY during board init Powerdown the internal PHY during board init for OMAP44xx. So that when musb is disabled core transition to retention/off is not blocked. Signed-off-by: Hema HK Cc: Tony Lindgren Cc: Paul Walmsley Signed-off-by: Felipe Balbi --- arch/arm/mach-omap2/usb-musb.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index 35559f77e2de..f665adeec3f0 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c @@ -117,11 +117,6 @@ void __init usb_musb_init(struct omap_musb_board_data *board_data) int bus_id = -1; const char *oh_name, *name; - if (cpu_is_omap3517() || cpu_is_omap3505()) { - } else if (cpu_is_omap44xx()) { - usb_musb_mux_init(board_data); - } - /* * REVISIT: This line can be removed once all the platforms using * musb_core.c have been converted to use use clkdev. @@ -164,6 +159,9 @@ void __init usb_musb_init(struct omap_musb_board_data *board_data) dev->dma_mask = &musb_dmamask; dev->coherent_dma_mask = musb_dmamask; put_device(dev); + + if (cpu_is_omap44xx()) + omap4430_phy_init(dev); } #else From a6d28523dbe6dc5bf3fc6a9078a69de6873c511e Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Mon, 2 May 2011 12:45:05 +0300 Subject: [PATCH 2/4] usb: musb: am35x: fix compile error when building am35x am35x_musb_set_mode() was redefined. Fix it. Reported-by: Sebastian Andrzej Siewior Signed-off-by: Felipe Balbi --- arch/arm/mach-omap2/board-am3517evm.c | 2 +- arch/arm/mach-omap2/omap_phy_internal.c | 2 +- arch/arm/plat-omap/include/plat/usb.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index ce7d5e6e4150..d8a04848f3c4 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c @@ -396,7 +396,7 @@ static struct omap_musb_board_data musb_board_data = { .power = 500, .set_phy_power = am35x_musb_phy_power, .clear_irq = am35x_musb_clear_irq, - .set_mode = am35x_musb_set_mode, + .set_mode = am35x_set_mode, .reset = am35x_musb_reset, }; diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index 05f6abc96b0d..eff6e248b562 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c @@ -228,7 +228,7 @@ void am35x_musb_clear_irq(void) regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR); } -void am35x_musb_set_mode(u8 musb_mode) +void am35x_set_mode(u8 musb_mode) { u32 devconf2 = omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2); diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index 02b96c8f6a17..17d3c939775c 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -113,7 +113,7 @@ extern int omap4430_phy_suspend(struct device *dev, int suspend); extern void am35x_musb_reset(void); extern void am35x_musb_phy_power(u8 on); extern void am35x_musb_clear_irq(void); -extern void am35x_musb_set_mode(u8 musb_mode); +extern void am35x_set_mode(u8 musb_mode); /* * FIXME correct answer depends on hmc_mode, From 8cfc67f0740cede2a6aec94b8513285d00c46d5f Mon Sep 17 00:00:00 2001 From: Hema HK Date: Thu, 24 Mar 2011 17:08:42 +0530 Subject: [PATCH 3/4] usb: otg: OMAP4430: Fixing the omap4430_phy_init function omap4430_phy_init() function can be called with no device pointer, to powerdown the PHY during board init when USB is disabled. Fix the function accordingly. Signed-off-by: Hema HK Signed-off-by: Felipe Balbi --- arch/arm/mach-omap2/omap_phy_internal.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index eff6e248b562..f47813edd951 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c @@ -50,13 +50,16 @@ int omap4430_phy_init(struct device *dev) { ctrl_base = ioremap(OMAP443X_SCM_BASE, SZ_1K); if (!ctrl_base) { - dev_err(dev, "control module ioremap failed\n"); + pr_err("control module ioremap failed\n"); return -ENOMEM; } /* Power down the phy */ __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); - phyclk = clk_get(dev, "ocp2scp_usb_phy_ick"); + if (!dev) + return 0; + + phyclk = clk_get(dev, "ocp2scp_usb_phy_ick"); if (IS_ERR(phyclk)) { dev_err(dev, "cannot clk_get ocp2scp_usb_phy_ick\n"); iounmap(ctrl_base); From 208466dc10083e734a8af71d10f923ee4bff950c Mon Sep 17 00:00:00 2001 From: Hema HK Date: Thu, 24 Mar 2011 17:09:03 +0530 Subject: [PATCH 4/4] usb: otg: OMAP4430: Powerdown the internal PHY when USB is disabled Powerdown the internal UTMI PHY when USB is not enabled. This will allow the OMAP core domain to transition to retention and offmode. Signed-off-by: Hema HK Cc: Felipe Balbi Signed-off-by: Felipe Balbi --- arch/arm/mach-omap2/usb-musb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index f665adeec3f0..fd95e62e8fcf 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c @@ -167,5 +167,7 @@ void __init usb_musb_init(struct omap_musb_board_data *board_data) #else void __init usb_musb_init(struct omap_musb_board_data *board_data) { + if (cpu_is_omap44xx()) + omap4430_phy_init(NULL); } #endif /* CONFIG_USB_MUSB_SOC */