Message ID | 20200614142840.10245-19-mark.cave-ayland@ilande.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ADB: fix autopoll issues and rework mac_via state machine | expand |
On 6/14/20 4:28 PM, Mark Cave-Ayland wrote: > Currently the logic is split between the mos6522 portB_write() callback and > the memory region used to capture the VIA1 MMIO accesses. Move everything > into the latter mos6522_q800_via1_write() function to keep all the logic in > one place to make it easier to follow. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> > --- > hw/misc/mac_via.c | 24 ++++++++++-------------- > 1 file changed, 10 insertions(+), 14 deletions(-) > > diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c > index 669fdca4c4..4779236f95 100644 > --- a/hw/misc/mac_via.c > +++ b/hw/misc/mac_via.c > @@ -801,11 +801,21 @@ static void mos6522_q800_via1_write(void *opaque, hwaddr addr, uint64_t val, > unsigned size) > { > MOS6522Q800VIA1State *v1s = MOS6522_Q800_VIA1(opaque); > + MacVIAState *m = container_of(v1s, MacVIAState, mos6522_via1); Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > MOS6522State *ms = MOS6522(v1s); > > addr = (addr >> 9) & 0xf; > mos6522_write(ms, addr, val, size); > > + switch (addr) { > + case VIA_REG_B: > + via1_rtc_update(m); > + via1_adb_update(m); > + > + v1s->last_b = ms->b; > + break; > + } > + > via1_one_second_update(v1s); > via1_VBL_update(v1s); > } > @@ -1034,18 +1044,6 @@ static TypeInfo mac_via_info = { > }; > > /* VIA 1 */ > -static void mos6522_q800_via1_portB_write(MOS6522State *s) > -{ > - MOS6522Q800VIA1State *v1s = container_of(s, MOS6522Q800VIA1State, > - parent_obj); > - MacVIAState *m = container_of(v1s, MacVIAState, mos6522_via1); > - > - via1_rtc_update(m); > - via1_adb_update(m); > - > - v1s->last_b = s->b; > -} > - > static void mos6522_q800_via1_reset(DeviceState *dev) > { > MOS6522State *ms = MOS6522(dev); > @@ -1068,10 +1066,8 @@ static void mos6522_q800_via1_init(Object *obj) > static void mos6522_q800_via1_class_init(ObjectClass *oc, void *data) > { > DeviceClass *dc = DEVICE_CLASS(oc); > - MOS6522DeviceClass *mdc = MOS6522_DEVICE_CLASS(oc); > > dc->reset = mos6522_q800_via1_reset; > - mdc->portB_write = mos6522_q800_via1_portB_write; > } > > static const TypeInfo mos6522_q800_via1_type_info = { >
diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 669fdca4c4..4779236f95 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -801,11 +801,21 @@ static void mos6522_q800_via1_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { MOS6522Q800VIA1State *v1s = MOS6522_Q800_VIA1(opaque); + MacVIAState *m = container_of(v1s, MacVIAState, mos6522_via1); MOS6522State *ms = MOS6522(v1s); addr = (addr >> 9) & 0xf; mos6522_write(ms, addr, val, size); + switch (addr) { + case VIA_REG_B: + via1_rtc_update(m); + via1_adb_update(m); + + v1s->last_b = ms->b; + break; + } + via1_one_second_update(v1s); via1_VBL_update(v1s); } @@ -1034,18 +1044,6 @@ static TypeInfo mac_via_info = { }; /* VIA 1 */ -static void mos6522_q800_via1_portB_write(MOS6522State *s) -{ - MOS6522Q800VIA1State *v1s = container_of(s, MOS6522Q800VIA1State, - parent_obj); - MacVIAState *m = container_of(v1s, MacVIAState, mos6522_via1); - - via1_rtc_update(m); - via1_adb_update(m); - - v1s->last_b = s->b; -} - static void mos6522_q800_via1_reset(DeviceState *dev) { MOS6522State *ms = MOS6522(dev); @@ -1068,10 +1066,8 @@ static void mos6522_q800_via1_init(Object *obj) static void mos6522_q800_via1_class_init(ObjectClass *oc, void *data) { DeviceClass *dc = DEVICE_CLASS(oc); - MOS6522DeviceClass *mdc = MOS6522_DEVICE_CLASS(oc); dc->reset = mos6522_q800_via1_reset; - mdc->portB_write = mos6522_q800_via1_portB_write; } static const TypeInfo mos6522_q800_via1_type_info = {
Currently the logic is split between the mos6522 portB_write() callback and the memory region used to capture the VIA1 MMIO accesses. Move everything into the latter mos6522_q800_via1_write() function to keep all the logic in one place to make it easier to follow. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> --- hw/misc/mac_via.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-)