[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