Hi Sebastian, Did you get a chance to review this second patch? Thank you! Asmaa > -----Original Message----- > From: Asmaa Mnebhi <asmaa@xxxxxxxxxx> > Sent: Tuesday, June 11, 2024 9:43 AM > To: sebastian.reichel@xxxxxxxxxxxxx; linux-pm@xxxxxxxxxxxxxxx; linux- > acpi@xxxxxxxxxxxxxxx > Cc: Asmaa Mnebhi <asmaa@xxxxxxxxxx>; David Thompson > <davthompson@xxxxxxxxxx> > Subject: [PATCH v2 1/1] power: reset: pwr-mlxbf: support graceful shutdown > > The OCP board used a BlueField's GPIO pin for entering low power mode. > That board was not commercialized and has been dropped from production > so all its code is unused. > The new hardware requirement is to trigger a graceful shutdown when that > GPIO pin is toggled. So replace the unused low power mode with a graceful > shutdown. > > Signed-off-by: Asmaa Mnebhi <asmaa@xxxxxxxxxx> > Reviewed-by: David Thompson <davthompson@xxxxxxxxxx> > --- > drivers/power/reset/pwr-mlxbf.c | 16 +++------------- > 1 file changed, 3 insertions(+), 13 deletions(-) > > diff --git a/drivers/power/reset/pwr-mlxbf.c b/drivers/power/reset/pwr- > mlxbf.c index 1775b318d0ef..4f1cd1c0018c 100644 > --- a/drivers/power/reset/pwr-mlxbf.c > +++ b/drivers/power/reset/pwr-mlxbf.c > @@ -18,7 +18,6 @@ > > struct pwr_mlxbf { > struct work_struct reboot_work; > - struct work_struct shutdown_work; > const char *hid; > }; > > @@ -27,22 +26,17 @@ static void pwr_mlxbf_reboot_work(struct > work_struct *work) > acpi_bus_generate_netlink_event("button/reboot.*", "Reboot > Button", 0x80, 1); } > > -static void pwr_mlxbf_shutdown_work(struct work_struct *work) -{ > - acpi_bus_generate_netlink_event("button/power.*", "Power > Button", 0x80, 1); > -} > - > static irqreturn_t pwr_mlxbf_irq(int irq, void *ptr) { > const char *rst_pwr_hid = "MLNXBF24"; > - const char *low_pwr_hid = "MLNXBF29"; > + const char *shutdown_hid = "MLNXBF29"; > struct pwr_mlxbf *priv = ptr; > > if (!strncmp(priv->hid, rst_pwr_hid, 8)) > schedule_work(&priv->reboot_work); > > - if (!strncmp(priv->hid, low_pwr_hid, 8)) > - schedule_work(&priv->shutdown_work); > + if (!strncmp(priv->hid, shutdown_hid, 8)) > + orderly_poweroff(true); > > return IRQ_HANDLED; > } > @@ -70,10 +64,6 @@ static int pwr_mlxbf_probe(struct platform_device > *pdev) > if (irq < 0) > return dev_err_probe(dev, irq, "Error getting %s irq.\n", priv- > >hid); > > - err = devm_work_autocancel(dev, &priv->shutdown_work, > pwr_mlxbf_shutdown_work); > - if (err) > - return err; > - > err = devm_work_autocancel(dev, &priv->reboot_work, > pwr_mlxbf_reboot_work); > if (err) > return err; > -- > 2.30.1