Argh, don't turn the IIR test on unless it's a pccard. These tests mess

up the subsequent probes.
This commit is contained in:
peter 1999-11-18 10:29:06 +00:00
parent 162eda3860
commit c9973ec034
2 changed files with 42 additions and 50 deletions

View File

@ -749,32 +749,28 @@ sioprobe(dev)
* Some pcmcia cards have the "TXRDY bug", so we check everyone
* for IIR_TXRDY implementation ( Palido 321s, DC-1S... )
*/
#if 1
/* Reading IIR register twice */
for (fn = 0; fn < 2; fn ++) {
DELAY(10000);
failures[6] = inb(iobase + com_iir);
}
/* Check IIR_TXRDY clear ? */
result = 0;
if (failures[6] & IIR_TXRDY) {
/* Nop, Double check with clearing IER */
outb(iobase + com_ier, 0);
if (inb(iobase + com_iir) & IIR_NOPEND) {
/* Ok. we're familia this gang */
SET_FLAG(dev, COM_C_IIR_TXRDYBUG);
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
#else
result = 0;
#endif
if (COM_NOPROBE(flags)) {
/* Reading IIR register twice */
for (fn = 0; fn < 2; fn ++) {
DELAY(10000);
failures[6] = inb(iobase + com_iir);
}
/* Check IIR_TXRDY clear ? */
result = 0;
if (failures[6] & IIR_TXRDY) {
/* Nop, Double check with clearing IER */
outb(iobase + com_ier, 0);
if (inb(iobase + com_iir) & IIR_NOPEND) {
/* Ok. we're familia this gang */
SET_FLAG(dev, COM_C_IIR_TXRDYBUG);
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
outb(iobase + com_cfcr, CFCR_8BITS);
enable_intr();
bus_release_resource(dev, SYS_RES_IOPORT, rid, port);

View File

@ -749,32 +749,28 @@ sioprobe(dev)
* Some pcmcia cards have the "TXRDY bug", so we check everyone
* for IIR_TXRDY implementation ( Palido 321s, DC-1S... )
*/
#if 1
/* Reading IIR register twice */
for (fn = 0; fn < 2; fn ++) {
DELAY(10000);
failures[6] = inb(iobase + com_iir);
}
/* Check IIR_TXRDY clear ? */
result = 0;
if (failures[6] & IIR_TXRDY) {
/* Nop, Double check with clearing IER */
outb(iobase + com_ier, 0);
if (inb(iobase + com_iir) & IIR_NOPEND) {
/* Ok. we're familia this gang */
SET_FLAG(dev, COM_C_IIR_TXRDYBUG);
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
#else
result = 0;
#endif
if (COM_NOPROBE(flags)) {
/* Reading IIR register twice */
for (fn = 0; fn < 2; fn ++) {
DELAY(10000);
failures[6] = inb(iobase + com_iir);
}
/* Check IIR_TXRDY clear ? */
result = 0;
if (failures[6] & IIR_TXRDY) {
/* Nop, Double check with clearing IER */
outb(iobase + com_ier, 0);
if (inb(iobase + com_iir) & IIR_NOPEND) {
/* Ok. we're familia this gang */
SET_FLAG(dev, COM_C_IIR_TXRDYBUG);
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
outb(iobase + com_cfcr, CFCR_8BITS);
enable_intr();
bus_release_resource(dev, SYS_RES_IOPORT, rid, port);