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 = {
>