Deleted Added
full compact
28c28
< * $FreeBSD: head/sys/dev/ata/ata-all.c 64534 2000-08-11 10:34:22Z sos $
---
> * $FreeBSD: head/sys/dev/ata/ata-all.c 64695 2000-08-16 07:09:04Z sos $
273c273
< return "VIA 82C596B ATA66 controller";
---
> return "VIA 82C596 ATA66 controller";
419c419
< case 0x4d30105a: /* Promise 100 too */
---
> case 0x4d30105a: /* Promise 100's too */
738,747c738
<
< /* set the chiptype to the hostchip ID, makes life easier */
< if (ata_find_dev(device_get_parent(dev), 0x05861106, 0))
< scp->chiptype = 0x05861106;
< else if (ata_find_dev(device_get_parent(dev), 0x05961106, 0))
< scp->chiptype = 0x05961106;
< else if (ata_find_dev(device_get_parent(dev), 0x06861106, 0))
< scp->chiptype = 0x06861106;
< else
< scp->chiptype = pci_get_devid(device_get_parent(dev));
---
> scp->chiptype = pci_get_devid(device_get_parent(dev));
840,841d830
< if (!mask)
< goto failure;
843,878d831
< /*
< * OK, we have at least one device on the chain, check for ATAPI
< * signatures, if none check if its a good old ATA device.
< */
< outb(scp->ioaddr + ATA_DRIVE, (ATA_D_IBM | ATA_MASTER));
< DELAY(1);
< if (inb(scp->ioaddr + ATA_CYL_LSB) == ATAPI_MAGIC_LSB &&
< inb(scp->ioaddr + ATA_CYL_MSB) == ATAPI_MAGIC_MSB) {
< scp->devices |= ATA_ATAPI_MASTER;
< }
< outb(scp->ioaddr + ATA_DRIVE, (ATA_D_IBM | ATA_SLAVE));
< DELAY(1);
< if (inb(scp->ioaddr + ATA_CYL_LSB) == ATAPI_MAGIC_LSB &&
< inb(scp->ioaddr + ATA_CYL_MSB) == ATAPI_MAGIC_MSB) {
< scp->devices |= ATA_ATAPI_SLAVE;
< }
< if (status0 != 0x00 && !(scp->devices & ATA_ATAPI_MASTER)) {
< outb(scp->ioaddr + ATA_DRIVE, (ATA_D_IBM | ATA_MASTER));
< DELAY(1);
< outb(scp->ioaddr + ATA_ERROR, 0x58);
< outb(scp->ioaddr + ATA_CYL_LSB, 0xa5);
< if (inb(scp->ioaddr + ATA_ERROR) != 0x58 &&
< inb(scp->ioaddr + ATA_CYL_LSB) == 0xa5) {
< scp->devices |= ATA_ATA_MASTER;
< }
< }
< if (status1 != 0x00 && !(scp->devices & ATA_ATAPI_SLAVE)) {
< outb(scp->ioaddr + ATA_DRIVE, (ATA_D_IBM | ATA_SLAVE));
< DELAY(1);
< outb(scp->ioaddr + ATA_ERROR, 0x58);
< outb(scp->ioaddr + ATA_CYL_LSB, 0xa5);
< if (inb(scp->ioaddr + ATA_ERROR) != 0x58 &&
< inb(scp->ioaddr + ATA_CYL_LSB) == 0xa5) {
< scp->devices |= ATA_ATA_SLAVE;
< }
< }
881c834,835
< if (!scp->devices) {
---
>
> if (!mask)
883c837
< }
---
>
1254c1208
< u_int8_t status0 = 0, status1 = 0;
---
> u_int8_t status0 = ATA_S_BUSY, status1 = ATA_S_BUSY;
1269,1274c1223,1244
< outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER);
< DELAY(1);
< status0 = inb(scp->ioaddr + ATA_STATUS);
< outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE);
< DELAY(1);
< status1 = inb(scp->ioaddr + ATA_STATUS);
---
> if (status0 & ATA_S_BUSY) {
> outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER);
> DELAY(1);
> status0 = inb(scp->ioaddr + ATA_STATUS);
> if (!(status0 & ATA_S_BUSY)) {
> /* check for ATAPI signature while its still there */
> if (inb(scp->ioaddr + ATA_CYL_LSB) == ATAPI_MAGIC_LSB &&
> inb(scp->ioaddr + ATA_CYL_MSB) == ATAPI_MAGIC_MSB)
> scp->devices |= ATA_ATAPI_MASTER;
> }
> }
> if (status1 & ATA_S_BUSY) {
> outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE);
> DELAY(1);
> status1 = inb(scp->ioaddr + ATA_STATUS);
> if (!(status1 & ATA_S_BUSY)) {
> /* check for ATAPI signature while its still there */
> if (inb(scp->ioaddr + ATA_CYL_LSB) == ATAPI_MAGIC_LSB &&
> inb(scp->ioaddr + ATA_CYL_MSB) == ATAPI_MAGIC_MSB)
> scp->devices |= ATA_ATAPI_SLAVE;
> }
> }
1294a1265,1292
> if (!mask) {
> scp->devices = 0;
> return;
> }
> /*
> * OK, we have at least one device on the chain, checks for ATAPI
> * already done, if none check if its a good old ATA device.
> */
> if (status0 != 0x00 && !(scp->devices & ATA_ATAPI_MASTER)) {
> outb(scp->ioaddr + ATA_DRIVE, (ATA_D_IBM | ATA_MASTER));
> DELAY(1);
> outb(scp->ioaddr + ATA_ERROR, 0x58);
> outb(scp->ioaddr + ATA_CYL_LSB, 0xa5);
> if (inb(scp->ioaddr + ATA_ERROR) != 0x58 &&
> inb(scp->ioaddr + ATA_CYL_LSB) == 0xa5) {
> scp->devices |= ATA_ATA_MASTER;
> }
> }
> if (status1 != 0x00 && !(scp->devices & ATA_ATAPI_SLAVE)) {
> outb(scp->ioaddr + ATA_DRIVE, (ATA_D_IBM | ATA_SLAVE));
> DELAY(1);
> outb(scp->ioaddr + ATA_ERROR, 0x58);
> outb(scp->ioaddr + ATA_CYL_LSB, 0xa5);
> if (inb(scp->ioaddr + ATA_ERROR) != 0x58 &&
> inb(scp->ioaddr + ATA_CYL_LSB) == 0xa5) {
> scp->devices |= ATA_ATA_SLAVE;
> }
> }