Le 09/02/2021 à 20:30, Mark Cave-Ayland a écrit : > The MacOS toolbox ROM performs 4 byte reads/writes when transferring data to > and from the target. Since the SCSI bus is 16-bits wide, use the memory API > to split a 4 byte access into 2 x 2 byte accesses. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > --- > hw/scsi/esp.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c > index 7671cc398d..1d56c99527 100644 > --- a/hw/scsi/esp.c > +++ b/hw/scsi/esp.c > @@ -1003,7 +1003,9 @@ static const MemoryRegionOps sysbus_esp_pdma_ops = { > .write = sysbus_esp_pdma_write, > .endianness = DEVICE_NATIVE_ENDIAN, > .valid.min_access_size = 1, > - .valid.max_access_size = 2, > + .valid.max_access_size = 4, > + .impl.min_access_size = 1, > + .impl.max_access_size = 2, > }; > > static const struct SCSIBusInfo esp_scsi_info = { > @@ -1048,7 +1050,7 @@ static void sysbus_esp_realize(DeviceState *dev, Error > **errp) > sysbus, "esp-regs", ESP_REGS << sysbus->it_shift); > sysbus_init_mmio(sbd, &sysbus->iomem); > memory_region_init_io(&sysbus->pdma, OBJECT(sysbus), > &sysbus_esp_pdma_ops, > - sysbus, "esp-pdma", 2); > + sysbus, "esp-pdma", 4); > sysbus_init_mmio(sbd, &sysbus->pdma); > > qdev_init_gpio_in(dev, sysbus_esp_gpio_demux, 2); >
Reviewed-by: Laurent Vivier <laur...@vivier.eu>