Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/sys/dev/pci Really pull up revision 1.72.



details:   https://anonhg.NetBSD.org/src/rev/8463227587a7
branches:  netbsd-1-5
changeset: 488285:8463227587a7
user:      tron <tron%NetBSD.org@localhost>
date:      Tue Jun 27 17:08:42 2000 +0000

description:
Really pull up revision 1.72.

diffstat:

 sys/dev/pci/pciide.c |  26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diffs (59 lines):

diff -r 7cef18ce952f -r 8463227587a7 sys/dev/pci/pciide.c
--- a/sys/dev/pci/pciide.c      Tue Jun 27 15:03:45 2000 +0000
+++ b/sys/dev/pci/pciide.c      Tue Jun 27 17:08:42 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pciide.c,v 1.68.2.2 2000/06/27 14:57:05 bouyer Exp $   */
+/*     $NetBSD: pciide.c,v 1.68.2.3 2000/06/27 17:08:42 tron Exp $     */
 
 
 /*
@@ -172,6 +172,7 @@
 void cmd_channel_map __P((struct pci_attach_args *,
                        struct pciide_softc *, int));
 int  cmd_pci_intr __P((void *));
+void cmd648_9_irqack __P((struct channel_softc *));
 
 void cy693_chip_map __P((struct pciide_softc*, struct pci_attach_args*));
 void cy693_setup_channel __P((struct channel_softc*));
@@ -2165,12 +2166,15 @@
            WDC_CAPABILITY_MODE;
        if (sc->sc_dma_ok) {
                sc->sc_wdcdev.cap |= WDC_CAPABILITY_DMA | WDC_CAPABILITY_IRQACK;
-               sc->sc_wdcdev.irqack = pciide_irqack;
                switch (sc->sc_pp->ide_product) {
                case PCI_PRODUCT_CMDTECH_649:
                case PCI_PRODUCT_CMDTECH_648:
                        sc->sc_wdcdev.cap |= WDC_CAPABILITY_UDMA;
                        sc->sc_wdcdev.UDMA_cap = 4;
+                       sc->sc_wdcdev.irqack = cmd648_9_irqack;
+                       break;
+               default:
+                       sc->sc_wdcdev.irqack = pciide_irqack;
                }
        }
 
@@ -2280,6 +2284,24 @@
 }
 
 void
+cmd648_9_irqack(chp)
+       struct channel_softc *chp;
+{
+       u_int32_t priirq, secirq;
+       struct pciide_channel *cp = (struct pciide_channel*)chp;
+       struct pciide_softc *sc = (struct pciide_softc *)cp->wdc_channel.wdc;
+
+       if (chp->channel == 0) {
+               priirq = pciide_pci_read(sc->sc_pc, sc->sc_tag, CMD_CONF);
+               pciide_pci_write(sc->sc_pc, sc->sc_tag, CMD_CONF, priirq);
+       } else {
+               secirq = pciide_pci_read(sc->sc_pc, sc->sc_tag, CMD_ARTTIM23);
+               pciide_pci_write(sc->sc_pc, sc->sc_tag, CMD_ARTTIM23, secirq);
+       }
+       pciide_irqack(chp);
+}
+
+void
 cy693_chip_map(sc, pa)
        struct pciide_softc *sc;
        struct pci_attach_args *pa;



Home | Main Index | Thread Index | Old Index