aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/jz4740-adc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/jz4740-adc.c')
-rw-r--r--drivers/mfd/jz4740-adc.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c
index c6b6d7dda51..8619508f348 100644
--- a/drivers/mfd/jz4740-adc.c
+++ b/drivers/mfd/jz4740-adc.c
@@ -211,7 +211,7 @@ static int __devinit jz4740_adc_probe(struct platform_device *pdev)
211 int ret; 211 int ret;
212 int irq_base; 212 int irq_base;
213 213
214 adc = kmalloc(sizeof(*adc), GFP_KERNEL); 214 adc = devm_kzalloc(&pdev->dev, sizeof(*adc), GFP_KERNEL);
215 if (!adc) { 215 if (!adc) {
216 dev_err(&pdev->dev, "Failed to allocate driver structure\n"); 216 dev_err(&pdev->dev, "Failed to allocate driver structure\n");
217 return -ENOMEM; 217 return -ENOMEM;
@@ -221,30 +221,27 @@ static int __devinit jz4740_adc_probe(struct platform_device *pdev)
221 if (adc->irq < 0) { 221 if (adc->irq < 0) {
222 ret = adc->irq; 222 ret = adc->irq;
223 dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret); 223 dev_err(&pdev->dev, "Failed to get platform irq: %d\n", ret);
224 goto err_free; 224 return ret;
225 } 225 }
226 226
227 irq_base = platform_get_irq(pdev, 1); 227 irq_base = platform_get_irq(pdev, 1);
228 if (irq_base < 0) { 228 if (irq_base < 0) {
229 ret = irq_base; 229 dev_err(&pdev->dev, "Failed to get irq base: %d\n", irq_base);
230 dev_err(&pdev->dev, "Failed to get irq base: %d\n", ret); 230 return irq_base;
231 goto err_free;
232 } 231 }
233 232
234 mem_base = platform_get_resource(pdev, IORESOURCE_MEM, 0); 233 mem_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
235 if (!mem_base) { 234 if (!mem_base) {
236 ret = -ENOENT;
237 dev_err(&pdev->dev, "Failed to get platform mmio resource\n"); 235 dev_err(&pdev->dev, "Failed to get platform mmio resource\n");
238 goto err_free; 236 return -ENOENT;
239 } 237 }
240 238
241 /* Only request the shared registers for the MFD driver */ 239 /* Only request the shared registers for the MFD driver */
242 adc->mem = request_mem_region(mem_base->start, JZ_REG_ADC_STATUS, 240 adc->mem = request_mem_region(mem_base->start, JZ_REG_ADC_STATUS,
243 pdev->name); 241 pdev->name);
244 if (!adc->mem) { 242 if (!adc->mem) {
245 ret = -EBUSY;
246 dev_err(&pdev->dev, "Failed to request mmio memory region\n"); 243 dev_err(&pdev->dev, "Failed to request mmio memory region\n");
247 goto err_free; 244 return -EBUSY;
248 } 245 }
249 246
250 adc->base = ioremap_nocache(adc->mem->start, resource_size(adc->mem)); 247 adc->base = ioremap_nocache(adc->mem->start, resource_size(adc->mem));
@@ -301,9 +298,6 @@ err_iounmap:
301 iounmap(adc->base); 298 iounmap(adc->base);
302err_release_mem_region: 299err_release_mem_region:
303 release_mem_region(adc->mem->start, resource_size(adc->mem)); 300 release_mem_region(adc->mem->start, resource_size(adc->mem));
304err_free:
305 kfree(adc);
306
307 return ret; 301 return ret;
308} 302}
309 303
@@ -325,8 +319,6 @@ static int __devexit jz4740_adc_remove(struct platform_device *pdev)
325 319
326 platform_set_drvdata(pdev, NULL); 320 platform_set_drvdata(pdev, NULL);
327 321
328 kfree(adc);
329
330 return 0; 322 return 0;
331} 323}
332 324