diff options
Diffstat (limited to 'arch/arm/mach-davinci/cpuidle.c')
-rw-r--r-- | arch/arm/mach-davinci/cpuidle.c | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/arch/arm/mach-davinci/cpuidle.c b/arch/arm/mach-davinci/cpuidle.c index 97a90f36fc92..bd59f31b8a95 100644 --- a/arch/arm/mach-davinci/cpuidle.c +++ b/arch/arm/mach-davinci/cpuidle.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/proc-fns.h> | 19 | #include <asm/proc-fns.h> |
20 | 20 | ||
21 | #include <mach/cpuidle.h> | 21 | #include <mach/cpuidle.h> |
22 | #include <mach/memory.h> | ||
22 | 23 | ||
23 | #define DAVINCI_CPUIDLE_MAX_STATES 2 | 24 | #define DAVINCI_CPUIDLE_MAX_STATES 2 |
24 | 25 | ||
@@ -39,10 +40,6 @@ static struct cpuidle_driver davinci_idle_driver = { | |||
39 | static DEFINE_PER_CPU(struct cpuidle_device, davinci_cpuidle_device); | 40 | static DEFINE_PER_CPU(struct cpuidle_device, davinci_cpuidle_device); |
40 | static void __iomem *ddr2_reg_base; | 41 | static void __iomem *ddr2_reg_base; |
41 | 42 | ||
42 | #define DDR2_SDRCR_OFFSET 0xc | ||
43 | #define DDR2_SRPD_BIT BIT(23) | ||
44 | #define DDR2_LPMODEN_BIT BIT(31) | ||
45 | |||
46 | static void davinci_save_ddr_power(int enter, bool pdown) | 43 | static void davinci_save_ddr_power(int enter, bool pdown) |
47 | { | 44 | { |
48 | u32 val; | 45 | u32 val; |
@@ -109,8 +106,6 @@ static int __init davinci_cpuidle_probe(struct platform_device *pdev) | |||
109 | int ret; | 106 | int ret; |
110 | struct cpuidle_device *device; | 107 | struct cpuidle_device *device; |
111 | struct davinci_cpuidle_config *pdata = pdev->dev.platform_data; | 108 | struct davinci_cpuidle_config *pdata = pdev->dev.platform_data; |
112 | struct resource *ddr2_regs; | ||
113 | resource_size_t len; | ||
114 | 109 | ||
115 | device = &per_cpu(davinci_cpuidle_device, smp_processor_id()); | 110 | device = &per_cpu(davinci_cpuidle_device, smp_processor_id()); |
116 | 111 | ||
@@ -119,28 +114,12 @@ static int __init davinci_cpuidle_probe(struct platform_device *pdev) | |||
119 | return -ENOENT; | 114 | return -ENOENT; |
120 | } | 115 | } |
121 | 116 | ||
122 | ddr2_regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 117 | ddr2_reg_base = pdata->ddr2_ctlr_base; |
123 | if (!ddr2_regs) { | ||
124 | dev_err(&pdev->dev, "cannot get DDR2 controller register base"); | ||
125 | return -ENODEV; | ||
126 | } | ||
127 | |||
128 | len = resource_size(ddr2_regs); | ||
129 | |||
130 | ddr2_regs = request_mem_region(ddr2_regs->start, len, ddr2_regs->name); | ||
131 | if (!ddr2_regs) | ||
132 | return -EBUSY; | ||
133 | |||
134 | ddr2_reg_base = ioremap(ddr2_regs->start, len); | ||
135 | if (!ddr2_reg_base) { | ||
136 | ret = -ENOMEM; | ||
137 | goto ioremap_fail; | ||
138 | } | ||
139 | 118 | ||
140 | ret = cpuidle_register_driver(&davinci_idle_driver); | 119 | ret = cpuidle_register_driver(&davinci_idle_driver); |
141 | if (ret) { | 120 | if (ret) { |
142 | dev_err(&pdev->dev, "failed to register driver\n"); | 121 | dev_err(&pdev->dev, "failed to register driver\n"); |
143 | goto driver_register_fail; | 122 | return ret; |
144 | } | 123 | } |
145 | 124 | ||
146 | /* Wait for interrupt state */ | 125 | /* Wait for interrupt state */ |
@@ -167,18 +146,11 @@ static int __init davinci_cpuidle_probe(struct platform_device *pdev) | |||
167 | ret = cpuidle_register_device(device); | 146 | ret = cpuidle_register_device(device); |
168 | if (ret) { | 147 | if (ret) { |
169 | dev_err(&pdev->dev, "failed to register device\n"); | 148 | dev_err(&pdev->dev, "failed to register device\n"); |
170 | goto device_register_fail; | 149 | cpuidle_unregister_driver(&davinci_idle_driver); |
150 | return ret; | ||
171 | } | 151 | } |
172 | 152 | ||
173 | return 0; | 153 | return 0; |
174 | |||
175 | device_register_fail: | ||
176 | cpuidle_unregister_driver(&davinci_idle_driver); | ||
177 | driver_register_fail: | ||
178 | iounmap(ddr2_reg_base); | ||
179 | ioremap_fail: | ||
180 | release_mem_region(ddr2_regs->start, len); | ||
181 | return ret; | ||
182 | } | 154 | } |
183 | 155 | ||
184 | static struct platform_driver davinci_cpuidle_driver = { | 156 | static struct platform_driver davinci_cpuidle_driver = { |