summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2005-08-12 16:54:11 +0000
committersos <sos@FreeBSD.org>2005-08-12 16:54:11 +0000
commit3419beff854c126fe64406cd29854bab72cdb265 (patch)
tree8cdb86004ad8f9bb2a75e3503d6719c53916719f /sys
parent1cdb29903d112cea74f61db27d513c63cccc806c (diff)
downloadFreeBSD-src-3419beff854c126fe64406cd29854bab72cdb265.zip
FreeBSD-src-3419beff854c126fe64406cd29854bab72cdb265.tar.gz
Add support for the Promise PDC4071[89] chips used on fx the Fasttrak TX4300.
Docs kindly provided by Promise.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/ata/ata-all.c1
-rw-r--r--sys/dev/ata/ata-chipset.c5
-rw-r--r--sys/dev/ata/ata-pci.h2
3 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index 1e74e01..03ec49a 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -769,6 +769,7 @@ ata_mode2str(int mode)
case ATA_UDMA5: return "UDMA100";
case ATA_UDMA6: return "UDMA133";
case ATA_SA150: return "SATA150";
+ case ATA_SA300: return "SATA300";
default:
if (mode & ATA_DMA_MASK)
return "BIOSDMA";
diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c
index c9b3292..8156ce6 100644
--- a/sys/dev/ata/ata-chipset.c
+++ b/sys/dev/ata/ata-chipset.c
@@ -208,6 +208,7 @@ ata_generic_setmode(device_t dev, int mode)
static void
ata_sata_setmode(device_t dev, int mode)
{
+ struct ata_pci_controller *ctlr = device_get_softc(GRANDPARENT(dev));
struct ata_device *atadev = device_get_softc(dev);
/*
@@ -220,7 +221,7 @@ ata_sata_setmode(device_t dev, int mode)
atadev->param.satacapabilities != 0xffff) {
if (!ata_controlcmd(dev, ATA_SETFEATURES, ATA_SF_SETXFER, 0,
ata_limit_mode(dev, mode, ATA_UDMA6)))
- atadev->mode = ATA_SA150;
+ atadev->mode = ctlr->chip->max_dma;
}
else {
mode = ata_limit_mode(dev, mode, ATA_UDMA5);
@@ -2233,6 +2234,8 @@ ata_promise_ident(device_t dev)
{ ATA_PDC20622, 0, PRMIO, PRSX4X, ATA_SA150, "Promise PDC20622" },
{ ATA_PDC40518, 0, PRMIO, PRSATA2, ATA_SA150, "Promise PDC40518" },
{ ATA_PDC40519, 0, PRMIO, PRSATA2, ATA_SA150, "Promise PDC40519" },
+ { ATA_PDC40718, 0, PRMIO, PRSATA2, ATA_SA300, "Promise PDC40718" },
+ { ATA_PDC40719, 0, PRMIO, PRSATA2, ATA_SA300, "Promise PDC40719" },
{ 0, 0, 0, 0, 0, 0}};
char buffer[64];
uintptr_t devid = 0;
diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h
index 1f9e8c3..8d29a0e 100644
--- a/sys/dev/ata/ata-pci.h
+++ b/sys/dev/ata/ata-pci.h
@@ -203,6 +203,8 @@ struct ata_connect_task {
#define ATA_PDC20580 0x3570105a
#define ATA_PDC40518 0x3d18105a
#define ATA_PDC40519 0x3519105a
+#define ATA_PDC40718 0x3d17105a
+#define ATA_PDC40719 0x3515105a
#define ATA_PDC20617 0x6617105a
#define ATA_PDC20618 0x6626105a
#define ATA_PDC20619 0x6629105a
OpenPOWER on IntegriCloud