| plan 9 kernel history: overview | file list | diff list |
1994/1120/pc/devastar.c (diff list | history)
| 1994/1119/sys/src/9/pc/devastar.c:43,49 – 1994/1120/sys/src/9/pc/devastar.c:43,49 (short | long | prev | next) | ||
| 1994/1106 | ISA186ien= 1<<7, /* I186 irq enable bit state */ ISA186idata= 1<<6, /* I186 irq data bit state */ | |
| 1994/1107 | ISAmen= 1<<4, /* enable memory to respond to ISA cycles */ | |
| 1994/1120 | ISAmbank= 0xf<<0, /* shift for 4 bit memory bank */ | |
| 1994/1107 | ISAmaddr= 3, /* bits 14-19 of the boards mem address */ | |
| 1994/1106 | ISAstat1= 4, /* board status (1 bit per channel) */ ISAstat2= 5, /* board status (1 bit per channel) */ | |
| 1994/1119/sys/src/9/pc/devastar.c:297,308 – 1994/1120/sys/src/9/pc/devastar.c:297,310 | ||
| 1994/1114 | static void | |
| 1994/1113 | setpage(Astar *a, ulong offset) { | |
| 1994/1120 | int i, c; | |
| 1994/1113 | i = APAGE(offset); if(i == a->page) return; | |
| 1994/1120 | c = inb(a->port+ISActl2) & ~ISAmbank; outb(a->port+ISActl2, ISAmen|i|c); | |
| 1994/1113 | a->page = i; } | |
| 1994/1119/sys/src/9/pc/devastar.c:394,399 – 1994/1120/sys/src/9/pc/devastar.c:396,402 | ||
| 1994/1118 | continue; | |
| 1994/1106 | } | |
| 1994/1120 | /* check all possible names */ | |
| 1994/1107 | if(strcmp(a->type, "a100i") == 0 || strcmp(a->type,"A100I") == 0) a->ramsize = 16*1024; else if(strcmp(a->type, "a200i") == 0 || strcmp(a->type,"A200I") == 0) | |
| 1994/1119/sys/src/9/pc/devastar.c:404,409 – 1994/1120/sys/src/9/pc/devastar.c:407,413 | ||
| 1994/1107 | continue; | |
| 1994/1118 | } | |
| 1994/1108 | ||
| 1994/1120 | /* defaults */ | |
| 1994/1107 | if(a->mem == 0) | |
| 1994/1108 | a->mem = 0xD4000; | |
| 1994/1107 | if(a->irq == 0) | |
| 1994/1119/sys/src/9/pc/devastar.c:415,435 – 1994/1120/sys/src/9/pc/devastar.c:419,427 | ||
| 1994/1109 | astar[nastar] = 0; | |
| 1994/1107 | continue; } | |
| 1994/1119 |
| |
| 1994/1120 | print("serial%d avanstar port 0x%lux addr %lux irq %d\n", a->id, a->port, | |
| 1994/1115 | a->addr, a->irq); | |
| 1994/1109 | nastar++; | |
| 1994/1114 | ||
| 1994/1119 |
| |
| 1994/1118 |
| |
| 1994/1119 |
| |
| 1994/1107 | } } | |
| 1994/1119/sys/src/9/pc/devastar.c:453,459 – 1994/1120/sys/src/9/pc/devastar.c:445,451 | ||
| 1994/1109 | static int | |
| 1994/1107 | astarsetup(Astar *a) { | |
| 1994/1112 |
| |
| 1994/1120 | int i, c, found; | |
| 1994/1107 | /* see if the card exists */ found = 0; | |
| 1994/1119/sys/src/9/pc/devastar.c:473,489 – 1994/1120/sys/src/9/pc/devastar.c:465,494 | ||
| 1994/1107 | return -1; } | |
| 1994/1113 |
| |
| 1994/1115 |
| |
| 1994/1107 |
| |
| 1994/1120 | /* check interrupt level */ | |
| 1994/1112 | if(isairqcode[a->irq] == -1){ | |
| 1994/1107 | print("Avanstar %d bad irq %d\n", a->id, a->irq); return -1; } | |
| 1994/1111 | ||
| 1994/1120 | /* set ISA memory address */ outb(a->port+ISAmaddr, (a->mem>>12) & 0xfc); a->gcb = (GCB*)(KZERO | a->mem); a->addr = (uchar*)(KZERO | a->mem); /* set up interrupt level, reset processor, leave interrupts off */ c = inb(a->port+ISActl1); c &= ~(ISAnotdl|ISAien|ISAirq); c |= isairqcode[a->irq]; outb(a->port+ISActl1, c); setvec(Int0vec + a->irq, astarintr, a); /* disable ISA memory response */ c = inb(a->port+ISActl2); outb(a->port+ISActl2, c & ~ISAmen); a->memsize = 0; a->page = -1; | |
| 1994/1111 | return 0; } | |
| 1994/1119/sys/src/9/pc/devastar.c:717,723 – 1994/1120/sys/src/9/pc/devastar.c:722,728 | ||
| 1994/1113 | static void startcp(Astar *a) { | |
| 1994/1120 | int c, n, i, sz; | |
| 1994/1113 | uchar *x; CCB *ccb; | |
| 1994/1114 | Astarchan *ac; | |
| 1994/1119/sys/src/9/pc/devastar.c:727,735 – 1994/1120/sys/src/9/pc/devastar.c:732,740 | ||
| 1994/1113 | /* take board out of download mode and enable IRQ */ | |
| 1994/1119 | print("out of download\n"); | |
| 1994/1113 |
| |
| 1994/1120 | c = inb(a->port+ISActl1); outb(a->port+ISActl1, c|ISAien|ISAnotdl); | |
| 1994/1113 | a->memsize = a->ramsize; | |
| 1994/1116 |
| |
| 1994/1119/sys/src/9/pc/devastar.c:827,832 – 1994/1120/sys/src/9/pc/devastar.c:832,838 | ||
| 1994/1116 | a->needpage = 1; | |
| 1994/1113 | /* enable ISA access to first 16k */ | |
| 1994/1120 | a->page = -1; | |
| 1994/1116 | setpage(a, 0); | |
| 1994/1113 | ||
| 1994/1115 | } else if(strncmp(cmsg, "sharedmem", 9) == 0){ | |
| 1994/1119/sys/src/9/pc/devastar.c:836,842 – 1994/1120/sys/src/9/pc/devastar.c:842,849 | ||
| 1994/1115 | a->memsize = a->ramsize; /* enable ISA access to first 16k */ | |
| 1994/1120 | a->page = -1; setpage(a, 0); | |
| 1994/1115 | ||
| 1994/1113 | } else if(strncmp(cmsg, "run", 3) == 0){ | |
| 1994/1115 | /* start up downloaded program */ | |