From patchwork Fri Jul 6 18:34:36 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 1166891 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 088BE3FC33 for ; Fri, 6 Jul 2012 18:44:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753468Ab2GFSem (ORCPT ); Fri, 6 Jul 2012 14:34:42 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:46808 "EHLO mail-pb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751700Ab2GFSem (ORCPT ); Fri, 6 Jul 2012 14:34:42 -0400 Received: by pbbrp8 with SMTP id rp8so14997212pbb.19 for ; Fri, 06 Jul 2012 11:34:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=fNWy+D1AucZLgiglkyLaCB5uvwOoKXfXY0RdfdWOMb8=; b=hYKn9K3kYzFvuDt7gZdhj0jPTHzYlaQraW9wYLWfLVGzFOA0xaZYUxyvGpuB8bFTci YfGHc52gM/Dm7VG4/sDnpZKg7XoAIWp9f+kr2dps40SWVyzv1hOcMHjmxsOAEgS8RzqZ VanezejQexiIAwBPgAqtKERoNjw2BY6JMkeaST1lZxFVnh6gCbw9Cod2NfoYCJWMZ5ih DTFRLWpXK3g3aGr84kQ8P3Ye1P6j9x1TW6wWETiahPhZyDjoZ/r0ysGH0whdGZDo2ciA hjp+h2JOSlogm3ldv/uYQfUi0ahvaO3NBgXLwY2l3OC1sHcPlmaDWPlmPEQXv29yWqix 7WVg== Received: by 10.68.225.201 with SMTP id rm9mr39197169pbc.71.1341599681725; Fri, 06 Jul 2012 11:34:41 -0700 (PDT) Received: from mailhub.coreip.homeip.net (c-67-188-112-76.hsd1.ca.comcast.net. [67.188.112.76]) by mx.google.com with ESMTPS id pt2sm22315207pbb.58.2012.07.06.11.34.39 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 06 Jul 2012 11:34:40 -0700 (PDT) Date: Fri, 6 Jul 2012 11:34:36 -0700 From: Dmitry Torokhov To: Fabio Estevam Cc: kernel@pengutronix.de, linux-input@vger.kernel.org Subject: Re: [PATCH v2 3/3] keyboard: imx_keypad: Check error returned by clk_prepare_enable() Message-ID: <20120706183436.GA31613@core.coreip.homeip.net> References: <1341596514-15972-1-git-send-email-fabio.estevam@freescale.com> <1341596514-15972-3-git-send-email-fabio.estevam@freescale.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1341596514-15972-3-git-send-email-fabio.estevam@freescale.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org On Fri, Jul 06, 2012 at 02:41:54PM -0300, Fabio Estevam wrote: > Check error returned by clk_prepare_enable(). > > Signed-off-by: Fabio Estevam > --- > drivers/input/keyboard/imx_keypad.c | 17 +++++++++++++---- > 1 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/drivers/input/keyboard/imx_keypad.c b/drivers/input/keyboard/imx_keypad.c > index 4830615..bdb8ee7 100644 > --- a/drivers/input/keyboard/imx_keypad.c > +++ b/drivers/input/keyboard/imx_keypad.c > @@ -385,13 +385,17 @@ static int imx_keypad_open(struct input_dev *dev) > { > struct imx_keypad *keypad = input_get_drvdata(dev); > > + int ret; > dev_dbg(&dev->dev, ">%s\n", __func__); > > /* We became active from now */ > keypad->enabled = true; > > /* Enable the kpp clock */ > - clk_prepare_enable(keypad->clk); > + ret = clk_prepare_enable(keypad->clk); > + if (ret) > + return ret; > + That would leave "keypad->enabled = true" if clk_prepare_enable() fails. You need something like below. Thanks. diff --git a/drivers/input/keyboard/imx_keypad.c b/drivers/input/keyboard/imx_keypad.c index 4830615..ff4c0a8 100644 --- a/drivers/input/keyboard/imx_keypad.c +++ b/drivers/input/keyboard/imx_keypad.c @@ -384,14 +384,18 @@ static void imx_keypad_close(struct input_dev *dev) static int imx_keypad_open(struct input_dev *dev) { struct imx_keypad *keypad = input_get_drvdata(dev); + int error; dev_dbg(&dev->dev, ">%s\n", __func__); + /* Enable the kpp clock */ + error = clk_prepare_enable(keypad->clk); + if (error) + return error; + /* We became active from now */ keypad->enabled = true; - /* Enable the kpp clock */ - clk_prepare_enable(keypad->clk); imx_keypad_config(keypad); /* Sanity control, not all the rows must be actived now. */ @@ -596,18 +600,23 @@ static int imx_kbd_resume(struct device *dev) struct platform_device *pdev = to_platform_device(dev); struct imx_keypad *kbd = platform_get_drvdata(pdev); struct input_dev *input_dev = kbd->input_dev; + int ret = 0; if (device_may_wakeup(&pdev->dev)) disable_irq_wake(kbd->irq); mutex_lock(&input_dev->mutex); - if (input_dev->users) - clk_prepare_enable(kbd->clk); + if (input_dev->users) { + ret = clk_prepare_enable(kbd->clk); + if (ret) + goto err_clk; + } +err_clk: mutex_unlock(&input_dev->mutex); - return 0; + return ret; } #endif