Add quirk for Avance Logic ALS100+, which doesn't like it's irq/drq

being set in pnp mode.
This commit is contained in:
mjl 2000-12-19 01:09:15 +00:00
parent 324ff9ac52
commit aaad4d0284
3 changed files with 12 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: sb.c,v 1.69 1999/10/10 00:08:24 mycroft Exp $ */ /* $NetBSD: sb.c,v 1.70 2000/12/19 01:09:15 mjl Exp $ */
/* /*
* Copyright (c) 1991-1993 Regents of the University of California. * Copyright (c) 1991-1993 Regents of the University of California.
@ -182,7 +182,7 @@ sbmatch(sc)
} }
} }
if (ISSB16CLASS(sc)) { if (ISSB16CLASS(sc) && !(sc->sc_quirks & SB_QUIRK_NO_INIT_DRQ)) {
int w, r; int w, r;
#if 0 #if 0
printf("%s: old drq conf %02x\n", sc->sc_dev.dv_xname, printf("%s: old drq conf %02x\n", sc->sc_dev.dv_xname,

View File

@ -1,4 +1,4 @@
/* $NetBSD: sbdspvar.h,v 1.49 2000/06/26 04:56:22 simonb Exp $ */ /* $NetBSD: sbdspvar.h,v 1.50 2000/12/19 01:09:15 mjl Exp $ */
/* /*
* Copyright (c) 1991-1993 Regents of the University of California. * Copyright (c) 1991-1993 Regents of the University of California.
@ -107,6 +107,9 @@ struct sbdsp_softc {
int sc_drq16; /* DMA (16-bit) */ int sc_drq16; /* DMA (16-bit) */
bus_size_t sc_drq16_maxsize; bus_size_t sc_drq16_maxsize;
u_int sc_quirks; /* minor variations */
#define SB_QUIRK_NO_INIT_DRQ 0x01
int sc_open; /* reference count of open calls */ int sc_open; /* reference count of open calls */
#define SB_CLOSED 0 #define SB_CLOSED 0
#define SB_OPEN_AUDIO 1 #define SB_OPEN_AUDIO 1

View File

@ -1,4 +1,4 @@
/* $NetBSD: sb_isapnp.c,v 1.35 1999/10/18 05:11:39 itohy Exp $ */ /* $NetBSD: sb_isapnp.c,v 1.36 2000/12/19 01:09:16 mjl Exp $ */
/* /*
* Copyright (c) 1991-1993 Regents of the University of California. * Copyright (c) 1991-1993 Regents of the University of California.
@ -104,6 +104,11 @@ sb_isapnp_attach(parent, self, aux)
printf("\n"); printf("\n");
/* Avance logic ALS100+ does not like being frobbed
trying to set irq/drq so set that quirk skip over it */
if(!strcmp(ipa->ipa_devlogic, "@@@1001"))
sc->sc_quirks = SB_QUIRK_NO_INIT_DRQ;
if (isapnp_config(ipa->ipa_iot, ipa->ipa_memt, ipa)) { if (isapnp_config(ipa->ipa_iot, ipa->ipa_memt, ipa)) {
printf("%s: error in region allocation\n", printf("%s: error in region allocation\n",
sc->sc_dev.dv_xname); sc->sc_dev.dv_xname);