Signed-off-by: Mark Cave-Ayland <[email protected]>
---
hw/acpi/piix4.c | 42 +++++++++++++++++++++++++++---------------
1 file changed, 27 insertions(+), 15 deletions(-)
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index 1d209ac96d..52bd61667f 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -405,7 +405,7 @@ static void piix4_pm_machine_ready(Notifier *n, void
*opaque)
(memory_region_present(io_as, 0x2f8) ? 0x90 : 0);
}
-static void piix4_pm_add_properties(PIIX4PMState *s)
+static void piix4_pm_add_class_properties(ObjectClass *oc)
{
static const uint8_t acpi_enable_cmd = ACPI_ENABLE;
static const uint8_t acpi_disable_cmd = ACPI_DISABLE;
@@ -413,18 +413,30 @@ static void piix4_pm_add_properties(PIIX4PMState *s)
static const uint32_t gpe0_blk_len = GPE_LEN;
static const uint16_t sci_int = 9;
- object_property_add_uint8_ptr(OBJECT(s), ACPI_PM_PROP_ACPI_ENABLE_CMD,
- &acpi_enable_cmd, OBJ_PROP_FLAG_READ);
- object_property_add_uint8_ptr(OBJECT(s), ACPI_PM_PROP_ACPI_DISABLE_CMD,
- &acpi_disable_cmd, OBJ_PROP_FLAG_READ);
- object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_GPE0_BLK,
- &gpe0_blk, OBJ_PROP_FLAG_READ);
- object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_GPE0_BLK_LEN,
- &gpe0_blk_len, OBJ_PROP_FLAG_READ);
- object_property_add_uint16_ptr(OBJECT(s), ACPI_PM_PROP_SCI_INT,
- &sci_int, OBJ_PROP_FLAG_READ);
- object_property_add_uint32_ptr(OBJECT(s), ACPI_PM_PROP_PM_IO_BASE,
- &s->io_base, OBJ_PROP_FLAG_READ);
+ object_class_static_property_add_uint8_ptr(oc,
+ ACPI_PM_PROP_ACPI_ENABLE_CMD,
+ &acpi_enable_cmd,
+ OBJ_PROP_FLAG_READ);
+ object_class_static_property_add_uint8_ptr(oc,
+ ACPI_PM_PROP_ACPI_DISABLE_CMD,
+ &acpi_disable_cmd,
+ OBJ_PROP_FLAG_READ);
+ object_class_static_property_add_uint32_ptr(oc,
+ ACPI_PM_PROP_GPE0_BLK,
+ &gpe0_blk,
+ OBJ_PROP_FLAG_READ);
+ object_class_static_property_add_uint32_ptr(oc,
+ ACPI_PM_PROP_GPE0_BLK_LEN,
+ &gpe0_blk_len,
+ OBJ_PROP_FLAG_READ);
+ object_class_static_property_add_uint16_ptr(oc,
+ ACPI_PM_PROP_SCI_INT,
+ &sci_int,
+ OBJ_PROP_FLAG_READ);
+ object_class_property_add_uint32_ptr(oc,
+ ACPI_PM_PROP_PM_IO_BASE,
+ offsetof(PIIX4PMState, io_base),
+ OBJ_PROP_FLAG_READ);
}
static void piix4_pm_realize(PCIDevice *dev, Error **errp)
@@ -480,8 +492,6 @@ static void piix4_pm_realize(PCIDevice *dev, Error **errp)
piix4_acpi_system_hot_add_init(pci_address_space_io(dev),
pci_get_bus(dev), s);
-
- piix4_pm_add_properties(s);
}
static void piix4_pm_init(Object *obj)
@@ -616,6 +626,8 @@ static void piix4_pm_class_init(ObjectClass *klass, const
void *data)
offsetof(PIIX4PMState,
acpi_pci_hotplug.io_len),
OBJ_PROP_FLAG_READ);
+
+ piix4_pm_add_class_properties(klass);
}
static const TypeInfo piix4_pm_info = {
--
2.43.0