[PATCH 1/3] power: pmic: mtk-pwrap: add init capability flag

Julien Stephan jstephan at baylibre.com
Thu Apr 9 13:23:25 CEST 2026


Le ven. 27 mars 2026 à 20:03, David Lechner <dlechner at baylibre.com> a écrit :
>
> Add a PWRAP_CAP_INIT capability flag to specify if it is safe to call
> pwrap_init() or not. Not all targets define the registers accessed
> by pwrap_init(). In that case, it is expected that an earlier bootloader
> has already initialized the PMIC. If not, we now return an error instead
> of trying to access undefined registers.
>
> Signed-off-by: David Lechner <dlechner at baylibre.com>
> ---
>  drivers/power/pmic/mtk-pwrap.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/power/pmic/mtk-pwrap.c b/drivers/power/pmic/mtk-pwrap.c
> index 446b78fb0ee..9ff06fdb3bd 100644
> --- a/drivers/power/pmic/mtk-pwrap.c
> +++ b/drivers/power/pmic/mtk-pwrap.c
> @@ -62,6 +62,8 @@ static const struct pmic_child_info mt6359_pmic_children_info[] = {
>  #define PWRAP_CAP_INT1_EN              BIT(3)
>  #define PWRAP_CAP_WDT_SRC1             BIT(4)
>  #define PWRAP_CAP_ARB                  BIT(5)
> +/* To implement this capability, the registers used in pwrap_init() must be defined. */
> +#define PWRAP_CAP_INIT                 BIT(6)
>
>  /* defines for slave device wrapper registers */
>  enum dew_regs {
> @@ -752,6 +754,11 @@ static int mtk_pwrap_probe(struct udevice *dev)
>          * Skip initialization here in this case.
>          */
>         if (!pwrap_readl(wrp, PWRAP_INIT_DONE2)) {
> +               if (!HAS_CAP(wrp->master->caps, PWRAP_CAP_INIT)) {
> +                       dev_err(dev, "initialization is required but not supported\n");
> +                       return -ENODEV;
what about : return -ENOTSUPP ?

> +               }
> +
>                 ret = pwrap_init(wrp);
>                 if (ret) {
>                         dev_err(dev, "init failed with %d\n", ret);
> @@ -905,7 +912,7 @@ static const struct pmic_wrapper_type pwrap_mt8365 = {
>         .int1_en_all = 0x0,
>         .spi_w = PWRAP_MAN_CMD_SPI_WRITE,
>         .wdt_src = PWRAP_WDT_SRC_MASK_ALL,
> -       .caps = PWRAP_CAP_INT1_EN | PWRAP_CAP_WDT_SRC1,
> +       .caps = PWRAP_CAP_INT1_EN | PWRAP_CAP_WDT_SRC1 | PWRAP_CAP_INIT,
>  };
>
>  static const struct udevice_id mtk_pwrap_ids[] = {
>
> --
> 2.43.0
>


More information about the U-Boot mailing list