All of lore.kernel.org
 help / color / mirror / Atom feed
From: biju.das@bp.renesas.com (Biju Das)
To: cip-dev@lists.cip-project.org
Subject: [cip-dev] [PATCH 4.4.y-cip 05/10] rtc: pcf85363: Add support for NXP pcf85263 rtc
Date: Tue, 16 Jul 2019 09:15:16 +0100	[thread overview]
Message-ID: <1563264921-42973-6-git-send-email-biju.das@bp.renesas.com> (raw)
In-Reply-To: <1563264921-42973-1-git-send-email-biju.das@bp.renesas.com>

commit fc979933bcf162595b6004d0de4effb64c323152 upstream.

Add support for NXP pcf85263 real-time clock. pcf85263 rtc is compatible
with pcf85363,except that pcf85363 has additional 64 bytes of RAM.

1 byte of nvmem is supported and exposed in sysfs (# is the instance
number,starting with 0): /sys/bus/nvmem/devices/pcf85x63-#/nvmem

Signed-off-by: Biju Das <biju.das@bp.renesas.com>
[ Removed rtc nvmem support. Added I2C ID table for rtc-pcf85263 ]
---
 drivers/rtc/rtc-pcf85363.c | 40 ++++++++++++++++++++++++++++++++--------
 1 file changed, 32 insertions(+), 8 deletions(-)

diff --git a/drivers/rtc/rtc-pcf85363.c b/drivers/rtc/rtc-pcf85363.c
index dc57a6f..64217f1 100644
--- a/drivers/rtc/rtc-pcf85363.c
+++ b/drivers/rtc/rtc-pcf85363.c
@@ -87,6 +87,11 @@ struct pcf85363 {
 	struct regmap		*regmap;
 };
 
+struct pcf85x63_config {
+	struct regmap_config regmap;
+	unsigned int num_nvram;
+};
+
 static int pcf85363_rtc_read_time(struct device *dev, struct rtc_time *tm)
 {
 	struct pcf85363 *pcf85363 = dev_get_drvdata(dev);
@@ -148,16 +153,33 @@ static const struct rtc_class_ops rtc_ops = {
 	.set_time	= pcf85363_rtc_set_time,
 };
 
-static const struct regmap_config regmap_config = {
-	.reg_bits = 8,
-	.val_bits = 8,
-	.max_register = 0x7f,
+static const struct pcf85x63_config pcf_85263_config = {
+	.regmap = {
+		.reg_bits = 8,
+		.val_bits = 8,
+		.max_register = 0x2f,
+	},
+	.num_nvram = 1
+};
+
+static const struct pcf85x63_config pcf_85363_config = {
+	.regmap = {
+		.reg_bits = 8,
+		.val_bits = 8,
+		.max_register = 0x7f,
+	},
+	.num_nvram = 2
 };
 
 static int pcf85363_probe(struct i2c_client *client,
 			  const struct i2c_device_id *id)
 {
 	struct pcf85363 *pcf85363;
+	const struct pcf85x63_config *config = &pcf_85363_config;
+	const void *data = of_device_get_match_data(&client->dev);
+
+	if (data)
+		config = data;
 
 	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
 		return -ENODEV;
@@ -167,7 +189,7 @@ static int pcf85363_probe(struct i2c_client *client,
 	if (!pcf85363)
 		return -ENOMEM;
 
-	pcf85363->regmap = devm_regmap_init_i2c(client, &regmap_config);
+	pcf85363->regmap = devm_regmap_init_i2c(client, &config->regmap);
 	if (IS_ERR(pcf85363->regmap)) {
 		dev_err(&client->dev, "regmap allocation failed\n");
 		return PTR_ERR(pcf85363->regmap);
@@ -185,12 +207,14 @@ static int pcf85363_probe(struct i2c_client *client,
 
 static const struct i2c_device_id pcf85363_id[] = {
 	{ "pcf85363", 0 },
+	{ "pcf85263", 0 },
 	{ }
 };
 
 static const struct of_device_id dev_ids[] = {
-	{ .compatible = "nxp,pcf85363" },
-	{}
+	{ .compatible = "nxp,pcf85263", .data = &pcf_85263_config },
+	{ .compatible = "nxp,pcf85363", .data = &pcf_85363_config },
+	{ /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, dev_ids);
 
@@ -206,5 +230,5 @@ static struct i2c_driver pcf85363_driver = {
 module_i2c_driver(pcf85363_driver);
 
 MODULE_AUTHOR("Eric Nelson");
-MODULE_DESCRIPTION("pcf85363 I2C RTC driver");
+MODULE_DESCRIPTION("pcf85263/pcf85363 I2C RTC driver");
 MODULE_LICENSE("GPL");
-- 
2.7.4

  parent reply	other threads:[~2019-07-16  8:15 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-16  8:15 [cip-dev] [PATCH 4.4.y-cip 00/10] Add RTC support Biju Das
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 01/10] rtc: add support for NXP PCF85363 real-time clock Biju Das
2019-07-17 11:29   ` Pavel Machek
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 02/10] rtc: pcf85363: add .max_register in regmap_config Biju Das
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 03/10] rtc: pcf85363: set time accurately Biju Das
2019-07-16 21:03   ` Pavel Machek
2019-07-17  7:47     ` Biju Das
2019-07-23 18:12       ` Ben Hutchings
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 04/10] dt-bindings: rtc: pcf85363: Document pcf85263 real-time clock Biju Das
2019-07-16  8:15 ` Biju Das [this message]
2019-07-17  7:08   ` [cip-dev] [PATCH 4.4.y-cip 05/10] rtc: pcf85363: Add support for NXP pcf85263 rtc nobuhiro1.iwamatsu at toshiba.co.jp
2019-07-17  7:16     ` Biju Das
2019-07-17 23:20       ` nobuhiro1.iwamatsu at toshiba.co.jp
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 06/10] ARM: dts: r8a77470: Add I2C4 support Biju Das
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 07/10] ARM: dts: r8a77470: Add I2C[0123] support Biju Das
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 08/10] ARM: shmobile: Enable NXP pcf85363 rtc in shmobile_defconfig Biju Das
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 09/10] ARM: multi_v7_defconfig: Enable NXP pcf85363 rtc Biju Das
2019-07-16  8:15 ` [cip-dev] [PATCH 4.4.y-cip 10/10] ARM: dts: iwg23s-sbc: Enable RTC Biju Das
2019-07-17 11:45 ` [cip-dev] [PATCH 4.4.y-cip 00/10] Add RTC support Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1563264921-42973-6-git-send-email-biju.das@bp.renesas.com \
    --to=biju.das@bp.renesas.com \
    --cc=cip-dev@lists.cip-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.