diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2008-03-07 09:29:19 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2008-03-07 09:29:19 +0000 |
| commit | 0ef0323800d1b3838feaf02d2152522b64f33a34 (patch) | |
| tree | f6beb2fe5329c30268a6bf647d45afefad29ec7d /sys/dev | |
| parent | 06ff094490038c789a7d22d8fd50ab259c43b5e3 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ata/ata-chipset.c | 34 | ||||
| -rw-r--r-- | sys/dev/ata/ata-pci.h | 6 |
2 files changed, 28 insertions, 12 deletions
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c index 178425960b87..29a61171b4bf 100644 --- a/sys/dev/ata/ata-chipset.c +++ b/sys/dev/ata/ata-chipset.c @@ -1341,14 +1341,16 @@ ata_ati_ident(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(dev); 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_IXP300_S1, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP300" }, - { ATA_ATI_IXP400, 0x00, 0, 0, ATA_UDMA6, "IXP400" }, - { ATA_ATI_IXP400_S1, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP400" }, - { ATA_ATI_IXP400_S2, 0x00, SIIMEMIO, 0, ATA_SA150, "IXP400" }, - { ATA_ATI_IXP600, 0x00, 0, 0, ATA_UDMA6, "IXP600" }, - { ATA_ATI_IXP700, 0x00, 0, 0, ATA_UDMA6, "IXP700" }, + {{ ATA_ATI_IXP200, 0x00, 0, ATIPATA, ATA_UDMA5, "IXP200" }, + { ATA_ATI_IXP300, 0x00, 0, ATIPATA, ATA_UDMA6, "IXP300" }, + { ATA_ATI_IXP300_S1, 0x00, 0, ATISATA, ATA_SA150, "IXP300" }, + { ATA_ATI_IXP400, 0x00, 0, ATIPATA, ATA_UDMA6, "IXP400" }, + { ATA_ATI_IXP400_S1, 0x00, 0, ATISATA, ATA_SA150, "IXP400" }, + { ATA_ATI_IXP400_S2, 0x00, 0, ATISATA, ATA_SA150, "IXP400" }, + { ATA_ATI_IXP600, 0x00, 0, ATIPATA, ATA_UDMA6, "IXP600" }, + { ATA_ATI_IXP600_S1, 0x00, 0, ATIAHCI, ATA_SA300, "IXP600" }, + { ATA_ATI_IXP700, 0x00, 0, ATIPATA, ATA_UDMA6, "IXP700" }, + { ATA_ATI_IXP700_S1, 0x00, 0, ATIAHCI, ATA_SA300, "IXP700" }, { 0, 0, 0, 0, 0, 0}}; if (!(ctlr->chip = ata_match_chip(dev, ids))) @@ -1356,11 +1358,19 @@ ata_ati_ident(device_t dev) ata_set_desc(dev); - /* the ATI SATA controller is actually a SiI 3112 controller*/ - if (ctlr->chip->cfg1 & SIIMEMIO) - ctlr->chipinit = ata_sii_chipinit; - else + switch (ctlr->chip->cfg2) { + case ATIPATA: ctlr->chipinit = ata_ati_chipinit; + break; + case ATISATA: + /* the ATI SATA controller is actually a SiI 3112 controller */ + ctlr->chip->cfg1 = SIIMEMIO; + ctlr->chipinit = ata_sii_chipinit; + break; + case ATIAHCI: + ctlr->chipinit = ata_ahci_chipinit; + break; + } return 0; } diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h index 42769eb873f9..f514af8c275a 100644 --- a/sys/dev/ata/ata-pci.h +++ b/sys/dev/ata/ata-pci.h @@ -104,7 +104,9 @@ struct ata_connect_task { #define ATA_ATI_IXP400_S1 0x43791002 #define ATA_ATI_IXP400_S2 0x437a1002 #define ATA_ATI_IXP600 0x438c1002 +#define ATA_ATI_IXP600_S1 0x43801002 #define ATA_ATI_IXP700 0x439c1002 +#define ATA_ATI_IXP700_S1 0x43901002 #define ATA_CENATEK_ID 0x16ca #define ATA_CENATEK_ROCKET 0x000116ca @@ -383,6 +385,10 @@ struct ata_connect_task { #define ALINEW 0x02 #define ALISATA 0x04 +#define ATIPATA 0x01 +#define ATISATA 0x02 +#define ATIAHCI 0x04 + #define HPT366 0 #define HPT370 1 #define HPT372 2 |
