duart
duart->chan[1].ispeed = duart->chan[1].ospeed = 0;
duart->acr = 0;
duart->acr |= ACR_CT_TCLK1; /* timer mode 1x clk */
duart->acr |= ACR_DELTA_DCDA; /* Set CD int */
duart->acr |= ACR_DELTA_DCDB; /* Set CD int */
duart_base[DU_ACR] = (duart->mode & ACR_BRG) | duart->acr;
duart->imr |= INT_IP;
struct duart *duart = arg;
struct scn_softc *sc0 = duart->chan[0].sc;
struct scn_softc *sc1 = duart->chan[1].sc;
scnrxintr(duart);
rs_stat = duart->base[DU_ISR];
duart->imr &= ~sc0->sc_tx_int;
duart->base[DU_IMR] = duart->imr;
duart->imr &= ~sc1->sc_tx_int;
duart->base[DU_IMR] = duart->imr;
rs_ipcr = duart->base[DU_IPCR];
struct duart *duart = arg;
if (duart->chan[0].sc != NULL)
work += scn_rxintr(duart->chan[0].sc);
if (duart->chan[1].sc != NULL)
work += scn_rxintr(duart->chan[1].sc);
static struct duart scn_duart[SCN_MAXDUART];
struct duart *dp;
struct duart *dp;
struct duart *dp;
struct duart *dp;
struct duart *duart;
duart = sc->sc_duart = &scn_duart[duartno];
duart->chan[channel].sc = sc;
first = (duart->base == NULL);
cpu_intr_establish(duartno, IPL_TTY, scnintr, duart);
duart->base = duart_base;
duart->type = scntype;
duart_base[DU_IMR] = duart->imr = 0;
duart_base[DU_OPCR] = duart->opcr = 0;
duart->mode = 0;
duart->chan[0].icode = duart->chan[0].ocode = 0x2f;
duart->chan[1].icode = duart->chan[1].ocode = 0x2f;
duart->chan[0].ispeed = duart->chan[0].ospeed = 0;
struct duart *sc_duart; /* pointer to duart struct */
char *duart;
duart = (struct duart *) qdmap[unit].duart;
duart->imask = qdflags[unit].duart_imask;
volatile struct duart *duart; /* DUART reg structure pointer */
mapix = VTOP((int)qd->duart) - VTOP(qvmem[0]);
duart = (struct duart *)qdmap[unit].duart;
if (duart->statusA&XMT_RDY) {
duart->dataA = cmdbuf->cmd;
if (duart->statusA&XMT_RDY) {
duart->dataA = cmdbuf->param1;
if (duart->statusA&XMT_RDY) {
duart->dataA = cmdbuf->param2;
duart = (struct duart *) qdmap[unit].duart;
if (duart->statusB&XMT_RDY) {
duart->dataB = *datap;
duart = (struct duart *) qdmap[unit].duart;
if (duart->statusB&XMT_RDY) {
duart->dataB = *datap;
volatile struct duart *duart;
duart = (struct duart *) qdmap[unit].duart;
while (duart->statusA&RCV_RDY || duart->statusB&RCV_RDY) {
if (duart->statusA&RCV_RDY) {
if (duart->statusA&0x70) {
duart->cmdA = 0x40;
key = duart->dataA & 0xFF;
if ((status = duart->statusB) & RCV_RDY &&
duart->cmdB = 0x40;
data = duart->dataB; /* get report byte */
} else if ((status = duart->statusB)&RCV_RDY &&
duart->cmdB = 0x40;
data = duart->dataB; /* get report byte */
while (duart->statusA&RCV_RDY) {
key = duart->dataA;
volatile struct duart *duart;
duart = (struct duart *) qdmap[0].duart;
while (!(duart->statusA&RCV_RDY))
key = duart->dataA;
volatile struct duart *duart;
duart = (struct duart *)qdmap[unit].duart;
if (duart->statusA&XMT_RDY) {
duart->dataA = cmd;
if (duart->statusA&XMT_RDY) {
duart->dataA = led_mask;
volatile struct duart *duart; /* DUART register structure pointer */
duart = (struct duart *) qdmap[unit].duart;
duart->imask = 0;
duart->cmdA = RESET_M; /* reset mode reg ptr for kbd */
duart->modeA = 0x13; /* 8 bits, no parity, rcv IE, */
duart->modeA = 0x07; /* 1 stop bit,CTS does not IE XMT */
duart->cmdB = RESET_M; /* reset mode reg pntr for host */
duart->modeB = 0x07; /* 8 bits, odd parity, rcv IE.. */
duart->modeB = 0x07; /* 1 stop bit,CTS does not IE XMT */
duart->auxctl = 0x00; /* baud rate set 1 */
duart->clkselA = 0x99; /* 4800 baud for kbd */
duart->clkselB = 0x99; /* 4800 baud for mouse */
duart->cmdA = bits;
duart->cmdB = bits;
duart->cmdA = EN_RCV | EN_XMT; /* enbl xmt & rcv for kbd */
duart->cmdB = EN_RCV | EN_XMT; /* enbl xmt & rcv for pointer device */
if (duart->statusA&XMT_RDY) {
duart->dataA = LK_DEFAULTS;
if (duart->statusA&RCV_RDY) {
if (duart->dataA) /* flush the ACK */
if (duart->statusB&XMT_RDY) {
duart->dataB = SELF_TEST;
if (duart->statusB&RCV_RDY) {
if (duart->dataB)
if (duart->statusB&RCV_RDY) {
id_byte = duart->dataB;
if (duart->statusB & RCV_RDY) {
if (duart->dataB)
if (duart->statusB&RCV_RDY) {
if (duart->dataB)
if (duart->statusB&XMT_RDY) {
duart->dataB = INC_STREAM_MODE;
if (duart->statusB&XMT_RDY) {
duart->dataB = T_STREAM;
duart->imask = qdflags[unit].duart_imask;
qdmap[unit].duart = qdbase[unit] + DUART;
qdmap[unit].duart = qdbase[unit] + DUART;
volatile struct duart *duart;
duart = (struct duart *) qdmap[unit].duart;
duart->imask = qdflags[unit].duart_imask;
duart->imask = qdflags[unit].duart_imask;
volatile struct duart *duart;
char *duart;