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