mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
hw/{misc, riscv}: pfsoc: add system controller as unimplemented
The system controller on PolarFire SoC is access via a mailbox. The control registers for this mailbox lie in the "IOSCB" region & the interrupt is cleared via write to the "SYSREG" region. It also has a QSPI controller, usually connected to a flash chip, that is used for storing FPGA bitstreams and used for In-Application Programming (IAP). Linux has an implementation of the system controller, through which the hwrng is accessed, leading to load/store access faults. Add the QSPI as unimplemented and a very basic (effectively unimplemented) version of the system controller's mailbox. Rather than purely marking the regions as unimplemented, service the mailbox requests by reporting failures and raising the interrupt so a guest can better handle the lack of support. Signed-off-by: Conor Dooley <conor.dooley@microchip.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20221117225518.4102575-4-conor@kernel.org> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
8d32e374a8
commit
592f0a9429
6 changed files with 95 additions and 6 deletions
|
@ -306,6 +306,9 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
|
|||
sysbus_realize(SYS_BUS_DEVICE(&s->sysreg), errp);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sysreg), 0,
|
||||
memmap[MICROCHIP_PFSOC_SYSREG].base);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->sysreg), 0,
|
||||
qdev_get_gpio_in(DEVICE(s->plic),
|
||||
MICROCHIP_PFSOC_MAILBOX_IRQ));
|
||||
|
||||
/* AXISW */
|
||||
create_unimplemented_device("microchip.pfsoc.axisw",
|
||||
|
@ -459,6 +462,9 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
|
|||
sysbus_realize(SYS_BUS_DEVICE(&s->ioscb), errp);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ioscb), 0,
|
||||
memmap[MICROCHIP_PFSOC_IOSCB].base);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ioscb), 0,
|
||||
qdev_get_gpio_in(DEVICE(s->plic),
|
||||
MICROCHIP_PFSOC_MAILBOX_IRQ));
|
||||
|
||||
/* FPGA Fabric */
|
||||
create_unimplemented_device("microchip.pfsoc.fabricfic3",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue