From 9f9f12b3fa4f2c529ed1e00a8b85fe1dce3f155c Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 8 Aug 1996 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1996-08-08 --- pc/devastar.c | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/pc/devastar.c b/pc/devastar.c index ecbc9b3ac578ba2e81aaf632b0b26da7cbac1c74..14a328b48fe20639dc4aece9e6b8642c773ed896 100644 --- a/pc/devastar.c +++ b/pc/devastar.c @@ -764,6 +764,36 @@ memwrite(Astar *a, uchar *from, long n, ulong offset) return n; } +/* + * put board into download mode + */ +static void +downloadmode(Astar *a) +{ + int c, i; + + /* put board in download mode */ + c = inb(a->port+ISActl1); + outb(a->port+ISActl1, c & ~ISAnotdl); + a->memsize = Pramsize; + a->needpage = 1; + + /* give it up to 5 seconds to reset */ + for(i = 0; i < 21; i++){ + if(!(inb(a->port+ISActl1) & ISAnotdl)) + break; + tsleep(&a->r, return0, 0, 500); + } + if(inb(a->port+ISActl1) & ISAnotdl){ + print("astar%d did not reset\n", a->id); + error(Eio); + } + + /* enable ISA access to first 16k */ + a->page = -1; + setpage(a, 0); +} + /* * start control program */ @@ -884,14 +914,7 @@ bctlwrite(Astar *a, char *cmsg) if(strncmp(cmsg, "download", 8) == 0){ /* put board in download mode */ - c = inb(a->port+ISActl1); - outb(a->port+ISActl1, c & ~ISAnotdl); - a->memsize = Pramsize; - a->needpage = 1; - - /* enable ISA access to first 16k */ - a->page = -1; - setpage(a, 0); + downloadmode(a); } else if(strncmp(cmsg, "sharedmem", 9) == 0){ /* map shared memory */