Re: [PATCH v2] rtc: pcf85363: Add error checking to regmap calls in probe()

Cosmo Chou <[email protected]>
Newsgroups org.kernel.vger.linux-rtc,org.kernel.vger.linux-kernel
Message-ID <CAOeEDysuwsFcHZb77zRCEQb2k-o_zKPR9Efet2QbzOgzbVvS6A@mail.gmail.com>
Hi Alexandre,

Friendly ping on this patch.

Thanks,
Cosmo

On Sat, Jul 18, 2026 at 3:37 AM Cosmo Chou <[email protected]> wrote:
>
> The probe() function ignores errors returned by regmap operations.
> If an I2C transport error occurs (e.g., -ENXIO), the driver continues
> probing and may register a non-functional RTC device.
>
> Propagate errors from all unchecked regmap calls in probe() using
> dev_err_probe().
>
> Fixes: fd9a6a13949a ("rtc: pcf85363: add support for the quartz-load-femtofarads property")
> Signed-off-by: Cosmo Chou <[email protected]>
> ---
> Changes in v2 [1]:
> - Update commit message to reflect the new scope of the fix
> - Add error checking to all remaining regmap calls in probe()
>   (regmap_write to CTRL_FLAGS and regmap_update_bits to CTRL_PIN_IO)
>
> [1] https://lore.kernel.org/linux-rtc/[email protected]/
>
>  drivers/rtc/rtc-pcf85363.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/rtc/rtc-pcf85363.c b/drivers/rtc/rtc-pcf85363.c
> index 540042b9eec8..ccc7834e5759 100644
> --- a/drivers/rtc/rtc-pcf85363.c
> +++ b/drivers/rtc/rtc-pcf85363.c
> @@ -426,8 +426,8 @@ static int pcf85363_probe(struct i2c_client *client)
>
>         err = pcf85363_load_capacitance(pcf85363, client->dev.of_node);
>         if (err < 0)
> -               dev_warn(&client->dev, "failed to set xtal load capacitance: %d",
> -                        err);
> +               return dev_err_probe(&client->dev, err,
> +                                    "failed to set xtal load capacitance\n");
>
>         pcf85363->rtc->ops = &rtc_ops;
>         pcf85363->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
> @@ -436,9 +436,16 @@ static int pcf85363_probe(struct i2c_client *client)
>         wakeup_source = device_property_read_bool(&client->dev,
>                                                   "wakeup-source");
>         if (client->irq > 0 || wakeup_source) {
> -               regmap_write(pcf85363->regmap, CTRL_FLAGS, 0);
> -               regmap_update_bits(pcf85363->regmap, CTRL_PIN_IO,
> -                                  PIN_IO_INTAPM, PIN_IO_INTA_OUT);
> +               err = regmap_write(pcf85363->regmap, CTRL_FLAGS, 0);
> +               if (err)
> +                       return dev_err_probe(&client->dev, err,
> +                                            "failed to clear flags\n");
> +
> +               err = regmap_update_bits(pcf85363->regmap, CTRL_PIN_IO,
> +                                        PIN_IO_INTAPM, PIN_IO_INTA_OUT);
> +               if (err)
> +                       return dev_err_probe(&client->dev, err,
> +                                            "failed to set interrupt pin mode\n");
>         }
>
>         if (client->irq > 0) {
> --
> 2.43.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.