104762841SIsaku Yamahata #ifndef APM_H 204762841SIsaku Yamahata #define APM_H 304762841SIsaku Yamahata 4*8be545baSRichard Henderson #include "system/memory.h" 504762841SIsaku Yamahata 6f8eaef67SIgor Mammedov #define APM_CNT_IOPORT 0xb2 7f8eaef67SIgor Mammedov #define ACPI_PORT_SMI_CMD APM_CNT_IOPORT 8f8eaef67SIgor Mammedov 904762841SIsaku Yamahata typedef void (*apm_ctrl_changed_t)(uint32_t val, void *arg); 1004762841SIsaku Yamahata 1104762841SIsaku Yamahata typedef struct APMState { 1204762841SIsaku Yamahata uint8_t apmc; 1304762841SIsaku Yamahata uint8_t apms; 1404762841SIsaku Yamahata 1504762841SIsaku Yamahata apm_ctrl_changed_t callback; 1604762841SIsaku Yamahata void *arg; 1742d8a3cfSJulien Grall MemoryRegion io; 1804762841SIsaku Yamahata } APMState; 1904762841SIsaku Yamahata 2042d8a3cfSJulien Grall void apm_init(PCIDevice *dev, APMState *s, apm_ctrl_changed_t callback, 2142d8a3cfSJulien Grall void *arg); 2204762841SIsaku Yamahata 2304762841SIsaku Yamahata extern const VMStateDescription vmstate_apm; 2404762841SIsaku Yamahata 2504762841SIsaku Yamahata #endif /* APM_H */ 26