Add proper support for the SATA/AHCI part of IXP[67]00

This commit is contained in:
Søren Schmidt 2008-03-07 09:29:19 +00:00
parent 06ff094490
commit 0ef0323800
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=176891
2 changed files with 28 additions and 12 deletions

View file

@ -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;
}

View file

@ -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