Hi Fabrizio, On Wed, Dec 21, 2022 at 10:09 PM Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx> wrote: > The RZ/V2M PWC IP controls external power supplies and therefore > can turn the power supplies off when powering down the system. > > Add driver to poweroff the system. > > Signed-off-by: Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx> > --- > > v1->v2: Dropped OF match table and syscon as a result of the change in > DT model Thanks for your patch! > --- /dev/null > +++ b/drivers/power/reset/rzv2m-pwc-poweroff.c > @@ -0,0 +1,67 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (C) 2022 Renesas Electronics Corporation > + * > + * Reset driver for Renesas RZ/V2M External Power Sequence Controller (PWC) > + */ > + > +#include <linux/delay.h> > +#include <linux/io.h> > +#include <linux/platform_device.h> > +#include <linux/reboot.h> > +#include "../../mfd/rzv2m-pwc.h" > + > +#define PWC_PWCRST_RSTSOFTAX 0x1 > +#define PWC_PWCCKEN_ENGCKMAIN 0x1 > +#define PWC_PWCCTL_PWOFF 0x1 > + > +struct rzv2m_pwc_poweroff_priv { > + void __iomem *base; > + struct device *dev; > +}; > + > +static int rzv2m_pwc_poweroff(struct sys_off_data *data) > +{ > + struct rzv2m_pwc_poweroff_priv *priv = > + (struct rzv2m_pwc_poweroff_priv *)data->cb_data; No need for this cast. > + > + writel(PWC_PWCRST_RSTSOFTAX, priv->base + PWC_PWCRST); > + writel(PWC_PWCCKEN_ENGCKMAIN, priv->base + PWC_PWCCKEN); > + writel(PWC_PWCCTL_PWOFF, priv->base + PWC_PWCCTL); > + > + mdelay(150); > + > + dev_err(priv->dev, "Failed to power off the system"); > + > + return NOTIFY_DONE; > +} Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds