From mboxrd@z Thu Jan 1 00:00:00 1970 From: will.deacon@arm.com (Will Deacon) Date: Tue, 17 Aug 2010 14:31:43 +0100 Subject: [PATCH] ARM: tegra: register PMU IRQs with PMU framework Message-ID: <1282051903-366-1-git-send-email-will.deacon@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 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. Cc: Colin Cross Cc: Linux Tegra Mailing List Signed-off-by: Will Deacon --- 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(-) diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index 05e78dd..6c6a02b 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -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, diff --git a/arch/arm/mach-tegra/include/mach/irqs.h b/arch/arm/mach-tegra/include/mach/irqs.h index 20f640e..0a4ddc8 100644 --- a/arch/arm/mach-tegra/include/mach/irqs.h +++ b/arch/arm/mach-tegra/include/mach/irqs.h @@ -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) -- 1.6.3.3