aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/marvell-ccic
diff options
context:
space:
mode:
authorLibin Yang <lbyang@marvell.com>2013-07-03 00:56:04 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-07-26 12:26:33 -0400
commit578e99d6cd98c58b68d9c3ad22b4e0c1528a2826 (patch)
tree40faed73eed6c23631ac3174cbd8edc731bc6242 /drivers/media/platform/marvell-ccic
parent0a0b3fb42f78eded6a8d1249c545224242d8999e (diff)
[media] marvell-ccic: switch to resource managed allocation and request
This patch switchs to resource managed allocation and request in mmp-driver. It can remove free resource operations. Signed-off-by: Albert Wang <twang13@marvell.com> Signed-off-by: Libin Yang <lbyang@marvell.com> Acked-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/platform/marvell-ccic')
-rw-r--r--drivers/media/platform/marvell-ccic/mmp-driver.c60
1 files changed, 22 insertions, 38 deletions
diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c
index 3665fbbf9ee7..f06daa4f2502 100644
--- a/drivers/media/platform/marvell-ccic/mmp-driver.c
+++ b/drivers/media/platform/marvell-ccic/mmp-driver.c
@@ -367,7 +367,7 @@ static int mmpcam_probe(struct platform_device *pdev)
367 if (!pdata) 367 if (!pdata)
368 return -ENODEV; 368 return -ENODEV;
369 369
370 cam = kzalloc(sizeof(*cam), GFP_KERNEL); 370 cam = devm_kzalloc(&pdev->dev, sizeof(*cam), GFP_KERNEL);
371 if (cam == NULL) 371 if (cam == NULL)
372 return -ENOMEM; 372 return -ENOMEM;
373 cam->pdev = pdev; 373 cam->pdev = pdev;
@@ -398,15 +398,11 @@ static int mmpcam_probe(struct platform_device *pdev)
398 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 398 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
399 if (res == NULL) { 399 if (res == NULL) {
400 dev_err(&pdev->dev, "no iomem resource!\n"); 400 dev_err(&pdev->dev, "no iomem resource!\n");
401 ret = -ENODEV; 401 return -ENODEV;
402 goto out_free;
403 }
404 mcam->regs = ioremap(res->start, resource_size(res));
405 if (mcam->regs == NULL) {
406 dev_err(&pdev->dev, "MMIO ioremap fail\n");
407 ret = -ENODEV;
408 goto out_free;
409 } 402 }
403 mcam->regs = devm_ioremap_resource(&pdev->dev, res);
404 if (IS_ERR(mcam->regs))
405 return PTR_ERR(mcam->regs);
410 mcam->regs_size = resource_size(res); 406 mcam->regs_size = resource_size(res);
411 /* 407 /*
412 * Power/clock memory is elsewhere; get it too. Perhaps this 408 * Power/clock memory is elsewhere; get it too. Perhaps this
@@ -415,40 +411,37 @@ static int mmpcam_probe(struct platform_device *pdev)
415 res = platform_get_resource(pdev, IORESOURCE_MEM, 1); 411 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
416 if (res == NULL) { 412 if (res == NULL) {
417 dev_err(&pdev->dev, "no power resource!\n"); 413 dev_err(&pdev->dev, "no power resource!\n");
418 ret = -ENODEV; 414 return -ENODEV;
419 goto out_unmap1;
420 }
421 cam->power_regs = ioremap(res->start, resource_size(res));
422 if (cam->power_regs == NULL) {
423 dev_err(&pdev->dev, "power MMIO ioremap fail\n");
424 ret = -ENODEV;
425 goto out_unmap1;
426 } 415 }
416 cam->power_regs = devm_ioremap_resource(&pdev->dev, res);
417 if (IS_ERR(cam->power_regs))
418 return PTR_ERR(cam->power_regs);
427 /* 419 /*
428 * Find the i2c adapter. This assumes, of course, that the 420 * Find the i2c adapter. This assumes, of course, that the
429 * i2c bus is already up and functioning. 421 * i2c bus is already up and functioning.
430 */ 422 */
431 mcam->i2c_adapter = platform_get_drvdata(pdata->i2c_device); 423 mcam->i2c_adapter = platform_get_drvdata(pdata->i2c_device);
432 if (mcam->i2c_adapter == NULL) { 424 if (mcam->i2c_adapter == NULL) {
433 ret = -ENODEV;
434 dev_err(&pdev->dev, "No i2c adapter\n"); 425 dev_err(&pdev->dev, "No i2c adapter\n");
435 goto out_unmap2; 426 return -ENODEV;
436 } 427 }
437 /* 428 /*
438 * Sensor GPIO pins. 429 * Sensor GPIO pins.
439 */ 430 */
440 ret = gpio_request(pdata->sensor_power_gpio, "cam-power"); 431 ret = devm_gpio_request(&pdev->dev, pdata->sensor_power_gpio,
432 "cam-power");
441 if (ret) { 433 if (ret) {
442 dev_err(&pdev->dev, "Can't get sensor power gpio %d", 434 dev_err(&pdev->dev, "Can't get sensor power gpio %d",
443 pdata->sensor_power_gpio); 435 pdata->sensor_power_gpio);
444 goto out_unmap2; 436 return ret;
445 } 437 }
446 gpio_direction_output(pdata->sensor_power_gpio, 0); 438 gpio_direction_output(pdata->sensor_power_gpio, 0);
447 ret = gpio_request(pdata->sensor_reset_gpio, "cam-reset"); 439 ret = devm_gpio_request(&pdev->dev, pdata->sensor_reset_gpio,
440 "cam-reset");
448 if (ret) { 441 if (ret) {
449 dev_err(&pdev->dev, "Can't get sensor reset gpio %d", 442 dev_err(&pdev->dev, "Can't get sensor reset gpio %d",
450 pdata->sensor_reset_gpio); 443 pdata->sensor_reset_gpio);
451 goto out_gpio; 444 return ret;
452 } 445 }
453 gpio_direction_output(pdata->sensor_reset_gpio, 0); 446 gpio_direction_output(pdata->sensor_reset_gpio, 0);
454 447
@@ -459,10 +452,10 @@ static int mmpcam_probe(struct platform_device *pdev)
459 */ 452 */
460 ret = mmpcam_power_up(mcam); 453 ret = mmpcam_power_up(mcam);
461 if (ret) 454 if (ret)
462 goto out_gpio2; 455 goto out_deinit_clk;
463 ret = mccic_register(mcam); 456 ret = mccic_register(mcam);
464 if (ret) 457 if (ret)
465 goto out_pwdn; 458 goto out_power_down;
466 /* 459 /*
467 * Finally, set up our IRQ now that the core is ready to 460 * Finally, set up our IRQ now that the core is ready to
468 * deal with it. 461 * deal with it.
@@ -473,8 +466,8 @@ static int mmpcam_probe(struct platform_device *pdev)
473 goto out_unregister; 466 goto out_unregister;
474 } 467 }
475 cam->irq = res->start; 468 cam->irq = res->start;
476 ret = request_irq(cam->irq, mmpcam_irq, IRQF_SHARED, 469 ret = devm_request_irq(&pdev->dev, cam->irq, mmpcam_irq, IRQF_SHARED,
477 "mmp-camera", mcam); 470 "mmp-camera", mcam);
478 if (ret == 0) { 471 if (ret == 0) {
479 mmpcam_add_device(cam); 472 mmpcam_add_device(cam);
480 return 0; 473 return 0;
@@ -482,19 +475,10 @@ static int mmpcam_probe(struct platform_device *pdev)
482 475
483out_unregister: 476out_unregister:
484 mccic_shutdown(mcam); 477 mccic_shutdown(mcam);
485out_pwdn: 478out_power_down:
486 mmpcam_power_down(mcam); 479 mmpcam_power_down(mcam);
487out_gpio2: 480out_deinit_clk:
488 mcam_deinit_clk(mcam); 481 mcam_deinit_clk(mcam);
489 gpio_free(pdata->sensor_reset_gpio);
490out_gpio:
491 gpio_free(pdata->sensor_power_gpio);
492out_unmap2:
493 iounmap(cam->power_regs);
494out_unmap1:
495 iounmap(mcam->regs);
496out_free:
497 kfree(cam);
498 return ret; 482 return ret;
499} 483}
500 484