diff options
author | sos <sos@FreeBSD.org> | 2007-10-04 19:17:16 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2007-10-04 19:17:16 +0000 |
commit | 4a797d19e272b1802eb4e259e4d0703093aae4fa (patch) | |
tree | d625b75f864c9b49e9ebf152d5255e3ff648a4c8 /sys/dev/ata | |
parent | 22ca0708f9ce3d59110d7d04506a08d967a9667b (diff) | |
download | FreeBSD-src-4a797d19e272b1802eb4e259e4d0703093aae4fa.zip FreeBSD-src-4a797d19e272b1802eb4e259e4d0703093aae4fa.tar.gz |
Add support for the VIA 8237S
Fix the LBA28/LBA48 crossover bug.
Approved by: re@
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-all.c | 2 | ||||
-rw-r--r-- | sys/dev/ata/ata-chipset.c | 2 | ||||
-rw-r--r-- | sys/dev/ata/ata-pci.h | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 0818f9b..963b2b5 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -738,7 +738,7 @@ ata_modify_if_48bit(struct ata_request *request) atadev->flags &= ~ATA_D_48BIT_ACTIVE; - if ((request->u.ata.lba >= ATA_MAX_28BIT_LBA || + if (((request->u.ata.lba + request->u.ata.count) >= ATA_MAX_28BIT_LBA || request->u.ata.count > 256) && atadev->param.support.command2 & ATA_SUPPORT_ADDRESS48) { diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c index 0175a5b..d49ec94 100644 --- a/sys/dev/ata/ata-chipset.c +++ b/sys/dev/ata/ata-chipset.c @@ -5096,6 +5096,7 @@ ata_via_ident(device_t dev) { ATA_VIA8235, 0x00, VIA133, 0x00, ATA_UDMA6, "8235" }, { ATA_VIA8237, 0x00, VIA133, 0x00, ATA_UDMA6, "8237" }, { ATA_VIA8237A, 0x00, VIA133, 0x00, ATA_UDMA6, "8237A" }, + { ATA_VIA8237S, 0x00, VIA133, 0x00, ATA_UDMA6, "8237S" }, { ATA_VIA8251, 0x00, VIA133, 0x00, ATA_UDMA6, "8251" }, { 0, 0, 0, 0, 0, 0 }}; static struct ata_chip_id new_ids[] = @@ -5103,6 +5104,7 @@ ata_via_ident(device_t dev) { ATA_VIA6420, 0x00, 7, 0x00, ATA_SA150, "6420" }, { ATA_VIA6421, 0x00, 6, VIABAR, ATA_SA150, "6421" }, { ATA_VIA8237A, 0x00, 7, 0x00, ATA_SA150, "8237A" }, + { ATA_VIA8237S, 0x00, 7, 0x00, ATA_SA150, "8237S" }, { ATA_VIA8251, 0x00, 0, VIAAHCI, ATA_SA300, "8251" }, { 0, 0, 0, 0, 0, 0 }}; char buffer[64]; diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h index 740f9f3..616f43e 100644 --- a/sys/dev/ata/ata-pci.h +++ b/sys/dev/ata/ata-pci.h @@ -358,6 +358,7 @@ struct ata_connect_task { #define ATA_VIA8235 0x31771106 #define ATA_VIA8237 0x32271106 #define ATA_VIA8237A 0x05911106 +#define ATA_VIA8237S 0x53371106 #define ATA_VIA8251 0x33491106 #define ATA_VIA8361 0x31121106 #define ATA_VIA8363 0x03051106 |