summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2003-03-12 17:20:24 +0000
committersobomax <sobomax@FreeBSD.org>2003-03-12 17:20:24 +0000
commitde3d1a536aef17d1ad96cac5619a19b76c1420c6 (patch)
treeb40fb1c7e547d235360694755185d79c260153e2
parentdbc219492a33427843d01395ac0329949ba88a72 (diff)
downloadFreeBSD-src-de3d1a536aef17d1ad96cac5619a19b76c1420c6.zip
FreeBSD-src-de3d1a536aef17d1ad96cac5619a19b76c1420c6.tar.gz
Add initial support for IC Book Labs Dreadnought x16 Pro 16-ports card. Since
this card is based on 16750 UART, modify sio(4) a bit to ignore 16750-specific 7th bit of MCR when probing card. This allows card to be detected and attached as 16550A-compatible device. More work needs to be done in order to enable nice 16750-specific features such as larger fifo buffer and higher speeds. Sponsored by: IC Book Labs MFC after: 2 weeks
-rw-r--r--sys/dev/puc/pucdata.c24
-rw-r--r--sys/dev/sio/sio.c2
2 files changed, 25 insertions, 1 deletions
diff --git a/sys/dev/puc/pucdata.c b/sys/dev/puc/pucdata.c
index 28a65ea..39a3d68 100644
--- a/sys/dev/puc/pucdata.c
+++ b/sys/dev/puc/pucdata.c
@@ -1019,5 +1019,29 @@ const struct puc_device_description puc_devices[] = {
},
},
+ { "IC Book Labs Dreadnought x16 Pro",
+ NULL,
+ { 0xb00c, 0x081c, 0, 0 },
+ { 0xffff, 0xffff, 0, 0 },
+ {
+ { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x40, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x48, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x50, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x58, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x60, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x68, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x70, COM_FREQ },
+ { PUC_PORT_TYPE_COM, 0x10, 0x78, COM_FREQ },
+ },
+ },
+
{ 0 }
};
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c
index b3d8d21..f5e7363 100644
--- a/sys/dev/sio/sio.c
+++ b/sys/dev/sio/sio.c
@@ -730,7 +730,7 @@ sioprobe(dev, xrid, rclk, noprobe)
/* EXTRA DELAY? */
failures[0] = sio_getreg(com, com_cfcr) - CFCR_8BITS;
failures[1] = sio_getreg(com, com_ier) - IER_ETXRDY;
- failures[2] = sio_getreg(com, com_mcr) - mcr_image;
+ failures[2] = (sio_getreg(com, com_mcr) & 0x7f) - mcr_image;
DELAY(10000); /* Some internal modems need this time */
irqmap[1] = isa_irq_pending();
failures[4] = (sio_getreg(com, com_iir) & IIR_IMASK) - IIR_TXRDY;
OpenPOWER on IntegriCloud