marvell-ccic: switch to resource managed allocation and request
PATCH 7/7 marvell-ccic: switch to resource managed allocation and request
From: Libin Yang <[email protected]>
This patch switchs to resource managed allocation and request in mmp-driver. It can remove free resource operations.
Signed-off-by Albert Wang <[email protected]>
Signed-off-by Libin Yang <[email protected]>
Acked-by Jonathan Corbet <[email protected]>
--- drivers/media/platform/marvell-ccic/mmp-driver.c | 60 ++++++++-------------- 1 file changed, 21 insertions(+), 39 deletions(-)
drivers/media/platform/marvell-ccic/mmp-driver.c +21 -39
@@ -352,7 +352,7 @@ static int mmpcam_probe(struct platform_device *pdev)if (!pdata)return -ENODEV ; - cam =kzalloc (sizeof (*cam),GFP_KERNEL ); + cam =devm_kzalloc (&pdev->dev,sizeof (*cam),GFP_KERNEL );if (cam ==NULL )return -ENOMEM ; cam->pdev = pdev;
@@ -383,14 +383,12 @@ static int mmpcam_probe(struct platform_device *pdev) res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (res ==NULL ) {dev_err (&pdev->dev,"no iomem resource!\n" ); - ret = -ENODEV ; - goto out_free; +return -ENODEV ; } - mcam->regs =ioremap (res->start,resource_size (res)); + mcam->regs =devm_request_and_ioremap (&pdev->dev, res);if (mcam->regs ==NULL ) {dev_err (&pdev->dev,"MMIO ioremap fail\n" ); - ret = -ENODEV ; - goto out_free; +return -ENODEV ; }/* * Power/clock memory is elsewhere; get it too. Perhaps this
@@ -399,14 +397,12 @@ static int mmpcam_probe(struct platform_device *pdev) res =platform_get_resource (pdev,IORESOURCE_MEM ,1 );if (res ==NULL ) {dev_err (&pdev->dev,"no power resource!\n" ); - ret = -ENODEV ; - goto out_unmap1; +return -ENODEV ; } - cam->power_regs =ioremap (res->start,resource_size (res)); + cam->power_regs =devm_request_and_ioremap (&pdev->dev, res);if (cam->power_regs ==NULL ) {dev_err (&pdev->dev,"power MMIO ioremap fail\n" ); - ret = -ENODEV ; - goto out_unmap1; +return -ENODEV ; }mcam_init_clk (mcam, pdata);
@@ -417,25 +413,28 @@ static int mmpcam_probe(struct platform_device *pdev)*/ mcam->i2c_adapter =platform_get_drvdata (pdata->i2c_device);if (mcam->i2c_adapter ==NULL ) { - ret = -ENODEV ;dev_err (&pdev->dev,"No i2c adapter\n" ); - goto out_unmap2; +return -ENODEV ; }/* * Sensor GPIO pins. */ - ret =gpio_request (pdata->sensor_power_gpio,"cam-power" ); + ret =devm_gpio_request (&pdev->dev, pdata->sensor_power_gpio, +"cam-power" ); +if (ret) {dev_err (&pdev->dev,"Can't get sensor power gpio %d" , pdata->sensor_power_gpio); - goto out_unmap2; +return ret; }gpio_direction_output (pdata->sensor_power_gpio,0 ); - ret =gpio_request (pdata->sensor_reset_gpio,"cam-reset" ); + ret =devm_gpio_request (&pdev->dev, pdata->sensor_reset_gpio, +"cam-reset" ); +if (ret) {dev_err (&pdev->dev,"Can't get sensor reset gpio %d" , pdata->sensor_reset_gpio); - goto out_gpio; +return ret; }gpio_direction_output (pdata->sensor_reset_gpio,0 );/*
@@ -443,10 +442,10 @@ static int mmpcam_probe(struct platform_device *pdev)*/ ret =mmpcam_power_up (mcam);if (ret) - goto out_gpio2; + goto out_power_down; ret =mccic_register (mcam);if (ret) - goto out_gpio2; + goto out_power_down;/* * Finally, set up our IRQ now that the core is ready to * deal with it.
@@ -457,8 +456,8 @@ static int mmpcam_probe(struct platform_device *pdev) goto out_unregister; } cam->irq = res->start; - ret =request_irq (cam->irq, mmpcam_irq,IRQF_SHARED , -"mmp-camera" , mcam); + ret =devm_request_irq (&pdev->dev, cam->irq, mmpcam_irq,IRQF_SHARED , +"mmp-camera" , mcam);if (ret ==0 ) {mmpcam_add_device (cam);return 0 ;
@@ -466,17 +465,8 @@ static int mmpcam_probe(struct platform_device *pdev) out_unregister:mccic_shutdown (mcam); -out_gpio2: +out_power_down:mmpcam_power_down (mcam); -gpio_free (pdata->sensor_reset_gpio); -out_gpio: -gpio_free (pdata->sensor_power_gpio); -out_unmap2: -iounmap (cam->power_regs); -out_unmap1: -iounmap (mcam->regs); -out_free: -kfree (cam);return ret; }
@@ -484,18 +474,10 @@ out_free:static int mmpcam_remove (struct mmp_camera *cam) {struct mcam_camera *mcam = &cam->mcam; -struct mmp_camera_platform_data *pdata;mmpcam_remove_device (cam); -free_irq (cam->irq, mcam);mccic_shutdown (mcam);mmpcam_power_down (mcam); - pdata = cam->pdev->dev.platform_data; -gpio_free (pdata->sensor_reset_gpio); -gpio_free (pdata->sensor_power_gpio); -iounmap (cam->power_regs); -iounmap (mcam->regs); -kfree (cam);return 0 ; }
Signature · 1 line
1.7.9.5