summaryrefslogtreecommitdiffstats
path: root/sys/dev/uart/uart_cpu_pc98.c
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-09-07 21:51:03 +0000
committermarcel <marcel@FreeBSD.org>2003-09-07 21:51:03 +0000
commit99d0e6c9d5d310d7f4c4558288e881c89b3fdf78 (patch)
tree22e0d3f0111ac1127e824ebbf9c76d4238693f5f /sys/dev/uart/uart_cpu_pc98.c
parent49215d6199e1f0cf0b9f639b2113118e61c3180d (diff)
downloadFreeBSD-src-99d0e6c9d5d310d7f4c4558288e881c89b3fdf78.zip
FreeBSD-src-99d0e6c9d5d310d7f4c4558288e881c89b3fdf78.tar.gz
Remove the assumption that a bus_space_handle_t is an I/O address
from the SAB82532 and the Z8530 hardware drivers by introducing uart_cpu_busaddr(). The assumption is not true on pc98 where bus_space_handle_t is a pointer to a structure. The uart_cpu_busaddr() function will return the bus address corresponding the tag and handle given to it by the BAS. WARNING: the intend of the function is STRICTLY to allow hardware drivers to determine which logical channel they control and is NOT to be used for actual I/O. It is therefore EXPLICITLY allowed that uart_cpu_busaddr() returns only the lower 8 bits of the address and garbage in all other bits. No mistakes...
Diffstat (limited to 'sys/dev/uart/uart_cpu_pc98.c')
-rw-r--r--sys/dev/uart/uart_cpu_pc98.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/sys/dev/uart/uart_cpu_pc98.c b/sys/dev/uart/uart_cpu_pc98.c
index ab7f0b7..05704d2 100644
--- a/sys/dev/uart/uart_cpu_pc98.c
+++ b/sys/dev/uart/uart_cpu_pc98.c
@@ -36,6 +36,20 @@ __FBSDID("$FreeBSD$");
#include <dev/uart/uart.h>
#include <dev/uart/uart_cpu.h>
+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);
-}
OpenPOWER on IntegriCloud