mirror of https://gitee.com/openkylin/qemu.git
hw/arm: Factor out powerdown notifier from GPIO
This is in preparation of using GED device for system_powerdown event. Make the powerdown notifier registration independent of create_gpio() fn. Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <20190918130633.4872-8-shameerali.kolothum.thodi@huawei.com> Acked-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
442da7dc77
commit
c345680cb4
|
@ -797,10 +797,6 @@ static void virt_powerdown_req(Notifier *n, void *opaque)
|
||||||
qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1);
|
qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Notifier virt_system_powerdown_notifier = {
|
|
||||||
.notify = virt_powerdown_req
|
|
||||||
};
|
|
||||||
|
|
||||||
static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
|
static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
|
||||||
{
|
{
|
||||||
char *nodename;
|
char *nodename;
|
||||||
|
@ -841,10 +837,6 @@ static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
|
||||||
KEY_POWER);
|
KEY_POWER);
|
||||||
qemu_fdt_setprop_cells(vms->fdt, "/gpio-keys/poweroff",
|
qemu_fdt_setprop_cells(vms->fdt, "/gpio-keys/poweroff",
|
||||||
"gpios", phandle, 3, 0);
|
"gpios", phandle, 3, 0);
|
||||||
|
|
||||||
/* connect powerdown request */
|
|
||||||
qemu_register_powerdown_notifier(&virt_system_powerdown_notifier);
|
|
||||||
|
|
||||||
g_free(nodename);
|
g_free(nodename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1737,6 +1729,10 @@ static void machvirt_init(MachineState *machine)
|
||||||
vms->acpi_dev = create_acpi_ged(vms, pic);
|
vms->acpi_dev = create_acpi_ged(vms, pic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* connect powerdown request */
|
||||||
|
vms->powerdown_notifier.notify = virt_powerdown_req;
|
||||||
|
qemu_register_powerdown_notifier(&vms->powerdown_notifier);
|
||||||
|
|
||||||
/* Create mmio transports, so the user can create virtio backends
|
/* Create mmio transports, so the user can create virtio backends
|
||||||
* (which will be automatically plugged in to the transports). If
|
* (which will be automatically plugged in to the transports). If
|
||||||
* no backend is created the transport will just sit harmlessly idle.
|
* no backend is created the transport will just sit harmlessly idle.
|
||||||
|
|
|
@ -137,6 +137,7 @@ typedef struct {
|
||||||
int psci_conduit;
|
int psci_conduit;
|
||||||
hwaddr highest_gpa;
|
hwaddr highest_gpa;
|
||||||
DeviceState *acpi_dev;
|
DeviceState *acpi_dev;
|
||||||
|
Notifier powerdown_notifier;
|
||||||
} VirtMachineState;
|
} VirtMachineState;
|
||||||
|
|
||||||
#define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)
|
#define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)
|
||||||
|
|
Loading…
Reference in New Issue