On Mon, 2026-05-11 at 14:09 +0200, Alexander Feilke wrote:
> From: Alexander Feilke <[email protected]>
> 
> 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 <[email protected]>
> Signed-off-by: Alexander Feilke <[email protected]>

Reviewed-by: Alexander Sverdlin <[email protected]>

> ---
>  drivers/rtc/pcf85063.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/rtc/pcf85063.c b/drivers/rtc/pcf85063.c
> index 21640b039c1..183a214a3e9 100644
> --- a/drivers/rtc/pcf85063.c
> +++ b/drivers/rtc/pcf85063.c
> @@ -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 },
>       { }
>  };
>  

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

Reply via email to