Skip to content

Commit

Permalink
OMAP2+: powerdomains: move powerdomain static data to .c files
Browse files Browse the repository at this point in the history
Static data should be declared in .c files, not .h files.  It should be
possible to #include .h files at any point without creating multiple
copies of the same data.

We converted the clock data to .c files some time ago.  This patch does
the same for the powerdomain data.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Rajendra Nayak <rnayak@ti.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Kevin Hilman <khilman@deeprootsystems.com>
Tested-by: Kevin Hilman <khilman@deeprootsystems.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Rajendra Nayak <rnayak@ti.com>
  • Loading branch information
Paul Walmsley committed Dec 22, 2010
1 parent 4b4f62c commit 6e01478
Show file tree
Hide file tree
Showing 11 changed files with 159 additions and 134 deletions.
13 changes: 9 additions & 4 deletions 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 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 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 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 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 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 6e01478

Please sign in to comment.