]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
arm: kirkwood: Instantiate cpufreq driver
authorAndrew Lunn <andrew@lunn.ch>
Sun, 27 Jan 2013 10:07:23 +0000 (11:07 +0100)
committerJason Cooper <jason@lakedaemon.net>
Wed, 29 May 2013 19:32:04 +0000 (19:32 +0000)
Register a platform driver structure for the cpufreq driver.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Tested-by: Adam Baker <linux@baker-net.org.uk>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/Kconfig
arch/arm/mach-kirkwood/board-dt.c
arch/arm/mach-kirkwood/common.c
arch/arm/mach-kirkwood/common.h
arch/arm/mach-kirkwood/include/mach/bridge-regs.h

index d423d58f938dc40fb5b3c01445b9184572631b10..76fa766872625d895c340ed3b6464eeffc546683 100644 (file)
@@ -501,6 +501,7 @@ config ARCH_DOVE
 
 config ARCH_KIRKWOOD
        bool "Marvell Kirkwood"
+       select ARCH_HAS_CPUFREQ
        select ARCH_REQUIRE_GPIOLIB
        select CPU_FEROCEON
        select GENERIC_CLOCKEVENTS
index a8dae114b537b068097b543aff1d216f5babab29..4cc9edf39865c90741ea5fe43b92b90cde26a3cc 100644 (file)
@@ -92,6 +92,8 @@ static void __init kirkwood_dt_init(void)
 
        kirkwood_l2_init();
 
+       kirkwood_cpufreq_init();
+
        /* Setup root of clk tree */
        kirkwood_of_clk_init();
 
index c2cae69e6d2bb9343798a7a3398ce174850d59cf..97882fcbf6ee27e6562838da7cfb07a1d4cbbb29 100644 (file)
@@ -603,6 +603,29 @@ void __init kirkwood_audio_init(void)
        platform_device_register(&kirkwood_pcm_device);
 }
 
+/*****************************************************************************
+ * CPU Frequency
+ ****************************************************************************/
+static struct resource kirkwood_cpufreq_resources[] = {
+       [0] = {
+               .start  = CPU_CONTROL_PHYS,
+               .end    = CPU_CONTROL_PHYS + 3,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device kirkwood_cpufreq_device = {
+       .name           = "kirkwood-cpufreq",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(kirkwood_cpufreq_resources),
+       .resource       = kirkwood_cpufreq_resources,
+};
+
+void __init kirkwood_cpufreq_init(void)
+{
+       platform_device_register(&kirkwood_cpufreq_device);
+}
+
 /*****************************************************************************
  * General
  ****************************************************************************/
index 21da3b1ebd7bf843c2b9b1e11a8fd025b5e30287..99e769893c3557a02055ad48999350bcebfcf4f8 100644 (file)
@@ -51,6 +51,8 @@ void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts,
                            int (*dev_ready)(struct mtd_info *));
 void kirkwood_audio_init(void);
 void kirkwood_cpuidle_init(void);
+void kirkwood_cpufreq_init(void);
+
 void kirkwood_restart(char, const char *);
 void kirkwood_clk_init(void);
 
index 5c82b7dce4e2377b7dc84c55c03b5db8aa0c9784..d4cbe5e81bb4dcac1e5048fb79e10a3b1ad83d18 100644 (file)
@@ -17,6 +17,7 @@
 #define CPU_CONFIG_ERROR_PROP  0x00000004
 
 #define CPU_CONTROL            (BRIDGE_VIRT_BASE + 0x0104)
+#define CPU_CONTROL_PHYS       (BRIDGE_PHYS_BASE + 0x0104)
 #define CPU_RESET              0x00000002
 
 #define RSTOUTn_MASK           (BRIDGE_VIRT_BASE + 0x0108)
@@ -69,6 +70,7 @@
 #define CGC_RUNIT              (1 << 7)
 #define CGC_XOR0               (1 << 8)
 #define CGC_AUDIO              (1 << 9)
+#define CGC_POWERSAVE           (1 << 11)
 #define CGC_SATA0              (1 << 14)
 #define CGC_SATA1              (1 << 15)
 #define CGC_XOR1               (1 << 16)