From owner-freebsd-stable Thu Jul 20 14:52:37 2000 Delivered-To: freebsd-stable@freebsd.org Received: from gnu.IN-Berlin.DE (gnu.in-berlin.de [192.109.42.4]) by hub.freebsd.org (Postfix) with ESMTP id 7C77937B906 for ; Thu, 20 Jul 2000 14:52:32 -0700 (PDT) (envelope-from balu@dva.in-berlin.de) Received: from hirsch.in-berlin.de (hirsch.in-berlin.de [192.109.42.6]) by gnu.IN-Berlin.DE (8.10.1/8.10.1) with ESMTP id e6KLqRa25640; Thu, 20 Jul 2000 23:52:27 +0200 (CEST) (envelope-from balu@dva.in-berlin.de) Received: by hirsch.in-berlin.de (Smail3.2) id ; Thu, 20 Jul 2000 23:52:26 +0200 (CEST) Received: by dva.in-berlin.de (Postfix, from userid 200) id 7AD533F90; Thu, 20 Jul 2000 23:48:05 +0200 (CEST) Date: Thu, 20 Jul 2000 23:48:05 +0200 From: Boris Staeblow To: freebsd-stable@freebsd.org Cc: mi@privatelabs.com Subject: Re: Promise ATA100 on stable Message-ID: <20000720234805.A67636@dva.in-berlin.de> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.2.4i Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I´ve added the device ids to ata-dma.c and ata-all.c and it seems to work. Of course there is no UDMA100 support, but UDMA66 is working fine here. dmesg: atapci1: port 0xb000-0xb03f,0xb400-0xb403, \ 0xb800-0xb807,0xd000-0xd003,0xd400-0xd407 mem 0xe4000000-0xe401ffff \ irq 11 at device 12.0 on pci0t 0xb800 on atapci1 ad4: 19569MB [39761/16/63] at ata2-master using UDMA66 ad6: 6197MB [12592/16/63] at ata3-master using UDMA33 acd0: CDROM at ata1-slave using PIO3 diff -ru ata.orig/ata-all.c ata/ata-all.c --- ata.orig/ata-all.c Tue Jun 13 22:03:38 2000 +++ ata/ata-all.c Wed Jul 12 21:40:25 2000 @@ -294,6 +294,9 @@ case 0x4d38105a: return "Promise ATA66 controller"; + case 0x4d30105a: + return "Promise ATA100 controller"; + case 0x00041103: return "HighPoint HPT366 ATA66 controller"; @@ -379,7 +382,7 @@ device_printf(dev, "Busmastering DMA not enabled\n"); } else { - if (type == 0x4d33105a || type == 0x4d38105a || type == 0x00041103) { + if (type == 0x4d33105a || type == 0x4d38105a || type == 0x4d30105a || type == 0x00041103) { /* Promise and HPT366 controllers support busmastering DMA */ rid = 0x20; sc->bmio = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, @@ -397,6 +400,7 @@ (pci_read_config(dev, 0x53, 1) & ~0x01) | 0x02, 1); break; + case 0x4d30105a: case 0x4d38105a: /* Promise 66's need their clock changed */ outb(rman_get_start(sc->bmio) + 0x11, inb(rman_get_start(sc->bmio) + 0x11) | 0x0a); @@ -1094,6 +1098,7 @@ case 0x4d33105a: /* Promise 33's */ case 0x4d38105a: /* Promise 66's */ + case 0x4d30105a: /* Promise 100´s */ { struct ata_pci_softc *sc=device_get_softc(device_get_parent(scp->dev)); diff -ru ata.orig/ata-dma.c ata/ata-dma.c --- ata.orig/ata-dma.c Tue Jun 13 22:03:39 2000 +++ ata/ata-dma.c Wed Jul 12 22:12:01 2000 @@ -442,6 +442,7 @@ /* we could set PIO mode timings, but we assume the BIOS did that */ break; + case 0x4d30105a: /* Promise Ultra100 / FastTrak100 controllers */ case 0x4d33105a: /* Promise Ultra33 / FastTrak33 controllers */ case 0x4d38105a: /* Promise Ultra66 / FastTrak66 controllers */ /* the Promise can only do DMA on ATA disks not on ATAPI devices */ @@ -449,7 +450,7 @@ (device == ATA_SLAVE && scp->devices & ATA_ATAPI_SLAVE)) break; - if (udmamode >=4 && scp->chiptype == 0x4d38105a && + if (udmamode >=4 && (scp->chiptype == 0x4d38105a || scp->chiptype == 0x4d30105a) && !(pci_read_config(parent, 0x50, 2)&(scp->unit ? 1<<11 : 1<<10))) { error = ata_command(scp, device, ATA_C_SETFEATURES, 0, 0, 0, ATA_UDMA4, ATA_C_F_SETXFER, ATA_WAIT_READY); @@ -708,6 +709,7 @@ break; case 0x4d38105a: /* Promise 66's */ + case 0x4d30105a: /* Promise 100´s */ switch (mode) { default: case ATA_PIO0: t->pa = 15; t->pb = 31; t->mb = 7; t->mc = 15; break; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message