diff options
author | Tony Lindgren <tony@atomide.com> | 2012-11-14 01:40:37 (GMT) |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2012-11-14 01:40:37 (GMT) |
commit | 2f4d91e37735de0a22993a06a500dabe332f315e (patch) | |
tree | 39b16f2baa69cad668df2c6511f2ec1515df1f3f /arch | |
parent | 3d70f8c617a436c7146ecb81df2265b4626dfe89 (diff) | |
parent | 4fd7a41233eac62b10ede394b35d8919086f94ec (diff) | |
download | linux-fsl-qoriq-2f4d91e37735de0a22993a06a500dabe332f315e.tar.xz |
Merge tag 'for_3.8-pm-omap4-core-ret' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into omap-for-v3.8/pm-part2
Add support for full-chip retention in suspend for OMAP4 SoCs.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/omap_phy_internal.c | 32 | ||||
-rw-r--r-- | arch/arm/mach-omap2/pm44xx.c | 7 |
2 files changed, 32 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c index d992db8..9b56e5e 100644 --- a/arch/arm/mach-omap2/omap_phy_internal.c +++ b/arch/arm/mach-omap2/omap_phy_internal.c @@ -33,6 +33,38 @@ #include "soc.h" #include "control.h" +#define CONTROL_DEV_CONF 0x300 +#define PHY_PD 0x1 + +/** + * omap4430_phy_power_down: disable MUSB PHY during early init + * + * OMAP4 MUSB PHY module is enabled by default on reset, but this will + * prevent core retention if not disabled by SW. USB driver will + * later on enable this, once and if the driver needs it. + */ +static int __init omap4430_phy_power_down(void) +{ + void __iomem *ctrl_base; + + if (!cpu_is_omap44xx()) + return 0; + + ctrl_base = ioremap(OMAP443X_SCM_BASE, SZ_1K); + if (!ctrl_base) { + pr_err("control module ioremap failed\n"); + return -ENOMEM; + } + + /* Power down the phy */ + __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); + + iounmap(ctrl_base); + + return 0; +} +early_initcall(omap4430_phy_power_down); + void am35x_musb_reset(void) { u32 regval; diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c index 04922d1..f2d69be 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c @@ -100,13 +100,6 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused) if (!strncmp(pwrdm->name, "cpu", 3)) return 0; - /* - * FIXME: Remove this check when core retention is supported - * Only MPUSS power domain is added in the list. - */ - if (strcmp(pwrdm->name, "mpu_pwrdm")) - return 0; - pwrst = kmalloc(sizeof(struct power_state), GFP_ATOMIC); if (!pwrst) return -ENOMEM; |