From patchwork Wed Jan 18 10:35:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yegor Yefremov X-Patchwork-Id: 716582 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3v3Ng12dVgz9sf9 for ; Wed, 18 Jan 2017 21:36:13 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlemail.com header.i=@googlemail.com header.b="SUdhxJ9f"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752277AbdARKgK (ORCPT ); Wed, 18 Jan 2017 05:36:10 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34506 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751444AbdARKgJ (ORCPT ); Wed, 18 Jan 2017 05:36:09 -0500 Received: by mail-wm0-f67.google.com with SMTP id c85so3046790wmi.1; Wed, 18 Jan 2017 02:36:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=ZlGU/lHlUeZApyOkIvptQDXlLdoWfkFVZDJlw1emUGw=; b=SUdhxJ9fgtABvwe/MeiTtz+P8Spry36kXpJNzW5a3Yc/VkEXtagLcS5wN5ESeFP+Im /Kq/9zPj/+k9BMfFiTjac+FFApul1nqT7Mi87168hezWywMix0RS/y5p94f4SGNogqna 56MuNaJJviN/z3hE9gGOOxWjlNsGn9+ewgg6LnDJug5dqDqpiyComlmYzjw6PFoC3rpw eaNMaZXBV+NKmJKqy3jF6+mVYfDnMF8SPJYQULmmSJxT1eagwpwgswoXDqnYPg85RdqF 7yYRUf4PhK8RVlZvbCkSSdtvbDB8sC/ylj+jnnRM6zoQHiOvY+l0c0ceNEiv5B1NmDD5 E/YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ZlGU/lHlUeZApyOkIvptQDXlLdoWfkFVZDJlw1emUGw=; b=aYJwBfAx2cP1sIu8zg+OaogHMeaj+NyPwe44UP3ViuxnTa5iQ9Udyz+MxyV3o8ULNr P8SzS6a9EGYqcPd0LqtV1kcgEdy/iAYzgMs/oTV0T1WBHDl7mLXQa7qWbxIo5d+LU+uJ 7xloKP91Hy6zG2izvvtJEb2uIKNK7t2kzWbAHS/JzqpqrlNpddWrmtdCKDsIBom5BXpc sofL/9WmPz1T1DQ3vxbZlw6aodTPXAvCxNDpKmzqqTryAg4SZHHwoOrdqeL3SxHor5uq 3qc1UEHX0SYgRzyZJDbi3llAHnQlAKEEPqEx4q55g7WzBr86y4TVobArPCf4tKCOATCt GQgw== X-Gm-Message-State: AIkVDXIZes2Mbhj1o/wWGljLdODrZYMGMQWOiWCsh+qVLIGNE1DvhTWLVqBnY0lMji8tag== X-Received: by 10.28.168.73 with SMTP id r70mr2130373wme.57.1484735767560; Wed, 18 Jan 2017 02:36:07 -0800 (PST) Received: from development1.visionsystems.de (mail.visionsystems.de. [213.209.99.202]) by smtp.gmail.com with ESMTPSA id 202sm3864214wmp.20.2017.01.18.02.36.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 18 Jan 2017 02:36:06 -0800 (PST) From: yegorslists@googlemail.com To: linux-can@vger.kernel.org Cc: netdev@vger.kernel.org, mkl@pengutronix.de, wg@grandegger.com, Yegor Yefremov Subject: [PATCH v2] can: ti_hecc: add missing prepare and unprepare of the clock Date: Wed, 18 Jan 2017 11:35:57 +0100 Message-Id: <1484735757-21172-1-git-send-email-yegorslists@googlemail.com> X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Yegor Yefremov In order to make the driver work with the common clock framework, this patch converts the clk_enable()/clk_disable() to clk_prepare_enable()/clk_disable_unprepare(). Also add error checking for clk_prepare_enable(). Signed-off-by: Yegor Yefremov --- Changes v1 -> v2: - add error checking for clk_prepare_enable (Marc Kleine-Budde) drivers/net/can/ti_hecc.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c index 680d1ff..8771531 100644 --- a/drivers/net/can/ti_hecc.c +++ b/drivers/net/can/ti_hecc.c @@ -948,7 +948,12 @@ static int ti_hecc_probe(struct platform_device *pdev) netif_napi_add(ndev, &priv->napi, ti_hecc_rx_poll, HECC_DEF_NAPI_WEIGHT); - clk_enable(priv->clk); + err = clk_prepare_enable(priv->clk); + if (err) { + dev_err(&pdev->dev, "clk_prepare_enable() failed\n"); + goto probe_exit_clk; + } + err = register_candev(ndev); if (err) { dev_err(&pdev->dev, "register_candev() failed\n"); @@ -981,7 +986,7 @@ static int ti_hecc_remove(struct platform_device *pdev) struct ti_hecc_priv *priv = netdev_priv(ndev); unregister_candev(ndev); - clk_disable(priv->clk); + clk_disable_unprepare(priv->clk); clk_put(priv->clk); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); iounmap(priv->base); @@ -1006,7 +1011,7 @@ static int ti_hecc_suspend(struct platform_device *pdev, pm_message_t state) hecc_set_bit(priv, HECC_CANMC, HECC_CANMC_PDR); priv->can.state = CAN_STATE_SLEEPING; - clk_disable(priv->clk); + clk_disable_unprepare(priv->clk); return 0; } @@ -1016,7 +1021,7 @@ static int ti_hecc_resume(struct platform_device *pdev) struct net_device *dev = platform_get_drvdata(pdev); struct ti_hecc_priv *priv = netdev_priv(dev); - clk_enable(priv->clk); + clk_prepare_enable(priv->clk); hecc_clear_bit(priv, HECC_CANMC, HECC_CANMC_PDR); priv->can.state = CAN_STATE_ERROR_ACTIVE;