qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Hervé Poussineau" <hpoussin@reactos.org>
To: qemu-devel@nongnu.org
Cc: "Hervé Poussineau" <hpoussin@reactos.org>
Subject: [Qemu-devel] [PATCH 08/11] malta: improve bus implementation of PIIX4 bridge
Date: Sun, 18 Sep 2011 16:56:40 +0200	[thread overview]
Message-ID: <1316357803-2366-9-git-send-email-hpoussin@reactos.org> (raw)
In-Reply-To: <1316357803-2366-1-git-send-email-hpoussin@reactos.org>


Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
 hw/mips_malta.c |    3 +--
 hw/pc.h         |    2 +-
 hw/piix4.c      |   23 +++++++++++++++++++++--
 3 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/hw/mips_malta.c b/hw/mips_malta.c
index e7cdf20..65e5915 100644
--- a/hw/mips_malta.c
+++ b/hw/mips_malta.c
@@ -939,8 +939,7 @@ void mips_malta_init (ram_addr_t ram_size,
     /* Southbridge */
     ide_drive_get(hd, MAX_IDE_BUS);
 
-    piix4_devfn = piix4_init(pci_bus, 80);
-    isa_bus_irqs(i8259);
+    piix4_devfn = piix4_init(pci_bus, 80, i8259);
     pci_piix4_ide_init(pci_bus, hd, piix4_devfn + 1);
     usb_uhci_piix4_init(pci_bus, piix4_devfn + 2);
     smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, isa_get_irq(9),
diff --git a/hw/pc.h b/hw/pc.h
index 5489039..8d1573f 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -194,7 +194,7 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix_devfn,
 
 /* piix4.c */
 extern PCIDevice *piix4_dev;
-int piix4_init(PCIBus *bus, int devfn);
+int piix4_init(PCIBus *bus, int devfn, qemu_irq *isa_irqs);
 
 /* vga.c */
 enum vga_retrace_method {
diff --git a/hw/piix4.c b/hw/piix4.c
index 984de8b..f6437ce 100644
--- a/hw/piix4.c
+++ b/hw/piix4.c
@@ -32,6 +32,8 @@ PCIDevice *piix4_dev;
 
 typedef struct PIIX4State {
     PCIDevice dev;
+    ISABus bus;
+    qemu_irq *isa_irq;
 } PIIX4State;
 
 static void piix4_reset(void *opaque)
@@ -83,21 +85,38 @@ static const VMStateDescription vmstate_piix4 = {
     }
 };
 
+static qemu_irq pci_piix4_get_irq(ISABus *bus, int isairq)
+{
+    PIIX4State *s = container_of(bus, PIIX4State, bus);
+    if (isairq < 0 || isairq >= 16) {
+        hw_error("isa irq %d invalid", isairq);
+    }
+    return s->isa_irq[isairq];
+}
+
+static ISABusOps pci_piix4_ops = {
+    .get_irq = pci_piix4_get_irq,
+};
+
 static int piix4_initfn(PCIDevice *dev)
 {
     PIIX4State *d = DO_UPCAST(PIIX4State, dev, dev);
 
-    isa_bus_bridge_init(&d->dev.qdev);
+    isa_bus_new(&d->bus, &pci_piix4_ops, &d->dev.qdev);
     piix4_dev = &d->dev;
     qemu_register_reset(piix4_reset, d);
     return 0;
 }
 
-int piix4_init(PCIBus *bus, int devfn)
+int piix4_init(PCIBus *bus, int devfn, qemu_irq *isa_irqs)
 {
     PCIDevice *d;
+    PIIX4State *s;
 
     d = pci_create_simple_multifunction(bus, devfn, true, "PIIX4");
+    s = DO_UPCAST(PIIX4State, dev, d);
+    s->isa_irq = isa_irqs;
+
     return d->devfn;
 }
 
-- 
1.7.5.4

  parent reply	other threads:[~2011-09-18 14:57 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-18 14:56 [Qemu-devel] [PATCH 00/11] ISA bus improvements Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 01/11] isa: rename isa_bus_new to isa_bus_bridge_init Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 02/11] isa: rework ISA bus internals, and add ISA bus ops structure Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 03/11] isa: implement isa_address_space() as a method of ISA bus Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 04/11] audio: give ISA bus to sound cards, instead of PIC Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 05/11] pc: improve bus implementation of PIIX3 bridge Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 06/11] fulong2e: move pic initialization + ISA bus creation to south bridge Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 07/11] sun4u: improve bus implementation of EBus bridge Hervé Poussineau
2011-09-18 14:56 ` Hervé Poussineau [this message]
2011-09-18 14:56 ` [Qemu-devel] [PATCH 09/11] isa: remove unused parameter to isa_bus_bridge_init() Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 10/11] isa: give bus to isa_create() methods Hervé Poussineau
2011-09-18 14:56 ` [Qemu-devel] [PATCH 11/11] isa: remove limitation of only one ISA bus Hervé Poussineau
2011-09-18 19:21 ` [Qemu-devel] [PATCH 00/11] ISA bus improvements Jan Kiszka
2011-09-18 19:33   ` Hervé Poussineau

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=1316357803-2366-9-git-send-email-hpoussin@reactos.org \
    --to=hpoussin@reactos.org \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).