diff options
-rw-r--r-- | sys/dev/ic/wdc.c | 8 | ||||
-rw-r--r-- | sys/dev/ic/wdcvar.h | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/ic/wdc.c b/sys/dev/ic/wdc.c index 56e6047ee07..0f7f443fe0a 100644 --- a/sys/dev/ic/wdc.c +++ b/sys/dev/ic/wdc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wdc.c,v 1.29 2001/04/02 19:01:18 art Exp $ */ +/* $OpenBSD: wdc.c,v 1.30 2001/04/04 07:29:50 csapuntz Exp $ */ /* $NetBSD: wdc.c,v 1.68 1999/06/23 19:00:17 bouyer Exp $ */ @@ -1228,6 +1228,12 @@ wdc_probe_caps(drvp, params) return; } drvp->drive_flags |= DRIVE_MODE; + + /* Some controllers don't support ATAPI DMA */ + if ((drvp->drive_flags & DRIVE_ATAPI) && + (wdc->cap & WDC_CAPABILITY_NO_ATAPI_DMA)) + return; + printed = 0; for (i = 7; i >= 0; i--) { if ((params->atap_dmamode_supp & (1 << i)) == 0) diff --git a/sys/dev/ic/wdcvar.h b/sys/dev/ic/wdcvar.h index fb2c30b6520..adefd62d2e3 100644 --- a/sys/dev/ic/wdcvar.h +++ b/sys/dev/ic/wdcvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: wdcvar.h,v 1.16 2001/03/25 13:11:53 csapuntz Exp $ */ +/* $OpenBSD: wdcvar.h,v 1.17 2001/04/04 07:29:50 csapuntz Exp $ */ /* $NetBSD: wdcvar.h,v 1.17 1999/04/11 20:50:29 bouyer Exp $ */ /*- @@ -154,6 +154,7 @@ struct wdc_softc { /* Per controller state */ #define WDC_CAPABILITY_PREATA 0x0200 /* ctrl can be a pre-ata one */ #define WDC_CAPABILITY_IRQACK 0x0400 /* callback to ack interrupt */ #define WDC_CAPABILITY_SINGLE_DRIVE 0x800 /* Don't proble second drive */ +#define WDC_CAPABILITY_NO_ATAPI_DMA 0x1000 /* Don't do DMA with ATAPI */ u_int8_t PIO_cap; /* highest PIO mode supported */ u_int8_t DMA_cap; /* highest DMA mode supported */ u_int8_t UDMA_cap; /* highest UDMA mode supported */ |