summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornyan <nyan@FreeBSD.org>2001-09-16 05:33:07 +0000
committernyan <nyan@FreeBSD.org>2001-09-16 05:33:07 +0000
commitc6bf00383fbb0d219f19e4dda28b5e3feff40e5c (patch)
treeb555e4a0560736f73aeb01b2659e4030b0ceb7c8
parentd80c40a1b1e2c0e4f8e14e14cdea891ee69c16ed (diff)
downloadFreeBSD-src-c6bf00383fbb0d219f19e4dda28b5e3feff40e5c.zip
FreeBSD-src-c6bf00383fbb0d219f19e4dda28b5e3feff40e5c.tar.gz
MFi386: sys/isa/sio.c revision 1.301, 1.336, 1.337, 1.338, 1.339 and 1.342.
Removed unnecessary PnP moden entries.
-rw-r--r--sys/pc98/cbus/sio.c130
-rw-r--r--sys/pc98/pc98/sio.c130
2 files changed, 122 insertions, 138 deletions
diff --git a/sys/pc98/cbus/sio.c b/sys/pc98/cbus/sio.c
index 5887b05..6836b03 100644
--- a/sys/pc98/cbus/sio.c
+++ b/sys/pc98/cbus/sio.c
@@ -1001,6 +1001,8 @@ static struct pci_ids pci_ids[] = {
{ 0x100812b9, "3COM PCI FaxModem", 0x10 },
{ 0x048011c1, "Lucent kermit based PCI Modem", 0x14 },
{ 0x0000151f, "SmartLink 5634PCV SurfRider", 0x10 },
+ { 0x01101407, "Koutech IOFLEX-2S PCI Dual Port Serial", 0x10 },
+ { 0x01111407, "Koutech IOFLEX-2S PCI Dual Port Serial", 0x10 },
/* { 0xXXXXXXXX, "Xircom Cardbus modem", 0x10 }, */
{ 0x00000000, NULL, 0 }
};
@@ -1070,68 +1072,6 @@ sio_pci_probe(dev)
#endif /* NPCI > 0 */
static struct isa_pnp_id sio_ids[] = {
- {0x0005d041, "Standard PC COM port"}, /* PNP0500 */
- {0x0105d041, "16550A-compatible COM port"}, /* PNP0501 */
- {0x0205d041, "Multiport serial device (non-intelligent 16550)"}, /* PNP0502 */
- {0x1005d041, "Generic IRDA-compatible device"}, /* PNP0510 */
- {0x1105d041, "Generic IRDA-compatible device"}, /* PNP0511 */
- /* Devices that do not have a compatid */
- {0x7602a904, NULL}, /* AEI0276 - 56K v.90 Fax Modem (LKT) */
- {0x00007905, NULL}, /* AKY0000 - 56K Plug&Play Modem */
- {0x01405407, NULL}, /* AZT4001 - AZT3000 PnP SOUND DEVICE, MODEM */
- {0x56039008, NULL}, /* BDP0356 - Best Data 56x2 */
- {0x36339008, NULL}, /* BDP3336 - Best Data Prods. 336F */
- {0x0014490a, NULL}, /* BRI1400 - Boca 33.6 PnP */
- {0x0015490a, NULL}, /* BRI1500 - Internal Fax Data */
- {0x0034490a, NULL}, /* BRI3400 - Internal ACF Modem */
- {0x0094490a, NULL}, /* BRI9400 - Boca K56Flex PnP */
- {0x00b4490a, NULL}, /* BRIB400 - Boca 56k PnP */
- {0x0030320d, NULL}, /* CIR3000 - Cirrus Logic V43 */
- {0x0100440e, NULL}, /* CRD0001 - Cardinal MVP288IV ? */
- {0x1200c31e, NULL}, /* GVC0012 - VF1128HV-R9 (win modem?) */
- {0x0303c31e, NULL}, /* GVC0303 - MaxTech 33.6 PnP D/F/V */
- {0x0505c31e, NULL}, /* GVC0505 - GVC 56k Faxmodem */
- {0x0050c31e, NULL}, /* GVC5000 - some GVC modem */
- {0x3800f91e, NULL}, /* GWY0038 - Telepath with v.90 */
- {0x9062f91e, NULL}, /* GWY6290 - Telepath with x2 Technology */
- {0x0000f435, NULL}, /* MOT0000 - Motorola ModemSURFR 33.6 Intern */
- {0x5015f435, NULL}, /* MOT1550 - Motorola ModemSURFR 56K Modem */
- {0xf015f435, NULL}, /* MOT15F0 - Motorola VoiceSURFR 56K Modem */
- {0x6045f435, NULL}, /* MOT4560 - Motorola ? */
- {0x61e7a338, NULL}, /* NECE761 - 33.6Modem */
- {0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
- {0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
- {0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
- {0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */
- {0xc100ad4d, NULL}, /* SMM00C1 - Leopard 56k PnP */
- {0x9012b04e, NULL}, /* SUP1290 - Supra ? */
- {0x1013b04e, NULL}, /* SUP1310 - SupraExpress 336i PnP */
- {0x8013b04e, NULL}, /* SUP1380 - SupraExpress 288i PnP Voice */
- {0x8113b04e, NULL}, /* SUP1381 - SupraExpress 336i PnP Voice */
- {0x5016b04e, NULL}, /* SUP1650 - Supra 336i Sp Intl */
- {0x7420b04e, NULL}, /* SUP2070 - Supra ? */
- {0x8020b04e, NULL}, /* SUP2080 - Supra ? */
- {0x8420b04e, NULL}, /* SUP2084 - SupraExpress 56i PnP */
- {0x7121b04e, NULL}, /* SUP2171 - SupraExpress 56i Sp? */
- {0x8024b04e, NULL}, /* SUP2480 - Supra ? */
- {0x01007256, NULL}, /* USR0001 - U.S. Robotics Inc., Sportster W */
- {0x02007256, NULL}, /* USR0002 - U.S. Robotics Inc. Sportster 33. */
- {0x04007256, NULL}, /* USR0004 - USR Sportster 14.4k */
- {0x06007256, NULL}, /* USR0006 - USR Sportster 33.6k */
- {0x11007256, NULL}, /* USR0011 - USR ? */
- {0x01017256, NULL}, /* USR0101 - USR ? */
- {0x30207256, NULL}, /* USR2030 - U.S.Robotics Inc. Sportster 560 */
- {0x50207256, NULL}, /* USR2050 - U.S.Robotics Inc. Sportster 33. */
- {0x70207256, NULL}, /* USR2070 - U.S.Robotics Inc. Sportster 560 */
- {0x30307256, NULL}, /* USR3030 - U.S. Robotics 56K FAX INT */
- {0x31307256, NULL}, /* USR3031 - U.S. Robotics 56K FAX INT */
- {0x50307256, NULL}, /* USR3050 - U.S. Robotics 56K FAX INT */
- {0x70307256, NULL}, /* USR3070 - U.S. Robotics 56K Voice INT */
- {0x90307256, NULL}, /* USR3090 - USR ? */
- {0x90917256, NULL}, /* USR9190 - USR 56k Voice INT */
- {0x0300695c, NULL}, /* WCI0003 - Fax/Voice/Modem/Speakphone/Asvd */
- {0x01a0896a, NULL}, /* ZTIA001 - Zoom Internal V90 Faxmodem */
- {0x61f7896a, NULL}, /* ZTIF761 - Zoom ComStar 33.6 */
#ifdef PC98
{0x0100e4a5, "RSA-98III"},
#endif
@@ -1526,11 +1466,13 @@ sioprobe(dev, xrid)
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
+ sio_setreg(com, com_mcr, 0);
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
+ sio_setreg(com, com_ier, 0);
sio_setreg(com, com_cfcr, CFCR_8BITS);
mtx_unlock_spin(&sio_lock);
bus_release_resource(dev, SYS_RES_IOPORT, rid, port);
@@ -2118,10 +2060,20 @@ determined_type: ;
com->irqres, INTR_TYPE_TTY,
siointr, com, &com->cookie);
if (ret == 0)
- device_printf(dev, "unable to activate interrupt in fast mode - using normal mode");
+ device_printf(dev, "unable to activate interrupt in fast mode - using normal mode\n");
}
if (ret)
device_printf(dev, "could not activate interrupt\n");
+#if defined(DDB) && (defined(BREAK_TO_DEBUGGER) || \
+ defined(ALT_BREAK_TO_DEBUGGER))
+ /*
+ * Enable interrupts for early break-to-debugger support
+ * on the console.
+ */
+ if (ret == 0 && unit == comconsole)
+ outb(siocniobase + com_ier, IER_ERXRDY | IER_ERLS |
+ IER_EMSC);
+#endif
}
return (0);
@@ -2421,24 +2373,32 @@ comhardclose(com)
else
#endif
sio_setreg(com, com_cfcr, com->cfcr_image &= ~CFCR_SBREAK);
+ tp = com->tp;
+
+#if defined(DDB) && (defined(BREAK_TO_DEBUGGER) || \
+ defined(ALT_BREAK_TO_DEBUGGER))
+ /*
+ * Leave interrupts enabled and don't clear DTR if this is the
+ * console. This allows us to detect break-to-debugger events
+ * while the console device is closed.
+ */
+ if (com->unit != comconsole)
+#endif
{
#ifdef PC98
- int tmp;
+ int tmp;
if (IS_8251(com->pc98_if_type))
com_int_TxRx_disable(com);
else
sio_setreg(com, com_ier, 0);
if (com->pc98_if_type == COM_IF_RSA98III)
outb(com->rsabase + rsa_ier, 0x00);
-#else
- sio_setreg(com, com_ier, 0);
-#endif
- tp = com->tp;
-#ifdef PC98
if (IS_8251(com->pc98_if_type))
tmp = pc98_get_modem_status(com) & TIOCM_CAR;
else
tmp = com->prev_modem_status & MSR_DCD;
+#else
+ sio_setreg(com, com_ier, 0);
#endif
if (tp->t_cflag & HUPCL
/*
@@ -2877,6 +2837,35 @@ more_intr:
recv_data = 0;
else
recv_data = inb(com->data_port);
+#if defined(DDB) && defined(ALT_BREAK_TO_DEBUGGER)
+ /*
+ * Solaris implements a new BREAK which is initiated
+ * by a character sequence CR ~ ^b which is similar
+ * to a familiar pattern used on Sun servers by the
+ * Remote Console.
+ */
+#define KEY_CRTLB 2 /* ^B */
+#define KEY_CR 13 /* CR '\r' */
+#define KEY_TILDE 126 /* ~ */
+
+ if (com->unit == comconsole) {
+ static int brk_state1 = 0, brk_state2 = 0;
+ if (recv_data == KEY_CR) {
+ brk_state1 = recv_data;
+ brk_state2 = 0;
+ } else if (brk_state1 == KEY_CR && (recv_data == KEY_TILDE || recv_data == KEY_CRTLB)) {
+ if (recv_data == KEY_TILDE)
+ brk_state2 = recv_data;
+ else if (brk_state2 == KEY_TILDE && recv_data == KEY_CRTLB) {
+ breakpoint();
+ brk_state1 = brk_state2 = 0;
+ goto cont;
+ } else
+ brk_state2 = 0;
+ } else
+ brk_state1 = 0;
+ }
+#endif
if (line_status & (LSR_BI | LSR_FE | LSR_PE)) {
/*
* Don't store BI if IGNBRK or FE/PE if IGNPAR.
@@ -4632,6 +4621,9 @@ siogdbputc(c)
#endif
DRIVER_MODULE(sio, isa, sio_isa_driver, sio_devclass, 0, 0);
+#ifndef PC98
+DRIVER_MODULE(sio, acpi, sio_isa_driver, sio_devclass, 0, 0);
+#endif
#if NCARD > 0
DRIVER_MODULE(sio, pccard, sio_pccard_driver, sio_devclass, 0, 0);
#endif
diff --git a/sys/pc98/pc98/sio.c b/sys/pc98/pc98/sio.c
index 5887b05..6836b03 100644
--- a/sys/pc98/pc98/sio.c
+++ b/sys/pc98/pc98/sio.c
@@ -1001,6 +1001,8 @@ static struct pci_ids pci_ids[] = {
{ 0x100812b9, "3COM PCI FaxModem", 0x10 },
{ 0x048011c1, "Lucent kermit based PCI Modem", 0x14 },
{ 0x0000151f, "SmartLink 5634PCV SurfRider", 0x10 },
+ { 0x01101407, "Koutech IOFLEX-2S PCI Dual Port Serial", 0x10 },
+ { 0x01111407, "Koutech IOFLEX-2S PCI Dual Port Serial", 0x10 },
/* { 0xXXXXXXXX, "Xircom Cardbus modem", 0x10 }, */
{ 0x00000000, NULL, 0 }
};
@@ -1070,68 +1072,6 @@ sio_pci_probe(dev)
#endif /* NPCI > 0 */
static struct isa_pnp_id sio_ids[] = {
- {0x0005d041, "Standard PC COM port"}, /* PNP0500 */
- {0x0105d041, "16550A-compatible COM port"}, /* PNP0501 */
- {0x0205d041, "Multiport serial device (non-intelligent 16550)"}, /* PNP0502 */
- {0x1005d041, "Generic IRDA-compatible device"}, /* PNP0510 */
- {0x1105d041, "Generic IRDA-compatible device"}, /* PNP0511 */
- /* Devices that do not have a compatid */
- {0x7602a904, NULL}, /* AEI0276 - 56K v.90 Fax Modem (LKT) */
- {0x00007905, NULL}, /* AKY0000 - 56K Plug&Play Modem */
- {0x01405407, NULL}, /* AZT4001 - AZT3000 PnP SOUND DEVICE, MODEM */
- {0x56039008, NULL}, /* BDP0356 - Best Data 56x2 */
- {0x36339008, NULL}, /* BDP3336 - Best Data Prods. 336F */
- {0x0014490a, NULL}, /* BRI1400 - Boca 33.6 PnP */
- {0x0015490a, NULL}, /* BRI1500 - Internal Fax Data */
- {0x0034490a, NULL}, /* BRI3400 - Internal ACF Modem */
- {0x0094490a, NULL}, /* BRI9400 - Boca K56Flex PnP */
- {0x00b4490a, NULL}, /* BRIB400 - Boca 56k PnP */
- {0x0030320d, NULL}, /* CIR3000 - Cirrus Logic V43 */
- {0x0100440e, NULL}, /* CRD0001 - Cardinal MVP288IV ? */
- {0x1200c31e, NULL}, /* GVC0012 - VF1128HV-R9 (win modem?) */
- {0x0303c31e, NULL}, /* GVC0303 - MaxTech 33.6 PnP D/F/V */
- {0x0505c31e, NULL}, /* GVC0505 - GVC 56k Faxmodem */
- {0x0050c31e, NULL}, /* GVC5000 - some GVC modem */
- {0x3800f91e, NULL}, /* GWY0038 - Telepath with v.90 */
- {0x9062f91e, NULL}, /* GWY6290 - Telepath with x2 Technology */
- {0x0000f435, NULL}, /* MOT0000 - Motorola ModemSURFR 33.6 Intern */
- {0x5015f435, NULL}, /* MOT1550 - Motorola ModemSURFR 56K Modem */
- {0xf015f435, NULL}, /* MOT15F0 - Motorola VoiceSURFR 56K Modem */
- {0x6045f435, NULL}, /* MOT4560 - Motorola ? */
- {0x61e7a338, NULL}, /* NECE761 - 33.6Modem */
- {0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
- {0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
- {0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
- {0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */
- {0xc100ad4d, NULL}, /* SMM00C1 - Leopard 56k PnP */
- {0x9012b04e, NULL}, /* SUP1290 - Supra ? */
- {0x1013b04e, NULL}, /* SUP1310 - SupraExpress 336i PnP */
- {0x8013b04e, NULL}, /* SUP1380 - SupraExpress 288i PnP Voice */
- {0x8113b04e, NULL}, /* SUP1381 - SupraExpress 336i PnP Voice */
- {0x5016b04e, NULL}, /* SUP1650 - Supra 336i Sp Intl */
- {0x7420b04e, NULL}, /* SUP2070 - Supra ? */
- {0x8020b04e, NULL}, /* SUP2080 - Supra ? */
- {0x8420b04e, NULL}, /* SUP2084 - SupraExpress 56i PnP */
- {0x7121b04e, NULL}, /* SUP2171 - SupraExpress 56i Sp? */
- {0x8024b04e, NULL}, /* SUP2480 - Supra ? */
- {0x01007256, NULL}, /* USR0001 - U.S. Robotics Inc., Sportster W */
- {0x02007256, NULL}, /* USR0002 - U.S. Robotics Inc. Sportster 33. */
- {0x04007256, NULL}, /* USR0004 - USR Sportster 14.4k */
- {0x06007256, NULL}, /* USR0006 - USR Sportster 33.6k */
- {0x11007256, NULL}, /* USR0011 - USR ? */
- {0x01017256, NULL}, /* USR0101 - USR ? */
- {0x30207256, NULL}, /* USR2030 - U.S.Robotics Inc. Sportster 560 */
- {0x50207256, NULL}, /* USR2050 - U.S.Robotics Inc. Sportster 33. */
- {0x70207256, NULL}, /* USR2070 - U.S.Robotics Inc. Sportster 560 */
- {0x30307256, NULL}, /* USR3030 - U.S. Robotics 56K FAX INT */
- {0x31307256, NULL}, /* USR3031 - U.S. Robotics 56K FAX INT */
- {0x50307256, NULL}, /* USR3050 - U.S. Robotics 56K FAX INT */
- {0x70307256, NULL}, /* USR3070 - U.S. Robotics 56K Voice INT */
- {0x90307256, NULL}, /* USR3090 - USR ? */
- {0x90917256, NULL}, /* USR9190 - USR 56k Voice INT */
- {0x0300695c, NULL}, /* WCI0003 - Fax/Voice/Modem/Speakphone/Asvd */
- {0x01a0896a, NULL}, /* ZTIA001 - Zoom Internal V90 Faxmodem */
- {0x61f7896a, NULL}, /* ZTIF761 - Zoom ComStar 33.6 */
#ifdef PC98
{0x0100e4a5, "RSA-98III"},
#endif
@@ -1526,11 +1466,13 @@ sioprobe(dev, xrid)
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
+ sio_setreg(com, com_mcr, 0);
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
+ sio_setreg(com, com_ier, 0);
sio_setreg(com, com_cfcr, CFCR_8BITS);
mtx_unlock_spin(&sio_lock);
bus_release_resource(dev, SYS_RES_IOPORT, rid, port);
@@ -2118,10 +2060,20 @@ determined_type: ;
com->irqres, INTR_TYPE_TTY,
siointr, com, &com->cookie);
if (ret == 0)
- device_printf(dev, "unable to activate interrupt in fast mode - using normal mode");
+ device_printf(dev, "unable to activate interrupt in fast mode - using normal mode\n");
}
if (ret)
device_printf(dev, "could not activate interrupt\n");
+#if defined(DDB) && (defined(BREAK_TO_DEBUGGER) || \
+ defined(ALT_BREAK_TO_DEBUGGER))
+ /*
+ * Enable interrupts for early break-to-debugger support
+ * on the console.
+ */
+ if (ret == 0 && unit == comconsole)
+ outb(siocniobase + com_ier, IER_ERXRDY | IER_ERLS |
+ IER_EMSC);
+#endif
}
return (0);
@@ -2421,24 +2373,32 @@ comhardclose(com)
else
#endif
sio_setreg(com, com_cfcr, com->cfcr_image &= ~CFCR_SBREAK);
+ tp = com->tp;
+
+#if defined(DDB) && (defined(BREAK_TO_DEBUGGER) || \
+ defined(ALT_BREAK_TO_DEBUGGER))
+ /*
+ * Leave interrupts enabled and don't clear DTR if this is the
+ * console. This allows us to detect break-to-debugger events
+ * while the console device is closed.
+ */
+ if (com->unit != comconsole)
+#endif
{
#ifdef PC98
- int tmp;
+ int tmp;
if (IS_8251(com->pc98_if_type))
com_int_TxRx_disable(com);
else
sio_setreg(com, com_ier, 0);
if (com->pc98_if_type == COM_IF_RSA98III)
outb(com->rsabase + rsa_ier, 0x00);
-#else
- sio_setreg(com, com_ier, 0);
-#endif
- tp = com->tp;
-#ifdef PC98
if (IS_8251(com->pc98_if_type))
tmp = pc98_get_modem_status(com) & TIOCM_CAR;
else
tmp = com->prev_modem_status & MSR_DCD;
+#else
+ sio_setreg(com, com_ier, 0);
#endif
if (tp->t_cflag & HUPCL
/*
@@ -2877,6 +2837,35 @@ more_intr:
recv_data = 0;
else
recv_data = inb(com->data_port);
+#if defined(DDB) && defined(ALT_BREAK_TO_DEBUGGER)
+ /*
+ * Solaris implements a new BREAK which is initiated
+ * by a character sequence CR ~ ^b which is similar
+ * to a familiar pattern used on Sun servers by the
+ * Remote Console.
+ */
+#define KEY_CRTLB 2 /* ^B */
+#define KEY_CR 13 /* CR '\r' */
+#define KEY_TILDE 126 /* ~ */
+
+ if (com->unit == comconsole) {
+ static int brk_state1 = 0, brk_state2 = 0;
+ if (recv_data == KEY_CR) {
+ brk_state1 = recv_data;
+ brk_state2 = 0;
+ } else if (brk_state1 == KEY_CR && (recv_data == KEY_TILDE || recv_data == KEY_CRTLB)) {
+ if (recv_data == KEY_TILDE)
+ brk_state2 = recv_data;
+ else if (brk_state2 == KEY_TILDE && recv_data == KEY_CRTLB) {
+ breakpoint();
+ brk_state1 = brk_state2 = 0;
+ goto cont;
+ } else
+ brk_state2 = 0;
+ } else
+ brk_state1 = 0;
+ }
+#endif
if (line_status & (LSR_BI | LSR_FE | LSR_PE)) {
/*
* Don't store BI if IGNBRK or FE/PE if IGNPAR.
@@ -4632,6 +4621,9 @@ siogdbputc(c)
#endif
DRIVER_MODULE(sio, isa, sio_isa_driver, sio_devclass, 0, 0);
+#ifndef PC98
+DRIVER_MODULE(sio, acpi, sio_isa_driver, sio_devclass, 0, 0);
+#endif
#if NCARD > 0
DRIVER_MODULE(sio, pccard, sio_pccard_driver, sio_devclass, 0, 0);
#endif
OpenPOWER on IntegriCloud