From patchwork Thu Nov 8 13:40:47 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 1715891 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 30995DF280 for ; Thu, 8 Nov 2012 13:42:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751505Ab2KHNmL (ORCPT ); Thu, 8 Nov 2012 08:42:11 -0500 Received: from mail-pb0-f46.google.com ([209.85.160.46]:65516 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751193Ab2KHNmL (ORCPT ); Thu, 8 Nov 2012 08:42:11 -0500 Received: by mail-pb0-f46.google.com with SMTP id rr4so2048886pbb.19 for ; Thu, 08 Nov 2012 05:42:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=LEAYZBDpqJ9A86KK/yy41zG8u/XWBPU2R5vUCoRfN4Y=; b=ADDfTiy6aOEjF9DCiA+spv0+kcxRxOoxZ5laSM6sCwGrm3A/d+swv2K/sULJofY97R 7oGzLiaYArHV3hS+/Fc9ZZGUaeWcBJjfInYj5RSN83NcKqm8tvxPxojIynsV4NuHNnqt N0In4tr8WGyWjUDumvPrj1kyge3jN/Q41Lv6lD9ue4yGW2UEQulHe2eDGjzQfR/hX4M4 P3zDARQdqzKREe4llcS0UdPr8j4QrPtaeAWSJCh1YD6inbmNjsAJrxIYgLspc3czpQN6 Lg5aCIH0yH2dC7yxoLQnP7oH/12sca7JvabDUxNjudgZs7VPl+Ep6IacARA9g3A8INTH Y75g== Received: by 10.66.77.201 with SMTP id u9mr22574462paw.6.1352382130733; Thu, 08 Nov 2012 05:42:10 -0800 (PST) Received: from localhost ([122.167.75.112]) by mx.google.com with ESMTPS id gq10sm10374612pbc.54.2012.11.08.05.42.07 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 08 Nov 2012 05:42:10 -0800 (PST) From: Viresh Kumar To: dmitry.torokhov@gmail.com Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, spear-devel@list.st.com, Viresh Kumar Subject: [PATCH 1/3] input: spear-keyboard: Use devm_*() routines Date: Thu, 8 Nov 2012 19:10:47 +0530 Message-Id: <9f07bb7dbf29978970d901bbe89add0a333cc925.1352381962.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 1.7.12.rc2.18.g61b472e X-Gm-Message-State: ALoCoQmD5OJZBzrIcOWJZR/cVrW1qYl714U5QjnnvFoukazo2cgM0CRxx5Cq6oN6u4CRzfhqVIOb Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org This patch frees spear-keyboard driver from tension of freeing resources :) devm_* derivatives of multiple routines are used while allocating resources, which would be freed automatically by kernel. Signed-off-by: Viresh Kumar --- drivers/input/keyboard/spear-keyboard.c | 37 +++++++++++---------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c index c7ca97f..1d24fb2 100644 --- a/drivers/input/keyboard/spear-keyboard.c +++ b/drivers/input/keyboard/spear-keyboard.c @@ -203,7 +203,7 @@ static int __devinit spear_kbd_probe(struct platform_device *pdev) return irq; } - kbd = kzalloc(sizeof(*kbd), GFP_KERNEL); + kbd = devm_kzalloc(&pdev->dev, sizeof(*kbd), GFP_KERNEL); input_dev = input_allocate_device(); if (!kbd || !input_dev) { dev_err(&pdev->dev, "out of memory\n"); @@ -224,25 +224,25 @@ static int __devinit spear_kbd_probe(struct platform_device *pdev) kbd->suspended_rate = pdata->suspended_rate; } - kbd->res = request_mem_region(res->start, resource_size(res), - pdev->name); + kbd->res = devm_request_mem_region(&pdev->dev, res->start, + resource_size(res), pdev->name); if (!kbd->res) { dev_err(&pdev->dev, "keyboard region already claimed\n"); error = -EBUSY; goto err_free_mem; } - kbd->io_base = ioremap(res->start, resource_size(res)); + kbd->io_base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); if (!kbd->io_base) { dev_err(&pdev->dev, "ioremap failed for kbd_region\n"); error = -ENOMEM; - goto err_release_mem_region; + goto err_free_mem; } - kbd->clk = clk_get(&pdev->dev, NULL); + kbd->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(kbd->clk)) { error = PTR_ERR(kbd->clk); - goto err_iounmap; + goto err_free_mem; } input_dev->name = "Spear Keyboard"; @@ -259,7 +259,7 @@ static int __devinit spear_kbd_probe(struct platform_device *pdev) kbd->keycodes, input_dev); if (error) { dev_err(&pdev->dev, "Failed to build keymap\n"); - goto err_put_clk; + goto err_free_mem; } if (kbd->rep) @@ -268,16 +268,17 @@ static int __devinit spear_kbd_probe(struct platform_device *pdev) input_set_drvdata(input_dev, kbd); - error = request_irq(irq, spear_kbd_interrupt, 0, "keyboard", kbd); + error = devm_request_irq(&pdev->dev, irq, spear_kbd_interrupt, 0, + "keyboard", kbd); if (error) { dev_err(&pdev->dev, "request_irq fail\n"); - goto err_put_clk; + goto err_free_mem; } error = input_register_device(input_dev); if (error) { dev_err(&pdev->dev, "Unable to register keyboard device\n"); - goto err_free_irq; + goto err_free_mem; } device_init_wakeup(&pdev->dev, 1); @@ -285,17 +286,8 @@ static int __devinit spear_kbd_probe(struct platform_device *pdev) return 0; -err_free_irq: - free_irq(kbd->irq, kbd); -err_put_clk: - clk_put(kbd->clk); -err_iounmap: - iounmap(kbd->io_base); -err_release_mem_region: - release_mem_region(res->start, resource_size(res)); err_free_mem: input_free_device(input_dev); - kfree(kbd); return error; } @@ -304,12 +296,7 @@ static int __devexit spear_kbd_remove(struct platform_device *pdev) { struct spear_kbd *kbd = platform_get_drvdata(pdev); - free_irq(kbd->irq, kbd); input_unregister_device(kbd->input); - clk_put(kbd->clk); - iounmap(kbd->io_base); - release_mem_region(kbd->res->start, resource_size(kbd->res)); - kfree(kbd); device_init_wakeup(&pdev->dev, 0); platform_set_drvdata(pdev, NULL);