| plan 9 kernel history: overview | file list | diff list |
1991/0807/pc/devuart.c (diff list | history)
| 1991/0806/sys/src/9/pc/devuart.c:51,56 – 1991/0807/sys/src/9/pc/devuart.c:51,57 (short | long | prev | next) | ||
| 1991/0801 | int port; | |
| 1991/0804 | uchar sticky[8]; /* sticky write register values */ | |
| 1991/0801 | int printing; /* true if printing */ | |
| 1991/0807 | int enabled; | |
| 1991/0801 | /* console interface */ int nostream; /* can't use the stream interface */ | |
| 1991/0806/sys/src/9/pc/devuart.c:185,191 – 1991/0807/sys/src/9/pc/devuart.c:186,191 | ||
| 1991/0801 | puts(cq, s, n); if(up->printing == 0){ ch = getc(cq); | |
| 1991/0803 | for(tries = 0; tries<10000 && !(uartrdreg(up, Lstat)&Outready); | |
| 1991/0806/sys/src/9/pc/devuart.c:214,220 – 1991/0807/sys/src/9/pc/devuart.c:214,219 | ||
| 1991/0806 | cq = up->iq; while(l & Inready){ ch = uartrdreg(up, Data) & 0xff; | |
| 1991/0806/sys/src/9/pc/devuart.c:232,238 – 1991/0807/sys/src/9/pc/devuart.c:231,236 | ||
| 1991/0806 | cq = up->oq; lock(cq); ch = getc(cq); | |
| 1991/0806/sys/src/9/pc/devuart.c:244,250 – 1991/0807/sys/src/9/pc/devuart.c:242,249 | ||
| 1991/0801 | void uartintr0(Ureg *ur) { | |
| 1991/0807 | if(uart[0].enabled) uartintr(&uart[0]); | |
| 1991/0801 | } void uartintr1(Ureg *ur) | |
| 1991/0806/sys/src/9/pc/devuart.c:261,266 – 1991/0807/sys/src/9/pc/devuart.c:260,273 | ||
| 1991/0806 | int x; | |
| 1991/0801 | /* | |
| 1991/0807 | * turn on power to the port */ if(up == &uart[0]){ if(serial(0) < 0) print("can't turn on serial port power\n"); } /* | |
| 1991/0801 | * set up i/o routines */ if(up->oq){ | |
| 1991/0806/sys/src/9/pc/devuart.c:272,277 – 1991/0807/sys/src/9/pc/devuart.c:279,285 | ||
| 1991/0801 | up->iq->ptr = up; up->sticky[Iena] |= Ircv; } | |
| 1991/0807 | up->enabled = 1; | |
| 1991/0803 | up->sticky[Iena] |= (1<<2) | (1<<3); | |
| 1991/0801 | /* | |
| 1991/0806/sys/src/9/pc/devuart.c:284,297 – 1991/0807/sys/src/9/pc/devuart.c:292,324 | ||
| 1991/0801 | */ uartdtr(up, 1); uartrts(up, 1); | |
| 1991/0807 | } | |
| 1991/0806 | ||
| 1991/0807 | /* * turn off the uart */ uartdisable(Uart *up) { | |
| 1991/0806 | /* | |
| 1991/0807 | * turn off interrupts | |
| 1991/0806 | */ | |
| 1991/0807 | up->sticky[Iena] = 0; uartwrreg(up, Iena, 0); /* * turn off DTR and RTS */ uartdtr(up, 0); uartrts(up, 0); up->enabled = 0; /* * turn off power */ if(up == &uart[0]){ if(serial(1) < 0) print("can't turn off serial power\n"); | |
| 1991/0806 | } | |
| 1991/0801 | } | |
| 1991/0806/sys/src/9/pc/devuart.c:309,318 – 1991/0807/sys/src/9/pc/devuart.c:336,341 | ||
| 1991/0801 | up->iq = iq; uartenable(up); uartsetbaud(up, baud); | |
| 1991/0806 |
| |
| 1991/0801 | if(iq){ /* | |
| 1991/0806/sys/src/9/pc/devuart.c:381,388 – 1991/0807/sys/src/9/pc/devuart.c:404,409 | ||
| 1991/0806 | ||
| 1991/0801 | up = &uart[s->id]; | |
| 1991/0806 | uartenable(up); | |
| 1991/0801 | qlock(up); up->wq = WR(q); | |
| 1991/0806/sys/src/9/pc/devuart.c:407,412 – 1991/0807/sys/src/9/pc/devuart.c:428,435 | ||
| 1991/0801 | { Uart *up = q->ptr; | |
| 1991/0807 | uartdisable(up); | |
| 1991/0801 | qlock(up); kprint("uartstclose: q=0x%ux, id=%d\n", q, up-uart); up->wq = 0; | |
| 1991/0806/sys/src/9/pc/devuart.c:414,422 – 1991/0807/sys/src/9/pc/devuart.c:437,442 | ||
| 1991/0801 | WR(q)->ptr = 0; RD(q)->ptr = 0; qunlock(up); | |
| 1991/0806 |
| |
| 1991/0801 | } static void | |