mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
Use qemu_irq for system_powerdown
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
b2b6f6ec39
commit
d9c3231019
5 changed files with 23 additions and 34 deletions
28
hw/acpi.c
28
hw/acpi.c
|
@ -496,6 +496,20 @@ static void piix4_reset(void *opaque)
|
|||
}
|
||||
}
|
||||
|
||||
static void piix4_powerdown(void *opaque, int irq, int power_failing)
|
||||
{
|
||||
#if defined(TARGET_I386)
|
||||
PIIX4PMState *s = opaque;
|
||||
|
||||
if (!s) {
|
||||
qemu_system_shutdown_request();
|
||||
} else if (s->pmen & PWRBTN_EN) {
|
||||
s->pmsts |= PWRBTN_EN;
|
||||
pm_update_sci(s);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
|
||||
qemu_irq sci_irq)
|
||||
{
|
||||
|
@ -545,6 +559,8 @@ i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
|
|||
|
||||
s->tmr_timer = qemu_new_timer(vm_clock, pm_tmr_timer, s);
|
||||
|
||||
qemu_system_powerdown = *qemu_allocate_irqs(piix4_powerdown, s, 1);
|
||||
|
||||
register_savevm("piix4_pm", 0, 1, pm_save, pm_load, s);
|
||||
|
||||
s->smbus = i2c_init_bus(NULL, "i2c");
|
||||
|
@ -554,18 +570,6 @@ i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
|
|||
return s->smbus;
|
||||
}
|
||||
|
||||
#if defined(TARGET_I386)
|
||||
void qemu_system_powerdown(void)
|
||||
{
|
||||
if (!pm_state) {
|
||||
qemu_system_shutdown_request();
|
||||
} else if (pm_state->pmen & PWRBTN_EN) {
|
||||
pm_state->pmsts |= PWRBTN_EN;
|
||||
pm_update_sci(pm_state);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#define GPE_BASE 0xafe0
|
||||
#define PCI_BASE 0xae00
|
||||
#define PCI_EJ_BASE 0xae08
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue