Source-Changes-HG archive

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

[src/netbsd-3]: src/sys/dev/pci Pull up revision 1.22 (requested by briggs in...



details:   https://anonhg.NetBSD.org/src/rev/eb6f04bacd14
branches:  netbsd-3
changeset: 576472:eb6f04bacd14
user:      tron <tron%NetBSD.org@localhost>
date:      Sun Jul 03 21:12:21 2005 +0000

description:
Pull up revision 1.22 (requested by briggs in ticket #522):
Match the 6300ESB on-board SATA/RAID controller.
Set the ATA RAID flag, if appropriate, in the SATA chip map.
Ensure that the interrupts are enabled in the SATA chip map.

diffstat:

 sys/dev/pci/piixide.c |  17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diffs (45 lines):

diff -r b03e832e96e9 -r eb6f04bacd14 sys/dev/pci/piixide.c
--- a/sys/dev/pci/piixide.c     Sun Jul 03 21:11:10 2005 +0000
+++ b/sys/dev/pci/piixide.c     Sun Jul 03 21:12:21 2005 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: piixide.c,v 1.19.2.1 2005/06/21 21:23:50 tron Exp $    */
+/*     $NetBSD: piixide.c,v 1.19.2.2 2005/07/03 21:12:21 tron Exp $    */
 
 /*
  * Copyright (c) 1999, 2000, 2001 Manuel Bouyer.
@@ -141,6 +141,11 @@
          "Intel 6300ESB Serial ATA Controller",
          piixsata_chip_map,
        },
+       { PCI_PRODUCT_INTEL_6300ESB_RAID,
+         0,
+         "Intel 6300ESB Serial ATA/RAID Controller",
+         piixsata_chip_map,
+       },
        { PCI_PRODUCT_INTEL_82801FB_IDE,
          0,
          "Intel 82801FB IDE Controller (ICH6)",
@@ -717,7 +722,7 @@
 {
        struct pciide_channel *cp;
        bus_size_t cmdsize, ctlsize;
-       pcireg_t interface;
+       pcireg_t interface, cmdsts;
        int channel;
 
        if (pciide_chipen(sc, pa) == 0)
@@ -741,6 +746,14 @@
        sc->sc_wdcdev.sc_atac.atac_channels = sc->wdc_chanarray;
        sc->sc_wdcdev.sc_atac.atac_nchannels = PCIIDE_NUM_CHANNELS;
 
+       cmdsts = pci_conf_read(sc->sc_pc, sc->sc_tag, PCI_COMMAND_STATUS_REG);
+       cmdsts &= ~0x0400;
+       pci_conf_write(sc->sc_pc, sc->sc_tag, PCI_COMMAND_STATUS_REG, cmdsts);
+
+       if (PCI_CLASS(pa->pa_class) == PCI_CLASS_MASS_STORAGE &&
+           PCI_SUBCLASS(pa->pa_class) == PCI_SUBCLASS_MASS_STORAGE_RAID)
+               sc->sc_wdcdev.sc_atac.atac_cap |= ATAC_CAP_RAID;
+
        interface = PCI_INTERFACE(pa->pa_class);
 
        wdc_allocate_regs(&sc->sc_wdcdev);



Home | Main Index | Thread Index | Old Index