ARM: tegra: register PMU IRQs with PMU framework
Subsystems (3)
PATCH 1/1 ARM: tegra: register PMU IRQs with PMU framework
The Tegra Harmony board contains a dual-core Cortex-A9 and can therefore make use of the hardware performance counters on the CPU.
This patch fixes a typo in the PMU IRQ definitions and registers the interrupts as a platform_device with the PMU framework.
---
This patch was taken against 2.6.36-rc1 but has not even been compile-tested because of the following errors:
arch/arm/mach-tegra/board-harmony.c: In function 'tegra_harmony_fixup':arch/arm/mach-tegra/board-harmony.c:116: error: 'struct membank' has no member named 'node' arch/arm/mach-tegra/board-harmony.c:116: error: implicit declaration of function 'PHYS_TO_NID' arch/arm/mach-tegra/board-harmony.c:119: error: 'struct membank' has no member named 'node'
arch/arm/mach-tegra/board-harmony.c | 22 ++++++++++++++++++++++ arch/arm/mach-tegra/include/mach/irqs.h | 2 +- 2 files changed, 23 insertions(+), 1 deletions(-)
arch/arm/mach-tegra/board-harmony.c +22 -0
@@ -26,6 +26,7 @@#include <asm/mach-types.h> #include <asm/mach/arch.h> #include <asm/mach/time.h> +#include <asm/pmu.h> #include <asm/setup.h> #include <mach/iomap.h>
@@ -82,8 +83,29 @@ static struct platform_device debug_uart = { }, }; +static struct resource pmu_resources[] = { + [0 ] = { + .start =INT_CPU0_PMU_INTR , + .end =INT_CPU0_PMU_INTR , + .flags =IORESOURCE_IRQ , + }, + [1 ] = { + .start =INT_CPU1_PMU_INTR , + .end =INT_CPU1_PMU_INTR , + .flags =IORESOURCE_IRQ , + }, +}; + +static struct platform_device pmu_device = { + .name ="arm-pmu" , + .id =ARM_PMU_DEVICE_CPU , + .num_resources =ARRAY_SIZE (pmu_resources), + .resource = pmu_resources, +}; +static struct platform_device *harmony_devices[]__initdata = { &debug_uart, + &pmu_device, }; static void __init tegra_harmony_fixup(struct machine_desc *desc,
arch/arm/mach-tegra/include/mach/irqs.h +1 -1
@@ -87,7 +87,7 @@#define INT_SYS_STATS_MON (INT_SEC_BASE + 22)#define INT_GPIO5 (INT_SEC_BASE + 23)#define INT_CPU0_PMU_INTR (INT_SEC_BASE + 24) -#define INT_CPU2_PMU_INTR (INT_SEC_BASE + 25) +#define INT_CPU1_PMU_INTR (INT_SEC_BASE + 25)#define INT_SEC_RES_26 (INT_SEC_BASE + 26)#define INT_S_LINK1 (INT_SEC_BASE + 27)#define INT_APB_DMA_COP (INT_SEC_BASE + 28)
Signature · 1 line
1.6.3.3
PATCH 1/1 ARM: tegra: register PMU IRQs with PMU framework
Quoted 79 lines · Will Deacon
The Tegra Harmony board contains a dual-core Cortex-A9 and can therefore make use of the hardware performance counters on the CPU.
This patch fixes a typo in the PMU IRQ definitions and registers the interrupts as a
platform_devicewith the PMU framework.Cc Colin Cross <[email protected]>Cc Linux Tegra Mailing List <[email protected]>Signed-off-by Will Deacon <[email protected]>---
This patch was taken against 2.6.36-rc1 but has not even been compile-tested because of the following errors:
arch/arm/mach-tegra/board-harmony.c: In function 'tegra_harmony_fixup':arch/arm/mach-tegra/board-harmony.c:116: error: 'struct membank' has no member named 'node'arch/arm/mach-tegra/board-harmony.c:116: error: implicit declaration of function 'PHYS_TO_NID'arch/arm/mach-tegra/board-harmony.c:119: error: 'struct membank' has no member named 'node'?arch/arm/mach-tegra/board-harmony.c ? ? | ? 22 ++++++++++++++++++++++ ?arch/arm/mach-tegra/include/mach/irqs.h | ? ?2 +-
?2 files changed, 23 insertions(+), 1 deletions(-)arch/arm/mach-tegra/board-harmony.c +0
-0@@ -26,6 +26,7 @@?#include <
asm/mach-types.h>
?#include <asm/mach/arch.h>
?#include <asm/mach/time.h>
+#include <asm/pmu.h>
?#include <asm/setup.h>?#include <
mach/iomap.h>arch/arm/mach-tegra/board-harmony.c +21
-0@@ -82,8 +83,29 @@ static struct platform_device debug_uart = { ? ? ? ?}, ?}; +static struct resource pmu_resources[] = { + ? ? ? [0] = { + ? ? ? ? ? ? ? .start ?= INT_CPU0_PMU_INTR, + ? ? ? ? ? ? ? .end ? ?= INT_CPU0_PMU_INTR, + ? ? ? ? ? ? ? .flags ?= IORESOURCE_IRQ, + ? ? ? }, + ? ? ? [1] = { + ? ? ? ? ? ? ? .start ?= INT_CPU1_PMU_INTR, + ? ? ? ? ? ? ? .end ? ?= INT_CPU1_PMU_INTR, + ? ? ? ? ? ? ? .flags ?= IORESOURCE_IRQ, + ? ? ? }, +}; + +static struct platform_device pmu_device = { + ? ? ? .name ? ? ? ? ? = "arm-pmu", + ? ? ? .id ? ? ? ? ? ? = ARM_PMU_DEVICE_CPU, + ? ? ? .num_resources ?= ARRAY_SIZE(pmu_resources), + ? ? ? .resource ? ? ? = pmu_resources, +}; + ?static struct platform_device *harmony_devices[] __initdata = { ? ? ? ?&debug_uart, + ? ? ? &pmu_device, ?}; ?static void __init tegra_harmony_fixup(struct machine_desc *desc,arch/arm/mach-tegra/include/mach/irqs.h +1
-2@@ -87,7 +87,7 @@ ?#define INT_SYS_STATS_MON ? ? ? ? ? ? ?(INT_SEC_BASE + 22) ?#define INT_GPIO5 ? ? ? ? ? ? ? ? ? ? ?(INT_SEC_BASE + 23) ?#define INT_CPU0_PMU_INTR ? ? ? ? ? ? ?(INT_SEC_BASE + 24) -#define INT_CPU2_PMU_INTR ? ? ? ? ? ? ?(INT_SEC_BASE + 25) +#define INT_CPU1_PMU_INTR ? ? ? ? ? ? ?(INT_SEC_BASE + 25) ?#define INT_SEC_RES_26 ? ? ? ? ? ? ? ? (INT_SEC_BASE + 26) ?#define INT_S_LINK1 ? ? ? ? ? ? ? ? ? ?(INT_SEC_BASE + 27) ?#define INT_APB_DMA_COP ? ? ? ? ? ? ? ? ? ? ? ?(INT_SEC_BASE + 28) --
Quoted 3 lines
1.6.3.3
Thanks Will, I added these to common.c in the linux-tegra tree, and to the harmony and ventana boards.