xref: /qemu/include/hw/isa/apm.h (revision f8eaef67a3946cd483cbb77c50cf2ded55c0ddde)
104762841SIsaku Yamahata #ifndef APM_H
204762841SIsaku Yamahata #define APM_H
304762841SIsaku Yamahata 
404762841SIsaku Yamahata #include "qemu-common.h"
583c9f4caSPaolo Bonzini #include "hw/hw.h"
6022c62cbSPaolo Bonzini #include "exec/memory.h"
704762841SIsaku Yamahata 
8*f8eaef67SIgor Mammedov #define APM_CNT_IOPORT  0xb2
9*f8eaef67SIgor Mammedov #define ACPI_PORT_SMI_CMD APM_CNT_IOPORT
10*f8eaef67SIgor Mammedov 
1104762841SIsaku Yamahata typedef void (*apm_ctrl_changed_t)(uint32_t val, void *arg);
1204762841SIsaku Yamahata 
1304762841SIsaku Yamahata typedef struct APMState {
1404762841SIsaku Yamahata     uint8_t apmc;
1504762841SIsaku Yamahata     uint8_t apms;
1604762841SIsaku Yamahata 
1704762841SIsaku Yamahata     apm_ctrl_changed_t callback;
1804762841SIsaku Yamahata     void *arg;
1942d8a3cfSJulien Grall     MemoryRegion io;
2004762841SIsaku Yamahata } APMState;
2104762841SIsaku Yamahata 
2242d8a3cfSJulien Grall void apm_init(PCIDevice *dev, APMState *s, apm_ctrl_changed_t callback,
2342d8a3cfSJulien Grall               void *arg);
2404762841SIsaku Yamahata 
2504762841SIsaku Yamahata extern const VMStateDescription vmstate_apm;
2604762841SIsaku Yamahata 
2704762841SIsaku Yamahata #endif /* APM_H */
28