Subject: Using UltraATA 100 w/ Intel 830M
To: None <current-users@mail.netbsd.org>
From: None <ks@ub.uni-mainz.de>
List: current-users
Date: 01/28/2002 12:01:58
Hi,
since around 2 or 3 weeks now I'm using the Ultra/100 mode on my
Tecra9000 which uses the Intel 830M chipset. Seems to work
flowlessly. (Updating -current and pkgsrc ~daily using rsync from a
local tree...) Maybe someone likes to integrate that in -current
(patch below).
-kurt
here's the relevant output from dmesg:
pciide0 at pci0 dev 31 function 1: Intel 82201CA IDE Controller (rev. 0x01)
pciide0: bus-master DMA support present
pciide0: primary channel wired to compatibility mode
wd0 at pciide0 channel 0 drive 0: <IC25N020ATDA04-0>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 19077 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 39070080 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
pciide0: primary channel interrupting at irq 14
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA data transfers)
pciide0: secondary channel wired to compatibility mode
wd1 at pciide0 channel 1 drive 0: <HITACHI_DK23CA-20>
wd1: drive supports 16-sector PIO transfers, LBA addressing
wd1: 19077 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 39070080 sectors
wd1: 32-bit data port
wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
pciide0: secondary channel interrupting at irq 15
wd1(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA data transfers)
And the patch for pciide.c:
--- /sys/dev/pci/pciide.c Mon Jan 14 04:02:01 2002
+++ /u/NetBSD/lsrc/sys/dev/pci/pciide.c Mon Jan 14 23:04:06 2002
@@ -1484,6 +1484,8 @@
case PCI_PRODUCT_INTEL_82801AB_IDE:
case PCI_PRODUCT_INTEL_82801BA_IDE:
case PCI_PRODUCT_INTEL_82801BAM_IDE:
+ case PCI_PRODUCT_INTEL_82801CA_IDE_1:
+ case PCI_PRODUCT_INTEL_82801CA_IDE_2:
sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA;
}
}
@@ -1495,6 +1497,8 @@
break;
case PCI_PRODUCT_INTEL_82801BA_IDE:
case PCI_PRODUCT_INTEL_82801BAM_IDE:
+ case PCI_PRODUCT_INTEL_82801CA_IDE_1:
+ case PCI_PRODUCT_INTEL_82801CA_IDE_2:
sc->sc_wdcdev.UDMA_cap = 5;
break;
default:
@@ -1522,7 +1526,9 @@
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AA_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AB_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_1 ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_2) {
WDCDEBUG_PRINT((", IDE_CONTROL 0x%x",
pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)),
DEBUG_PROBE);
@@ -1574,7 +1580,9 @@
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AA_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AB_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_1 ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_2) {
WDCDEBUG_PRINT((", IDE_CONTROL 0x%x",
pci_conf_read(sc->sc_pc, sc->sc_tag, PIIX_CONFIG)),
DEBUG_PROBE);
@@ -1735,11 +1743,15 @@
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AA_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801AB_IDE ||
sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_1 ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_2) {
ideconf |= PIIX_CONFIG_PINGPONG;
}
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BA_IDE ||
- sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE) {
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801BAM_IDE ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_1 ||
+ sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_82801CA_IDE_2) {
/* setup Ultra/100 */
if (drvp->UDMA_mode > 2 &&
(ideconf & PIIX_CONFIG_CR(channel, drive)) == 0)