Merge remote branch 'nouveau/for-airlied' of /ssd/git/drm-nouveau-next into drm-fixes
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-davinci / cpuidle.c
index 97a90f36fc92cd3761c1054f0b2dab5120bd965f..bd59f31b8a95b2a04e0f0d8de50c9122d1831e38 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/proc-fns.h>
 
 #include <mach/cpuidle.h>
+#include <mach/memory.h>
 
 #define DAVINCI_CPUIDLE_MAX_STATES     2
 
@@ -39,10 +40,6 @@ static struct cpuidle_driver davinci_idle_driver = {
 static DEFINE_PER_CPU(struct cpuidle_device, davinci_cpuidle_device);
 static void __iomem *ddr2_reg_base;
 
-#define DDR2_SDRCR_OFFSET      0xc
-#define DDR2_SRPD_BIT          BIT(23)
-#define DDR2_LPMODEN_BIT       BIT(31)
-
 static void davinci_save_ddr_power(int enter, bool pdown)
 {
        u32 val;
@@ -109,8 +106,6 @@ static int __init davinci_cpuidle_probe(struct platform_device *pdev)
        int ret;
        struct cpuidle_device *device;
        struct davinci_cpuidle_config *pdata = pdev->dev.platform_data;
-       struct resource *ddr2_regs;
-       resource_size_t len;
 
        device = &per_cpu(davinci_cpuidle_device, smp_processor_id());
 
@@ -119,28 +114,12 @@ static int __init davinci_cpuidle_probe(struct platform_device *pdev)
                return -ENOENT;
        }
 
-       ddr2_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!ddr2_regs) {
-               dev_err(&pdev->dev, "cannot get DDR2 controller register base");
-               return -ENODEV;
-       }
-
-       len = resource_size(ddr2_regs);
-
-       ddr2_regs = request_mem_region(ddr2_regs->start, len, ddr2_regs->name);
-       if (!ddr2_regs)
-               return -EBUSY;
-
-       ddr2_reg_base = ioremap(ddr2_regs->start, len);
-       if (!ddr2_reg_base) {
-               ret = -ENOMEM;
-               goto ioremap_fail;
-       }
+       ddr2_reg_base = pdata->ddr2_ctlr_base;
 
        ret = cpuidle_register_driver(&davinci_idle_driver);
        if (ret) {
                dev_err(&pdev->dev, "failed to register driver\n");
-               goto driver_register_fail;
+               return ret;
        }
 
        /* Wait for interrupt state */
@@ -167,18 +146,11 @@ static int __init davinci_cpuidle_probe(struct platform_device *pdev)
        ret = cpuidle_register_device(device);
        if (ret) {
                dev_err(&pdev->dev, "failed to register device\n");
-               goto device_register_fail;
+               cpuidle_unregister_driver(&davinci_idle_driver);
+               return ret;
        }
 
        return 0;
-
-device_register_fail:
-       cpuidle_unregister_driver(&davinci_idle_driver);
-driver_register_fail:
-       iounmap(ddr2_reg_base);
-ioremap_fail:
-       release_mem_region(ddr2_regs->start, len);
-       return ret;
 }
 
 static struct platform_driver davinci_cpuidle_driver = {