From patchwork Fri Dec 12 04:17:41 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Lin X-Patchwork-Id: 420360 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 70DD91400A0 for ; Fri, 12 Dec 2014 15:17:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759802AbaLLERq (ORCPT ); Thu, 11 Dec 2014 23:17:46 -0500 Received: from mail-pa0-f46.google.com ([209.85.220.46]:46978 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759586AbaLLERq (ORCPT ); Thu, 11 Dec 2014 23:17:46 -0500 Received: by mail-pa0-f46.google.com with SMTP id lf10so5787594pab.5 for ; Thu, 11 Dec 2014 20:17:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:subject:from:to:cc:date:content-type :mime-version:content-transfer-encoding; bh=s49tGNCYLHAiIsvKc/lNEFRjnckmQXEKz+rvBOA13Jk=; b=ksyX43FAb/8f9xylidBMAP13JEUv0WMpKa6PWlc25aIUhL7r5BYZCze+X47U+choL8 pBt2D3Psuwm2n4wEn4YGMM1mDEanYKcTlgBJOmfUqbAD2zThrxiwxpLZ7zXbi6l2r66x 7xCWhcQNycaSM25HBr9vvqkcsSE868bAJjjCPY/yxwWzDnx6rt48+Ihh9lmgeb7bkcDp JM37sYh4dqcVlc8sLpRbdnHu2b3IfLzt7KnUt5l+RQ+o2CHbS8Z4+9YyP18ZtTK8cZhc uKoVkG57kscIZLhh6rNWgeFgbd716DNXc2xcYjbh+oguAbsu0fWA5D9PnsfC+VGzTchd BRMA== X-Gm-Message-State: ALoCoQnDRkygFxRQbQCfou59CsjeS9fBeNRjEC9kCbXg+3sW5cqZC1iXXLVxc/PRxDS9d6fWqHvT X-Received: by 10.68.69.1 with SMTP id a1mr23346008pbu.162.1418357865429; Thu, 11 Dec 2014 20:17:45 -0800 (PST) Received: from [192.168.0.104] (218-164-102-245.dynamic.hinet.net. [218.164.102.245]) by mx.google.com with ESMTPSA id my2sm127623pdb.86.2014.12.11.20.17.43 for (version=TLSv1.2 cipher=AES128-GCM-SHA256 bits=128/128); Thu, 11 Dec 2014 20:17:44 -0800 (PST) Message-ID: <1418357861.1093.1.camel@phoenix> Subject: [PATCH] gpio: vx855: Switch to use managed resources APIs From: Axel Lin To: Linus Walleij , Alexandre Courbot Cc: Harald Welte , "linux-gpio@vger.kernel.org" Date: Fri, 12 Dec 2014 12:17:41 +0800 X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Use devm_* APIs to simplify the code a bit. Signed-off-by: Axel Lin Acked-by: Alexandre Courbot --- drivers/gpio/gpio-vx855.c | 44 ++++++-------------------------------------- 1 file changed, 6 insertions(+), 38 deletions(-) diff --git a/drivers/gpio/gpio-vx855.c b/drivers/gpio/gpio-vx855.c index 9d21d2f..57b470d 100644 --- a/drivers/gpio/gpio-vx855.c +++ b/drivers/gpio/gpio-vx855.c @@ -52,8 +52,6 @@ struct vx855_gpio { spinlock_t lock; u32 io_gpi; u32 io_gpo; - bool gpi_reserved; - bool gpo_reserved; }; /* resolve a GPIx into the corresponding bit position */ @@ -224,14 +222,13 @@ static int vx855gpio_probe(struct platform_device *pdev) struct resource *res_gpi; struct resource *res_gpo; struct vx855_gpio *vg; - int ret; res_gpi = platform_get_resource(pdev, IORESOURCE_IO, 0); res_gpo = platform_get_resource(pdev, IORESOURCE_IO, 1); if (!res_gpi || !res_gpo) return -EBUSY; - vg = kzalloc(sizeof(*vg), GFP_KERNEL); + vg = devm_kzalloc(&pdev->dev, sizeof(*vg), GFP_KERNEL); if (!vg) return -ENOMEM; @@ -250,56 +247,27 @@ static int vx855gpio_probe(struct platform_device *pdev) * succeed. Ignore and continue. */ - if (!request_region(res_gpi->start, resource_size(res_gpi), - MODULE_NAME "_gpi")) + if (!devm_request_region(&pdev->dev, res_gpi->start, + resource_size(res_gpi), MODULE_NAME "_gpi")) dev_warn(&pdev->dev, "GPI I/O resource busy, probably claimed by ACPI\n"); - else - vg->gpi_reserved = true; - if (!request_region(res_gpo->start, resource_size(res_gpo), - MODULE_NAME "_gpo")) + if (!devm_request_region(&pdev->dev, res_gpo->start, + resource_size(res_gpo), MODULE_NAME "_gpo")) dev_warn(&pdev->dev, "GPO I/O resource busy, probably claimed by ACPI\n"); - else - vg->gpo_reserved = true; vx855gpio_gpio_setup(vg); - ret = gpiochip_add(&vg->gpio); - if (ret) { - dev_err(&pdev->dev, "failed to register GPIOs\n"); - goto out_release; - } - - return 0; - -out_release: - if (vg->gpi_reserved) - release_region(res_gpi->start, resource_size(res_gpi)); - if (vg->gpo_reserved) - release_region(res_gpi->start, resource_size(res_gpo)); - kfree(vg); - return ret; + return gpiochip_add(&vg->gpio); } static int vx855gpio_remove(struct platform_device *pdev) { struct vx855_gpio *vg = platform_get_drvdata(pdev); - struct resource *res; gpiochip_remove(&vg->gpio); - if (vg->gpi_reserved) { - res = platform_get_resource(pdev, IORESOURCE_IO, 0); - release_region(res->start, resource_size(res)); - } - if (vg->gpo_reserved) { - res = platform_get_resource(pdev, IORESOURCE_IO, 1); - release_region(res->start, resource_size(res)); - } - - kfree(vg); return 0; }