summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2007-10-04 19:17:16 +0000
committersos <sos@FreeBSD.org>2007-10-04 19:17:16 +0000
commit4a797d19e272b1802eb4e259e4d0703093aae4fa (patch)
treed625b75f864c9b49e9ebf152d5255e3ff648a4c8 /sys/dev/ata
parent22ca0708f9ce3d59110d7d04506a08d967a9667b (diff)
downloadFreeBSD-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.c2
-rw-r--r--sys/dev/ata/ata-chipset.c2
-rw-r--r--sys/dev/ata/ata-pci.h1
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
OpenPOWER on IntegriCloud