All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"John Snow" <jsnow@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: [PATCH v3 09/15] acpi: move aml builder code for serial device
Date: Wed, 29 Apr 2020 15:59:57 +0200	[thread overview]
Message-ID: <20200429140003.7336-10-kraxel@redhat.com> (raw)
In-Reply-To: <20200429140003.7336-1-kraxel@redhat.com>

The code uses the isa_serial_io array to figure what the device uid is.
Side effect is that acpi antries are not limited to port 1+2 any more,
we'll also get entries for ports 3+4.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
 hw/char/serial-isa.c | 32 ++++++++++++++++++++++++++++++++
 hw/i386/acpi-build.c | 32 --------------------------------
 2 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c
index f9b6eed7833d..f7c19a398ced 100644
--- a/hw/char/serial-isa.c
+++ b/hw/char/serial-isa.c
@@ -27,6 +27,7 @@
 #include "qapi/error.h"
 #include "qemu/module.h"
 #include "sysemu/sysemu.h"
+#include "hw/acpi/aml-build.h"
 #include "hw/char/serial.h"
 #include "hw/isa/isa.h"
 #include "hw/qdev-properties.h"
@@ -81,6 +82,35 @@ static void serial_isa_realizefn(DeviceState *dev, Error **errp)
     isa_register_ioport(isadev, &s->io, isa->iobase);
 }
 
