kern/60218: [PATCH] HPT302 ATA133 Support for 4.9-STABLE
Yousuke HARADA
harada at lab.ss.titech.ac.jp
Sat Dec 13 19:02:33 PST 2003
>Number: 60218
>Category: kern
>Synopsis: [PATCH] HPT302 ATA133 Support for 4.9-STABLE
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Dec 13 19:00:26 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Yousuke HARADA
>Release: FreeBSD 4.9-STABLE i386
>Organization:
Tokyo Institute of Technology
>Environment:
System: FreeBSD armada 4.9-STABLE FreeBSD 4.9-STABLE #2: Tue Dec 2 23:49:24 JST 2003 harada at armada:/usr/obj/usr/src/sys/ARMADA i386
>Description:
4.9-STABLE on Sat Dec 13 20:33:17 JST 2003 does not support HighPoint
HPT302 ATA133 Controller.
5.2-CURRENT support HPT302, but 4.9-STABLE not.
I wrote a simple patch to support HPT302. HPT302 is resembling HPT372.
>How-To-Repeat:
boot 4.9-STABLE with HighPoint Rocket133SB(HPT302) displays:
pci0: <unknown card> (vendor=0x1103, dev=0x0006) at 10.0 irq 11
>Fix:
After applying patch below, boot time displays:
atapci1: <HighPoint HPT302 ATA133 controller> port 0xc800-0xc8ff,0xc400-0xc403,0
xc000-0xc007,0xbc00-0xbc03,0xb800-0xb807 irq 11 at device 10.0 on pci0
ata2: at 0xb800 on atapci1
ata3: at 0xc000 on atapci1
and
ad6: 78533MB <HDS722580VLAT20> [159560/16/63] at ata3-master UDMA100
And HDD seems to works fine.
Using custom kern.flp and mfsroot.flp applied the patch, I cound install
4.9-RELEASE.
diff -ur src/sys/dev/ata.org/ata-dma.c src/sys/dev/ata/ata-dma.c
--- src/sys/dev/ata.org/ata-dma.c Thu Dec 4 19:47:41 2003
+++ src/sys/dev/ata/ata-dma.c Sat Dec 13 20:26:09 2003
@@ -1222,10 +1222,12 @@
case 0x00041103: /* HighPoint HPT366/368/370/372 controllers */
case 0x00051103: /* HighPoint HPT372 controllers */
+ case 0x00061103: /* HighPoint HPT302 controllers */
case 0x00081103: /* HighPoint HPT374 controllers */
if (!ATAPI_DEVICE(atadev) && udmamode >= 6 && hpt_cable80(atadev) &&
((chiptype == 0x00041103 && chiprev >= 0x05) ||
(chiptype == 0x00051103 && chiprev >= 0x01) ||
+ (chiptype == 0x00061103 && chiprev >= 0x01) ||
(chiptype == 0x00081103 && chiprev >= 0x07))) {
error = ata_command(atadev, ATA_C_SETFEATURES, 0,
ATA_UDMA6, ATA_C_F_SETXFER, ATA_WAIT_READY);
@@ -1241,6 +1243,7 @@
if (!ATAPI_DEVICE(atadev) && udmamode >= 5 && hpt_cable80(atadev) &&
((chiptype == 0x00041103 && chiprev >= 0x03) ||
(chiptype == 0x00051103 && chiprev >= 0x01) ||
+ (chiptype == 0x00061103 && chiprev >= 0x01) ||
(chiptype == 0x00081103 && chiprev >= 0x07))) {
error = ata_command(atadev, ATA_C_SETFEATURES, 0,
ATA_UDMA5, ATA_C_F_SETXFER, ATA_WAIT_READY);
@@ -1567,7 +1570,8 @@
}
}
else if ((chiptype == 0x00041103 && chiprev >= 0x05) ||
- (chiptype == 0x00051103 && chiprev >= 0x01)) {
+ (chiptype == 0x00051103 && chiprev >= 0x01) ||
+ (chiptype == 0x00061103 && chiprev >= 0x01)) {
switch (mode) { /* HPT372 */
case ATA_PIO0: timing = 0x0d029d5e; break;
case ATA_PIO1: timing = 0x0d029d26; break;
diff -ur src/sys/dev/ata.org/ata-pci.c src/sys/dev/ata/ata-pci.c
--- src/sys/dev/ata.org/ata-pci.c Thu Dec 4 19:47:42 2003
+++ src/sys/dev/ata/ata-pci.c Sat Dec 13 20:26:09 2003
@@ -335,6 +335,13 @@
}
return NULL;
+ case 0x00061103:
+ switch (pci_get_revid(dev)) {
+ case 0x01:
+ return "HighPoint HPT302 ATA133 controller";
+ }
+ return NULL;
+
case 0x00081103:
switch (pci_get_revid(dev)) {
case 0x07:
@@ -467,6 +474,7 @@
/* FALLTHROUGH */
case 0x00051103: /* HighPoint HPT372 */
+ case 0x00061103: /* HighPoint HPT302 */
case 0x00081103: /* HighPoint HPT374 */
/* turn off interrupt prediction */
pci_write_config(dev, 0x51, (pci_read_config(dev, 0x51, 1) & ~0x03), 1);
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list