[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 20/22] adb: only call autopoll callbacks when autopoll is not blo
From: |
Mark Cave-Ayland |
Subject: |
[PATCH 20/22] adb: only call autopoll callbacks when autopoll is not blocked |
Date: |
Sun, 14 Jun 2020 15:28:38 +0100 |
Handle this at the ADB bus level so that individual implementations do not need
to handle this themselves.
Finally add an assert() into adb_request() to prevent developers from
accidentally
making an explicit ADB request without blocking autopoll.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/input/adb.c | 7 +++++--
hw/misc/mac_via.c | 6 +-----
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/hw/input/adb.c b/hw/input/adb.c
index 70aa1f4570..fe0f6c7ef3 100644
--- a/hw/input/adb.c
+++ b/hw/input/adb.c
@@ -86,10 +86,11 @@ static int do_adb_request(ADBBusState *s, uint8_t *obuf,
const uint8_t *buf,
int adb_request(ADBBusState *s, uint8_t *obuf, const uint8_t *buf, int len)
{
+ assert(s->autopoll_blocked);
+
return do_adb_request(s, obuf, buf, len);
}
-/* XXX: move that to cuda ? */
int adb_poll(ADBBusState *s, uint8_t *obuf, uint16_t poll_mask)
{
ADBDevice *d;
@@ -181,7 +182,9 @@ static void adb_autopoll(void *opaque)
{
ADBBusState *s = opaque;
- s->autopoll_cb(s->autopoll_cb_opaque);
+ if (!s->autopoll_blocked) {
+ s->autopoll_cb(s->autopoll_cb_opaque);
+ }
timer_mod(s->autopoll_timer,
qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) +
diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c
index 7676545474..efe96138d0 100644
--- a/hw/misc/mac_via.c
+++ b/hw/misc/mac_via.c
@@ -615,11 +615,7 @@ static void adb_via_poll(void *opaque)
* received, however we must block autopoll until the point where
* the entire reply has been read back to the host
*/
- if (adb_bus->autopoll_blocked) {
- return;
- } else {
- adb_autopoll_block(adb_bus);
- }
+ adb_autopoll_block(adb_bus);
m->adb_data_in_index = 0;
m->adb_data_out_index = 0;
--
2.20.1
- [PATCH 10/22] mac_via: convert to use ADBBusState internal autopoll variables, (continued)
- [PATCH 10/22] mac_via: convert to use ADBBusState internal autopoll variables, Mark Cave-Ayland, 2020/06/14
- [PATCH 11/22] adb: introduce new ADBDeviceHasData method to ADBDeviceClass, Mark Cave-Ayland, 2020/06/14
- [PATCH 12/22] adb: keep track of devices with pending data, Mark Cave-Ayland, 2020/06/14
- [PATCH 13/22] adb: add status field for holding information about the last ADB request, Mark Cave-Ayland, 2020/06/14
- [PATCH 14/22] adb: use adb_request() only for explicit requests, Mark Cave-Ayland, 2020/06/14
- [PATCH 15/22] adb: add autopoll_blocked variable to block autopoll, Mark Cave-Ayland, 2020/06/14
- [PATCH 16/22] cuda: add adb_autopoll_block() and adb_autopoll_unblock() functions, Mark Cave-Ayland, 2020/06/14
- [PATCH 17/22] pmu: add adb_autopoll_block() and adb_autopoll_unblock() functions, Mark Cave-Ayland, 2020/06/14
- [PATCH 18/22] mac_via: move VIA1 portB write logic into mos6522_q800_via1_write(), Mark Cave-Ayland, 2020/06/14
- [PATCH 20/22] adb: only call autopoll callbacks when autopoll is not blocked,
Mark Cave-Ayland <=
- [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