[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 18/20] nubus: add support for slot IRQs
From: |
Laurent Vivier |
Subject: |
Re: [PATCH v4 18/20] nubus: add support for slot IRQs |
Date: |
Mon, 20 Sep 2021 23:40:39 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
Le 17/09/2021 à 09:50, Mark Cave-Ayland a écrit :
> Each Nubus slot has an IRQ line that can be used to request service from the
> CPU. Connect the IRQs to the Nubus bridge so that they can be wired up using
> qdev
> gpios accordingly, and introduce a new nubus_set_irq() function that can be
> used
> by Nubus devices to control the slot IRQ.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
> hw/nubus/nubus-bridge.c | 2 ++
> hw/nubus/nubus-device.c | 8 ++++++++
> include/hw/nubus/nubus.h | 6 ++++++
> 3 files changed, 16 insertions(+)
>
> diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c
> index 2c7c4ee121..0366d925a9 100644
> --- a/hw/nubus/nubus-bridge.c
> +++ b/hw/nubus/nubus-bridge.c
> @@ -19,6 +19,8 @@ static void nubus_bridge_init(Object *obj)
> NubusBus *bus = &s->bus;
>
> qbus_create_inplace(bus, sizeof(s->bus), TYPE_NUBUS_BUS, DEVICE(s),
> NULL);
> +
> + qdev_init_gpio_out(DEVICE(s), bus->irqs, NUBUS_IRQS);
> }
>
> static Property nubus_bridge_properties[] = {
> diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c
> index 9cecb487a1..4856e81991 100644
> --- a/hw/nubus/nubus-device.c
> +++ b/hw/nubus/nubus-device.c
> @@ -10,12 +10,20 @@
>
> #include "qemu/osdep.h"
> #include "qemu/datadir.h"
> +#include "hw/irq.h"
> #include "hw/loader.h"
> #include "hw/nubus/nubus.h"
> #include "qapi/error.h"
> #include "qemu/error-report.h"
>
>
> +void nubus_set_irq(NubusDevice *nd, int level)
> +{
> + NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(DEVICE(nd)));
> +
> + qemu_set_irq(nubus->irqs[nd->slot], level);
> +}
> +
> static void nubus_device_realize(DeviceState *dev, Error **errp)
> {
> NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(dev));
> diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h
> index cf9a585a91..1c487f74ac 100644
> --- a/include/hw/nubus/nubus.h
> +++ b/include/hw/nubus/nubus.h
> @@ -25,6 +25,8 @@
> #define NUBUS_FIRST_SLOT 0x0
> #define NUBUS_LAST_SLOT 0xf
>
> +#define NUBUS_IRQS 16
> +
> #define TYPE_NUBUS_DEVICE "nubus-device"
> OBJECT_DECLARE_SIMPLE_TYPE(NubusDevice, NUBUS_DEVICE)
>
> @@ -44,6 +46,8 @@ struct NubusBus {
> MemoryRegion slot_io;
>
> uint32_t slot_available_mask;
> +
> + qemu_irq irqs[NUBUS_IRQS];
> };
>
> #define NUBUS_DECL_ROM_MAX_SIZE (128 * KiB)
> @@ -59,6 +63,8 @@ struct NubusDevice {
> MemoryRegion decl_rom;
> };
>
> +void nubus_set_irq(NubusDevice *nd, int level);
> +
> struct NubusBridge {
> SysBusDevice parent_obj;
>
>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
- Re: [PATCH v4 09/20] macfb: don't register declaration ROM, (continued)
- [PATCH v4 13/20] nubus-bridge: introduce separate NubusBridge structure, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 14/20] mac-nubus-bridge: rename MacNubusState to MacNubusBridge, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 12/20] nubus: move nubus to its own 32-bit address space, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 15/20] nubus: move NubusBus from mac-nubus-bridge to nubus-bridge, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 16/20] nubus-bridge: embed the NubusBus object directly within nubus-bridge, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 17/20] nubus-bridge: make slot_available_mask a qdev property, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 18/20] nubus: add support for slot IRQs, Mark Cave-Ayland, 2021/09/17
- Re: [PATCH v4 18/20] nubus: add support for slot IRQs,
Laurent Vivier <=
- [PATCH v4 19/20] q800: wire up nubus IRQs, Mark Cave-Ayland, 2021/09/17
- [PATCH v4 20/20] q800: configure nubus available slots for Quadra 800, Mark Cave-Ayland, 2021/09/17