Lines Matching refs:bas
57 uart_setmreg(struct uart_bas *bas, int reg, int val) in uart_setmreg() argument
60 uart_setreg(bas, REG_CTRL, reg); in uart_setmreg()
61 uart_barrier(bas); in uart_setmreg()
62 uart_setreg(bas, REG_CTRL, val); in uart_setmreg()
66 uart_getmreg(struct uart_bas *bas, int reg) in uart_getmreg() argument
69 uart_setreg(bas, REG_CTRL, reg); in uart_getmreg()
70 uart_barrier(bas); in uart_getmreg()
71 return (uart_getreg(bas, REG_CTRL)); in uart_getmreg()
98 z8530_param(struct uart_bas *bas, int baudrate, int databits, int stopbits, in z8530_param() argument
130 divisor = z8530_divisor(bas->rclk, baudrate); in z8530_param()
136 uart_setmreg(bas, WR_MCB2, UART_PCLK); in z8530_param()
137 uart_barrier(bas); in z8530_param()
140 uart_setmreg(bas, WR_TCL, divisor & 0xff); in z8530_param()
141 uart_barrier(bas); in z8530_param()
142 uart_setmreg(bas, WR_TCH, (divisor >> 8) & 0xff); in z8530_param()
143 uart_barrier(bas); in z8530_param()
146 uart_setmreg(bas, WR_RPC, rpc); in z8530_param()
147 uart_barrier(bas); in z8530_param()
148 uart_setmreg(bas, WR_MPM, mpm); in z8530_param()
149 uart_barrier(bas); in z8530_param()
150 uart_setmreg(bas, WR_TPC, tpc); in z8530_param()
151 uart_barrier(bas); in z8530_param()
152 uart_setmreg(bas, WR_MCB2, UART_PCLK | MCB2_BRGE); in z8530_param()
153 uart_barrier(bas); in z8530_param()
159 z8530_setup(struct uart_bas *bas, int baudrate, int databits, int stopbits, in z8530_setup() argument
164 if (bas->rclk == 0) in z8530_setup()
165 bas->rclk = DEFAULT_RCLK; in z8530_setup()
168 switch (bas->chan) { in z8530_setup()
170 uart_setmreg(bas, WR_MIC, MIC_NV | MIC_CRA); in z8530_setup()
173 uart_setmreg(bas, WR_MIC, MIC_NV | MIC_CRB); in z8530_setup()
176 uart_barrier(bas); in z8530_setup()
178 uart_setmreg(bas, WR_CMC, CMC_RC_BRG | CMC_TC_BRG); in z8530_setup()
179 uart_setmreg(bas, WR_MCB2, UART_PCLK); in z8530_setup()
180 uart_barrier(bas); in z8530_setup()
182 uart_setmreg(bas, WR_MCB1, MCB1_NRZ); in z8530_setup()
183 uart_barrier(bas); in z8530_setup()
186 z8530_param(bas, baudrate, databits, stopbits, parity, &tpc); in z8530_setup()
193 static int z8530_probe(struct uart_bas *bas);
194 static void z8530_init(struct uart_bas *bas, int, int, int, int);
195 static void z8530_term(struct uart_bas *bas);
196 static void z8530_putc(struct uart_bas *bas, int);
197 static int z8530_rxready(struct uart_bas *bas);
198 static int z8530_getc(struct uart_bas *bas, struct mtx *);
210 z8530_probe(struct uart_bas *bas) in z8530_probe() argument
217 z8530_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, in z8530_init() argument
221 z8530_setup(bas, baudrate, databits, stopbits, parity); in z8530_init()
225 z8530_term(struct uart_bas *bas) in z8530_term() argument
230 z8530_putc(struct uart_bas *bas, int c) in z8530_putc() argument
233 while (!(uart_getreg(bas, REG_CTRL) & BES_TXE)) in z8530_putc()
235 uart_setreg(bas, REG_DATA, c); in z8530_putc()
236 uart_barrier(bas); in z8530_putc()
240 z8530_rxready(struct uart_bas *bas) in z8530_rxready() argument
243 return ((uart_getreg(bas, REG_CTRL) & BES_RXA) != 0 ? 1 : 0); in z8530_rxready()
247 z8530_getc(struct uart_bas *bas, struct mtx *hwmtx) in z8530_getc() argument
253 while (!(uart_getreg(bas, REG_CTRL) & BES_RXA)) { in z8530_getc()
259 c = uart_getreg(bas, REG_DATA); in z8530_getc()
327 struct uart_bas *bas; in z8530_bus_attach() local
330 bas = &sc->sc_bas; in z8530_bus_attach()
334 z8530_param(bas, di->baudrate, di->databits, di->stopbits, in z8530_bus_attach()
337 z8530->tpc = z8530_setup(bas, 9600, 8, 1, UART_PARITY_NONE); in z8530_bus_attach()
344 uart_setmreg(bas, WR_IC, IC_BRK | IC_CTS | IC_DCD); in z8530_bus_attach()
345 uart_barrier(bas); in z8530_bus_attach()
346 uart_setmreg(bas, WR_IDT, IDT_XIE | IDT_TIE | IDT_RIA); in z8530_bus_attach()
347 uart_barrier(bas); in z8530_bus_attach()
348 uart_setmreg(bas, WR_IV, 0); in z8530_bus_attach()
349 uart_barrier(bas); in z8530_bus_attach()
350 uart_setmreg(bas, WR_TPC, z8530->tpc); in z8530_bus_attach()
351 uart_barrier(bas); in z8530_bus_attach()
352 uart_setmreg(bas, WR_MIC, MIC_NV | MIC_MIE); in z8530_bus_attach()
353 uart_barrier(bas); in z8530_bus_attach()
395 struct uart_bas *bas; in z8530_bus_ioctl() local
398 bas = &sc->sc_bas; in z8530_bus_ioctl()
407 uart_setmreg(bas, WR_TPC, z8530->tpc); in z8530_bus_ioctl()
408 uart_barrier(bas); in z8530_bus_ioctl()
411 divisor = uart_getmreg(bas, RR_TCH); in z8530_bus_ioctl()
412 divisor = (divisor << 8) | uart_getmreg(bas, RR_TCL); in z8530_bus_ioctl()
413 baudrate = bas->rclk / 2 / (divisor + 2); in z8530_bus_ioctl()
428 struct uart_bas *bas; in z8530_bus_ipend() local
433 bas = &sc->sc_bas; in z8530_bus_ipend()
437 switch (bas->chan) { in z8530_bus_ipend()
439 ip = uart_getmreg(bas, RR_IP); in z8530_bus_ipend()
442 iv = uart_getmreg(bas, RR_IV) & 0x0E; in z8530_bus_ipend()
459 uart_setreg(bas, REG_CTRL, CR_RSTTXI); in z8530_bus_ipend()
460 uart_barrier(bas); in z8530_bus_ipend()
468 uart_setreg(bas, REG_CTRL, CR_RSTXSI); in z8530_bus_ipend()
469 uart_barrier(bas); in z8530_bus_ipend()
470 bes = uart_getmreg(bas, RR_BES); in z8530_bus_ipend()
479 src = uart_getmreg(bas, RR_SRC); in z8530_bus_ipend()
481 uart_setreg(bas, REG_CTRL, CR_RSTERR); in z8530_bus_ipend()
482 uart_barrier(bas); in z8530_bus_ipend()
488 uart_setreg(bas, REG_CTRL, CR_RSTIUS); in z8530_bus_ipend()
489 uart_barrier(bas); in z8530_bus_ipend()
535 struct uart_bas *bas; in z8530_bus_receive() local
539 bas = &sc->sc_bas; in z8530_bus_receive()
541 bes = uart_getmreg(bas, RR_BES); in z8530_bus_receive()
547 xc = uart_getreg(bas, REG_DATA); in z8530_bus_receive()
548 uart_barrier(bas); in z8530_bus_receive()
549 src = uart_getmreg(bas, RR_SRC); in z8530_bus_receive()
558 uart_setreg(bas, REG_CTRL, CR_RSTERR); in z8530_bus_receive()
559 uart_barrier(bas); in z8530_bus_receive()
561 bes = uart_getmreg(bas, RR_BES); in z8530_bus_receive()
565 (void)uart_getreg(bas, REG_DATA); in z8530_bus_receive()
566 uart_barrier(bas); in z8530_bus_receive()
567 src = uart_getmreg(bas, RR_SRC); in z8530_bus_receive()
569 uart_setreg(bas, REG_CTRL, CR_RSTERR); in z8530_bus_receive()
570 uart_barrier(bas); in z8530_bus_receive()
572 bes = uart_getmreg(bas, RR_BES); in z8530_bus_receive()
582 struct uart_bas *bas; in z8530_bus_setsig() local
585 bas = &sc->sc_bas; in z8530_bus_setsig()
608 uart_setmreg(bas, WR_TPC, z8530->tpc); in z8530_bus_setsig()
609 uart_barrier(bas); in z8530_bus_setsig()
618 struct uart_bas *bas; in z8530_bus_transmit() local
620 bas = &sc->sc_bas; in z8530_bus_transmit()
622 while (!(uart_getmreg(bas, RR_BES) & BES_TXE)) in z8530_bus_transmit()
624 uart_setreg(bas, REG_DATA, sc->sc_txbuf[0]); in z8530_bus_transmit()
625 uart_barrier(bas); in z8530_bus_transmit()
635 struct uart_bas *bas; in z8530_bus_grab() local
637 bas = &sc->sc_bas; in z8530_bus_grab()
639 uart_setmreg(bas, WR_IDT, IDT_XIE | IDT_TIE); in z8530_bus_grab()
640 uart_barrier(bas); in z8530_bus_grab()
647 struct uart_bas *bas; in z8530_bus_ungrab() local
649 bas = &sc->sc_bas; in z8530_bus_ungrab()
651 uart_setmreg(bas, WR_IDT, IDT_XIE | IDT_TIE | IDT_RIA); in z8530_bus_ungrab()
652 uart_barrier(bas); in z8530_bus_ungrab()