]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
rtc: pcf85063: add support for NXP PCF85063 family
authorAlexander Feilke <alexander.feilke@ew.tq-group.com>
Fri, 22 May 2026 15:39:24 +0000 (17:39 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 5 Jun 2026 16:14:24 +0000 (10:14 -0600)
Supported devices:

- generic PCF85063 / PCF85063TP (no alarm regs)
- PCF85063A / PCF85073A (alarm regs)

Tested with TQMa8MPxL SOM from TQ-Systems GmbH.

Also add missing .data field to rv8263 which represents the number
of available registers (= linux `pcf85063_config.max_register + 1`).

Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Signed-off-by: Alexander Feilke <alexander.feilke@ew.tq-group.com>
drivers/rtc/pcf85063.c

index 21640b039c1e60c09e37c6c1051422dcec2edc2b..183a214a3e9a420d98d69c9847b280d2fffa0404 100644 (file)
@@ -80,12 +80,18 @@ static int pcf85063_reset(struct udevice *dev)
 static int pcf85063_read(struct udevice *dev, unsigned int offset, u8 *buf,
                         unsigned int len)
 {
+       if (offset + len > dev->driver_data)
+               return -EINVAL;
+
        return dm_i2c_read(dev, offset, buf, len);
 }
 
 static int pcf85063_write(struct udevice *dev, unsigned int offset,
                          const u8 *buf, unsigned int len)
 {
+       if (offset + len > dev->driver_data)
+               return -EINVAL;
+
        return dm_i2c_write(dev, offset, buf, len);
 }
 
@@ -105,7 +111,11 @@ static int pcf85063_probe(struct udevice *dev)
 }
 
 static const struct udevice_id pcf85063_of_id[] = {
-       { .compatible = "microcrystal,rv8263" },
+       { .compatible = "microcrystal,rv8263", .data = 0x12 },
+       { .compatible = "nxp,pcf85063", .data = 0xb },
+       { .compatible = "nxp,pcf85063a", .data = 0x12 },
+       { .compatible = "nxp,pcf85063tp", .data = 0xb },
+       { .compatible = "nxp,pcf85073a", .data = 0x12 },
        { }
 };