Thread (16 messages) 16 messages, 5 authors, 2013-10-23
STALE4656d
Revisions (7)
  1. v1 [diff vs current]
  2. v1 current
  3. v1 [diff vs current]
  4. v4 [diff vs current]
  5. v4 [diff vs current]
  6. v4 [diff vs current]
  7. v4 [diff vs current]

[PATCH 2/4] mvebu: Dove: Instantiate cpufreq driver.

From: sebastian.hesselbarth@gmail.com (Sebastian Hesselbarth)
Date: 2013-10-21 10:47:32
Also in: linux-pm

On 10/19/2013 01:37 PM, Andrew Lunn wrote:
quoted hunk ↗ jump to hunk
Add a platform driver definition to instantiate the dove cpufreq
driver. Also indicate the ARCH has cpufreq support, so allowing the
cpufreq framework to be enabled.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
  arch/arm/Kconfig                       |  1 +
  arch/arm/mach-dove/board-dt.c          |  2 ++
  arch/arm/mach-dove/common.c            | 36 ++++++++++++++++++++++++++++++++++
  arch/arm/mach-dove/common.h            |  1 +
  arch/arm/mach-dove/include/mach/dove.h |  1 +
  5 files changed, 41 insertions(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1ad6fb6..7744415 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -495,6 +495,7 @@ config ARCH_IXP4XX

  config ARCH_DOVE
  	bool "Marvell Dove"
+	select ARCH_HAS_CPUFREQ
  	select ARCH_REQUIRE_GPIOLIB
  	select CPU_PJ4
  	select GENERIC_CLOCKEVENTS
diff --git a/arch/arm/mach-dove/board-dt.c b/arch/arm/mach-dove/board-dt.c
index 49f72a8..98202de 100644
--- a/arch/arm/mach-dove/board-dt.c
+++ b/arch/arm/mach-dove/board-dt.c
@@ -70,6 +70,8 @@ static void __init dove_dt_init(void)
  	/* Setup clocks for legacy devices */
  	dove_legacy_clk_init();

+	dove_cpufreq_init();
+
What ever the outcome of "DT: blessing or curse" discussion at ELCE will
be, are there any plans to probe the cpufreq/cpuidle drivers directly
from DT? Someday, we want to get rid of .machine_init.
quoted hunk ↗ jump to hunk
  	/* Internal devices not ported to DT yet */
  	dove_pcie_init(1, 1);
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
index c122bcf..9e648a8 100644
--- a/arch/arm/mach-dove/common.c
+++ b/arch/arm/mach-dove/common.c
@@ -344,6 +344,42 @@ void __init dove_sdio1_init(void)
  	platform_device_register(&dove_sdio1);
  }

+/*****************************************************************************
+ * CPU Frequency
+ ****************************************************************************/
+static struct resource dove_cpufreq_resources[] = {
+	[0] = {
+		.start  = DOVE_PMU_PHYS_BASE,
+		.end    = DOVE_PMU_PHYS_BASE + 0x7,
+		.flags  = IORESOURCE_MEM,
+		.name   = "cpufreq: DFS"
+	},
+	[1] = {
+		.start  = DOVE_PMU_PHYS_BASE + 0x8000,
+		.end    = DOVE_PMU_PHYS_BASE + 0x8004,
BASE + 0x8004 - 1 ?
+		.flags  = IORESOURCE_MEM,
+		.name   = "cpufreq PMU CR"
+	},
+	[2] = {
+		.start  = DOVE_PMU_PHYS_BASE + 0x0044,
+		.end    = DOVE_PMU_PHYS_BASE + 0x0048,
ditto.

Sebastian
quoted hunk ↗ jump to hunk
+		.flags  = IORESOURCE_MEM,
+		.name   = "cpufreq: PMU Clk Div"
+	},
+};
+
+static struct platform_device dove_cpufreq_device = {
+	.name		= "dove-cpufreq",
+	.id		= -1,
+	.num_resources	= ARRAY_SIZE(dove_cpufreq_resources),
+	.resource	= dove_cpufreq_resources,
+};
+
+void __init dove_cpufreq_init(void)
+{
+	platform_device_register(&dove_cpufreq_device);
+}
+
  void __init dove_setup_cpu_wins(void)
  {
  	/*
diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h
index 1d72522..5c9a77b 100644
--- a/arch/arm/mach-dove/common.h
+++ b/arch/arm/mach-dove/common.h
@@ -44,6 +44,7 @@ void dove_spi1_init(void);
  void dove_i2c_init(void);
  void dove_sdio0_init(void);
  void dove_sdio1_init(void);
+void dove_cpufreq_init(void);
  void dove_restart(enum reboot_mode, const char *);

  #endif
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h
index 0c4b35f..48db186 100644
--- a/arch/arm/mach-dove/include/mach/dove.h
+++ b/arch/arm/mach-dove/include/mach/dove.h
@@ -144,6 +144,7 @@
  #define  DOVE_SD0_GPIO_SEL		(1 << 0)

  /* Power Management */
+#define DOVE_PMU_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xd0000)
  #define DOVE_PMU_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xd0000)
  #define DOVE_PMU_SIG_CTRL	(DOVE_PMU_VIRT_BASE + 0x802c)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help