## diffname ss/uart.c 1990/1223 ## diff -e /dev/null /n/bootesdump/1990/1223/sys/src/9/sparc/uart.c 0a #include "u.h" #include "lib.h" #include "mem.h" #include "dat.h" #include "fns.h" enum { /* wr 0 */ ResExtPend= 2<<3, ResTxPend= 5<<3, ResErr= 6<<3, /* wr 1 */ TxIntEna= 1<<1, RxIntDis= 0<<3, RxIntFirstEna= 1<<3, RxIntAllEna= 2<<3, /* wr 3 */ RxEna= 1, Rx5bits= 0<<6, Rx7bits= 1<<6, Rx6bits= 2<<6, Rx8bits= 3<<6, /* wr 4 */ SyncMode= 0<<2, Rx1stop= 1<<2, Rx1hstop= 2<<2, Rx2stop= 3<<2, X16= 1<<6, /* wr 5 */ TxRTS= 1<<1, TxEna= 1<<3, TxBreak= 1<<4, TxDTR= 1<<7, Tx5bits= 0<<5, Tx7bits= 1<<5, Tx6bits= 2<<5, Tx8bits= 3<<5, /* wr 9 */ IntEna= 1<<3, ResetB= 1<<6, ResetA= 2<<6, HardReset= 3<<6, /* wr 11 */ TRxCOutBR= 2, TxClockBR= 2<<3, RxClockBR= 2<<5, TRxCOI= 1<<2, /* wr 14 */ BREna= 1, BRSource= 2, /* rr 0 */ RxReady= 1, TxReady= 1<<2, RxDCD= 1<<3, RxCTS= 1<<5, RxBreak= 1<<7, /* rr 3 */ ExtPendB= 1, TxPendB= 1<<1, RxPendB= 1<<2, ExtPendA= 1<<3, TxPendA= 1<<4, RxPendA= 1<<5, }; typedef struct SCC SCC; struct SCC { uchar *ptr; /* command/pointer register in Z8530 */ uchar *data; /* data register in Z8530 */ }; SCC scc[2]; #define SCCV (0x0F000000-0x1000) #define SCCP 0xF1000000 #define PRINTING 0x4 #define MASK 0x1 void sccsetup(void) { ulong pte; pte = PTEVALID | PTEWRITE | PTEKERNEL | PTENOCACHE | PTEIO | ((SCCP>>PGSHIFT)&0xFFFF) ; putpmeg(SCCV, pte); scc[0].ptr = (uchar*)(SCCV+0); scc[0].data = (uchar*)(SCCV+2); scc[1].ptr = (uchar*)(SCCV+4); scc[1].data = (uchar*)(SCCV+6); } /* * Access registers using the pointer in register 0. * This is a bit stupid when accessing register 0. */ void sccwrreg(SCC *sp, int addr, int value) { *sp->ptr = addr; } ushort sccrdreg(SCC *sp, int addr) { *sp->ptr = addr; return *sp->ptr; } /* * non-spooling non-interrupting get and put */ int sccgetc(void) { uchar ch; SCC *sp; sp = &scc[1]; while((*sp->ptr&RxReady) == 0) ; return *sp->data; } void sccputc(int ch) { SCC *sp; sp = &scc[1]; while((*sp->ptr&TxReady)==0) ; *sp->data = ch; } void sccputs(char *s) { while(*s) sccputc(*s++); } . ## diffname ss/uart.c 1990/1226 ## diff -e /n/bootesdump/1990/1223/sys/src/9/sparc/uart.c /n/bootesdump/1990/1226/sys/src/9/sparc/uart.c 83c #define SCCV (0x0000) /* was 0x0F000000-0x1000 */ . ## diffname ss/uart.c 1991/0201 # deleted ## diff -e /n/bootesdump/1990/1226/sys/src/9/sparc/uart.c /n/bootesdump/1991/0201/sys/src/9/sparc/uart.c 1,155d