在 2021/1/10 上午4:16, BALATON Zoltan 写道:
> The superio memory region holds the io space index/data registers used
> to access the superio config registers that are implemented in struct
> SuperIOConfig. To keep these related things together move the memory
> region to SuperIOConfig and rename it accordingly.
> Also remove the unused "data" member of SuperIOConfig which is not
> needed as we store actual data values in the regs array.
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> ---
> hw/isa/vt82c686.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
> index a6f5a0843d..30fe02f4c6 100644
> --- a/hw/isa/vt82c686.c
> +++ b/hw/isa/vt82c686.c
> @@ -29,12 +29,11 @@
> typedef struct SuperIOConfig {
> uint8_t regs[0x100];
> uint8_t index;
> - uint8_t data;
> + MemoryRegion io;
> } SuperIOConfig;
>
> struct VT82C686BISAState {
> PCIDevice dev;
> - MemoryRegion superio;
> SuperIOConfig superio_cfg;
> };
>
> @@ -128,8 +127,9 @@ static void vt82c686b_write_config(PCIDevice *d, uint32_t addr,
>
> trace_via_isa_write(addr, val, len);
> pci_default_write_config(d, addr, val, len);
> - if (addr == 0x85) { /* enable or disable super IO configure */
> - memory_region_set_enabled(&s->superio, val & 0x2);
> + if (addr == 0x85) {
> + /* BIT(1): enable or disable superio config io ports */
> + memory_region_set_enabled(&s->superio_cfg.io, val & BIT(1));
> }
> }
>
> @@ -311,15 +311,15 @@ static void vt82c686b_realize(PCIDevice *d, Error **errp)
> }
> }
>
> - memory_region_init_io(&s->superio, OBJECT(d), &superio_cfg_ops,
> - &s->superio_cfg, "superio", 2);
> - memory_region_set_enabled(&s->superio, false);
> + memory_region_init_io(&s->superio_cfg.io, OBJECT(d), &superio_cfg_ops,
> + &s->superio_cfg, "superio_cfg", 2);
> + memory_region_set_enabled(&s->superio_cfg.io, false);
> /*
> * The floppy also uses 0x3f0 and 0x3f1.
> * But we do not emulate a floppy, so just set it here.
> */
> memory_region_add_subregion(isa_bus->address_space_io, 0x3f0,
> - &s->superio);
> + &s->superio_cfg.io);
> }
>
> static void via_class_init(ObjectClass *klass, void *data)