From d80945e3b7e120eaa9029bc0b57c59f9e05f132b Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Wed, 10 Oct 2012 05:02:30 -0300 Subject: [PATCH] --- yaml --- r: 357015 b: refs/heads/master c: f8cabc3628f047fc45c62f0c4a38a88febbf8383 h: refs/heads/master i: 357013: fbbf9e31f73dc15263b37cf91a1f4c2f2591ab31 357011: 3c5671a4cc437df5e1363776af824a4cd843a373 357007: 666a709b13614124022577efa09b440e739dbe62 v: v3 --- [refs] | 2 +- .../platform/soc_camera/sh_mobile_csi2.c | 23 ++++--------------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/[refs] b/[refs] index 2bf1ba5b23a2..2bc0fa929831 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cea4c9e46c4f656a81c93f09b5e3bde38bebb160 +refs/heads/master: f8cabc3628f047fc45c62f0c4a38a88febbf8383 diff --git a/trunk/drivers/media/platform/soc_camera/sh_mobile_csi2.c b/trunk/drivers/media/platform/soc_camera/sh_mobile_csi2.c index 05286500b4d4..c573be702641 100644 --- a/trunk/drivers/media/platform/soc_camera/sh_mobile_csi2.c +++ b/trunk/drivers/media/platform/soc_camera/sh_mobile_csi2.c @@ -318,23 +318,16 @@ static __devinit int sh_csi2_probe(struct platform_device *pdev) return -EINVAL; } - priv = kzalloc(sizeof(struct sh_csi2), GFP_KERNEL); + priv = devm_kzalloc(&pdev->dev, sizeof(struct sh_csi2), GFP_KERNEL); if (!priv) return -ENOMEM; priv->irq = irq; - if (!request_mem_region(res->start, resource_size(res), pdev->name)) { - dev_err(&pdev->dev, "CSI2 register region already claimed\n"); - ret = -EBUSY; - goto ereqreg; - } - - priv->base = ioremap(res->start, resource_size(res)); + priv->base = devm_request_and_ioremap(&pdev->dev, res); if (!priv->base) { - ret = -ENXIO; dev_err(&pdev->dev, "Unable to ioremap CSI2 registers.\n"); - goto eremap; + return -ENXIO; } priv->pdev = pdev; @@ -357,11 +350,7 @@ static __devinit int sh_csi2_probe(struct platform_device *pdev) return 0; esdreg: - iounmap(priv->base); -eremap: - release_mem_region(res->start, resource_size(res)); -ereqreg: - kfree(priv); + platform_set_drvdata(pdev, NULL); return ret; } @@ -369,14 +358,10 @@ static __devinit int sh_csi2_probe(struct platform_device *pdev) static __devexit int sh_csi2_remove(struct platform_device *pdev) { struct sh_csi2 *priv = platform_get_drvdata(pdev); - struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); v4l2_device_unregister_subdev(&priv->subdev); pm_runtime_disable(&pdev->dev); - iounmap(priv->base); - release_mem_region(res->start, resource_size(res)); platform_set_drvdata(pdev, NULL); - kfree(priv); return 0; }