From patchwork Wed Jul 12 05:49:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 787010 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3x6p2658phz9sNx for ; Wed, 12 Jul 2017 15:50:06 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="rJCjYgAK"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756690AbdGLFuG (ORCPT ); Wed, 12 Jul 2017 01:50:06 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:36254 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751239AbdGLFuF (ORCPT ); Wed, 12 Jul 2017 01:50:05 -0400 Received: by mail-wr0-f195.google.com with SMTP id 77so3188631wrb.3 for ; Tue, 11 Jul 2017 22:50:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=lka+yona0FYMtNHnXIoJ4EALUVSDohpCUE6PzLyo1OU=; b=rJCjYgAKfGuzLdx/A4YLFbf25Dh1i7C5hKvnQwh0aJbFiC2i71zNalKoe9v+BuPjyB HJwuf+rAb2WEpbABiepWXC3XUWfgJhAk7TGAXPq1hYzUhemfls5lQ8Kr2Hi1TDGz3HVj LujG/4yRA4JDxkMe+iT4tNvPH6IhP5OxsjoxoJMI9w7AuRaig47UO1dlZ5HaDueNxYXa IjgJZX4zZnHleILaqqZBtjWwGAkaLYgh4IcAbm+vKcfJKn5fnoc76d0QEsYsN6azguOz 6pPv77Gqe3xAM0lWYvKOiIfeZl2z3A4ySZ8B+AB4vsvLaY9FxI+88qXRCICUQB9bIkyv 5jGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=lka+yona0FYMtNHnXIoJ4EALUVSDohpCUE6PzLyo1OU=; b=huunIl9oMxX5T1A7v2z6cylUspPz/6xjWAoi+6nPzBPOmrbuoHDvIFinmoi8toQ2SF A0z+pbqMEcfWYhpau08vycJUDftP2BaJ0lz/N3Mc5shwsaDXEQybx0t2zauTQEyh+HKv FXE2NCzfGxKnZlZQxYk2LVS2dhqjnEluOELAa4Rdyazo6H9w+qxsNEZf225nvWoaE7cV AH/h/eb52HIknSBQr7y6p6C1P8rY20i7+g0mXM145tco11i7W/fAFadXU4thNQs4vbli Z9bZYiseDXrX02TKpDGFKamPUl3GUPdZtYbo0fAxjbdJWALiU7cNQj20mPQ3/pWaI4Df KK1A== X-Gm-Message-State: AIVw113lpdDyjtObNfAV7J5tLbVeWegXl5hAUJW8uN/V9VPH+jKWC+C8 QdhRtHxiZZXZp55l X-Received: by 10.28.232.141 with SMTP id f13mr1121438wmi.59.1499838604138; Tue, 11 Jul 2017 22:50:04 -0700 (PDT) Received: from ?IPv6:2003:c6:ebc1:e200:4:ce91:c82d:34f2? (p200300C6EBC1E2000004CE91C82D34F2.dip0.t-ipconnect.de. [2003:c6:ebc1:e200:4:ce91:c82d:34f2]) by smtp.googlemail.com with ESMTPSA id 82sm1713924wmt.17.2017.07.11.22.50.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Jul 2017 22:50:03 -0700 (PDT) From: Heiner Kallweit Subject: [PATCH 3/9] rtc: ds1307: improve trickle charger initialization To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org References: Message-ID: <050da9b3-5b21-2eb4-91b9-3cbb2887446a@gmail.com> Date: Wed, 12 Jul 2017 07:49:28 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: Sender: linux-rtc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rtc@vger.kernel.org Instead of storing the trickle_charger_setup value in struct chip_desc we can let function ds1307_trickle_init return it because it's used in the probe function only. This allows us to constify struct chip_desc variables in a next step. Signed-off-by: Heiner Kallweit --- drivers/rtc/rtc-ds1307.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c index eecf6b27..d7158c9d 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -141,7 +141,6 @@ struct chip_desc { u8 century_bit; u8 bbsqi_bit; u16 trickle_charger_reg; - u8 trickle_charger_setup; u8 (*do_trickle_setup)(struct ds1307 *, uint32_t, bool); }; @@ -941,23 +940,23 @@ static u8 do_trickle_setup_ds1339(struct ds1307 *ds1307, return setup; } -static void ds1307_trickle_init(struct ds1307 *ds1307, - struct chip_desc *chip) +static u8 ds1307_trickle_init(struct ds1307 *ds1307, + struct chip_desc *chip) { - uint32_t ohms = 0; + uint32_t ohms; bool diode = true; if (!chip->do_trickle_setup) - goto out; + return 0; + if (device_property_read_u32(ds1307->dev, "trickle-resistor-ohms", &ohms)) - goto out; + return 0; + if (device_property_read_bool(ds1307->dev, "trickle-diode-disable")) diode = false; - chip->trickle_charger_setup = chip->do_trickle_setup(ds1307, - ohms, diode); -out: - return; + + return chip->do_trickle_setup(ds1307, ohms, diode); } /*----------------------------------------------------------------------*/ @@ -1319,6 +1318,7 @@ static int ds1307_probe(struct i2c_client *client, struct ds1307_platform_data *pdata = dev_get_platdata(&client->dev); struct rtc_time tm; unsigned long timestamp; + u8 trickle_charger_setup = 0; irq_handler_t irq_handler = ds1307_irq; @@ -1359,18 +1359,17 @@ static int ds1307_probe(struct i2c_client *client, } if (!pdata) - ds1307_trickle_init(ds1307, chip); + trickle_charger_setup = ds1307_trickle_init(ds1307, chip); else if (pdata->trickle_charger_setup) - chip->trickle_charger_setup = pdata->trickle_charger_setup; + trickle_charger_setup = pdata->trickle_charger_setup; - if (chip->trickle_charger_setup && chip->trickle_charger_reg) { + if (trickle_charger_setup && chip->trickle_charger_reg) { + trickle_charger_setup |= DS13XX_TRICKLE_CHARGER_MAGIC; dev_dbg(ds1307->dev, "writing trickle charger info 0x%x to 0x%x\n", - DS13XX_TRICKLE_CHARGER_MAGIC | chip->trickle_charger_setup, - chip->trickle_charger_reg); + trickle_charger_setup, chip->trickle_charger_reg); regmap_write(ds1307->regmap, chip->trickle_charger_reg, - DS13XX_TRICKLE_CHARGER_MAGIC | - chip->trickle_charger_setup); + trickle_charger_setup); } buf = ds1307->regs;