[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 00/22] ADB: fix autopoll issues and rework mac_via state mach
From: |
Mark Cave-Ayland |
Subject: |
Re: [PATCH 00/22] ADB: fix autopoll issues and rework mac_via state machine |
Date: |
Sat, 20 Jun 2020 13:10:08 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 |
On 16/06/2020 11:24, Finn Thain wrote:
> Tested-by: Finn Thain <fthain@telegraphics.com.au>
>
> Thanks for all your work on this.
>
> I've just noticed a discrepancy between the traces from an ADB bus scan on
> Laurent's Apple Quadra and an ADB bus scan on your patched QEMU machine.
>
> Apple Q800:
>
> [C1f][s ][Rff-][Rff ][rff-]
> [C2f][s ][R61 ][R05 ][r00-]
> [C3f][s ][R79 ][R01 ][r00-]
> [C4f][s ][Rff-][Rff ][rff-]
> [C5f][s ][Rff-][Rff ][rff-]
> [C6f][s ][Rff-][Rff ][rff-]
> [C7f][s ][Rff-][Rff ][rff-]
> [C8f][s ][Rff-][Rff ][rff-]
> [C9f][s ][Rff-][Rff ][rff-]
> [Caf][s ][Rff-][Rff ][rff-]
> [Cbf][s ][Rff-][Rff ][rff-]
> [Ccf][s ][Rff-][Rff ][rff-]
> [Cdf][s ][Rff-][Rff ][rff-]
> [Cef][s ][Rff-][Rff ][rff-]
> [Cff][s ][Rff-][Rff ][rff-]
>
> QEMU Q800:
>
> [C1f][s ][Rff-][Rff ][rff-]
> [C2f][s ][R02 ][R01 ][r00-]
> [C3f][s ][R03 ][R02 ][r00-]
> [C4f][s ][R03-][R02 ][rff-]
> [C5f][s ][R03-][R02 ][rff-]
> [C6f][s ][R03-][R02 ][rff-]
> [C7f][s ][R03-][R02 ][rff-]
> [C8f][s ][R03-][R02 ][rff-]
> [C9f][s ][R03-][R02 ][rff-]
> [Caf][s ][R03-][R02 ][rff-]
> [Cbf][s ][R03-][R02 ][rff-]
> [Ccf][s ][R03-][R02 ][rff-]
> [Cdf][s ][R03-][R02 ][rff-]
> [Cef][s ][R03-][R02 ][rff-]
> [Cff][s ][R03-][R02 ][rff-]
>
> I think this could be easy to fix; it's probably just an uninitialized
> packet buffer. When you come to submit v2, you may want to look into this.
Thanks for testing again! I think the issue here is simply that I've been doing
my
testing on mailine which still has to extra switch to IDLE state before reading
the
response.
Can you test with the following patch on top of the series to see if this works
for you?
diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c
index b3fb710f7f..362878ca06 100644
--- a/hw/misc/mac_via.c
+++ b/hw/misc/mac_via.c
@@ -745,6 +745,11 @@ static void adb_via_send(MacVIAState *s, int state,
uint8_t data)
s->adb_data_out,
s->adb_data_out_index);
s->adb_data_in_index = 0;
+ if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) {
+ s->adb_data_in[0] = 0xff;
+ s->adb_data_in[1] = 0xff;
+ s->adb_data_in_size = 2;
+ }
/*
* If last command is TALK, store it for use by autopoll and adjust
@@ -782,9 +787,6 @@ static void adb_via_receive(MacVIAState *s, int state,
uint8_t *data)
if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) {
*data = 0xff;
ms->b |= VIA1B_vADBInt;
- s->adb_data_in[0] = 0xff;
- s->adb_data_in[1] = 0xff;
- s->adb_data_in_size = 2;
qemu_irq_raise(s->adb_data_ready);
} else if (s->adb_data_in_size > 0) {
adb_bus->status = ADB_STATUS_POLLREPLY;
This should correctly initialise the buffer in both cases. If it works then I'll
squash it into the original patch for v2.
ATB,
Mark.
- Re: [PATCH 18/22] mac_via: move VIA1 portB write logic into mos6522_q800_via1_write(), (continued)
- [PATCH 20/22] adb: only call autopoll callbacks when autopoll is not blocked, Mark Cave-Ayland, 2020/06/14
- [PATCH 19/22] mac_via: rework ADB state machine to be compatible with both MacOS and Linux, Mark Cave-Ayland, 2020/06/14
- [PATCH 21/22] adb: use adb_device prefix for ADB device trace events, Mark Cave-Ayland, 2020/06/14
- [PATCH 22/22] adb: add ADB bus trace events, Mark Cave-Ayland, 2020/06/14
- Re: [PATCH 00/22] ADB: fix autopoll issues and rework mac_via state machine, Finn Thain, 2020/06/16
- Re: [PATCH 00/22] ADB: fix autopoll issues and rework mac_via state machine,
Mark Cave-Ayland <=