#include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
 
+#include <asm/pmu.h>
 #include <mach/udc.h>
 #include <mach/pxafb.h>
 #include <mach/mmc.h>
                dev_err(&dev->dev, "unable to register device: %d\n", ret);
 }
 
+static struct resource pxa_resource_pmu = {
+       .start  = IRQ_PMU,
+       .end    = IRQ_PMU,
+       .flags  = IORESOURCE_IRQ,
+};
+
+struct platform_device pxa_device_pmu = {
+       .name           = "arm-pmu",
+       .id             = ARM_PMU_DEVICE_CPU,
+       .resource       = &pxa_resource_pmu,
+       .num_resources  = 1,
+};
+
 static struct resource pxamci_resources[] = {
        [0] = {
                .start  = 0x41100000,
 
+extern struct platform_device pxa_device_pmu;
 extern struct platform_device pxa_device_mci;
 extern struct platform_device pxa3xx_device_mci2;
 extern struct platform_device pxa3xx_device_mci3;
 
 
 static struct platform_device *pxa25x_devices[] __initdata = {
        &pxa25x_device_udc,
+       &pxa_device_pmu,
        &pxa_device_i2s,
        &sa1100_device_rtc,
        &pxa25x_device_ssp,
 
 
 static struct platform_device *devices[] __initdata = {
        &pxa27x_device_udc,
+       &pxa_device_pmu,
        &pxa_device_i2s,
        &sa1100_device_rtc,
        &pxa_device_rtc,
 
 
 static struct platform_device *devices[] __initdata = {
        &pxa27x_device_udc,
+       &pxa_device_pmu,
        &pxa_device_i2s,
        &sa1100_device_rtc,
        &pxa_device_rtc,
 
 
 obj-y  := dma.o
 
-obj-$(CONFIG_ARCH_PXA)         += pmu.o
 obj-$(CONFIG_GENERIC_GPIO)     += gpio.o
 obj-$(CONFIG_PXA3xx)           += mfp.o
 obj-$(CONFIG_ARCH_MMP)         += mfp.o
 
+++ /dev/null
-/*
- * PMU IRQ registration for the PXA xscale PMU families.
- * Copyright (C) 2010 Will Deacon, ARM Ltd.
- *
- * 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.
- *
- */
-
-#include <linux/platform_device.h>
-#include <asm/pmu.h>
-#include <mach/irqs.h>
-
-static struct resource pmu_resource = {
-       .start  = IRQ_PMU,
-       .end    = IRQ_PMU,
-       .flags  = IORESOURCE_IRQ,
-};
-
-static struct platform_device pmu_device = {
-       .name           = "arm-pmu",
-       .id             = ARM_PMU_DEVICE_CPU,
-       .resource       = &pmu_resource,
-       .num_resources  = 1,
-};
-
-static int __init pxa_pmu_init(void)
-{
-       platform_device_register(&pmu_device);
-       return 0;
-}
-arch_initcall(pxa_pmu_init);