Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4468354ybx; Mon, 4 Nov 2019 13:56:41 -0800 (PST) X-Google-Smtp-Source: APXvYqxxIRUjFtTDQImY00lUboIUDhiJgSt9wU2Hlya1Kvt2JMJz0iI9IuJqgChTNetO++x2HjIH X-Received: by 2002:a17:906:4d11:: with SMTP id r17mr25443219eju.99.1572904601829; Mon, 04 Nov 2019 13:56:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572904601; cv=none; d=google.com; s=arc-20160816; b=Dhq3Txht9W/HRqEYKNhocDWQ1s/fQck193pXia4QgKK0xtTPng901MIqPmyQ1bohgS NLMh+iXEBz496vnmb9O/k4l+Skowm2yMSj3eTe8AJr99i9Ja51GkHnLXWSz6aCnPrHvk J22wwtmqImj2kT1+0+92oEYjCo5BDmCITGGnwbx77kLGEHJ8j16xKB92LGw43YYEAi5p TEwjEBqMGToJ3SxhSEnNgveYbkCQPq0Kqn8U0Mm/TRlTDpq6W9UMrx1RbUQROuqI1DHH zjYGLBTHyDfLo9FKn2lueMI/tn7b6M20gMrL3aX6P9u9NSvk5HRRtrQ7g8h9G+65pAkq OotQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=jum0eBebI9io89XqiF4OJzFDb4blJr7dvzScGinaVv8=; b=thMROztw3j6ht0TFSdzkAvbvir/h+HVHknhx+jX9RSy+NvNNmkDbP+Ezi6n/XX0+3/ ppbQKUIf2bh3nMsB98HxKUiuuKLBs+ei4OaBgdCR9gsb0bx+DTs7vapSVVHD0d3K/Tka uSxZXFveRb+9XRf96KLU2e0TcOXmk/y1VKfHP1Vqe2mHJ3A1mgXCT0j48oHA2i1mc0gp EspjTOSvPJbsHexAlhXxV4VPIVyL7PU7/4YlLEHH9hHI+CQDVwAPdb3enf/ZYFcUy0cu 2C2VA6quKDifiCzyxMbhkWnk+VpLomElRvfbGchHYFaa5nimlObdiRHqO3mrMtBWSo17 Xgkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=nfB1vDcs; 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 g1si1389384edm.382.2019.11.04.13.56.18; Mon, 04 Nov 2019 13:56:41 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=nfB1vDcs; 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 S1730782AbfKDVwe (ORCPT + 99 others); Mon, 4 Nov 2019 16:52:34 -0500 Received: from mail.kernel.org ([198.145.29.99]:46028 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730771AbfKDVwb (ORCPT ); Mon, 4 Nov 2019 16:52:31 -0500 Received: from localhost (6.204-14-84.ripe.coltfrance.com [84.14.204.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 73F4E218BA; Mon, 4 Nov 2019 21:52:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572904350; bh=Z4Vr1KaooQILrkTf+O1jZFGQD7EZq+zGisiVEVxIL2I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nfB1vDcsopMcnSEDP3TNy0wgJDepEBY51QVs8qvj1S4cd4jS+1l/HfpxC2UFuCnzd Afc21Hs2MzSq5Sy/fzmSBtEE25ZeEooJyjbIzm/7pPbtGX0dAyTQayq0t04/aalDMV e8oYMEH3aJ8QXc6kQ46cUZpU5lDKS/XZ++wRN56c= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sam Ravnborg , Alessandro Zummo , Alexandre Belloni , Sasha Levin Subject: [PATCH 4.14 17/95] rtc: pcf8523: set xtal load capacitance from DT Date: Mon, 4 Nov 2019 22:44:15 +0100 Message-Id: <20191104212046.218667777@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191104212038.056365853@linuxfoundation.org> References: <20191104212038.056365853@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sam Ravnborg [ Upstream commit 189927e719e36ceefbb8037f23d3849e47833aef ] Add support for specifying the xtal load capacitance in the DT node. The pcf8523 supports xtal load capacitance of 7pF or 12.5pF. If the rtc has the wrong configuration the time will drift several hours/week. The driver use the default value 12.5pF. The DT may specify either 7000fF or 12500fF. (The DT uses femto Farad to avoid decimal numbers). Other values are warned and the driver uses the default value. Signed-off-by: Sam Ravnborg Cc: Alessandro Zummo Cc: Alexandre Belloni Signed-off-by: Alexandre Belloni Signed-off-by: Sasha Levin --- drivers/rtc/rtc-pcf8523.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/drivers/rtc/rtc-pcf8523.c b/drivers/rtc/rtc-pcf8523.c index 3c8c6f942e67f..a06792966ea90 100644 --- a/drivers/rtc/rtc-pcf8523.c +++ b/drivers/rtc/rtc-pcf8523.c @@ -94,8 +94,9 @@ static int pcf8523_voltage_low(struct i2c_client *client) return !!(value & REG_CONTROL3_BLF); } -static int pcf8523_select_capacitance(struct i2c_client *client, bool high) +static int pcf8523_load_capacitance(struct i2c_client *client) { + u32 load; u8 value; int err; @@ -103,14 +104,24 @@ static int pcf8523_select_capacitance(struct i2c_client *client, bool high) if (err < 0) return err; - if (!high) - value &= ~REG_CONTROL1_CAP_SEL; - else + load = 12500; + of_property_read_u32(client->dev.of_node, "quartz-load-femtofarads", + &load); + + switch (load) { + default: + dev_warn(&client->dev, "Unknown quartz-load-femtofarads value: %d. Assuming 12500", + load); + /* fall through */ + case 12500: value |= REG_CONTROL1_CAP_SEL; + break; + case 7000: + value &= ~REG_CONTROL1_CAP_SEL; + break; + } err = pcf8523_write(client, REG_CONTROL1, value); - if (err < 0) - return err; return err; } @@ -307,9 +318,10 @@ static int pcf8523_probe(struct i2c_client *client, if (!pcf) return -ENOMEM; - err = pcf8523_select_capacitance(client, true); + err = pcf8523_load_capacitance(client); if (err < 0) - return err; + dev_warn(&client->dev, "failed to set xtal load capacitance: %d", + err); err = pcf8523_set_pm(client, 0); if (err < 0) -- 2.20.1