On Fri, 15 Jan 2021 at 10:11, Maxim Uvarov <maxim.uva...@linaro.org> wrote: > > Implement gpio-pwr driver to allow reboot and poweroff machine. > This is simple driver with just 2 gpios lines. Current use case > is to reboot and poweroff virt machine in secure mode. Secure > pl066 gpio chip is needed for that. > > Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> > Reviewed-by: Hao Wu <wuhao...@google.com> > --- > hw/gpio/Kconfig | 3 ++ > hw/gpio/gpio_pwr.c | 70 +++++++++++++++++++++++++++++++++++++++++++++ > hw/gpio/meson.build | 1 + > 3 files changed, 74 insertions(+) > create mode 100644 hw/gpio/gpio_pwr.c
> +/* > + * QEMU interface: > + * two named input GPIO lines: > + * 'reset' : when asserted, trigger system reset > + * 'shutdown' : when asserted, trigger system shutdown > + */ The comment says we perform the actions when the lines are asserted... > +static void gpio_pwr_reset(void *opaque, int n, int level) > +{ > + if (!level) { > + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); > + } > +} > + > +static void gpio_pwr_shutdown(void *opaque, int n, int level) > +{ > + if (!level) { > + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); > + } > +} ...but the code performs the actions when the lines are de-asserted, ie when they go to 0. I think the code should be "if (level)". thanks -- PMM