Lines Matching defs:bas
114 ns8250_clrint(struct uart_bas *bas)
118 iir = uart_getreg(bas, REG_IIR);
122 lsr = uart_getreg(bas, REG_LSR);
124 (void)uart_getreg(bas, REG_DATA);
126 (void)uart_getreg(bas, REG_DATA);
128 (void)uart_getreg(bas, REG_MSR);
129 uart_barrier(bas);
130 iir = uart_getreg(bas, REG_IIR);
135 ns8250_get_divisor(struct uart_bas *bas)
140 lcr = uart_getreg(bas, REG_LCR);
141 uart_setreg(bas, REG_LCR, lcr | LCR_DLAB);
142 uart_barrier(bas);
143 divisor = uart_getreg(bas, REG_DLL) | (uart_getreg(bas, REG_DLH) << 8);
144 uart_barrier(bas);
145 uart_setreg(bas, REG_LCR, lcr);
146 uart_barrier(bas);
152 ns8250_delay(struct uart_bas *bas)
156 divisor = ns8250_get_divisor(bas);
160 return (16000000 * divisor / bas->rclk);
161 return (16000 * divisor / (bas->rclk / 1000));
189 ns8250_drain(struct uart_bas *bas, int what)
193 delay = ns8250_delay(bas);
202 while ((uart_getreg(bas, REG_LSR) & LSR_TEMT) == 0 && --limit)
224 while (limit && (uart_getreg(bas, REG_LSR) & LSR_RXRDY) && --limit) {
226 (void)uart_getreg(bas, REG_DATA);
227 uart_barrier(bas);
228 } while ((uart_getreg(bas, REG_LSR) & LSR_RXRDY) && --limit);
229 uart_barrier(bas);
246 ns8250_flush(struct uart_bas *bas, int what)
257 uart_setreg(bas, REG_FCR, fcr);
258 uart_barrier(bas);
267 lsr = uart_getreg(bas, REG_LSR);
274 ns8250_drain(bas, drain);
279 ns8250_param(struct uart_bas *bas, int baudrate, int databits, int stopbits,
303 if (baudrate > 0 && bas->rclk > 0) {
304 divisor = ns8250_divisor(bas->rclk, baudrate);
307 uart_setreg(bas, REG_LCR, lcr | LCR_DLAB);
308 uart_barrier(bas);
309 uart_setreg(bas, REG_DLL, divisor & 0xff);
310 uart_setreg(bas, REG_DLH, (divisor >> 8) & 0xff);
311 uart_barrier(bas);
315 uart_setreg(bas, REG_LCR, lcr);
316 uart_barrier(bas);
323 static int ns8250_probe(struct uart_bas *bas);
324 static void ns8250_init(struct uart_bas *bas, int, int, int, int);
325 static void ns8250_term(struct uart_bas *bas);
326 static void ns8250_putc(struct uart_bas *bas, int);
327 static int ns8250_rxready(struct uart_bas *bas);
328 static int ns8250_getc(struct uart_bas *bas, struct mtx *);
340 ns8250_probe(struct uart_bas *bas)
345 val = uart_getreg(bas, REG_IIR);
354 val = uart_getreg(bas, REG_MCR);
362 ns8250_init(struct uart_bas *bas, int baudrate, int databits, int stopbits,
373 ier = uart_getreg(bas, REG_IER) & 0xe0;
374 uart_setreg(bas, REG_IER, ier);
375 uart_barrier(bas);
384 if (bas->rclk_guess && bas->rclk == 0 && baudrate != 0) {
387 div = ns8250_get_divisor(bas);
388 bas->rclk = baudrate * div * 16;
396 if (bas->rclk == 0 && baudrate != 0)
397 bas->rclk = DEFAULT_RCLK;
399 ns8250_param(bas, baudrate, databits, stopbits, parity);
402 uart_setreg(bas, REG_FCR, 0);
403 uart_barrier(bas);
406 uart_setreg(bas, REG_MCR, MCR_IE | MCR_RTS | MCR_DTR);
407 uart_barrier(bas);
409 ns8250_clrint(bas);
413 ns8250_term(struct uart_bas *bas)
417 uart_setreg(bas, REG_MCR, MCR_IE);
418 uart_barrier(bas);
422 ns8250_putc(struct uart_bas *bas, int c)
428 while ((uart_getreg(bas, REG_LSR) & LSR_THRE) == 0 && --limit)
431 uart_setreg(bas, REG_DATA, c);
432 uart_barrier(bas);
436 ns8250_rxready(struct uart_bas *bas)
439 return ((uart_getreg(bas, REG_LSR) & LSR_RXRDY) != 0 ? 1 : 0);
443 ns8250_getc(struct uart_bas *bas, struct mtx *hwmtx)
449 while ((uart_getreg(bas, REG_LSR) & LSR_RXRDY) == 0) {
455 c = uart_getreg(bas, REG_DATA);
566 struct uart_bas *bas;
580 bas = &sc->sc_bas;
582 ns8250->busy_detect = bas->busy_detect;
583 ns8250->mcr = uart_getreg(bas, REG_MCR);
610 uart_setreg(bas, REG_FCR, ns8250->fcr);
611 uart_barrier(bas);
620 ns8250_clrint(bas);
621 ns8250->ier = uart_getreg(bas, REG_IER) & ns8250->ier_mask;
623 uart_setreg(bas, REG_IER, ns8250->ier);
624 uart_barrier(bas);
645 struct uart_bas *bas;
649 bas = &sc->sc_bas;
650 ier = uart_getreg(bas, REG_IER) & ns8250->ier_mask;
651 uart_setreg(bas, REG_IER, ier);
652 uart_barrier(bas);
653 ns8250_clrint(bas);
661 struct uart_bas *bas;
664 bas = &sc->sc_bas;
667 ns8250_flush(bas, what);
668 uart_setreg(bas, REG_FCR, ns8250->fcr);
669 uart_barrier(bas);
672 error = ns8250_drain(bas, what);
717 struct uart_bas *bas;
721 bas = &sc->sc_bas;
726 lcr = uart_getreg(bas, REG_LCR);
731 uart_setreg(bas, REG_LCR, lcr);
732 uart_barrier(bas);
735 lcr = uart_getreg(bas, REG_LCR);
736 uart_barrier(bas);
737 uart_setreg(bas, REG_LCR, 0xbf);
738 uart_barrier(bas);
739 efr = uart_getreg(bas, REG_EFR);
744 uart_setreg(bas, REG_EFR, efr);
745 uart_barrier(bas);
746 uart_setreg(bas, REG_LCR, lcr);
747 uart_barrier(bas);
750 lcr = uart_getreg(bas, REG_LCR);
751 uart_barrier(bas);
752 uart_setreg(bas, REG_LCR, 0xbf);
753 uart_barrier(bas);
754 efr = uart_getreg(bas, REG_EFR);
759 uart_setreg(bas, REG_EFR, efr);
760 uart_barrier(bas);
761 uart_setreg(bas, REG_LCR, lcr);
762 uart_barrier(bas);
765 divisor = ns8250_get_divisor(bas);
766 baudrate = (divisor > 0) ? bas->rclk / divisor / 16 : 0;
783 struct uart_bas *bas;
789 bas = &sc->sc_bas;
791 iir = uart_getreg(bas, REG_IIR);
794 (void)uart_getreg(bas, DW_REG_USR);
804 lsr = uart_getreg(bas, REG_LSR);
815 uart_setreg(bas, REG_IER, ns8250->ier);
816 uart_barrier(bas);
821 ns8250_clrint(bas);
831 struct uart_bas *bas;
835 bas = &sc->sc_bas;
848 while (((uart_getreg(bas, DW_REG_USR) & USR_BUSY) != 0) &&
859 error = ns8250_param(bas, baudrate, databits, stopbits, parity);
867 struct uart_bas *bas;
871 bas = &sc->sc_bas;
873 error = ns8250_probe(bas);
880 ns8250_init(bas, 115200, 8, 1, UART_PARITY_NONE);
884 error = ns8250_drain(bas, UART_DRAIN_TRANSMITTER);
894 uart_setreg(bas, REG_MCR, MCR_LOOPBACK | MCR_IE | MCR_DTR | MCR_RTS);
895 uart_barrier(bas);
902 uart_setreg(bas, REG_FCR, FCR_ENABLE);
903 uart_barrier(bas);
904 if (!(uart_getreg(bas, REG_IIR) & IIR_FIFO_MASK)) {
909 uart_setreg(bas, REG_MCR, mcr);
910 uart_barrier(bas);
916 uart_setreg(bas, REG_FCR, FCR_ENABLE | FCR_XMT_RST | FCR_RCV_RST);
917 uart_barrier(bas);
920 delay = ns8250_delay(bas);
923 error = ns8250_drain(bas, UART_DRAIN_RECEIVER|UART_DRAIN_TRANSMITTER);
925 uart_setreg(bas, REG_MCR, mcr);
926 uart_setreg(bas, REG_FCR, 0);
927 uart_barrier(bas);
939 uart_setreg(bas, REG_DATA, 0);
940 uart_barrier(bas);
949 while (((lsr |= uart_getreg(bas, REG_LSR)) & LSR_TEMT) == 0 &&
954 ier = uart_getreg(bas, REG_IER) & 0xe0;
955 uart_setreg(bas, REG_IER, ier);
956 uart_setreg(bas, REG_MCR, mcr);
957 uart_setreg(bas, REG_FCR, 0);
958 uart_barrier(bas);
965 uart_setreg(bas, REG_MCR, mcr);
968 ns8250_flush(bas, UART_FLUSH_RECEIVER|UART_FLUSH_TRANSMITTER);
1019 struct uart_bas *bas;
1024 bas = &sc->sc_bas;
1026 lsr = uart_getreg(bas, REG_LSR);
1043 xc = uart_getreg(bas, REG_DATA);
1049 lsr = uart_getreg(bas, REG_LSR);
1053 (void)uart_getreg(bas, REG_DATA);
1054 uart_barrier(bas);
1055 lsr = uart_getreg(bas, REG_LSR);
1065 struct uart_bas *bas;
1068 bas = &sc->sc_bas;
1085 uart_setreg(bas, REG_MCR, ns8250->mcr);
1086 uart_barrier(bas);
1095 struct uart_bas *bas;
1098 bas = &sc->sc_bas;
1100 while ((uart_getreg(bas, REG_LSR) & LSR_THRE) == 0)
1103 uart_setreg(bas, REG_DATA, sc->sc_txbuf[i]);
1104 uart_barrier(bas);
1108 uart_setreg(bas, REG_IER, ns8250->ier);
1109 uart_barrier(bas);
1111 ns8250_drain(bas, UART_DRAIN_TRANSMITTER);
1123 struct uart_bas *bas = &sc->sc_bas;
1125 if ((uart_getreg(bas, REG_LSR) & (LSR_TEMT | LSR_THRE)) !=
1134 struct uart_bas *bas = &sc->sc_bas;
1144 ier = uart_getreg(bas, REG_IER);
1145 uart_setreg(bas, REG_IER, ier & ns8250->ier_mask);
1146 uart_barrier(bas);
1154 struct uart_bas *bas = &sc->sc_bas;
1160 uart_setreg(bas, REG_IER, ns8250->ier);
1161 uart_barrier(bas);