[Midnightbsd-cvs] src: dev/ata: Add preliminary support for ATI southbridges SB600/700

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Nov 16 08:23:00 EST 2007


Log Message:
-----------
Add preliminary support for ATI southbridges SB600/700 (IXP600/700)

Modified Files:
--------------
    src/sys/dev/ata:
        ata-chipset.c (r1.8 -> r1.9)
        ata-pci.h (r1.5 -> r1.6)

-------------- next part --------------
Index: ata-pci.h
===================================================================
RCS file: /home/cvs/src/sys/dev/ata/ata-pci.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -L sys/dev/ata/ata-pci.h -L sys/dev/ata/ata-pci.h -u -r1.5 -r1.6
--- sys/dev/ata/ata-pci.h
+++ sys/dev/ata/ata-pci.h
@@ -102,6 +102,10 @@
 #define ATA_ATI_IXP300_S1       0x436e1002
 #define ATA_ATI_IXP400_S1       0x43791002
 #define ATA_ATI_IXP400_S2       0x437a1002
+#define ATA_ATI_IXP600_S1       0x43801002
+#define ATA_ATI_IXP600          0x438c1002
+#define ATA_ATI_IXP700_S1       0x43901002
+#define ATA_ATI_IXP700          0x439c1002
 
 #define ATA_CENATEK_ID          0x16ca
 #define ATA_CENATEK_ROCKET      0x000116ca
@@ -421,6 +425,7 @@
 #define VIABUG          0x0200
 #define VIABAR          0x0400
 #define VIAAHCI         0x0800
+#define ATISINGLE       0x1000
 
 
 /* global prototypes ata-pci.c */
Index: ata-chipset.c
===================================================================
RCS file: /home/cvs/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -L sys/dev/ata/ata-chipset.c -L sys/dev/ata/ata-chipset.c -u -r1.8 -r1.9
--- sys/dev/ata/ata-chipset.c
+++ sys/dev/ata/ata-chipset.c
@@ -1383,12 +1383,16 @@
     struct ata_pci_controller *ctlr = device_get_softc(dev);
     struct ata_chip_id *idx;
     static struct ata_chip_id ids[] =
-    {{ ATA_ATI_IXP200,    0x00, 0,        0, ATA_UDMA5, "IXP200" },
-     { ATA_ATI_IXP300,    0x00, 0,        0, ATA_UDMA6, "IXP300" },
-     { ATA_ATI_IXP400,    0x00, 0,        0, ATA_UDMA6, "IXP400" },
-     { ATA_ATI_IXP300_S1, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP300" },
-     { ATA_ATI_IXP400_S1, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP400" },
-     { ATA_ATI_IXP400_S2, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP400" },
+    {{ ATA_ATI_IXP200,    0x00, 0,        0,         ATA_UDMA5, "IXP200" },
+     { ATA_ATI_IXP300,    0x00, 0,        0,         ATA_UDMA6, "IXP300" },
+     { ATA_ATI_IXP400,    0x00, 0,        0,         ATA_UDMA6, "IXP400" },
+     { ATA_ATI_IXP600,    0x00, 0,        ATISINGLE, ATA_UDMA6, "IXP600" },
+     { ATA_ATI_IXP700,    0x00, 0,        ATISINGLE, ATA_UDMA6, "IXP700" },
+     { ATA_ATI_IXP300_S1, 0x00, SIIMEMIO, 0,         ATA_SA150, "IXP300" },
+     { ATA_ATI_IXP400_S1, 0x00, SIIMEMIO, 0,         ATA_SA150, "IXP400" },
+     { ATA_ATI_IXP400_S2, 0x00, SIIMEMIO, 0,         ATA_SA150, "IXP400" },
+     { ATA_ATI_IXP600_S1, 0x00, 0,        AHCI,      ATA_SA300, "IXP600" },
+     { ATA_ATI_IXP700_S1, 0x00, 0,        AHCI,      ATA_SA300, "IXP700" },
      { 0, 0, 0, 0, 0, 0}};
     char buffer[64];
 
@@ -1416,6 +1420,18 @@
     if (ata_setup_interrupt(dev))
 	return ENXIO;
 
+    if (ctlr->chip->cfg2 & AHCI) {
+       ctlr->r_rid2 = PCIR_BAR(5);
+       ctlr->r_type2 = SYS_RES_MEMORY;
+       if ((ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2,
+                                                       &ctlr->r_rid2,
+                                                       RF_ACTIVE)))
+          return ata_ahci_chipinit(dev);
+    }
+
+    if (ctlr->chip->cfg2 & ATISINGLE)
+       ctlr->channels = 1;
+
     ctlr->setmode = ata_ati_setmode;
     return 0;
 }


More information about the Midnightbsd-cvs mailing list