| plan 9 kernel history: overview | file list | diff list |
2002/0109/pc/uarti8250.c (diff list | history)
| 2001/1201/sys/src/9/pc/uarti8250.c:165,171 – 2002/0109/sys/src/9/pc/uarti8250.c:165,171 (short | long | prev | next) | ||
|
Bug fix: print format. + 2 HW bugs
HW bug fix: use sticky Ier. HW bug fix: try to unstick i8250. rsc Fri Mar 4 12:44:25 2005 | ||
| 2001/0527 | ier = ctlr->sticky[Ier]; lcr = ctlr->sticky[Lcr]; snprint(p, READSTR, | |
| 2002/0109 | "b%d c%d d%d e%d l%d m%d p%c r%d s%d i%d ier=%ux\n" | |
| 2001/0527 | "dev(%d) type(%d) framing(%d) overruns(%d)%s%s%s%s\n", uart->baud, | |
| 2001/1201/sys/src/9/pc/uarti8250.c:178,183 – 2002/0109/sys/src/9/pc/uarti8250.c:178,184 | ||
| 2001/0527 | (mcr & Rts) != 0, (lcr & Stb) ? 2: 1, ctlr->fena, | |
| 2002/0109 | ier, | |
| 2001/0527 | uart->dev, uart->type, | |
| 2001/1201/sys/src/9/pc/uarti8250.c:269,281 – 2002/0109/sys/src/9/pc/uarti8250.c:270,282 | ||
| 2001/0527 | ilock(&uart->tlock); if(on){ ctlr->sticky[Ier] |= Ems; | |
| 2002/0109 | csr8w(ctlr, Ier, ctlr->sticky[Ier]); | |
| 2001/0527 | uart->modem = 1; uart->cts = csr8r(ctlr, Msr) & Cts; } else{ ctlr->sticky[Ier] &= ~Ems; | |
| 2002/0109 | csr8w(ctlr, Ier, ctlr->sticky[Ier]); | |
| 2001/0527 | uart->modem = 0; uart->cts = 1; } | |
| 2001/1201/sys/src/9/pc/uarti8250.c:525,531 – 2002/0109/sys/src/9/pc/uarti8250.c:526,532 | ||
| 2001/0527 | ctlr = uart->regs; ctlr->sticky[Ier] = 0; | |
| 2002/0109 | csr8w(ctlr, Ier, ctlr->sticky[Ier]); | |
| 2001/0922 | if(ctlr->iena != 0){ intrdisable(ctlr->irq, i8250interrupt, uart, ctlr->tbdf, uart->name); | |
| 2001/1201/sys/src/9/pc/uarti8250.c:562,567 – 2002/0109/sys/src/9/pc/uarti8250.c:563,580 | ||
| 2001/0527 | (*uart->phys->dtr)(uart, 1); (*uart->phys->rts)(uart, 1); | |
| 2002/0109 | /* * During startup, the i8259 interrupt controler is reset. * This may result in a lost interrupt from the i8250 uart. * The i8250 thinks the interrupt is still outstanding and does not * generate any further interrupts. To work around this we call the * interrupt handler to clear any pending inerrupt events. * Note this must be donw after setting Ier. */ if(ie) i8250interrupt(nil, uart); | |
| 2001/0922 | } void* | |