| plan 9 kernel history: overview | file list | diff list |
2001/0728/alphapc/sd53c8xx.c (diff list | history)
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:200,219 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:200,211 (short | long | prev | next) | ||
| 2000/0515 | } State; typedef struct Dsa { | |
| 2001/0728 | uchar stateb; uchar result; uchar dmablks; uchar flag; /* setbyte(state,3,...) */ | |
| 2000/0515 |
| |
| 2001/0728 | uchar dmaaddr[4]; | |
| 2000/0515 | uchar target; /* Target */ uchar pad0[3]; | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:397,403 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:389,395 | ||
| 2000/0515 | if (DEBUG(1)) | |
| 2001/0314 | KPRINT(PRINTPREFIX "%d/%d: allocated new dsa %lux\n", target, lun, (ulong)d); | |
| 2000/0515 | lesetl(d->next, 0); | |
| 2001/0728 | lesetl(&d->stateb, A_STATE_ALLOCATED); | |
| 2000/0515 | if (legetl(c->dsalist.head) == 0) lesetl(c->dsalist.head, DMASEG(d)); /* ATOMIC?!? */ else | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:408,414 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:400,406 | ||
| 2000/0515 | if (DEBUG(1)) | |
| 2001/0314 | KPRINT(PRINTPREFIX "%d/%d: reused dsa %lux\n", target, lun, (ulong)d); c->dsalist.freechain = d->freechain; | |
| 2000/0515 |
| |
| 2001/0728 | lesetl(&d->stateb, A_STATE_ALLOCATED); | |
| 2000/0515 | } iunlock(&c->dsalist); d->target = target; | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:422,428 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:414,420 | ||
| 2000/0515 | ilock(&c->dsalist); | |
| 2001/0314 | d->freechain = c->dsalist.freechain; c->dsalist.freechain = d; | |
| 2000/0515 |
| |
| 2001/0728 | lesetl(&d->stateb, A_STATE_FREE); | |
| 2000/0515 | iunlock(&c->dsalist); } | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:1204,1210 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:1196,1202 | ||
| 2000/0515 | dsa->dmablks, legetl(dsa->dmaaddr), legetl(dsa->data_buf.pa), legetl(dsa->data_buf.dbc)); n->scratcha[2] = dsa->dmablks; | |
| 2001/0728 | lesetl(n->scratchb, *(ulong*)dsa->dmaaddr); | |
| 2000/0515 | cont = E_data_block_mismatch_recover; } else if (sa == E_data_out_mismatch) { | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:1231,1237 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:1223,1229 | ||
| 2000/0515 | dmablks * A_BSIZE - tbc + legetl(dsa->data_buf.dbc)); /* copy changes into scratch registers */ n->scratcha[2] = dsa->dmablks; | |
| 2001/0728 | lesetl(n->scratchb, *(ulong*)dsa->dmaaddr); | |
| 2000/0515 | cont = E_data_block_mismatch_recover; } else if (sa == E_id_out_mismatch) { | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:1442,1447 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:1434,1445 | ||
| 2000/0515 | dsa->target, dsa->lun); cont = -2; break; | |
| 2001/0728 | case A_error_reselected: /* dsa isn't valid here */ print(PRINTPREFIX "reselection error\n"); dumpncrregs(c, 1); for (dsa = KPTR(legetl(c->dsalist.head)); dsa; dsa = KPTR(legetl(dsa->next))) IPRINT(PRINTPREFIX "dsa target %d lun %d state %d\n", dsa->target, dsa->lun, dsa->stateb); break; | |
| 2000/0515 | default: | |
| 2001/0314 | IPRINT(PRINTPREFIX "%d/%d: script error %ld\n", | |
| 2000/0515 | dsa->target, dsa->lun, legetl(n->dsps)); | |
| 2001/0727/sys/src/9/alphapc/sd53c8xx.c:1752,1758 – 2001/0728/sys/src/9/alphapc/sd53c8xx.c:1750,1756 | ||
| 2000/0515 | * Clear out the microcode state * so the Dsa can be re-used. */ | |
| 2001/0728 | lesetl(&d->stateb, A_STATE_ALLOCATED); | |
| 2000/0515 | goto docheck; } qunlock(&c->q[target]); | |