diff --git a/sys/dev/uart/uart_cpu.h b/sys/dev/uart/uart_cpu.h index f10e4ddbcff..e60ce578306 100644 --- a/sys/dev/uart/uart_cpu.h +++ b/sys/dev/uart/uart_cpu.h @@ -67,8 +67,9 @@ struct uart_devinfo { void *cookie; /* Type dependent use. */ }; -int uart_cpu_getdev(int devtype, struct uart_devinfo *di); -int uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2); +bus_addr_t uart_cpu_busaddr(struct uart_bas *); +int uart_cpu_eqres(struct uart_bas *, struct uart_bas *); +int uart_cpu_getdev(int, struct uart_devinfo *); void uart_add_sysdev(struct uart_devinfo*); diff --git a/sys/dev/uart/uart_cpu_alpha.c b/sys/dev/uart/uart_cpu_alpha.c index 95ee2ffffa7..86382771d4e 100644 --- a/sys/dev/uart/uart_cpu_alpha.c +++ b/sys/dev/uart/uart_cpu_alpha.c @@ -39,6 +39,20 @@ __FBSDID("$FreeBSD$"); #include #include +bus_addr_t +uart_cpu_busaddr(struct uart_bas *bas) +{ + + return (bas->bsh); +} + +int +uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) +{ + + return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -102,10 +116,3 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) return (ENXIO); } - -int -uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) -{ - - return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); -} diff --git a/sys/dev/uart/uart_cpu_amd64.c b/sys/dev/uart/uart_cpu_amd64.c index a186216e24e..1852d40263d 100644 --- a/sys/dev/uart/uart_cpu_amd64.c +++ b/sys/dev/uart/uart_cpu_amd64.c @@ -36,6 +36,20 @@ __FBSDID("$FreeBSD$"); #include #include +bus_addr_t +uart_cpu_busaddr(struct uart_bas *bas) +{ + + return (bas->bsh); +} + +int +uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) +{ + + return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -83,10 +97,3 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) return (ENXIO); } - -int -uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) -{ - - return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); -} diff --git a/sys/dev/uart/uart_cpu_i386.c b/sys/dev/uart/uart_cpu_i386.c index 04de73a7da2..9e34290abf2 100644 --- a/sys/dev/uart/uart_cpu_i386.c +++ b/sys/dev/uart/uart_cpu_i386.c @@ -36,6 +36,20 @@ __FBSDID("$FreeBSD$"); #include #include +bus_addr_t +uart_cpu_busaddr(struct uart_bas *bas) +{ + + return (bas->bsh); +} + +int +uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) +{ + + return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -83,10 +97,3 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) return (ENXIO); } - -int -uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) -{ - - return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); -} diff --git a/sys/dev/uart/uart_cpu_ia64.c b/sys/dev/uart/uart_cpu_ia64.c index f3523fb55b6..32073fceef0 100644 --- a/sys/dev/uart/uart_cpu_ia64.c +++ b/sys/dev/uart/uart_cpu_ia64.c @@ -44,6 +44,20 @@ static int dig64_to_uart_parity[] = { UART_PARITY_ODD, UART_PARITY_MARK, UART_PARITY_SPACE }; +bus_addr_t +uart_cpu_busaddr(struct uart_bas *bas) +{ + + return (bas->bsh); +} + +int +uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) +{ + + return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -130,10 +144,3 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) return (ENXIO); } - -int -uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) -{ - - return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); -} diff --git a/sys/dev/uart/uart_cpu_pc98.c b/sys/dev/uart/uart_cpu_pc98.c index ab7f0b74a2a..05704d2f656 100644 --- a/sys/dev/uart/uart_cpu_pc98.c +++ b/sys/dev/uart/uart_cpu_pc98.c @@ -36,6 +36,20 @@ __FBSDID("$FreeBSD$"); #include #include +bus_addr_t +uart_cpu_busaddr(struct uart_bas *bas) +{ + + return (bas->bsh->bsh_base); +} + +int +uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) +{ + + return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -87,10 +101,3 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) return (ENXIO); } - -int -uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) -{ - - return ((b1->bsh == b2->bsh && b1->bst == b2->bst) ? 1 : 0); -} diff --git a/sys/dev/uart/uart_cpu_sparc64.c b/sys/dev/uart/uart_cpu_sparc64.c index fed26a88950..d14c68b2b02 100644 --- a/sys/dev/uart/uart_cpu_sparc64.c +++ b/sys/dev/uart/uart_cpu_sparc64.c @@ -58,6 +58,20 @@ uart_cpu_channel(char *dev) return (alias[len - 1] - 'a'); } +bus_addr_t +uart_cpu_busaddr(struct uart_bas *bas) +{ + + return (bas->bsh); +} + +int +uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) +{ + + return ((b1->bsh == b2->bsh) ? 1 : 0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -147,10 +161,3 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di) (par == 'o') ? UART_PARITY_ODD : UART_PARITY_EVEN; return (0); } - -int -uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) -{ - - return ((b1->bsh == b2->bsh) ? 1 : 0); -} diff --git a/sys/dev/uart/uart_dev_sab82532.c b/sys/dev/uart/uart_dev_sab82532.c index b7ca2e4956c..5345e972d24 100644 --- a/sys/dev/uart/uart_dev_sab82532.c +++ b/sys/dev/uart/uart_dev_sab82532.c @@ -42,8 +42,8 @@ __FBSDID("$FreeBSD$"); #define DEFAULT_RCLK 29491200 -#define IS_CHANNEL_A(bas) (((bas)->bsh & 0x40) == 0x00) -#define IS_CHANNEL_B(bas) (((bas)->bsh & 0x40) == 0x40) +#define IS_CHANNEL_A(bas) ((uart_cpu_busaddr(bas) & 0x40) == 0x00) +#define IS_CHANNEL_B(bas) ((uart_cpu_busaddr(bas) & 0x40) == 0x40) /* * NOTE: To allow us to read the baudrate divisor from the chip, we diff --git a/sys/dev/uart/uart_dev_z8530.c b/sys/dev/uart/uart_dev_z8530.c index 498b3a33a48..a7c6e25b310 100644 --- a/sys/dev/uart/uart_dev_z8530.c +++ b/sys/dev/uart/uart_dev_z8530.c @@ -42,8 +42,8 @@ __FBSDID("$FreeBSD$"); #define DEFAULT_RCLK 307200 -#define IS_CHANNEL_A(bas) (((bas)->bsh & 7) != 0) -#define IS_CHANNEL_B(bas) (((bas)->bsh & 7) == 0) +#define IS_CHANNEL_A(bas) ((uart_cpu_busaddr(bas) & 7) != 0) +#define IS_CHANNEL_B(bas) ((uart_cpu_busaddr(bas) & 7) == 0) /* Multiplexed I/O. */ static __inline void