Re: [PATCH v4 02/13] acpi: move aml builder code for rtc device
On 5/5/20 1:38 PM, Gerd Hoffmann wrote: Signed-off-by: Gerd Hoffmann --- hw/i386/acpi-build.c | 17 - hw/rtc/mc146818rtc.c | 22 ++ 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 2e15f6848e7e..0bfa2dd23fcc 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -1137,22 +1137,6 @@ static Aml *build_fdc_device_aml(ISADevice *fdc) return dev; } -static Aml *build_rtc_device_aml(void) -{ -Aml *dev; -Aml *crs; - -dev = aml_device("RTC"); -aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0B00"))); -crs = aml_resource_template(); -aml_append(crs, aml_io(AML_DECODE16, 0x0070, 0x0070, 0x10, 0x02)); -aml_append(crs, aml_irq_no_flags(8)); -aml_append(crs, aml_io(AML_DECODE16, 0x0072, 0x0072, 0x02, 0x06)); -aml_append(dev, aml_name_decl("_CRS", crs)); - -return dev; -} - static Aml *build_kbd_device_aml(void) { Aml *dev; @@ -1278,7 +1262,6 @@ static void build_isa_devices_aml(Aml *table) Aml *scope = aml_scope("_SB.PCI0.ISA"); Object *obj = object_resolve_path_type("", TYPE_ISA_BUS, ); -aml_append(scope, build_rtc_device_aml()); aml_append(scope, build_kbd_device_aml()); aml_append(scope, build_mouse_device_aml()); if (fdc) { diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index d18c09911be2..2104e0aa3b14 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -27,6 +27,7 @@ #include "qemu/cutils.h" #include "qemu/module.h" #include "qemu/bcd.h" +#include "hw/acpi/aml-build.h" #include "hw/irq.h" #include "hw/qdev-properties.h" #include "qemu/timer.h" @@ -1007,13 +1008,34 @@ static void rtc_resetdev(DeviceState *d) } } +static void rtc_build_aml(ISADevice *isadev, Aml *scope) +{ +Aml *dev; +Aml *crs; + +crs = aml_resource_template(); +aml_append(crs, aml_io(AML_DECODE16, RTC_ISA_BASE, RTC_ISA_BASE, + 0x10, 0x02)); +aml_append(crs, aml_irq_no_flags(RTC_ISA_IRQ)); +aml_append(crs, aml_io(AML_DECODE16, RTC_ISA_BASE + 2, RTC_ISA_BASE + 2, + 0x02, 0x06)); + +dev = aml_device("RTC"); +aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0B00"))); +aml_append(dev, aml_name_decl("_CRS", crs)); + +aml_append(scope, dev); +} + static void rtc_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); +ISADeviceClass *isa = ISA_DEVICE_CLASS(klass); dc->realize = rtc_realizefn; dc->reset = rtc_resetdev; dc->vmsd = _rtc; +isa->build_aml = rtc_build_aml; device_class_set_props(dc, mc146818rtc_properties); } Reviewed-by: Philippe Mathieu-Daudé
Re: [PATCH v4 02/13] acpi: move aml builder code for rtc device
On Tue, 5 May 2020 13:38:32 +0200 Gerd Hoffmann wrote: > Signed-off-by: Gerd Hoffmann Reviewed-by: Igor Mammedov > --- > hw/i386/acpi-build.c | 17 - > hw/rtc/mc146818rtc.c | 22 ++ > 2 files changed, 22 insertions(+), 17 deletions(-) > > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > index 2e15f6848e7e..0bfa2dd23fcc 100644 > --- a/hw/i386/acpi-build.c > +++ b/hw/i386/acpi-build.c > @@ -1137,22 +1137,6 @@ static Aml *build_fdc_device_aml(ISADevice *fdc) > return dev; > } > > -static Aml *build_rtc_device_aml(void) > -{ > -Aml *dev; > -Aml *crs; > - > -dev = aml_device("RTC"); > -aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0B00"))); > -crs = aml_resource_template(); > -aml_append(crs, aml_io(AML_DECODE16, 0x0070, 0x0070, 0x10, 0x02)); > -aml_append(crs, aml_irq_no_flags(8)); > -aml_append(crs, aml_io(AML_DECODE16, 0x0072, 0x0072, 0x02, 0x06)); > -aml_append(dev, aml_name_decl("_CRS", crs)); > - > -return dev; > -} > - > static Aml *build_kbd_device_aml(void) > { > Aml *dev; > @@ -1278,7 +1262,6 @@ static void build_isa_devices_aml(Aml *table) > Aml *scope = aml_scope("_SB.PCI0.ISA"); > Object *obj = object_resolve_path_type("", TYPE_ISA_BUS, ); > > -aml_append(scope, build_rtc_device_aml()); > aml_append(scope, build_kbd_device_aml()); > aml_append(scope, build_mouse_device_aml()); > if (fdc) { > diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c > index d18c09911be2..2104e0aa3b14 100644 > --- a/hw/rtc/mc146818rtc.c > +++ b/hw/rtc/mc146818rtc.c > @@ -27,6 +27,7 @@ > #include "qemu/cutils.h" > #include "qemu/module.h" > #include "qemu/bcd.h" > +#include "hw/acpi/aml-build.h" > #include "hw/irq.h" > #include "hw/qdev-properties.h" > #include "qemu/timer.h" > @@ -1007,13 +1008,34 @@ static void rtc_resetdev(DeviceState *d) > } > } > > +static void rtc_build_aml(ISADevice *isadev, Aml *scope) > +{ > +Aml *dev; > +Aml *crs; > + > +crs = aml_resource_template(); > +aml_append(crs, aml_io(AML_DECODE16, RTC_ISA_BASE, RTC_ISA_BASE, > + 0x10, 0x02)); > +aml_append(crs, aml_irq_no_flags(RTC_ISA_IRQ)); > +aml_append(crs, aml_io(AML_DECODE16, RTC_ISA_BASE + 2, RTC_ISA_BASE + 2, > + 0x02, 0x06)); > + > +dev = aml_device("RTC"); > +aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0B00"))); > +aml_append(dev, aml_name_decl("_CRS", crs)); > + > +aml_append(scope, dev); > +} > + > static void rtc_class_initfn(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > +ISADeviceClass *isa = ISA_DEVICE_CLASS(klass); > > dc->realize = rtc_realizefn; > dc->reset = rtc_resetdev; > dc->vmsd = _rtc; > +isa->build_aml = rtc_build_aml; > device_class_set_props(dc, mc146818rtc_properties); > } >