diff options
| author | Ian Lepore <ian@FreeBSD.org> | 2014-01-05 18:40:06 +0000 |
|---|---|---|
| committer | Ian Lepore <ian@FreeBSD.org> | 2014-01-05 18:40:06 +0000 |
| commit | 51dbd04609ca87348475a564bb8d8e4d9bfbf8f4 (patch) | |
| tree | bd616d9e03d7918901d4767b64aeb558f14b2227 /sys/dev | |
| parent | caca500f021bdc486718c70e33da48a34a681dc1 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/uart/uart_dev_lpc.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/sys/dev/uart/uart_dev_lpc.c b/sys/dev/uart/uart_dev_lpc.c index fc981eceea2b..708d343b76f4 100644 --- a/sys/dev/uart/uart_dev_lpc.c +++ b/sys/dev/uart/uart_dev_lpc.c @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include <sys/bus.h> #include <sys/conf.h> #include <machine/bus.h> +#include <machine/fdt.h> #include <dev/uart/uart.h> #include <dev/uart/uart_cpu.h> @@ -43,16 +44,13 @@ __FBSDID("$FreeBSD$"); #include "uart_if.h" #define DEFAULT_RCLK (13 * 1000 * 1000) -#define LPC_UART_NO(_bas) (((_bas->bsh) - LPC_UART_BASE) >> 15) -#define lpc_ns8250_get_auxreg(_bas, _reg) \ - bus_space_read_4((_bas)->bst, LPC_UART_CONTROL_BASE, _reg) -#define lpc_ns8250_set_auxreg(_bas, _reg, _val) \ - bus_space_write_4((_bas)->bst, LPC_UART_CONTROL_BASE, _reg, _val); +static bus_space_handle_t bsh_clkpwr; + #define lpc_ns8250_get_clkreg(_bas, _reg) \ - bus_space_read_4((_bas)->bst, LPC_CLKPWR_BASE, (_reg)) + bus_space_read_4(fdtbus_bs_tag, bsh_clkpwr, (_reg)) #define lpc_ns8250_set_clkreg(_bas, _reg, _val) \ - bus_space_write_4((_bas)->bst, LPC_CLKPWR_BASE, (_reg), (_val)) + bus_space_write_4(fdtbus_bs_tag, bsh_clkpwr, (_reg), (_val)) /* * Clear pending interrupts. THRE is cleared by reading IIR. Data @@ -293,9 +291,12 @@ lpc_ns8250_init(struct uart_bas *bas, int baudrate, int databits, int stopbits, u_long clkmode; /* Enable UART clock */ - clkmode = lpc_ns8250_get_auxreg(bas, LPC_UART_CLKMODE); - lpc_ns8250_set_auxreg(bas, LPC_UART_CLKMODE, - clkmode | LPC_UART_CLKMODE_UART5(1)); + bus_space_map(fdtbus_bs_tag, LPC_CLKPWR_PHYS_BASE, LPC_CLKPWR_SIZE, 0, + &bsh_clkpwr); + clkmode = lpc_ns8250_get_clkreg(bas, LPC_UART_CLKMODE); + lpc_ns8250_set_clkreg(bas, LPC_UART_CLKMODE, clkmode | + LPC_UART_CLKMODE_UART5(1)); + #if 0 /* Work around H/W bug */ uart_setreg(bas, REG_DATA, 0x00); |
