From fecf34ac5afa31f429fed0e944265464cdddbe1b Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 1 Feb 1994 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1994-02-01 --- carrera/kbd.c | 6 ++++-- pc/ether8390.c | 9 ++++++++- pc/l.s | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/carrera/kbd.c b/carrera/kbd.c index b06b13abc9909a9329c60fd66c2d77ef431bec1f..026d109854a050bb8c33111abf13918e230c6852 100644 --- a/carrera/kbd.c +++ b/carrera/kbd.c @@ -448,8 +448,10 @@ kbdinit(void) KBDCTL = Kmseena; empty(); - mousecmd(0xEA); - mousecmd(0xF4); + mousecmd(0xEA); /* streaming */ + mousecmd(0xE8); /* set resolution */ + mousecmd(3); + mousecmd(0xF4); /* enabled */ return 1; } diff --git a/pc/ether8390.c b/pc/ether8390.c index fe2bd9710a72cef9974fc2500e2cff9cb6484a1e..cd459099984eaf7971a88109a6fdfcad3c9be158 100644 --- a/pc/ether8390.c +++ b/pc/ether8390.c @@ -285,7 +285,9 @@ dp8390write(Dp8390 *dp8390, ulong to, void *from, ulong len) ulong port = dp8390->dp8390; ulong crda; uchar cr; + int s, tries; + s = splhi(); /* * Write some data to offset 'to' in the card's memory * using the DP8390 remote DMA facility, reading it at @@ -336,14 +338,19 @@ dp8390write(Dp8390 *dp8390, ulong to, void *from, ulong len) outss(dp8390->data, from, len/2); else outsb(dp8390->data, from, len); + splx(s); /* * Wait for the remote DMA to finish. We'll need * a timeout here if this ever gets called before * we know there really is a chip there. */ + tries = 0; while((slowinb(port+Isr) & Rdc) == 0) - ; + if(tries++ >= 10000000){ + print("dp8390write whoops\n"); + break; + } slowoutb(port+Isr, Rdc); slowoutb(port+Cr, cr); diff --git a/pc/l.s b/pc/l.s index 277400aca220e3dd459fbbab337dcd69c17deea9..939fea89e1bdf3fc1a452c2c650230d00289a934 100644 --- a/pc/l.s +++ b/pc/l.s @@ -766,6 +766,7 @@ _dp8390outb0: TEXT slowinb(SB), $0 MOVL $0x84, DX INB + INB MOVL p+0(FP),DX XORL AX,AX @@ -775,6 +776,7 @@ TEXT slowinb(SB), $0 TEXT slowoutb(SB),$0 MOVL $0x84, DX INB + INB MOVL p+0(FP),DX MOVL b+4(FP),AX