Message ID | 20210917075057.20924-11-mark.cave-ayland@ilande.co.uk |
---|---|
State | New |
Headers | show |
Series | nubus: bus, device, bridge, IRQ and address space improvements | expand |
Le 17/09/2021 à 09:50, Mark Cave-Ayland a écrit : > Since there is no need to generate a dummy declaration ROM, remove both > nubus_register_rom() and nubus_register_format_block(). These will shortly be > replaced with a mechanism to optionally load a declaration ROM from disk to > allow real images to be used within QEMU. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> > --- > hw/nubus/nubus-device.c | 143 --------------------------------------- > include/hw/nubus/nubus.h | 19 ------ > 2 files changed, 162 deletions(-) > > diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c > index 7a32c8c95b..9c1992ceb0 100644 > --- a/hw/nubus/nubus-device.c > +++ b/hw/nubus/nubus-device.c > @@ -13,147 +13,6 @@ > #include "qapi/error.h" > > > -/* The Format Block Structure */ > - > -#define FBLOCK_DIRECTORY_OFFSET 0 > -#define FBLOCK_LENGTH 4 > -#define FBLOCK_CRC 8 > -#define FBLOCK_REVISION_LEVEL 12 > -#define FBLOCK_FORMAT 13 > -#define FBLOCK_TEST_PATTERN 14 > -#define FBLOCK_RESERVED 18 > -#define FBLOCK_BYTE_LANES 19 > - > -#define FBLOCK_SIZE 20 > -#define FBLOCK_PATTERN_VAL 0x5a932bc7 > - > -static uint64_t nubus_fblock_read(void *opaque, hwaddr addr, unsigned int size) > -{ > - NubusDevice *dev = opaque; > - uint64_t val; > - > -#define BYTE(v, b) (((v) >> (24 - 8 * (b))) & 0xff) > - switch (addr) { > - case FBLOCK_BYTE_LANES: > - val = dev->byte_lanes; > - val |= (val ^ 0xf) << 4; > - break; > - case FBLOCK_RESERVED: > - val = 0x00; > - break; > - case FBLOCK_TEST_PATTERN...FBLOCK_TEST_PATTERN + 3: > - val = BYTE(FBLOCK_PATTERN_VAL, addr - FBLOCK_TEST_PATTERN); > - break; > - case FBLOCK_FORMAT: > - val = dev->rom_format; > - break; > - case FBLOCK_REVISION_LEVEL: > - val = dev->rom_rev; > - break; > - case FBLOCK_CRC...FBLOCK_CRC + 3: > - val = BYTE(dev->rom_crc, addr - FBLOCK_CRC); > - break; > - case FBLOCK_LENGTH...FBLOCK_LENGTH + 3: > - val = BYTE(dev->rom_length, addr - FBLOCK_LENGTH); > - break; > - case FBLOCK_DIRECTORY_OFFSET...FBLOCK_DIRECTORY_OFFSET + 3: > - val = BYTE(dev->directory_offset, addr - FBLOCK_DIRECTORY_OFFSET); > - break; > - default: > - val = 0; > - break; > - } > - return val; > -} > - > -static void nubus_fblock_write(void *opaque, hwaddr addr, uint64_t val, > - unsigned int size) > -{ > - /* read only */ > -} > - > -static const MemoryRegionOps nubus_format_block_ops = { > - .read = nubus_fblock_read, > - .write = nubus_fblock_write, > - .endianness = DEVICE_BIG_ENDIAN, > - .valid = { > - .min_access_size = 1, > - .max_access_size = 1, > - } > -}; > - > -static void nubus_register_format_block(NubusDevice *dev) > -{ > - char *fblock_name; > - > - fblock_name = g_strdup_printf("nubus-slot-%d-format-block", > - dev->slot); > - > - hwaddr fblock_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE; > - memory_region_init_io(&dev->fblock_io, NULL, &nubus_format_block_ops, > - dev, fblock_name, FBLOCK_SIZE); > - memory_region_add_subregion(&dev->slot_mem, fblock_offset, > - &dev->fblock_io); > - > - g_free(fblock_name); > -} > - > -static void mac_nubus_rom_write(void *opaque, hwaddr addr, uint64_t val, > - unsigned int size) > -{ > - /* read only */ > -} > - > -static uint64_t mac_nubus_rom_read(void *opaque, hwaddr addr, > - unsigned int size) > -{ > - NubusDevice *dev = opaque; > - > - return dev->rom[addr]; > -} > - > -static const MemoryRegionOps mac_nubus_rom_ops = { > - .read = mac_nubus_rom_read, > - .write = mac_nubus_rom_write, > - .endianness = DEVICE_BIG_ENDIAN, > - .valid = { > - .min_access_size = 1, > - .max_access_size = 1, > - }, > -}; > - > - > -void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, > - int revision, int format, uint8_t byte_lanes) > -{ > - hwaddr rom_offset; > - char *rom_name; > - > - /* FIXME : really compute CRC */ > - dev->rom_length = 0; > - dev->rom_crc = 0; > - > - dev->rom_rev = revision; > - dev->rom_format = format; > - > - dev->byte_lanes = byte_lanes; > - dev->directory_offset = -size; > - > - /* ROM */ > - > - dev->rom = rom; > - rom_name = g_strdup_printf("nubus-slot-%d-rom", dev->slot); > - memory_region_init_io(&dev->rom_io, NULL, &mac_nubus_rom_ops, > - dev, rom_name, size); > - memory_region_set_readonly(&dev->rom_io, true); > - > - rom_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE + > - dev->directory_offset; > - memory_region_add_subregion(&dev->slot_mem, rom_offset, &dev->rom_io); > - > - g_free(rom_name); > -} > - > static void nubus_device_realize(DeviceState *dev, Error **errp) > { > NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(dev)); > @@ -179,8 +38,6 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) > memory_region_add_subregion(&nubus->slot_io, slot_offset, > &nd->slot_mem); > g_free(name); > - > - nubus_register_format_block(nd); > } > > static Property nubus_device_properties[] = { > diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h > index 8ff4736259..87a97516c7 100644 > --- a/include/hw/nubus/nubus.h > +++ b/include/hw/nubus/nubus.h > @@ -45,25 +45,6 @@ struct NubusDevice { > int32_t slot; > MemoryRegion super_slot_mem; > MemoryRegion slot_mem; > - > - /* Format Block */ > - > - MemoryRegion fblock_io; > - > - uint32_t rom_length; > - uint32_t rom_crc; > - uint8_t rom_rev; > - uint8_t rom_format; > - uint8_t byte_lanes; > - int32_t directory_offset; > - > - /* ROM */ > - > - MemoryRegion rom_io; > - const uint8_t *rom; > }; > > -void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, > - int revision, int format, uint8_t byte_lanes); > - > #endif > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 7a32c8c95b..9c1992ceb0 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -13,147 +13,6 @@ #include "qapi/error.h" -/* The Format Block Structure */ - -#define FBLOCK_DIRECTORY_OFFSET 0 -#define FBLOCK_LENGTH 4 -#define FBLOCK_CRC 8 -#define FBLOCK_REVISION_LEVEL 12 -#define FBLOCK_FORMAT 13 -#define FBLOCK_TEST_PATTERN 14 -#define FBLOCK_RESERVED 18 -#define FBLOCK_BYTE_LANES 19 - -#define FBLOCK_SIZE 20 -#define FBLOCK_PATTERN_VAL 0x5a932bc7 - -static uint64_t nubus_fblock_read(void *opaque, hwaddr addr, unsigned int size) -{ - NubusDevice *dev = opaque; - uint64_t val; - -#define BYTE(v, b) (((v) >> (24 - 8 * (b))) & 0xff) - switch (addr) { - case FBLOCK_BYTE_LANES: - val = dev->byte_lanes; - val |= (val ^ 0xf) << 4; - break; - case FBLOCK_RESERVED: - val = 0x00; - break; - case FBLOCK_TEST_PATTERN...FBLOCK_TEST_PATTERN + 3: - val = BYTE(FBLOCK_PATTERN_VAL, addr - FBLOCK_TEST_PATTERN); - break; - case FBLOCK_FORMAT: - val = dev->rom_format; - break; - case FBLOCK_REVISION_LEVEL: - val = dev->rom_rev; - break; - case FBLOCK_CRC...FBLOCK_CRC + 3: - val = BYTE(dev->rom_crc, addr - FBLOCK_CRC); - break; - case FBLOCK_LENGTH...FBLOCK_LENGTH + 3: - val = BYTE(dev->rom_length, addr - FBLOCK_LENGTH); - break; - case FBLOCK_DIRECTORY_OFFSET...FBLOCK_DIRECTORY_OFFSET + 3: - val = BYTE(dev->directory_offset, addr - FBLOCK_DIRECTORY_OFFSET); - break; - default: - val = 0; - break; - } - return val; -} - -static void nubus_fblock_write(void *opaque, hwaddr addr, uint64_t val, - unsigned int size) -{ - /* read only */ -} - -static const MemoryRegionOps nubus_format_block_ops = { - .read = nubus_fblock_read, - .write = nubus_fblock_write, - .endianness = DEVICE_BIG_ENDIAN, - .valid = { - .min_access_size = 1, - .max_access_size = 1, - } -}; - -static void nubus_register_format_block(NubusDevice *dev) -{ - char *fblock_name; - - fblock_name = g_strdup_printf("nubus-slot-%d-format-block", - dev->slot); - - hwaddr fblock_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE; - memory_region_init_io(&dev->fblock_io, NULL, &nubus_format_block_ops, - dev, fblock_name, FBLOCK_SIZE); - memory_region_add_subregion(&dev->slot_mem, fblock_offset, - &dev->fblock_io); - - g_free(fblock_name); -} - -static void mac_nubus_rom_write(void *opaque, hwaddr addr, uint64_t val, - unsigned int size) -{ - /* read only */ -} - -static uint64_t mac_nubus_rom_read(void *opaque, hwaddr addr, - unsigned int size) -{ - NubusDevice *dev = opaque; - - return dev->rom[addr]; -} - -static const MemoryRegionOps mac_nubus_rom_ops = { - .read = mac_nubus_rom_read, - .write = mac_nubus_rom_write, - .endianness = DEVICE_BIG_ENDIAN, - .valid = { - .min_access_size = 1, - .max_access_size = 1, - }, -}; - - -void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, - int revision, int format, uint8_t byte_lanes) -{ - hwaddr rom_offset; - char *rom_name; - - /* FIXME : really compute CRC */ - dev->rom_length = 0; - dev->rom_crc = 0; - - dev->rom_rev = revision; - dev->rom_format = format; - - dev->byte_lanes = byte_lanes; - dev->directory_offset = -size; - - /* ROM */ - - dev->rom = rom; - rom_name = g_strdup_printf("nubus-slot-%d-rom", dev->slot); - memory_region_init_io(&dev->rom_io, NULL, &mac_nubus_rom_ops, - dev, rom_name, size); - memory_region_set_readonly(&dev->rom_io, true); - - rom_offset = memory_region_size(&dev->slot_mem) - FBLOCK_SIZE + - dev->directory_offset; - memory_region_add_subregion(&dev->slot_mem, rom_offset, &dev->rom_io); - - g_free(rom_name); -} - static void nubus_device_realize(DeviceState *dev, Error **errp) { NubusBus *nubus = NUBUS_BUS(qdev_get_parent_bus(dev)); @@ -179,8 +38,6 @@ static void nubus_device_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(&nubus->slot_io, slot_offset, &nd->slot_mem); g_free(name); - - nubus_register_format_block(nd); } static Property nubus_device_properties[] = { diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 8ff4736259..87a97516c7 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -45,25 +45,6 @@ struct NubusDevice { int32_t slot; MemoryRegion super_slot_mem; MemoryRegion slot_mem; - - /* Format Block */ - - MemoryRegion fblock_io; - - uint32_t rom_length; - uint32_t rom_crc; - uint8_t rom_rev; - uint8_t rom_format; - uint8_t byte_lanes; - int32_t directory_offset; - - /* ROM */ - - MemoryRegion rom_io; - const uint8_t *rom; }; -void nubus_register_rom(NubusDevice *dev, const uint8_t *rom, uint32_t size, - int revision, int format, uint8_t byte_lanes); - #endif
Since there is no need to generate a dummy declaration ROM, remove both nubus_register_rom() and nubus_register_format_block(). These will shortly be replaced with a mechanism to optionally load a declaration ROM from disk to allow real images to be used within QEMU. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> --- hw/nubus/nubus-device.c | 143 --------------------------------------- include/hw/nubus/nubus.h | 19 ------ 2 files changed, 162 deletions(-)