]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
OMAP2+: powerdomains: move powerdomain static data to .c files
authorPaul Walmsley <paul@pwsan.com>
Wed, 22 Dec 2010 03:01:20 +0000 (20:01 -0700)
committerPaul Walmsley <paul@pwsan.com>
Wed, 22 Dec 2010 03:01:20 +0000 (20:01 -0700)
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>
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/powerdomain2xxx_3xxx.c
arch/arm/mach-omap2/powerdomain44xx.c
arch/arm/mach-omap2/powerdomains.h
arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c [moved from arch/arm/mach-omap2/powerdomains_data.c with 56% similarity]
arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h [new file with mode: 0644]
arch/arm/mach-omap2/powerdomains2xxx_data.c [moved from arch/arm/mach-omap2/powerdomains24xx.h with 78% similarity]
arch/arm/mach-omap2/powerdomains3xxx_data.c [moved from arch/arm/mach-omap2/powerdomains34xx.h with 90% similarity]
arch/arm/mach-omap2/powerdomains44xx_data.c [moved from arch/arm/mach-omap2/powerdomains44xx.h with 93% similarity]
arch/arm/plat-omap/include/plat/powerdomain.h

index 1a1e978cd4bf170f69a7fffb11d2b2606e2eb2c0..4d6fa15f3b628a5be9bad0a6cd77241265949e06 100644 (file)
@@ -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 \
index 80a8e0e4d0383795bbd3aa3049e8b112a0cf6a35..40a548b203e35bcde7f2bc4190c6973f4366804d 100644 (file)
@@ -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
index 6cdf67860cb37af0e80ab9c802a9d74a7bc3a903..838ac758c51357c82c21c4f831ba0a946e618531 100644 (file)
 #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)
index 2903c7cb2d5e183d51fb95f4882699f200b9b925..366e8693ba56ca9089376a57db36710cc365a409 100644 (file)
@@ -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"
index 55cd8e6aa104dbdca6c15cd37f553c53d0e86a71..f83adaf889ee370eb8c0e409093f0b60619f3f99 100644 (file)
@@ -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>
 
@@ -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
similarity index 56%
rename from arch/arm/mach-omap2/powerdomains_data.c
rename to arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.c
index 29690c64bf1e2311c02fd72937f948c50f445c8d..14c6ef7e01e36e64fbf138874a4ab021dc1bc8ad 100644 (file)
@@ -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
  * 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 |
@@ -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);
-}
diff --git a/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h b/arch/arm/mach-omap2/powerdomains2xxx_3xxx_data.h
new file mode 100644 (file)
index 0000000..45d684a
--- /dev/null
@@ -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
similarity index 78%
rename from arch/arm/mach-omap2/powerdomains24xx.h
rename to arch/arm/mach-omap2/powerdomains2xxx_data.c
index 775093add9b610385a6ab8ed55146fa1d9c7c4b0..adc85d3592891157bb5554d3e3948f88bb75bbcf 100644 (file)
@@ -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"
@@ -30,8 +26,6 @@
 
 /* 24XX powerdomains and dependencies */
 
-#ifdef CONFIG_ARCH_OMAP2
-
 /* Powerdomains */
 
 static struct powerdomain dsp_pwrdm = {
@@ -82,9 +76,6 @@ static struct powerdomain core_24xx_pwrdm = {
        },
 };
 
-#endif    /* CONFIG_ARCH_OMAP2 */
-
-
 
 /*
  * 2430-specific powerdomains
@@ -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);
+}
similarity index 90%
rename from arch/arm/mach-omap2/powerdomains34xx.h
rename to arch/arm/mach-omap2/powerdomains3xxx_data.c
index ce5c15bc41b8466b0275ac7cd3d343ecb37841cb..1ddc040d7bc04e8bcbd7178768a4529d79703b6d 100644 (file)
@@ -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"
@@ -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);
+}
similarity index 93%
rename from arch/arm/mach-omap2/powerdomains44xx.h
rename to arch/arm/mach-omap2/powerdomains44xx_data.c
index 9c01b55d6102d58ff447870913ef3b28edd25954..2512f69fd9c766c81083088d1f23703354947992 100644 (file)
  * published by the Free Software Foundation.
  */
 
-#ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAINS44XX_H
-#define __ARCH_ARM_MACH_OMAP2_POWERDOMAINS44XX_H
+#include <linux/kernel.h>
+#include <linux/init.h>
 
 #include <plat/powerdomain.h>
+#include "powerdomains.h"
 
 #include "prcm-common.h"
 #include "cm.h"
@@ -30,8 +31,6 @@
 #include "prm.h"
 #include "prm-regbits-44xx.h"
 
-#if defined(CONFIG_ARCH_OMAP4)
-
 /* core_44xx_pwrdm: CORE power domain */
 static struct powerdomain core_44xx_pwrdm = {
        .name             = "core_pwrdm",
@@ -314,6 +313,28 @@ static struct powerdomain cefuse_44xx_pwrdm = {
  * stdefuse
  */
 
-#endif
+/* As powerdomains are added or removed above, this list must also be changed */
+static struct powerdomain *powerdomains_omap44xx[] __initdata = {
+       &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,
+       NULL
+};
 
-#endif
+void __init omap44xx_powerdomains_init(void)
+{
+       pwrdm_init(powerdomains_omap44xx, &omap4_pwrdm_operations);
+}
index 583758cbd7d3a44ef2f23e6b1ffb21e678b68ed8..b79eebb27a70b1817e3a013adf14ad7e004411d5 100644 (file)
@@ -2,17 +2,20 @@
  * OMAP2/3 powerdomain control
  *
  * Copyright (C) 2007-2008 Texas Instruments, Inc.
- * Copyright (C) 2007-2009 Nokia Corporation
+ * Copyright (C) 2007-2010 Nokia Corporation
  *
  * Written by 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.
+ *
+ * XXX This should be moved to the mach-omap2/ directory at the earliest
+ * opportunity.
  */
 
-#ifndef ASM_ARM_ARCH_OMAP_POWERDOMAIN
-#define ASM_ARM_ARCH_OMAP_POWERDOMAIN
+#ifndef ASM_ARM_PLAT_OMAP_INCLUDE_PLAT_POWERDOMAIN
+#define ASM_ARM_PLAT_OMAP_INCLUDE_PLAT_POWERDOMAIN
 
 #include <linux/types.h>
 #include <linux/list.h>
@@ -206,4 +209,8 @@ int pwrdm_pre_transition(void);
 int pwrdm_post_transition(void);
 int pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm);
 
+extern void omap2xxx_powerdomains_init(void);
+extern void omap3xxx_powerdomains_init(void);
+extern void omap44xx_powerdomains_init(void);
+
 #endif