--- /sys/src/9k/386/sdata.c +++ /sys/src/9k/386/sdata.c @@ -1487,17 +1487,17 @@ atagenio(Drive* drive, uchar* cmd, int clen) * Fail any command with a LUN except INQUIRY which * will return 'logical unit not supported'. */ - if((cmd[1]>>5) && cmd[0] != 0x12) + if((cmd[1]>>5) && cmd[0] != ScmdInq) return atasetsense(drive, SDcheck, 0x05, 0x25, 0); switch(cmd[0]){ default: return atasetsense(drive, SDcheck, 0x05, 0x20, 0); - case 0x00: /* test unit ready */ + case ScmdTur: /* test unit ready */ return SDok; - case 0x03: /* request sense */ + case ScmdRsense: /* request sense */ if(cmd[4] < sizeof(drive->sense)) len = cmd[4]; else @@ -1508,7 +1508,7 @@ atagenio(Drive* drive, uchar* cmd, int clen) } return SDok; - case 0x12: /* inquiry */ + case ScmdInq: /* inquiry */ if(cmd[4] < sizeof(drive->inquiry)) len = cmd[4]; else @@ -1519,14 +1519,14 @@ atagenio(Drive* drive, uchar* cmd, int clen) } return SDok; - case 0x1B: /* start/stop unit */ + case ScmdStart: /* start/stop unit */ /* * NOP for now, can use the power management feature * set later. */ return SDok; - case 0x25: /* read capacity */ + case ScmdRcapacity: /* read capacity */ if((cmd[1] & 0x01) || cmd[2] || cmd[3]) return atasetsense(drive, SDcheck, 0x05, 0x24, 0); if(drive->data == nil || drive->dlen < 8) @@ -1548,7 +1548,7 @@ atagenio(Drive* drive, uchar* cmd, int clen) drive->data += 8; return SDok; - case 0x9E: /* long read capacity */ + case ScmdRcapacity16: if((cmd[1] & 0x01) || cmd[2] || cmd[3]) return atasetsense(drive, SDcheck, 0x05, 0x24, 0); if(drive->data == nil || drive->dlen < 8) @@ -1574,14 +1574,14 @@ atagenio(Drive* drive, uchar* cmd, int clen) drive->data += 12; return SDok; - case 0x28: /* read (10) */ - case 0x88: /* long read (16) */ - case 0x2a: /* write (10) */ - case 0x8a: /* long write (16) */ - case 0x2e: /* write and verify (10) */ + case ScmdExtread: + case ScmdExtwrite: + case ScmdExtwritever: + case ScmdRead16: + case ScmdWrite16: break; - case 0x5A: + case ScmdMsense10: return atamodesense(drive, cmd); } @@ -1674,8 +1674,8 @@ atario(SDreq* r) * effort. Read/write(6) are easy. */ switch(r->cmd[0]){ - case 0x08: /* read */ - case 0x0A: /* write */ + case ScmdRead: + case ScmdWrite: cmdp = cmd10; memset(cmdp, 0, sizeof(cmd10)); cmdp[0] = r->cmd[0]|0x20; --- /sys/src/9k/386/sdiahci.c +++ /sys/src/9k/386/sdiahci.c @@ -1523,7 +1523,7 @@ ahcibuild(Drive *d, uchar *cmd, void *data, int n, vlong lba) static uchar tab[2][2] = { 0xc8, 0x25, 0xca, 0x35, }; pm = &d->portm; - dir = *cmd != 0x28; + dir = *cmd != ScmdExtread; llba = pm->feat&Dllba? 1: 0; acmd = tab[dir][llba]; qlock(pm); @@ -1769,10 +1769,10 @@ retry: case SDperworm: case SDpercd: switch(cmd[0]){ - case 0x0a: /* write (6?) */ - case 0x2a: /* write (10) */ - case 0x8a: /* long write (16) */ - case 0x2e: /* write and verify (10) */ + case ScmdWrite: + case ScmdExtwrite: + case ScmdExtwritever: + case ScmdWrite16: wormwrite = 1; break; } @@ -1819,7 +1819,7 @@ iario(SDreq *r) name = d->unit->name; p = d->port; - if(r->cmd[0] == 0x35 || r->cmd[0] == 0x91){ + if(*cmd == ScmdSynccache || *cmd == ScmdSynccache16){ if(flushcache(d) == 0) return sdsetsense(r, SDok, 0, 0, 0); return sdsetsense(r, SDcheck, 3, 0xc, 2); @@ -1830,7 +1830,7 @@ iario(SDreq *r) return i; } - if(*cmd != 0x28 && *cmd != 0x2a){ + if(*cmd != ScmdExtread && *cmd != ScmdExtwrite){ print("%s: bad cmd %.2#ux\n", name, cmd[0]); r->status = SDcheck; return SDcheck; --- /sys/src/9k/port/devsd.c +++ /sys/src/9k/port/devsd.c @@ -963,8 +963,8 @@ sdfakescsi(SDreq *r, void *info, int ilen) * Rewrite read(6)/write(6) into read(10)/write(10). */ switch(cmd[0]){ - case 0x08: /* read */ - case 0x0A: /* write */ + case ScmdRead: + case ScmdWrite: cmd[9] = 0; cmd[8] = cmd[4]; cmd[7] = 0; @@ -983,17 +983,17 @@ sdfakescsi(SDreq *r, void *info, int ilen) * Fail any command with a LUN except INQUIRY which * will return 'logical unit not supported'. */ - if((cmd[1]>>5) && cmd[0] != 0x12) + if((cmd[1]>>5) && cmd[0] != ScmdInq) return sdsetsense(r, SDcheck, 0x05, 0x25, 0); switch(cmd[0]){ default: return sdsetsense(r, SDcheck, 0x05, 0x20, 0); - case 0x00: /* test unit ready */ + case ScmdTur: /* test unit ready */ return sdsetsense(r, SDok, 0, 0, 0); - case 0x03: /* request sense */ + case ScmdRsense: /* request sense */ if(cmd[4] < sizeof unit->sense) len = cmd[4]; else @@ -1004,7 +1004,7 @@ sdfakescsi(SDreq *r, void *info, int ilen) } return sdsetsense(r, SDok, 0, 0, 0); - case 0x12: /* inquiry */ + case ScmdInq: /* inquiry */ if(cmd[4] < sizeof unit->inquiry) len = cmd[4]; else @@ -1015,13 +1015,13 @@ sdfakescsi(SDreq *r, void *info, int ilen) } return sdsetsense(r, SDok, 0, 0, 0); - case 0x1B: /* start/stop unit */ + case ScmdStart: /* start/stop unit */ /* * nop for now, can use power management later. */ return sdsetsense(r, SDok, 0, 0, 0); - case 0x25: /* read capacity */ + case ScmdRcapacity: /* read capacity */ if((cmd[1] & 0x01) || cmd[2] || cmd[3]) return sdsetsense(r, SDcheck, 0x05, 0x24, 0); if(r->data == nil || r->dlen < 8) @@ -1044,7 +1044,7 @@ sdfakescsi(SDreq *r, void *info, int ilen) r->rlen = p - (uchar*)r->data; return sdsetsense(r, SDok, 0, 0, 0); - case 0x9E: /* long read capacity */ + case ScmdRcapacity16: /* long read capacity */ if((cmd[1] & 0x01) || cmd[2] || cmd[3]) return sdsetsense(r, SDcheck, 0x05, 0x24, 0); if(r->data == nil || r->dlen < 8) @@ -1070,13 +1070,13 @@ sdfakescsi(SDreq *r, void *info, int ilen) r->rlen = p - (uchar*)r->data; return sdsetsense(r, SDok, 0, 0, 0); - case 0x5A: /* mode sense */ + case ScmdMsense10: /* mode sense */ return sdmodesense(r, cmd, info, ilen); - case 0x28: /* read */ - case 0x2A: /* write */ - case 0x88: /* read16 */ - case 0x8a: /* write16 */ + case ScmdExtread: + case ScmdExtwrite: + case ScmdRead16: + case ScmdWrite16: return SDnostatus; } } --- /sys/src/9k/port/sd.h +++ /sys/src/9k/port/sd.h @@ -1,6 +1,8 @@ /* * Storage Device. */ +#include + typedef struct SDev SDev; typedef struct SDifc SDifc; typedef struct SDio SDio; old mode 100644 --- /sys/src/9k/port/sdaoe.c +++ /sys/src/9k/port/sdaoe.c @@ -449,14 +449,13 @@ aoerio(SDreq *r) cmd = r->cmd; name = unit->name; - if(r->cmd[0] == 0x35 || r->cmd[0] == 0x91){ + if(*cmd == ScmdSynccache || *cmd == ScmdSynccache16) // qlock(c); // i = flushcache(); // qunlock(c); // if(i == 0) // return sdsetsense(r, SDok, 0, 0, 0); return sdsetsense(r, SDcheck, 3, 0xc, 2); - } if((i = sdfakescsi(r, c->ident, sizeof c->ident)) != SDnostatus){ r->status = i; @@ -464,12 +463,12 @@ aoerio(SDreq *r) } switch(*cmd){ - case 0x88: - case 0x28: + case ScmdRead16: + case ScmdExtread: rio = c->c->dev->read; break; - case 0x8a: - case 0x2a: + case ScmdWrite16: + case ScmdExtwrite: rio = c->c->dev->write; break; default: --- /sys/src/9k/port/sdscsi.c +++ /sys/src/9k/port/sdscsi.c @@ -203,7 +203,7 @@ scsionline(SDunit* unit) */ r->write = 0; memset(r->cmd, 0, sizeof(r->cmd)); - r->cmd[0] = 0x25; + r->cmd[0] = ScmdRcapacity; r->cmd[1] = r->lun<<5; r->clen = 10; r->data = p; @@ -311,9 +311,9 @@ scsifmt10(SDreq *r, int write, int lun, ulong nb, uvlong bno) c = r->cmd; if(write == 0) - c[0] = 0x28; + c[0] = ScmdExtread; else - c[0] = 0x2A; + c[0] = ScmdExtwrite; c[1] = lun<<5; c[2] = bno>>24; c[3] = bno>>16; @@ -334,9 +334,9 @@ scsifmt16(SDreq *r, int write, int lun, ulong nb, uvlong bno) c = r->cmd; if(write == 0) - c[0] = 0x88; + c[0] = ScmdRead16; else - c[0] = 0x8A; + c[0] = ScmdWrite16; c[1] = lun<<5; /* so wrong */ c[2] = bno>>56; c[3] = bno>>48;