diff options
Diffstat (limited to 'sys/dev/uart/uart_cpu_ia64.c')
| -rw-r--r-- | sys/dev/uart/uart_cpu_ia64.c | 14 |
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)); } |
