Received: by 10.213.65.68 with SMTP id h4csp1610916imn; Thu, 29 Mar 2018 07:51:26 -0700 (PDT) X-Google-Smtp-Source: AIpwx48pfUxTks/fUbxr4GYoKKVPjgS4/yAJyvDLVJi76vblxq3FFwtC5rwQo4UeqjG1GWGs3tGr X-Received: by 10.101.72.136 with SMTP id n8mr5766784pgs.201.1522335086535; Thu, 29 Mar 2018 07:51:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522335086; cv=none; d=google.com; s=arc-20160816; b=WSJ+A+kn0X6DhXhN1ohUw4uDsMDmrZeZH4Yr9JoDKtlxECJSHIB4aHQENnqrnttFVB 1/KqxgXrK6c8GjDt1eqAp6iUzfmhBGKBpacDd3+BW/q032kwqVJfzmrbx7EeIQVu0Bw5 c9o7b/NXA/uObSJmXl12oE+FaWwJ36cetdny86r/Yp4i21UFT06Q5V1+vdRr/I1axhR4 /0yZ/JwqLWHTauFPn48KShbuYxkWqRK+onFNhFt+yObws1FqNH7m68erkI36W9qjlARJ GOu7XYs3q/iy8uFFE11qYEENsBqRiAGNJBjlJd/Ws6w4cQyEERRz4boUGmbSNP/z4ss1 j4Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=Y8xtW3s0j6+dEst+7N2fTeoFUgjqJI/kFOv/0xsbfvE=; b=V3u3v0ofybR8ydWX+M0dBHCPMU3+UG7A/pA3NtNVUXXDlQNACNID5qShAnTWg5oyFF 1hPlTTlVQSth00O4/IceRCbBM8HDCB+jZlN0d1q0whDRJ7sQ4AxcV+bPswU46KSrsdh0 n06/UalVpxDyku6kgeqxpn3R3UcEjXCD0MMUyPhDMEUkpf7c2ivAZkxfOnFONAIQ5Hh4 AQOUp2UXC/9xcLebap3zqojISpXOO8AAEu4AW3q7lTUcD0GHCuImRYASOg6+uLMQfOdB LuaVcV2Cu5dXVEPtKFmtI91C2HlarJYCLbme1CaJtBL8pTGyf9lsfpDWvAu2RfJa0DzX crRg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t3si4121671pgs.763.2018.03.29.07.51.12; Thu, 29 Mar 2018 07:51:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751206AbeC2OuD (ORCPT + 99 others); Thu, 29 Mar 2018 10:50:03 -0400 Received: from mail.visioncatalog.de ([217.6.246.34]:56453 "EHLO root.phytec.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750820AbeC2OuC (ORCPT ); Thu, 29 Mar 2018 10:50:02 -0400 Received: from idefix.phytec.de (idefix.phytec.de [172.16.0.10]) by root.phytec.de (Postfix) with ESMTP id 0856DA00259; Thu, 29 Mar 2018 16:50:13 +0200 (CEST) Received: from augenblix.phytec.de ([172.16.0.56]) by idefix.phytec.de (IBM Domino Release 9.0.1FP7) with ESMTP id 2018032916500024-172208 ; Thu, 29 Mar 2018 16:50:00 +0200 From: Daniel Schultz To: lee.jones@linaro.org Cc: zyw@rock-chips.com, zhangqing@rock-chips.com, xsf@rock-chips.com, tony.xie@rock-chips.com, w.egorov@phytec.de, linux-kernel@vger.kernel.org Subject: [PATCH v5 1/2] mfd: rk808: Refactor shutdown functions Date: Thu, 29 Mar 2018 16:49:59 +0200 Message-Id: <1522335000-23057-1-git-send-email-d.schultz@phytec.de> X-Mailer: git-send-email 2.7.4 X-MIMETrack: Itemize by SMTP Server on Idefix/Phytec(Release 9.0.1FP7|August 17, 2016) at 29.03.2018 16:50:00, Serialize by Router on Idefix/Phytec(Release 9.0.1FP7|August 17, 2016) at 29.03.2018 16:50:00, Serialize complete at 29.03.2018 16:50:00 X-TNEFEvaluated: 1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since all three shutdown functions have almost the same code, all logic from the shutdown functions can be refactored to a new function "rk808_update_bits", which can update a register by a given address and bitmask. Signed-off-by: Daniel Schultz --- Changes: v2: Re-submit with recipients from Rockchip. v3: - Added devicetree property to enable the PMIC reset seperate from "rockchip,system-power-controller". - Dropped the first patch of this serie. v4: Splitted refactoring and the new reset feature. v5: Removed null pointer from rk808_update_bits. drivers/mfd/rk808.c | 46 +++++++++++++--------------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/drivers/mfd/rk808.c b/drivers/mfd/rk808.c index 216fbf6..1cb1b3a 100644 --- a/drivers/mfd/rk808.c +++ b/drivers/mfd/rk808.c @@ -369,58 +369,38 @@ static const struct regmap_irq_chip rk818_irq_chip = { static struct i2c_client *rk808_i2c_client; -static void rk805_device_shutdown(void) +static void rk808_update_bits(unsigned int reg, unsigned int bit_mask) { int ret; struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client); if (!rk808) { dev_warn(&rk808_i2c_client->dev, - "have no rk805, so do nothing here\n"); + "have no rk805/rk808/rk818, so do nothing here\n"); return; } ret = regmap_update_bits(rk808->regmap, - RK805_DEV_CTRL_REG, - DEV_OFF, DEV_OFF); + reg, + bit_mask, bit_mask); if (ret) - dev_err(&rk808_i2c_client->dev, "power off error!\n"); + dev_err(&rk808_i2c_client->dev, + "can't write to register 0x%x: %x!\n", reg, ret); } -static void rk808_device_shutdown(void) +static void rk805_device_shutdown(void) { - int ret; - struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client); - - if (!rk808) { - dev_warn(&rk808_i2c_client->dev, - "have no rk808, so do nothing here\n"); - return; - } + rk808_update_bits(RK805_DEV_CTRL_REG, DEV_OFF); +} - ret = regmap_update_bits(rk808->regmap, - RK808_DEVCTRL_REG, - DEV_OFF_RST, DEV_OFF_RST); - if (ret) - dev_err(&rk808_i2c_client->dev, "power off error!\n"); +static void rk808_device_shutdown(void) +{ + rk808_update_bits(RK808_DEVCTRL_REG, DEV_OFF_RST); } static void rk818_device_shutdown(void) { - int ret; - struct rk808 *rk808 = i2c_get_clientdata(rk808_i2c_client); - - if (!rk808) { - dev_warn(&rk808_i2c_client->dev, - "have no rk818, so do nothing here\n"); - return; - } - - ret = regmap_update_bits(rk808->regmap, - RK818_DEVCTRL_REG, - DEV_OFF, DEV_OFF); - if (ret) - dev_err(&rk808_i2c_client->dev, "power off error!\n"); + rk808_update_bits(RK818_DEVCTRL_REG, DEV_OFF); } static const struct of_device_id rk808_of_match[] = { -- 2.7.4