From patchwork Thu Nov 29 09:38:58 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 1820931 Return-Path: X-Original-To: patchwork-linux-media@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 6AE6A3FC5A for ; Thu, 29 Nov 2012 09:39:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751928Ab2K2JjF (ORCPT ); Thu, 29 Nov 2012 04:39:05 -0500 Received: from moutng.kundenserver.de ([212.227.17.9]:53830 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751872Ab2K2JjD (ORCPT ); Thu, 29 Nov 2012 04:39:03 -0500 Received: from axis700.grange (dslb-178-006-249-221.pools.arcor-ip.net [178.6.249.221]) by mrelayeu.kundenserver.de (node=mreu3) with ESMTP (Nemesis) id 0M7hzg-1TIEZJ0Vt2-00vF5V; Thu, 29 Nov 2012 10:39:01 +0100 Received: from 6a.grange (6a.grange [192.168.1.11]) by axis700.grange (Postfix) with ESMTPS id AA6E340B99 for ; Thu, 29 Nov 2012 10:39:00 +0100 (CET) Received: from lyakh by 6a.grange with local (Exim 4.72) (envelope-from ) id 1Te0aB-0006l6-Ff for linux-media@vger.kernel.org; Thu, 29 Nov 2012 10:38:59 +0100 From: Guennadi Liakhovetski To: linux-media@vger.kernel.org Subject: [PATCH 1/2] media: sh_mobile_csi2: use managed memory and resource allocations Date: Thu, 29 Nov 2012 10:38:58 +0100 Message-Id: <1354181939-25952-1-git-send-email-g.liakhovetski@gmx.de> X-Mailer: git-send-email 1.7.2.5 X-Provags-ID: V02:K0:x4QMHSDB5WHdTGRgl4JWyKmCdvn6vrmGUJrTVH7YFxR tGFJA346NhZLMWp2FjOIVk/9da5SFcAT6q3BM8mX58Pg8q+H/L RDPj16EbQrlwMxEYaVUACWPC9mxJqtsoGHkxzkCq08rXNGt1Vr omGD8NmwpyxEd8qxETJEMvpyKN1Q+MGGPpXjqOHIwy/+NtqyuH uURm3MajPvJZWCZeaz40+nhzcLC3sM2Y/Gb1vIk4DxcqKxaIw+ g/oBgawxZDoMHCpCrMREEbfDJcr2T5++IUmDWKyDSjyxjUMX6k JDwp5Rj0GGfnbqyOYZ1J0ptAcVlHmfO2xYUxJ0Nmh2i1pVU41c VoqJPCbFNuw0AfZ2whMGvku3SGAFJBKOswMH4ZrJYXCI1Yu58c EuOT3lqoVvHRQ== Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Use managed allocations to simplify error handling and clean up paths. Signed-off-by: Guennadi Liakhovetski --- drivers/media/platform/soc_camera/sh_mobile_csi2.c | 23 +++---------------- 1 files changed, 4 insertions(+), 19 deletions(-) diff --git a/drivers/media/platform/soc_camera/sh_mobile_csi2.c b/drivers/media/platform/soc_camera/sh_mobile_csi2.c index 0528650..c573be7 100644 --- a/drivers/media/platform/soc_camera/sh_mobile_csi2.c +++ b/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 @@ ereqreg: 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; }