From patchwork Wed Mar 13 04:21:24 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Estevam X-Patchwork-Id: 2261261 Return-Path: X-Original-To: patchwork-linux-input@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 DF25E3FCF6 for ; Wed, 13 Mar 2013 04:21:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751187Ab3CMEVh (ORCPT ); Wed, 13 Mar 2013 00:21:37 -0400 Received: from mail-ea0-f177.google.com ([209.85.215.177]:63970 "EHLO mail-ea0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750932Ab3CMEVg (ORCPT ); Wed, 13 Mar 2013 00:21:36 -0400 Received: by mail-ea0-f177.google.com with SMTP id r16so193798ead.8 for ; Tue, 12 Mar 2013 21:21:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=kqi7LbYdmuKddlhGmzfdgojfB6qgU+TPjFSBSZr2BU4=; b=aOb1c0PUN4eELqaB5OF/19vQM9cR9nBd8fWzPatGkInRA2NBG6q8c/8eCaMEidXd1Q IQrKHOT99ld0NID4c3PKShuEnITNg66E4+pAwcUel4ci76UgoFo1RA++WU6lNcCIoxlr T38029218yf5MOn0yjXTSIiv95eBarj7tEhXkAWAXaSn89lLqZEnnYRGXzN37rezD9ea devzEYGfiHIsh0L25QW4/VML7skiUI4ImYL4zl+FMGvLby1gKKxvkfPIiWtZqTx3zGjE TtWdVbkVoOuBxUFNI60gpNCGA2ECPEaoG3Oq/MaOkqccDghUuvHATWxATo99k7d7eg+q HknQ== X-Received: by 10.14.110.68 with SMTP id t44mr5003078eeg.25.1363148495148; Tue, 12 Mar 2013 21:21:35 -0700 (PDT) Received: from localhost.localdomain ([201.82.138.249]) by mx.google.com with ESMTPS id a1sm33489573eep.2.2013.03.12.21.21.31 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 12 Mar 2013 21:21:34 -0700 (PDT) From: Fabio Estevam To: dmitry.torokhov@gmail.com Cc: s.hauer@pengutronix.de, linux-input@vger.kernel.org, Fabio Estevam Subject: [PATCH] Input: imx_keypad - use devm_ functions Date: Wed, 13 Mar 2013 01:21:24 -0300 Message-Id: <1363148484-5920-1-git-send-email-festevam@gmail.com> X-Mailer: git-send-email 1.7.9.5 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org From: Fabio Estevam Using devm_ functions can make the code cleaner and simpler. Signed-off-by: Fabio Estevam --- drivers/input/keyboard/imx_keypad.c | 63 ++++++++--------------------------- 1 file changed, 14 insertions(+), 49 deletions(-) diff --git a/drivers/input/keyboard/imx_keypad.c b/drivers/input/keyboard/imx_keypad.c index 98f9113..09a7a04 100644 --- a/drivers/input/keyboard/imx_keypad.c +++ b/drivers/input/keyboard/imx_keypad.c @@ -448,24 +448,17 @@ static int imx_keypad_probe(struct platform_device *pdev) return -EINVAL; } - res = request_mem_region(res->start, resource_size(res), pdev->name); - if (res == NULL) { - dev_err(&pdev->dev, "failed to request I/O memory\n"); - return -EBUSY; - } - - input_dev = input_allocate_device(); + input_dev = devm_input_allocate_device(&pdev->dev); if (!input_dev) { dev_err(&pdev->dev, "failed to allocate the input device\n"); - error = -ENOMEM; - goto failed_rel_mem; + return -ENOMEM; } - keypad = kzalloc(sizeof(struct imx_keypad), GFP_KERNEL); + keypad = devm_kzalloc(&pdev->dev, sizeof(struct imx_keypad), + GFP_KERNEL); if (!keypad) { dev_err(&pdev->dev, "not enough memory for driver data\n"); - error = -ENOMEM; - goto failed_free_input; + return -ENOMEM; } keypad->input_dev = input_dev; @@ -475,18 +468,14 @@ static int imx_keypad_probe(struct platform_device *pdev) setup_timer(&keypad->check_matrix_timer, imx_keypad_check_for_events, (unsigned long) keypad); - keypad->mmio_base = ioremap(res->start, resource_size(res)); - if (keypad->mmio_base == NULL) { - dev_err(&pdev->dev, "failed to remap I/O memory\n"); - error = -ENOMEM; - goto failed_free_priv; - } + keypad->mmio_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(keypad->mmio_base)) + return PTR_ERR(keypad->mmio_base); - keypad->clk = clk_get(&pdev->dev, NULL); + keypad->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(keypad->clk)) { dev_err(&pdev->dev, "failed to get keypad clock\n"); - error = PTR_ERR(keypad->clk); - goto failed_unmap; + return PTR_ERR(keypad->clk); } /* Init the Input device */ @@ -502,7 +491,7 @@ static int imx_keypad_probe(struct platform_device *pdev) keypad->keycodes, input_dev); if (error) { dev_err(&pdev->dev, "failed to build keymap\n"); - goto failed_clock_put; + return error; } /* Search for rows and cols enabled */ @@ -527,44 +516,29 @@ static int imx_keypad_probe(struct platform_device *pdev) imx_keypad_inhibit(keypad); clk_disable_unprepare(keypad->clk); - error = request_irq(irq, imx_keypad_irq_handler, 0, + error = devm_request_irq(&pdev->dev, irq, imx_keypad_irq_handler, 0, pdev->name, keypad); if (error) { dev_err(&pdev->dev, "failed to request IRQ\n"); - goto failed_clock_put; + return error; } /* Register the input device */ error = input_register_device(input_dev); if (error) { dev_err(&pdev->dev, "failed to register input device\n"); - goto failed_free_irq; + return error; } platform_set_drvdata(pdev, keypad); device_init_wakeup(&pdev->dev, 1); return 0; - -failed_free_irq: - free_irq(irq, pdev); -failed_clock_put: - clk_put(keypad->clk); -failed_unmap: - iounmap(keypad->mmio_base); -failed_free_priv: - kfree(keypad); -failed_free_input: - input_free_device(input_dev); -failed_rel_mem: - release_mem_region(res->start, resource_size(res)); - return error; } static int imx_keypad_remove(struct platform_device *pdev) { struct imx_keypad *keypad = platform_get_drvdata(pdev); - struct resource *res; dev_dbg(&pdev->dev, ">%s\n", __func__); @@ -572,15 +546,6 @@ static int imx_keypad_remove(struct platform_device *pdev) input_unregister_device(keypad->input_dev); - free_irq(keypad->irq, keypad); - clk_put(keypad->clk); - - iounmap(keypad->mmio_base); - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - release_mem_region(res->start, resource_size(res)); - - kfree(keypad); - return 0; }