summaryrefslogtreecommitdiff
path: root/sys/dev/uart/uart_cpu_ia64.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/uart/uart_cpu_ia64.c')
-rw-r--r--sys/dev/uart/uart_cpu_ia64.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/dev/uart/uart_cpu_ia64.c b/sys/dev/uart/uart_cpu_ia64.c
index 496049200c2d..9a71e20e506e 100644
--- a/sys/dev/uart/uart_cpu_ia64.c
+++ b/sys/dev/uart/uart_cpu_ia64.c
@@ -59,10 +59,15 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
{
struct dig64_hcdp_table *tbl;
struct dig64_hcdp_entry *ent;
+ struct uart_class *class;
bus_addr_t addr;
uint64_t hcdp;
unsigned int i;
+ class = &uart_ns8250_class;
+ if (class == NULL)
+ return (ENXIO);
+
/*
* Use the DIG64 HCDP table if present.
*/
@@ -82,12 +87,12 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
addr = ent->address.addr_high;
addr = (addr << 32) + ent->address.addr_low;
- di->ops = uart_ns8250_ops;
+ di->ops = uart_getops(class);
di->bas.chan = 0;
di->bas.bst = (ent->address.addr_space == 0)
? uart_bus_space_mem : uart_bus_space_io;
- if (bus_space_map(di->bas.bst, addr, 8, 0,
- &di->bas.bsh) != 0)
+ if (bus_space_map(di->bas.bst, addr,
+ uart_getrange(class), 0, &di->bas.bsh) != 0)
continue;
di->bas.regshft = 0;
di->bas.rclk = ent->pclock << 4;
@@ -104,6 +109,5 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
}
/* Check the environment. */
- di->ops = uart_ns8250_ops;
- return (uart_getenv(devtype, di));
+ return (uart_getenv(devtype, di, class));
}