This algorithm is slightly shorter and avoids the surprising
adb_iop_start() call in adb_iop_poll().

Cc: Joshua Thompson <fun...@jurai.org>
Tested-by: Stan Johnson <user...@yahoo.com>
Signed-off-by: Finn Thain <fth...@telegraphics.com.au>
---
 drivers/macintosh/adb-iop.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/macintosh/adb-iop.c b/drivers/macintosh/adb-iop.c
index ca3b411b0742..c3089dacf2e2 100644
--- a/drivers/macintosh/adb-iop.c
+++ b/drivers/macintosh/adb-iop.c
@@ -238,24 +238,19 @@ int adb_iop_autopoll(int devs)
 
 void adb_iop_poll(void)
 {
-       if (adb_iop_state == idle)
-               adb_iop_start();
        iop_ism_irq_poll(ADB_IOP);
 }
 
 int adb_iop_reset_bus(void)
 {
-       struct adb_request req = {
-               .reply_expected = 0,
-               .nbytes = 2,
-               .data = { ADB_PACKET, 0 },
-       };
-
-       adb_iop_write(&req);
-       while (!req.complete) {
-               adb_iop_poll();
-               schedule();
-       }
+       struct adb_request req;
+
+       /* Command = 0, Address = ignored */
+       adb_request(&req, NULL, ADBREQ_NOSEND, 1, ADB_BUSRESET);
+       adb_iop_send_request(&req, 1);
+
+       /* Don't want any more requests during the Global Reset low time. */
+       mdelay(3);
 
        return 0;
 }
-- 
2.26.2

Reply via email to