]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/pc/sdide.c
pc/ether*: use 64-bit physical addresses and check pci membar types and sizes
[plan9front.git] / sys / src / 9 / pc / sdide.c
index 583bde63c8374239e2fd7b33030beb0e7843c37f..7da95b2e8e3e2e8851589e1ef2236520af9fd777 100644 (file)
@@ -417,8 +417,12 @@ atadebug(int cmdport, int ctlport, char* fmt, ...)
        int i;
        va_list arg;
 
-       if(!(DEBUG & DbgPROBE))
+       if(!(DEBUG & DbgPROBE)){
+               USED(cmdport);
+               USED(ctlport);
+               USED(fmt);
                return;
+       }
 
        p = buf;
        e = buf + sizeof buf;
@@ -1115,11 +1119,14 @@ atapktio0(Drive *drive, SDreq *r)
                atadmastart(ctlr, drive->write);
        iunlock(ctlr);
 
-       if(iowait(drive, 30*1000, 0) <= 0){
-               ilock(ctlr);
+       while(iowait(drive, 30*1000, 1) == 0)
+               ;
+
+       ilock(ctlr);
+       if(!ctlr->done){
+               rv = SDcheck;
                ataabort(drive, 0);
-       } else
-               ilock(ctlr);
+       }
        if(drive->error){
                if(drive->pktdma)
                        atadmastop(ctlr);
@@ -1128,12 +1135,11 @@ atapktio0(Drive *drive, SDreq *r)
        }
        iunlock(ctlr);
 
-       if(drive->status & Chk){
+       if(rv != SDcheck && drive->status & Chk){
                rv = SDcheck;
                if(drive->pktdma){
                        print("atapktio: disabling dma\n");
                        drive->dmactl = 0;
-                       rv = SDretry;
                }
        }
        return rv;
@@ -1959,6 +1965,7 @@ atapnp(void)
                case (0x4D69<<16)|0x105A:       /* Promise Ultra/133 TX2 */
                case (0x3373<<16)|0x105A:       /* Promise 20378 RAID */
                case (0x3149<<16)|0x1106:       /* VIA VT8237 SATA/RAID */
+               case (0x0415<<16)|0x1106:       /* VIA VT6415 PATA IDE */
                case (0x3112<<16)|0x1095:       /* SiL 3112 SATA/RAID */
                        maxio = 15;
                        span = 8*1024;
@@ -1983,7 +1990,6 @@ atapnp(void)
                         */
                        break;
                case (0x7441<<16)|0x1022:       /* AMD 768 */
-               case (0x7800<<16)|0x1022:
                        /*
                         * Set:
                         *      0x41    prefetch, postwrite;
@@ -2079,6 +2085,10 @@ atapnp(void)
                case (0x7111<<16)|0x8086:       /* 82371[AE]B (PIIX4[E]) */
                        maxdma = 0x20000;
                        break;
+               case (0x1c00<<16)|0x8086:       /* SERIES6 SATA */
+               case (0x1c01<<16)|0x8086:       /* SERIES6 SATA */
+               case (0x1c08<<16)|0x8086:       /* SERIES6 SATA */
+               case (0x1c09<<16)|0x8086:       /* SERIES6 SATA */
                case (0x2411<<16)|0x8086:       /* 82801AA (ICH) */
                case (0x2421<<16)|0x8086:       /* 82801AB (ICH0) */
                case (0x244A<<16)|0x8086:       /* 82801BA (ICH2, Mobile) */
@@ -2101,6 +2111,7 @@ atapnp(void)
                case (0x27C5<<16)|0x8086:       /* 82801GBM SATA AHCI (ICH7) */
                case (0x2850<<16)|0x8086:       /* 82801HBM/HEM PATA */
                case (0x2820<<16)|0x8086:       /* 82801HB/HR/HH/HO SATA IDE */
+               case (0x2825<<16)|0x8086:       /* 82801IIH Intel Q35 IDE */
                case (0x2828<<16)|0x8086:       /* 82801HBM SATA (ICH8-M) */
                case (0x2829<<16)|0x8086:       /* 82801HBM SATA AHCI (ICH8-M) */
                case (0x2920<<16)|0x8086:       /* 82801(IB)/IR/IH/IO SATA (ICH9) port 0-3 */