diff options
author | Peter Maydell | 2021-09-29 22:20:49 +0200 |
---|---|---|
committer | Peter Maydell | 2021-09-29 22:20:49 +0200 |
commit | ba0fa56bc06e563de68d2a2bf3ddb0cfea1be4f9 (patch) | |
tree | f372601cb841998f8edaf70a1da571190ca59210 /hw/m68k | |
parent | Merge remote-tracking branch 'remotes/jsnow-gitlab/tags/python-pull-request' ... (diff) | |
parent | q800: configure nubus available slots for Quadra 800 (diff) | |
download | qemu-ba0fa56bc06e563de68d2a2bf3ddb0cfea1be4f9.tar.gz qemu-ba0fa56bc06e563de68d2a2bf3ddb0cfea1be4f9.tar.xz qemu-ba0fa56bc06e563de68d2a2bf3ddb0cfea1be4f9.zip |
Merge remote-tracking branch 'remotes/vivier/tags/q800-for-6.2-pull-request' into staging
Q800 Pull request 20210929
NuBus cleanup and improvement
# gpg: Signature made Wed 29 Sep 2021 10:27:51 BST
# gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg: issuer "laurent@vivier.eu"
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C
* remotes/vivier/tags/q800-for-6.2-pull-request:
q800: configure nubus available slots for Quadra 800
q800: wire up nubus IRQs
nubus: add support for slot IRQs
nubus-bridge: make slot_available_mask a qdev property
nubus-bridge: embed the NubusBus object directly within nubus-bridge
nubus: move NubusBus from mac-nubus-bridge to nubus-bridge
mac-nubus-bridge: rename MacNubusState to MacNubusBridge
nubus-bridge: introduce separate NubusBridge structure
nubus: move nubus to its own 32-bit address space
nubus-device: add romfile property for loading declaration ROMs
nubus-device: remove nubus_register_rom() and nubus_register_format_block()
macfb: don't register declaration ROM
nubus: generate bus error when attempting to access empty slots
nubus: add trace-events for empty slot accesses
nubus: implement BusClass get_dev_path()
nubus: move slot bitmap checks from NubusDevice realize() to BusClass check_address()
nubus: use bitmap to manage available slots
nubus-device: expose separate super slot memory region
nubus-device: rename slot_nb variable to slot
nubus: add comment indicating reference documents
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/m68k')
-rw-r--r-- | hw/m68k/q800.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 5ba87f789c..09b3366024 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -67,9 +67,6 @@ #define ASC_BASE (IO_BASE + 0x14000) #define SWIM_BASE (IO_BASE + 0x1E000) -#define NUBUS_SUPER_SLOT_BASE 0x60000000 -#define NUBUS_SLOT_BASE 0xf0000000 - #define SONIC_PROM_SIZE 0x1000 /* @@ -82,6 +79,13 @@ #define MAC_CLOCK 3686418 /* + * Slot 0x9 is reserved for use by the in-built framebuffer whilst only + * slots 0xc, 0xd and 0xe physically exist on the Quadra 800 + */ +#define Q800_NUBUS_SLOTS_AVAILABLE (BIT(0x9) | BIT(0xc) | BIT(0xd) | \ + BIT(0xe)) + +/* * The GLUE (General Logic Unit) is an Apple custom integrated circuit chip * that performs a variety of functions (RAM management, clock generation, ...). * The GLUE chip receives interrupt requests from various devices, @@ -395,11 +399,21 @@ static void q800_init(MachineState *machine) /* NuBus */ dev = qdev_new(TYPE_MAC_NUBUS_BRIDGE); + qdev_prop_set_uint32(dev, "slot-available-mask", + Q800_NUBUS_SLOTS_AVAILABLE); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, NUBUS_SUPER_SLOT_BASE); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, + MAC_NUBUS_FIRST_SLOT * NUBUS_SUPER_SLOT_SIZE); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 1, NUBUS_SLOT_BASE + + MAC_NUBUS_FIRST_SLOT * NUBUS_SLOT_SIZE); + + for (i = 0; i < VIA2_NUBUS_IRQ_NB; i++) { + qdev_connect_gpio_out(dev, 9 + i, + qdev_get_gpio_in_named(via2_dev, "nubus-irq", + VIA2_NUBUS_IRQ_9 + i)); + } - nubus = MAC_NUBUS_BRIDGE(dev)->bus; + nubus = &NUBUS_BRIDGE(dev)->bus; /* framebuffer in nubus slot #9 */ |