Add limitted support for the Promise Ultra/66 controller. Its

only supported upto UDMA33 like the old Promise, but it works
now. More when I have specs ....
This commit is contained in:
Søren Schmidt 1999-08-06 17:39:38 +00:00
parent f767942c7c
commit 2203dc0030
2 changed files with 10 additions and 6 deletions

View File

@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: ata-all.c,v 1.14 1999/05/20 09:12:02 sos Exp $
* $Id: ata-all.c,v 1.15 1999/06/25 09:02:56 sos Exp $
*/
#include "ata.h"
@ -174,7 +174,8 @@ ata_pcimatch(device_t dev)
data = pci_read_config(dev, PCI_CLASS_REG, 4);
if (pci_get_class(dev) == PCIC_STORAGE &&
(pci_get_subclass(dev) == PCIS_STORAGE_IDE ||
pci_get_subclass(dev) == PCIS_STORAGE_RAID)) {
pci_get_subclass(dev) == PCIS_STORAGE_RAID ||
pci_get_subclass(dev) == PCIS_STORAGE_OTHER)) {
switch (pci_get_devid(dev)) {
case 0x12308086:
return "Intel PIIX IDE controller";
@ -184,6 +185,8 @@ ata_pcimatch(device_t dev)
return "Intel PIIX4 IDE controller";
case 0x4d33105a:
return "Promise Ultra/33 IDE controller";
case 0x4d38105a:
return "Promise Ultra/66 IDE controller";
case 0x522910b9:
return "AcerLabs Aladdin IDE controller";
#if 0
@ -241,7 +244,7 @@ ata_pciattach(device_t dev)
#endif
/* if this is a Promise controller handle it specially */
if (type == 0x4d33105a) {
if (type == 0x4d33105a || type == 0x4d38105a) {
iobase_1 = pci_read_config(dev, 0x10, 4) & 0xfffc;
altiobase_1 = pci_read_config(dev, 0x14, 4) & 0xfffc;
iobase_2 = pci_read_config(dev, 0x18, 4) & 0xfffc;
@ -318,7 +321,7 @@ ata_pciattach(device_t dev)
if (!irq)
printf("ata_pciattach: Unable to alloc interrupt\n");
if (type == 0x4d33105a)
if (type == 0x4d33105a || type == 0x4d38105a)
bus_setup_intr(dev, irq, INTR_TYPE_BIO, promise_intr, scp, &ih);
else
bus_setup_intr(dev, irq, INTR_TYPE_BIO, ataintr, scp, &ih);
@ -342,7 +345,7 @@ ata_pciattach(device_t dev)
int rid = 0;
void *ih;
if (type != 0x4d33105a) {
if (type != 0x4d33105a && type != 0x4d38105a) {
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0, ~0, 1,
RF_SHAREABLE | RF_ACTIVE);
if (!irq)

View File

@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: ata-dma.c,v 1.7 1999/05/17 15:58:45 sos Exp $
* $Id: ata-dma.c,v 1.8 1999/05/26 23:01:57 gallatin Exp $
*/
#include "ata.h"
@ -168,6 +168,7 @@ ata_dmainit(struct ata_softc *scp, int32_t device,
break;
case 0x4d33105a: /* Promise Ultra/33 / FastTrack controllers */
case 0x4d38105a: /* Promise Ultra/66 controllers */
devno = (scp->unit << 1) + (device ? 1 : 0);
if (udmamode >=2) {
printf("ata%d: %s: setting up UDMA2 mode on Promise chip ",