Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 226599
b: refs/heads/master
c: 6e01478
h: refs/heads/master
i:
  226597: e13607e
  226595: 9dbf4a1
  226591: 8e9e84c
v: v3
  • Loading branch information
Paul Walmsley committed Dec 22, 2010
1 parent fde1aa6 commit 58e2d23
Show file tree
Hide file tree
Showing 12 changed files with 160 additions and 135 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4b4f62c4672805466652a785070cc2ac8a398e16
refs/heads/master: 6e01478ae8a4322c9a2b2d6efed50196265ed5f2
13 changes: 9 additions & 4 deletions trunk/arch/arm/mach-omap2/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,18 @@ obj-$(CONFIG_ARCH_OMAP3) += prcm.o cm.o
obj-$(CONFIG_ARCH_OMAP4) += prcm.o cm4xxx.o

# OMAP powerdomain framework
powerdomain-common += powerdomain.o powerdomains_data.o powerdomain-common.o
powerdomain-common += powerdomain.o powerdomain-common.o
obj-$(CONFIG_ARCH_OMAP2) += $(powerdomain-common) \
powerdomain2xxx_3xxx.o
powerdomain2xxx_3xxx.o \
powerdomains2xxx_data.o \
powerdomains2xxx_3xxx_data.o
obj-$(CONFIG_ARCH_OMAP3) += $(powerdomain-common) \
powerdomain2xxx_3xxx.o
powerdomain2xxx_3xxx.o \
powerdomains3xxx_data.o \
powerdomains2xxx_3xxx_data.o
obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) \
powerdomain44xx.o
powerdomain44xx.o \
powerdomains44xx_data.o

