Module Name: src Committed By: rin Date: Tue Oct 5 08:08:40 UTC 2021
Modified Files: src/sys/dev/pcmcia: wdc_pcmcia.c Log Message: Do not establish the unused interrupt handler for memory-mapped mode, for the sake of clarity. To generate a diff of this commit: cvs rdiff -u -r1.127 -r1.128 src/sys/dev/pcmcia/wdc_pcmcia.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pcmcia/wdc_pcmcia.c diff -u src/sys/dev/pcmcia/wdc_pcmcia.c:1.127 src/sys/dev/pcmcia/wdc_pcmcia.c:1.128 --- src/sys/dev/pcmcia/wdc_pcmcia.c:1.127 Mon Sep 3 16:29:33 2018 +++ src/sys/dev/pcmcia/wdc_pcmcia.c Tue Oct 5 08:08:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: wdc_pcmcia.c,v 1.127 2018/09/03 16:29:33 riastradh Exp $ */ +/* $NetBSD: wdc_pcmcia.c,v 1.128 2021/10/05 08:08:40 rin Exp $ */ /*- * Copyright (c) 1998, 2003, 2004 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wdc_pcmcia.c,v 1.127 2018/09/03 16:29:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wdc_pcmcia.c,v 1.128 2021/10/05 08:08:40 rin Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -372,22 +372,28 @@ wdc_pcmcia_enable(device_t self, int ono #endif if (onoff) { - /* Establish the interrupt handler. */ - sc->sc_ih = pcmcia_intr_establish(sc->sc_pf, IPL_BIO, - wdcintr, &sc->ata_channel); - if (!sc->sc_ih) - return (EIO); + if (!(sc->sc_wdcdev.sc_atac.atac_cap & ATAC_CAP_NOIRQ)) { + /* Establish the interrupt handler. */ + sc->sc_ih = pcmcia_intr_establish(sc->sc_pf, IPL_BIO, + wdcintr, &sc->ata_channel); + if (!sc->sc_ih) + return (EIO); + } error = pcmcia_function_enable(sc->sc_pf); if (error) { - pcmcia_intr_disestablish(sc->sc_pf, sc->sc_ih); - sc->sc_ih = 0; + if (sc->sc_ih) { + pcmcia_intr_disestablish(sc->sc_pf, sc->sc_ih); + sc->sc_ih = 0; + } return (error); } } else { pcmcia_function_disable(sc->sc_pf); - pcmcia_intr_disestablish(sc->sc_pf, sc->sc_ih); - sc->sc_ih = 0; + if (sc->sc_ih) { + pcmcia_intr_disestablish(sc->sc_pf, sc->sc_ih); + sc->sc_ih = 0; + } } return (0);