Lines Matching refs:bas
147 #define __uart_getreg(bas, reg) \ argument
148 bus_space_read_4((bas)->bst, (bas)->bsh, uart_regofs(bas, reg))
149 #define __uart_setreg(bas, reg, value) \ argument
150 bus_space_write_4((bas)->bst, (bas)->bsh, uart_regofs(bas, reg), value)
155 static int uart_pl011_probe(struct uart_bas *bas);
156 static void uart_pl011_init(struct uart_bas *bas, int, int, int, int);
157 static void uart_pl011_term(struct uart_bas *bas);
158 static void uart_pl011_putc(struct uart_bas *bas, int);
159 static int uart_pl011_rxready(struct uart_bas *bas);
160 static int uart_pl011_getc(struct uart_bas *bas, struct mtx *);
172 uart_pl011_probe(struct uart_bas *bas) in uart_pl011_probe() argument
191 if (bas->regshft == 0 || bas->regiowidth == 1) { in uart_pl011_probe()
192 bas->regshft = 2; in uart_pl011_probe()
193 bas->regiowidth = 4; in uart_pl011_probe()
200 uart_pl011_param(struct uart_bas *bas, int baudrate, int databits, int stopbits, in uart_pl011_param() argument
211 __uart_setreg(bas, UART_CR, ctrl); in uart_pl011_param()
241 if (bas->rclk != 0 && baudrate != 0) { in uart_pl011_param()
242 baud = bas->rclk * 4 / baudrate; in uart_pl011_param()
243 __uart_setreg(bas, UART_IBRD, ((uint32_t)(baud >> 6)) & IBRD_BDIVINT); in uart_pl011_param()
244 __uart_setreg(bas, UART_FBRD, (uint32_t)(baud & 0x3F) & FBRD_BDIVFRAC); in uart_pl011_param()
248 __uart_setreg(bas, UART_LCR_H, (__uart_getreg(bas, UART_LCR_H) & in uart_pl011_param()
252 __uart_setreg(bas, UART_IFLS, FIFO_IFLS_BITS); in uart_pl011_param()
254 __uart_setreg(bas, UART_CR, ctrl); in uart_pl011_param()
265 if (bas->rclk == 0 && baudrate > 0 && bas->rclk_guess) { in uart_pl011_param()
268 div = ((__uart_getreg(bas, UART_IBRD) & IBRD_BDIVINT) << 6) | in uart_pl011_param()
269 (__uart_getreg(bas, UART_FBRD) & FBRD_BDIVFRAC); in uart_pl011_param()
270 bas->rclk = (div * baudrate) / 4; in uart_pl011_param()
276 uart_pl011_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, in uart_pl011_init() argument
280 __uart_setreg(bas, UART_IMSC, __uart_getreg(bas, UART_IMSC) & in uart_pl011_init()
283 uart_pl011_param(bas, baudrate, databits, stopbits, parity); in uart_pl011_init()
287 uart_pl011_term(struct uart_bas *bas) in uart_pl011_term() argument
306 uart_pl011_putc(struct uart_bas *bas, int c) in uart_pl011_putc() argument
310 while (__uart_getreg(bas, UART_FR) & FR_TXFF) in uart_pl011_putc()
312 __uart_setreg(bas, UART_DR, c & 0xff); in uart_pl011_putc()
316 uart_pl011_rxready(struct uart_bas *bas) in uart_pl011_rxready() argument
319 return !(__uart_getreg(bas, UART_FR) & FR_RXFE); in uart_pl011_rxready()
323 uart_pl011_getc(struct uart_bas *bas, struct mtx *hwmtx) in uart_pl011_getc() argument
327 while (!uart_pl011_rxready(bas)) in uart_pl011_getc()
329 c = __uart_getreg(bas, UART_DR) & 0xff; in uart_pl011_getc()
415 struct uart_bas *bas; in uart_pl011_bus_attach() local
418 bas = &sc->sc_bas; in uart_pl011_bus_attach()
422 __uart_setreg(bas, UART_IMSC, psc->imsc); in uart_pl011_bus_attach()
425 __uart_setreg(bas, UART_ICR, IMSC_MASK_ALL); in uart_pl011_bus_attach()
477 struct uart_bas *bas; in uart_pl011_bus_ipend() local
482 bas = &sc->sc_bas; in uart_pl011_bus_ipend()
485 ints = __uart_getreg(bas, UART_MIS); in uart_pl011_bus_ipend()
499 __uart_setreg(bas, UART_IMSC, psc->imsc & ~UART_TXEMPTY); in uart_pl011_bus_ipend()
580 struct uart_bas *bas; in uart_pl011_bus_receive() local
584 bas = &sc->sc_bas; in uart_pl011_bus_receive()
588 ints = __uart_getreg(bas, UART_FR); in uart_pl011_bus_receive()
596 xc = __uart_getreg(bas, UART_DR); in uart_pl011_bus_receive()
623 struct uart_bas *bas; in uart_pl011_bus_transmit() local
627 bas = &sc->sc_bas; in uart_pl011_bus_transmit()
631 __uart_setreg(bas, UART_DR, sc->sc_txbuf[i]); in uart_pl011_bus_transmit()
632 uart_barrier(bas); in uart_pl011_bus_transmit()
637 __uart_setreg(bas, UART_IMSC, psc->imsc); in uart_pl011_bus_transmit()
648 struct uart_bas *bas; in uart_pl011_bus_grab() local
651 bas = &sc->sc_bas; in uart_pl011_bus_grab()
655 __uart_setreg(bas, UART_IMSC, psc->imsc & ~IMSC_MASK_ALL); in uart_pl011_bus_grab()
663 struct uart_bas *bas; in uart_pl011_bus_ungrab() local
666 bas = &sc->sc_bas; in uart_pl011_bus_ungrab()
670 __uart_setreg(bas, UART_IMSC, psc->imsc); in uart_pl011_bus_ungrab()