28c28
< * $FreeBSD: head/sys/dev/ata/ata-all.c 64303 2000-08-06 19:10:05Z sos $
---
> * $FreeBSD: head/sys/dev/ata/ata-all.c 64307 2000-08-06 19:51:58Z sos $
256a257,259
> case 0x24218086:
> return "Intel ICH0 ATA33 controller";
>
260,261c263,264
< case 0x24218086:
< return "Intel ICH0 ATA33 controller";
---
> case 0x244b8086:
> return "Intel ICH2 ATA100 controller";
296a300,302
> case 0x4d30105a:
> return "Promise ATA100 controller";
>
298c304,315
< return "HighPoint HPT366 ATA66 controller";
---
> switch (pci_get_revid(dev)) {
> case 0x00:
> case 0x01:
> return "HighPoint HPT366 ATA66 controller";
> case 0x02:
> return "HighPoint HPT368 ATA66 controller";
> case 0x03:
> case 0x04:
> return "HighPoint HPT370 ATA100 controller";
> default:
> return "Unknown revision HighPoint ATA controller";
> }
382,383c399,401
< if (type == 0x4d33105a || type == 0x4d38105a || type == 0x00041103) {
< /* Promise and HPT366 controllers support busmastering DMA */
---
> if (type == 0x4d33105a || type == 0x4d38105a ||
> type == 0x4d30105a || type == 0x00041103) {
> /* Promise and HighPoint controllers support busmastering DMA */
400a419
> case 0x4d30105a: /* Promise 100 too */
410,411c429,447
< case 0x00041103: /* HPT366 turn of fast interrupt prediction */
< pci_write_config(dev, 0x51, (pci_read_config(dev, 0x51, 1) & ~0x80), 1);
---
> case 0x00041103: /* HighPoint's need to turn off interrupt prediction */
> switch (pci_get_revid(dev)) {
> case 0x00:
> case 0x01:
> pci_write_config(dev, 0x51,
> (pci_read_config(dev, 0x51, 1) & ~0x80), 1);
> break;
>
> case 0x02:
> case 0x03:
> case 0x04:
> pci_write_config(dev, 0x51,
> (pci_read_config(dev, 0x51, 1) & ~0x02), 1);
> pci_write_config(dev, 0x55,
> (pci_read_config(dev, 0x55, 1) & ~0x02), 1);
> pci_write_config(dev, 0x5a,
> (pci_read_config(dev, 0x5a, 1) & ~0x10), 1);
>
> }
1089c1125
< case 0x00041103: /* HighPoint HPT366 */
---
> case 0x00041103: /* HighPoint HPT366/368/370 */
1096a1133
> case 0x4d30105a: /* Promise 100's */
1465a1503
> case ATA_UDMA5: return "UDMA100";
1517a1556,1557
> if (ap->udmamodes & 0x20)
> return 5;
< * $FreeBSD: head/sys/dev/ata/ata-all.c 64303 2000-08-06 19:10:05Z sos $
---
> * $FreeBSD: head/sys/dev/ata/ata-all.c 64307 2000-08-06 19:51:58Z sos $
256a257,259
> case 0x24218086:
> return "Intel ICH0 ATA33 controller";
>
260,261c263,264
< case 0x24218086:
< return "Intel ICH0 ATA33 controller";
---
> case 0x244b8086:
> return "Intel ICH2 ATA100 controller";
296a300,302
> case 0x4d30105a:
> return "Promise ATA100 controller";
>
298c304,315
< return "HighPoint HPT366 ATA66 controller";
---
> switch (pci_get_revid(dev)) {
> case 0x00:
> case 0x01:
> return "HighPoint HPT366 ATA66 controller";
> case 0x02:
> return "HighPoint HPT368 ATA66 controller";
> case 0x03:
> case 0x04:
> return "HighPoint HPT370 ATA100 controller";
> default:
> return "Unknown revision HighPoint ATA controller";
> }
382,383c399,401
< if (type == 0x4d33105a || type == 0x4d38105a || type == 0x00041103) {
< /* Promise and HPT366 controllers support busmastering DMA */
---
> if (type == 0x4d33105a || type == 0x4d38105a ||
> type == 0x4d30105a || type == 0x00041103) {
> /* Promise and HighPoint controllers support busmastering DMA */
400a419
> case 0x4d30105a: /* Promise 100 too */
410,411c429,447
< case 0x00041103: /* HPT366 turn of fast interrupt prediction */
< pci_write_config(dev, 0x51, (pci_read_config(dev, 0x51, 1) & ~0x80), 1);
---
> case 0x00041103: /* HighPoint's need to turn off interrupt prediction */
> switch (pci_get_revid(dev)) {
> case 0x00:
> case 0x01:
> pci_write_config(dev, 0x51,
> (pci_read_config(dev, 0x51, 1) & ~0x80), 1);
> break;
>
> case 0x02:
> case 0x03:
> case 0x04:
> pci_write_config(dev, 0x51,
> (pci_read_config(dev, 0x51, 1) & ~0x02), 1);
> pci_write_config(dev, 0x55,
> (pci_read_config(dev, 0x55, 1) & ~0x02), 1);
> pci_write_config(dev, 0x5a,
> (pci_read_config(dev, 0x5a, 1) & ~0x10), 1);
>
> }
1089c1125
< case 0x00041103: /* HighPoint HPT366 */
---
> case 0x00041103: /* HighPoint HPT366/368/370 */
1096a1133
> case 0x4d30105a: /* Promise 100's */
1465a1503
> case ATA_UDMA5: return "UDMA100";
1517a1556,1557
> if (ap->udmamodes & 0x20)
> return 5;