Commit c345680c authored by Shameer Kolothum's avatar Shameer Kolothum Committed by Michael S. Tsirkin
Browse files

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: default avatarShameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Reviewed-by: default avatarEric Auger <eric.auger@redhat.com>
Reviewed-by: default avatarIgor Mammedov <imammedo@redhat.com>
Message-Id: <20190918130633.4872-8-shameerali.kolothum.thodi@huawei.com>
Acked-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 442da7dc
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -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);
}

static Notifier virt_system_powerdown_notifier = {
    .notify = virt_powerdown_req
};

static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
{
    char *nodename;
@@ -841,10 +837,6 @@ static void create_gpio(const VirtMachineState *vms, qemu_irq *pic)
                          KEY_POWER);
    qemu_fdt_setprop_cells(vms->fdt, "/gpio-keys/poweroff",
                           "gpios", phandle, 3, 0);

    /* connect powerdown request */
    qemu_register_powerdown_notifier(&virt_system_powerdown_notifier);

    g_free(nodename);
}

@@ -1737,6 +1729,10 @@ static void machvirt_init(MachineState *machine)
        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
     * (which will be automatically plugged in to the transports). If
     * no backend is created the transport will just sit harmlessly idle.
+1 −0
Original line number Diff line number Diff line
@@ -137,6 +137,7 @@ typedef struct {
    int psci_conduit;
    hwaddr highest_gpa;
    DeviceState *acpi_dev;
    Notifier powerdown_notifier;
} VirtMachineState;

#define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)