Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4494271ybx; Mon, 4 Nov 2019 14:20:45 -0800 (PST) X-Google-Smtp-Source: APXvYqyal5134tEcZvYdJWX0/xdzjBJ3CiNFUyG5pWOt4N2vAWiGPjhRmNgttlxg48vo349zZhbZ X-Received: by 2002:a17:906:4913:: with SMTP id b19mr4980415ejq.61.1572906045500; Mon, 04 Nov 2019 14:20:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572906045; cv=none; d=google.com; s=arc-20160816; b=TgA1xdAt/1eB4IEfWkI9CdqlUmo1B6PVajaRgKkaL2GSuo+QAAoSJgfLaCtzDsVt4B MRnJqRh8TWARMOZB9S5nG/yAnOPxbq3cgEdoSmXjwIlyL3mUIploL8fuNl6We7RdUmc1 gUuzRlQODHxBd4oAKvnYhRZ8quS3hPPPL/k1YOP957Q8p+KYSh8T0S+vHO+i57wpY3bO nVt70ZtHTWVuEwJmhz4ljSmfIqA3XdvyMOwlpvp7M7JpUzqUKb11IpPhXPCt7hELd5BB GvJ0NrD9XHymxGec5zZULBFjeAZnZK7tGOwrVoD/FoNoy5Zy4hDBqDjvHhB2jJoB020L l0sg== 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=Lo1Tjuhysn6sIyuv87uLJLoevwct41jXOS8+P+aXnVI=; b=aPcBMkv3I6Da5bb4cMFvfrgEsJxRYQQhAuVTp/Bqn3e6KXTgHNkzB1uT1Gew5PKrQf wAUNaXIvq5FcoY20ja29kQY4TDkQ1MRmOcFN/jtITj2QvoRRccX7XqHbyO6uHVKIyOAs vrgjWQi5/OXup3Lrs974llvE4qZtxGyu12MeascDTKGfSMnQEKnlqGDG3YrsFsjsST/o lfH4WdTlOZ4ldMTQmpgO0A18pLFzzjnkC/2ndXaGFDxHSjfbxheoUUAUPUX7p4uY2GUP UDCVGeKjKypDfzhXHii3rK6zJ6J4sJSxnOlGjSASWDvGvIu+RfbAd2YXQFbdrPouVdRe 7evg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Wz2kk7y0; 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 a5si12241107ejs.274.2019.11.04.14.20.23; Mon, 04 Nov 2019 14:20:45 -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=Wz2kk7y0; 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 S2388537AbfKDWAa (ORCPT + 99 others); Mon, 4 Nov 2019 17:00:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:58038 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388097AbfKDWA2 (ORCPT ); Mon, 4 Nov 2019 17:00:28 -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 E0FB6217F4; Mon, 4 Nov 2019 22:00:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572904826; bh=RvdmIHjl9M/uIBvoDW1MmFcmt7/EQNFWicJ8bo2698A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Wz2kk7y0u004i4meo4fFhEpOUPt6JX71ty77uxJIml6sPKqeJJW3fDXGffhAa2eza iOMXhkiAG4eA8XSvkYJGCzicg815brPCjSCFt1gQjAke+gndGsUlxywOgxJpfJiVJP 9wDonGUVMNEE7D2EDE+FlLbcd9K0d7G3YcFymeEg= 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.19 042/149] rtc: pcf8523: set xtal load capacitance from DT Date: Mon, 4 Nov 2019 22:43:55 +0100 Message-Id: <20191104212138.790913751@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191104212126.090054740@linuxfoundation.org> References: <20191104212126.090054740@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 3fcd2cbafc845..2e03021f15d13 100644 --- a/drivers/rtc/rtc-pcf8523.c +++ b/drivers/rtc/rtc-pcf8523.c @@ -97,8 +97,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; @@ -106,14 +107,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; } @@ -347,9 +358,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