summaryrefslogtreecommitdiffstats
path: root/sys/dev/uart/uart_bus_isa.c
diff options
context:
space:
mode:
authornyan <nyan@FreeBSD.org>2008-08-25 14:45:24 +0000
committernyan <nyan@FreeBSD.org>2008-08-25 14:45:24 +0000
commit848a954cf438588fa15a30f37d3b363b5deb618e (patch)
tree240f9808095c9e96d0ac86fca8d3e79916f8b2b8 /sys/dev/uart/uart_bus_isa.c
parentacf5da1d357825978c6574d39909901e5174e4a7 (diff)
downloadFreeBSD-src-848a954cf438588fa15a30f37d3b363b5deb618e.zip
FreeBSD-src-848a954cf438588fa15a30f37d3b363b5deb618e.tar.gz
Add the 2nd CCU and PnP devices support on pc98.
Reviewed by: imp Obtained from: //depot/projects/uart with some fixes
Diffstat (limited to 'sys/dev/uart/uart_bus_isa.c')
-rw-r--r--sys/dev/uart/uart_bus_isa.c36
1 files changed, 29 insertions, 7 deletions
diff --git a/sys/dev/uart/uart_bus_isa.c b/sys/dev/uart/uart_bus_isa.c
index 51713ad..0f33ea9 100644
--- a/sys/dev/uart/uart_bus_isa.c
+++ b/sys/dev/uart/uart_bus_isa.c
@@ -1,5 +1,8 @@
/*-
- * Copyright (c) 2001 M. Warner Losh. All rights reserved.
+ * Copyright (c) 2008 TAKAHASHI Yoshihiro
+ * Copyright (c) 2008 Marcel Moolenaar
+ * Copyright (c) 2001 M. Warner Losh
+ * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -141,6 +144,18 @@ static struct isa_pnp_id isa_ns8250_ids[] = {
{0x0300695c, NULL}, /* WCI0003 - Fax/Voice/Modem/Speakphone/Asvd */
{0x01a0896a, NULL}, /* ZTIA001 - Zoom Internal V90 Faxmodem */
{0x61f7896a, NULL}, /* ZTIF761 - Zoom ComStar 33.6 */
+ /* The following are found in PC98 hardware. */
+ {0x4180a3b8, NULL}, /* NEC8041 - PC-9821CB-B04 */
+ {0x0181a3b8, NULL}, /* NEC8101 - PC-9821CB2-B04 */
+ {0x5181a3b8, NULL}, /* NEC8151 - Internal FAX/Modem for Cx3, Cb3 */
+ {0x9181a3b8, NULL}, /* NEC8191 - PC-9801-120 */
+ {0xe181a3b8, NULL}, /* NEC81E1 - Internal FAX/Modem */
+ {0x1182a3b8, NULL}, /* NEC8211 - PC-9801-123 */
+ {0x3182a3b8, NULL}, /* NEC8231 - Internal FAX/Modem (Voice) */
+ {0x4182a3b8, NULL}, /* NEC8241 - PC-9821NR-B05 */
+ {0x5182a3b8, NULL}, /* NEC8251 - Internel FAX/Modem */
+ {0x7182a3b8, NULL}, /* NEC8271 - PC-9801-125 */
+ {0x11802fbf, NULL}, /* OYO8011 - Internal FAX/Modem (Ring) */
{0}
};
@@ -153,14 +168,21 @@ uart_isa_probe(device_t dev)
parent = device_get_parent(dev);
sc = device_get_softc(dev);
+ /* Check PnP IDs */
+ if (ISA_PNP_PROBE(parent, dev, isa_ns8250_ids) == ENXIO)
+ return (ENXIO);
+
/* Probe PnP _and_ non-PnP ns8250 here. */
- if (ISA_PNP_PROBE(parent, dev, isa_ns8250_ids) != ENXIO) {
+#ifdef PC98
+ if (isa_get_logicalid(dev))
sc->sc_class = &uart_ns8250_class;
- return (uart_bus_probe(dev, 0, 0, 0, 0));
- }
-
- /* Add checks for non-ns8250 IDs here. */
- return (ENXIO);
+ else
+ sc->sc_class = uart_pc98_getdev(bus_get_resource_start(dev,
+ SYS_RES_IOPORT, 0));
+#else
+ sc->sc_class = &uart_ns8250_class;
+#endif
+ return (uart_bus_probe(dev, 0, 0, 0, 0));
}
DRIVER_MODULE(uart, isa, uart_isa_driver, uart_devclass, 0, 0);
OpenPOWER on IntegriCloud