+static void serial_isa_build_aml(ISADevice *isadev, Aml *scope)
+{
+    ISASerialState *isa = ISA_SERIAL(isadev);
+    int i, uid = 0;
+    Aml *dev;
+    Aml *crs;
+
+    for (i = 0; i < ARRAY_SIZE(isa_serial_io); i++) {
+        if (isa->iobase == isa_serial_io[i]) {
+            uid = i + 1;
+        }
+    }
+    if (!uid) {
+        return;
+    }
+
+    crs = aml_resource_template();
+    aml_append(crs, aml_io(AML_DECODE16, isa->iobase, isa->iobase, 0x00, 0x08));
+    aml_append(crs, aml_irq_no_flags(isa->isairq));
+
+    dev = aml_device("COM%d", uid);
+    aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0501")));
+    aml_append(dev, aml_name_decl("_UID", aml_int(uid)));
+    aml_append(dev, aml_name_decl("_STA", aml_int(0xf)));
+    aml_append(dev, aml_name_decl("_CRS", crs));
+
+    aml_append(scope, dev);
+}
+
 static const VMStateDescription vmstate_isa_serial = {
     .name = "serial",
     .version_id = 3,
@@ -103,9 +133,11 @@ static Property serial_isa_properties[] = {
 static void serial_isa_class_initfn(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
+    ISADeviceClass *isa = ISA_DEVICE_CLASS(klass);
 
     dc->realize = serial_isa_realizefn;
     dc->vmsd = &vmstate_isa_serial;
+    isa->build_aml = serial_isa_build_aml;
     device_class_set_props(dc, serial_isa_properties);
     set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
 }
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index a99e5bbd1156..fea83352e6ab 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1202,36 +1202,6 @@ static Aml *build_lpt_device_aml(void)
     return dev;
 }
 
-static void build_com_device_aml(Aml *scope, uint8_t uid)
-{
-    Aml *dev;
-    Aml *crs;
-    uint8_t irq = 4;
-    uint16_t io_port = 0x03F8;
-
-    assert(uid == 1 || uid == 2);
-    if (uid == 2) {
-        irq = 3;
-        io_port = 0x02F8;
-    }
-    if (!memory_region_present(get_system_io(), io_port)) {
-        return;
-    }
-
-    dev = aml_device("COM%d", uid);
-    aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0501")));
-    aml_append(dev, aml_name_decl("_UID", aml_int(uid)));
-
-    aml_append(dev, aml_name_decl("_STA", aml_int(0xf)));
-
-    crs = aml_resource_template();
-    aml_append(crs, aml_io(AML_DECODE16, io_port, io_port, 0x00, 0x08));
-    aml_append(crs, aml_irq_no_flags(irq));
-    aml_append(dev, aml_name_decl("_CRS", crs));
-
-    aml_append(scope, dev);
-}
-
 static void build_isa_devices_aml(Aml *table)
 {
     ISADevice *fdc = pc_find_fdc0();
@@ -1246,8 +1216,6 @@ static void build_isa_devices_aml(Aml *table)
         aml_append(scope, build_fdc_device_aml(fdc));
     }
     aml_append(scope, build_lpt_device_aml());
-    build_com_device_aml(scope, 1);
-    build_com_device_aml(scope, 2);
 
     if (ambiguous) {
         error_report("Multiple ISA busses, unable to define IPMI ACPI data");
-- 
2.18.2



  parent reply	other threads:[~2020-04-29 14:05 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 13:59 [PATCH v3 00/15] acpi: i386 tweaks Gerd Hoffmann
2020-04-29 13:59 ` [PATCH v3 01/15] move 'typedef Aml' to qemu/types.h Gerd Hoffmann
2020-04-30  6:35   ` Philippe Mathieu-Daudé
2020-04-29 13:59 ` [PATCH v3 02/15] acpi: add aml builder stubs Gerd Hoffmann
2020-04-29 13:59 ` [PATCH v3 03/15] qtest: allow DSDT acpi table changes Gerd Hoffmann
2020-04-29 13:59 ` [PATCH v3 04/15] acpi: drop pointless _STA method Gerd Hoffmann
2020-04-30  6:35   ` Philippe Mathieu-Daudé
2020-04-29 13:59 ` [PATCH v3 05/15] acpi: add ISADeviceClass->build_aml() Gerd Hoffmann
2020-04-29 13:59 ` [PATCH v3 06/15] rtc: add RTC_ISA_BASE Gerd Hoffmann
2020-04-30  6:35   ` Philippe Mathieu-Daudé
2020-04-30 12:06   ` Igor Mammedov
2020-04-29 13:59 ` [PATCH v3 07/15] acpi: move aml builder code for rtc device Gerd Hoffmann
2020-04-30 12:13   ` Igor Mammedov
2020-04-29 13:59 ` [PATCH v3 08/15] acpi: serial: don't use _STA method Gerd Hoffmann
2020-04-30  6:39   ` Philippe Mathieu-Daudé
2020-05-04 13:19     ` Gerd Hoffmann
2020-05-04 14:47       ` Philippe Mathieu-Daudé
2020-04-29 13:59 ` Gerd Hoffmann [this message]
2020-04-29 13:59 ` [PATCH v3 10/15] acpi: parallel: " Gerd Hoffmann
2020-04-30  6:43   ` Philippe Mathieu-Daudé
2020-05-04 13:21     ` Gerd Hoffmann
2020-04-30 16:25   ` Igor Mammedov
2020-05-04 13:25     ` Gerd Hoffmann
2020-05-04 16:10       ` Igor Mammedov
2020-04-29 13:59 ` [PATCH v3 11/15] acpi: move aml builder code for parallel device Gerd Hoffmann
2020-04-30 13:43   ` Igor Mammedov
2020-04-29 14:00 ` [PATCH v3 12/15] acpi: move aml builder code for floppy device Gerd Hoffmann
2020-04-30 16:19   ` Igor Mammedov
2020-04-29 14:00 ` [PATCH v3 13/15] acpi: move aml builder code for i8042 (kbd+mouse) device Gerd Hoffmann
2020-04-30  6:50   ` Philippe Mathieu-Daudé
2020-04-30 16:28   ` Igor Mammedov
2020-04-29 14:00 ` [PATCH v3 14/15] acpi: factor out fw_cfg_add_acpi_dsdt() Gerd Hoffmann
2020-04-30 16:31   ` Igor Mammedov
2020-04-29 14:00 ` [PATCH v3 15/15] acpi: simplify build_isa_devices_aml() Gerd Hoffmann
2020-04-30  6:48   ` Philippe Mathieu-Daudé
2020-05-04 13:46     ` Gerd Hoffmann
2020-05-04 14:46       ` Philippe Mathieu-Daudé
2020-04-29 18:31 ` [PATCH v3 00/15] acpi: i386 tweaks no-reply
2020-05-04 12:48 ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200429140003.7336-10-kraxel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.