# Clock framework
obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o \
Expand Down
21 changes: 14 additions & 7 deletions trunk/arch/arm/mach-omap2/io.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,18 +339,25 @@ void __init omap2_init_common_infrastructure(void)
{
u8 postsetup_state;

pwrdm_fw_init();
clkdm_init(clockdomains_omap, clkdm_autodeps);
if (cpu_is_omap242x())
if (cpu_is_omap242x()) {
omap2xxx_powerdomains_init();
clkdm_init(clockdomains_omap, clkdm_autodeps);
omap2420_hwmod_init();
else if (cpu_is_omap243x())
} else if (cpu_is_omap243x()) {
omap2xxx_powerdomains_init();
clkdm_init(clockdomains_omap, clkdm_autodeps);
omap2430_hwmod_init();
else if (cpu_is_omap34xx())
} else if (cpu_is_omap34xx()) {
omap3xxx_powerdomains_init();
clkdm_init(clockdomains_omap, clkdm_autodeps);
omap3xxx_hwmod_init();
else if (cpu_is_omap44xx())
} else if (cpu_is_omap44xx()) {
omap44xx_powerdomains_init();
clkdm_init(clockdomains_omap, clkdm_autodeps);
omap44xx_hwmod_init();
else
} else {
pr_err("Could not init hwmod data - unknown SoC\n");
}

/* Set the default postsetup state for all hwmods */
#ifdef CONFIG_PM_RUNTIME
Expand Down
7 changes: 6 additions & 1 deletion trunk/arch/arm/mach-omap2/powerdomain2xxx_3xxx.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,15 @@
#include <linux/io.h>
#include <linux/errno.h>
#include <linux/delay.h>

#include <plat/prcm.h>
#include "prm.h"

#include "prm-regbits-34xx.h"
#include "powerdomains.h"
#include "prm.h"
#include "prm-regbits-24xx.h"
#include "prm-regbits-34xx.h"


/* Common functions across OMAP2 and OMAP3 */
static int omap2_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-omap2/powerdomain44xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <linux/io.h>
#include <linux/errno.h>
#include <linux/delay.h>

#include <plat/powerdomain.h>
#include <plat/prcm.h>
#include "prm.h"
Expand Down
9 changes: 6 additions & 3 deletions trunk/arch/arm/mach-omap2/powerdomains.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
* published by the Free Software Foundation.
*/

#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS
#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS
#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS_H
#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS_H

#include <plat/powerdomain.h>

Expand All @@ -24,4 +24,7 @@ extern u32 omap2_pwrdm_get_mem_bank_onstate_mask(u8 bank);
extern u32 omap2_pwrdm_get_mem_bank_retst_mask(u8 bank);
extern u32 omap2_pwrdm_get_mem_bank_stst_mask(u8 bank);

#endif /* ARCH_ARM_MACH_OMAP2_POWERDOMAINS */
extern struct powerdomain wkup_omap2_pwrdm;
extern struct powerdomain gfx_omap2_pwrdm;

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
* OMAP2/3 common powerdomain definitions
*
* Copyright (C) 2007-2008 Texas Instruments, Inc.
* Copyright (C) 2007-2009 Nokia Corporation
* Copyright (C) 2007-2010 Nokia Corporation
*
* Written by Paul Walmsley
* Debugging and integration fixes by Jouni Högander
* Paul Walmsley, Jouni Högander
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
Expand Down Expand Up @@ -46,26 +45,20 @@
* address offset is different between the C55 and C64 DSPs.
*/

#include <linux/init.h>
#include <plat/powerdomain.h>

#include "prcm-common.h"
#include "prm.h"
#include "cm.h"
#include "powerdomains24xx.h"
#include "powerdomains34xx.h"
#include "powerdomains44xx.h"

#include "powerdomains.h"

/* OMAP2/3-common powerdomains */

#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)

/*
* The GFX powerdomain is not present on 3430ES2, but currently we do not
* have a macro to filter it out at compile-time.
*/
static struct powerdomain gfx_omap2_pwrdm = {
struct powerdomain gfx_omap2_pwrdm = {
.name = "gfx_pwrdm",
.prcm_offs = GFX_MOD,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX |
Expand All @@ -81,79 +74,8 @@ static struct powerdomain gfx_omap2_pwrdm = {
},
};

static struct powerdomain wkup_omap2_pwrdm = {
struct powerdomain wkup_omap2_pwrdm = {
.name = "wkup_pwrdm",
.prcm_offs = WKUP_MOD,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX | CHIP_IS_OMAP3430),
};

#endif


/* As powerdomains are added or removed above, this list must also be changed */
static struct powerdomain *powerdomains_omap[] __initdata = {

#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
&wkup_omap2_pwrdm,
&gfx_omap2_pwrdm,
#endif

#ifdef CONFIG_ARCH_OMAP2
&dsp_pwrdm,
&mpu_24xx_pwrdm,
&core_24xx_pwrdm,
#endif

#ifdef CONFIG_ARCH_OMAP2430
&mdm_pwrdm,
#endif

#ifdef CONFIG_ARCH_OMAP3
&iva2_pwrdm,
&mpu_3xxx_pwrdm,
&neon_pwrdm,
&core_3xxx_pre_es3_1_pwrdm,
&core_3xxx_es3_1_pwrdm,
&cam_pwrdm,
&dss_pwrdm,
&per_pwrdm,
&emu_pwrdm,
&sgx_pwrdm,
&usbhost_pwrdm,
&dpll1_pwrdm,
&dpll2_pwrdm,
&dpll3_pwrdm,
&dpll4_pwrdm,
&dpll5_pwrdm,
#endif

#ifdef CONFIG_ARCH_OMAP4
&core_44xx_pwrdm,
&gfx_44xx_pwrdm,
&abe_44xx_pwrdm,
&dss_44xx_pwrdm,
&tesla_44xx_pwrdm,
&wkup_44xx_pwrdm,
&cpu0_44xx_pwrdm,
&cpu1_44xx_pwrdm,
&emu_44xx_pwrdm,
&mpu_44xx_pwrdm,
&ivahd_44xx_pwrdm,
&cam_44xx_pwrdm,
&l3init_44xx_pwrdm,
&l4per_44xx_pwrdm,
&always_on_core_44xx_pwrdm,
&cefuse_44xx_pwrdm,
#endif
NULL
};

void pwrdm_fw_init(void)
{
if (cpu_is_omap24xx())
pwrdm_init(powerdomains_omap, &omap2_pwrdm_operations);
else if (cpu_is_omap34xx())
pwrdm_init(powerdomains_omap, &omap3_pwrdm_operations);
else if (cpu_is_omap44xx())
pwrdm_init(powerdomains_omap, &omap4_pwrdm_operations);
}
22 changes: 22 additions & 0 deletions trunk/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* OMAP2/3 common powerdomains - prototypes
*
* Copyright (C) 2008 Texas Instruments, Inc.
* Copyright (C) 2008-2010 Nokia Corporation
*
* Paul Walmsley
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAINS2XXX_3XXX_DATA_H
#define __ARCH_ARM_MACH_OMAP2_POWERDOMAINS2XXX_3XXX_DATA_H

#include <plat/powerdomain.h>

extern struct powerdomain gfx_omap2_pwrdm;
extern struct powerdomain wkup_omap2_pwrdm;

#endif
Original file line number Diff line number Diff line change
@@ -1,26 +1,22 @@
/*
* OMAP24XX powerdomain definitions
* OMAP2XXX powerdomain definitions
*
* Copyright (C) 2007-2008 Texas Instruments, Inc.
* Copyright (C) 2007-2009 Nokia Corporation
* Copyright (C) 2007-2010 Nokia Corporation
*
* Written by Paul Walmsley
* Debugging and integration fixes by Jouni Högander
* Paul Walmsley, Jouni Högander
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS24XX
#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS24XX

/*
* N.B. If powerdomains are added or removed from this file, update
* the array in mach-omap2/powerdomains.h.
*/
#include <linux/kernel.h>
#include <linux/init.h>

#include <plat/powerdomain.h>
#include "powerdomains2xxx_3xxx_data.h"
#include "powerdomains.h"

#include "prcm-common.h"
#include "prm.h"
Expand All @@ -30,8 +26,6 @@

/* 24XX powerdomains and dependencies */

#ifdef CONFIG_ARCH_OMAP2

/* Powerdomains */

static struct powerdomain dsp_pwrdm = {
Expand Down Expand Up @@ -82,9 +76,6 @@ static struct powerdomain core_24xx_pwrdm = {
},
};

#endif /* CONFIG_ARCH_OMAP2 */



/*
* 2430-specific powerdomains
Expand All @@ -111,5 +102,25 @@ static struct powerdomain mdm_pwrdm = {

#endif /* CONFIG_ARCH_OMAP2430 */

/* As powerdomains are added or removed above, this list must also be changed */
static struct powerdomain *powerdomains_omap2xxx[] __initdata = {

&wkup_omap2_pwrdm,
&gfx_omap2_pwrdm,

#ifdef CONFIG_ARCH_OMAP2
&dsp_pwrdm,
&mpu_24xx_pwrdm,
&core_24xx_pwrdm,
#endif

#ifdef CONFIG_ARCH_OMAP2430
&mdm_pwrdm,
#endif
NULL
};

void __init omap2xxx_powerdomains_init(void)
{
pwrdm_init(powerdomains_omap2xxx, &omap2_pwrdm_operations);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,19 @@
* Copyright (C) 2007-2008 Texas Instruments, Inc.
* Copyright (C) 2007-2010 Nokia Corporation
*
* Written by Paul Walmsley
* Debugging and integration fixes by Jouni Högander
* Paul Walmsley, Jouni Högander
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#ifndef ARCH_ARM_MACH_OMAP2_POWERDOMAINS34XX
#define ARCH_ARM_MACH_OMAP2_POWERDOMAINS34XX

/*
* N.B. If powerdomains are added or removed from this file, update
* the array in mach-omap2/powerdomains.h.
*/
#include <linux/kernel.h>
#include <linux/init.h>

#include <plat/powerdomain.h>
#include "powerdomains2xxx_3xxx_data.h"
#include "powerdomains.h"

#include "prcm-common.h"
#include "prm.h"
Expand Down Expand Up @@ -260,8 +256,33 @@ static struct powerdomain dpll5_pwrdm = {
.omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2),
};

/* As powerdomains are added or removed above, this list must also be changed */
static struct powerdomain *powerdomains_omap3xxx[] __initdata = {

#endif /* CONFIG_ARCH_OMAP3 */
&wkup_omap2_pwrdm,
&gfx_omap2_pwrdm,
&iva2_pwrdm,
&mpu_3xxx_pwrdm,
&neon_pwrdm,
&core_3xxx_pre_es3_1_pwrdm,
&core_3xxx_es3_1_pwrdm,
&cam_pwrdm,
&dss_pwrdm,
&per_pwrdm,
&emu_pwrdm,
&sgx_pwrdm,
&usbhost_pwrdm,
&dpll1_pwrdm,
&dpll2_pwrdm,
&dpll3_pwrdm,
&dpll4_pwrdm,
&dpll5_pwrdm,
#endif
NULL
};


#endif
void __init omap3xxx_powerdomains_init(void)
{
pwrdm_init(powerdomains_omap3xxx, &omap3_pwrdm_operations);
}
Loading

0 comments on commit 58e2d23

Please sign in to comment.