summaryrefslogtreecommitdiff
path: root/sys/src/cmd/atazz/tabs.h
diff options
context:
space:
mode:
authorgoogle <google@daverabbitz.ath.cx>2012-09-20 22:39:48 +1200
committergoogle <google@daverabbitz.ath.cx>2012-09-20 22:39:48 +1200
commitfa7fb8b66b9ff50029532d09315f03896f2ac4c4 (patch)
tree262cfe8966f3c07a5ad6ed61fda028f6fa928a36 /sys/src/cmd/atazz/tabs.h
parent913afc39c9b4750e630c7f4ff3161a37602b006b (diff)
Add Erik Quanstrom's atazz
(needed to disable power management/head unload on 2.5" drive)
Diffstat (limited to 'sys/src/cmd/atazz/tabs.h')
-rw-r--r--sys/src/cmd/atazz/tabs.h466
1 files changed, 466 insertions, 0 deletions
diff --git a/sys/src/cmd/atazz/tabs.h b/sys/src/cmd/atazz/tabs.h
new file mode 100644
index 000000000..3854199c2
--- /dev/null
+++ b/sys/src/cmd/atazz/tabs.h
@@ -0,0 +1,466 @@
+Txtab regtx[] = {
+ Ftype, "type", 0,
+ Fflags, "flags", 0,
+ Fcmd, "cmd", 0,
+ Ffeat, "feat", 0,
+ Flba0, "lba0", 0,
+ Flba8, "lba8", 0,
+ Flba16, "lba16", 0,
+ Fdev, "dev", 0,
+ Flba24, "lba24", 0,
+ Flba32, "lba32", 0,
+ Flba40, "lba40", 0,
+ Ffeat8, "feat8", 0,
+ Fsc, "sc", 0,
+ Fsc8, "sc8", 0,
+ Ficc, "icc", 0,
+ Fcontrol,"control", 0,
+
+ /* aliases */
+ Ffeat, "features", 0,
+ Flba0, "sector", 0,
+ Flba8, "cyl0", 0,
+ Flba8, "byte0", 0,
+ Flba16, "cyl8", 0,
+ Flba24, "dh", 0,
+ Flba24, "byte8", 0,
+ Flba32, "cyl24", 0,
+ Flba40, "cyl32", 0,
+};
+
+Txtab smautosave[] = {
+ 0, "disable", 0,
+ 0xf1, "enable", 0,
+};
+
+Fetab _b0d2[] = {
+ Fsc, smautosave, nelem(smautosave),
+ 0, 0, 0,
+};
+
+Txtab smlba8[] = {
+ 0x4f, "", 0,
+};
+Txtab smlba16[] = {
+ 0xc2, "", 0,
+};
+
+Txtab smartfeat[] = {
+// 0xd0, "read data", 0,
+ 0xd2, "attribute autosave", _b0d2,
+ 0xd2, "aa", 0,
+ 0xd4, "execute off-line immediate", 0,
+// 0xd5, "read log", 0,
+// 0xd6, "write log", 0,
+ 0xd8, "enable operations", 0,
+ 0xd9, "disable operations", 0,
+ 0xda, "return status", 0,
+};
+
+Fetab _b0[] = {
+ Ffeat, smartfeat, nelem(smartfeat),
+ Flba8, smlba8, 1,
+ Flba16, smlba16, 1,
+ 0, 0, 0,
+};
+
+Txtab _b0d0feat[] = {
+ 0xd0, "", 0,
+};
+
+Fetab _b0d0[] = {
+ Ffeat, _b0d0feat, nelem(_b0d0feat),
+ Flba8, smlba8, 1,
+ Flba16, smlba16, 1,
+ 0, 0, 0,
+};
+
+
+Txtab _b0d5feat[] = {
+ 0xd5, "", 0,
+};
+
+Txtab _b0d5count[] = {
+ 0x01, "", 0,
+};
+
+Txtab smpage[] = {
+ 0x00, "page 0", 0,
+ 0x01, "page 1", 0,
+ 0x02, "page 2", 0,
+ 0x03, "page 3", 0,
+ 0x04, "page 4", 0,
+ 0x05, "page 5", 0,
+ 0x06, "page 6", 0,
+ 0x07, "page 7", 0,
+ 0x08, "page 8", 0,
+ 0x09, "page 9", 0,
+ 0x11, "page 17", 0,
+ 0xe0, "sctstat", 0,
+ 0xe1, "sctdata", 0,
+};
+
+Fetab _b0d5[] = {
+ Ffeat, _b0d5feat, nelem(_b0d5feat),
+// Fsc, _b0d5count, nelem(_b0d5count),
+ Flba0, smpage, nelem(smpage),
+ Flba8, smlba8, 1,
+ Flba16, smlba16, 1,
+ 0, 0, 0,
+};
+
+Fetab _2f[] = {
+ Flba0, smpage, nelem(smpage),
+ 0, 0, 0,
+};
+
+Txtab nvfeat[] = {
+ 0x00, "set power mode", 0,
+ 0x01, "return from power mode", 0,
+ 0x10, "add lbas", 0,
+ 0x11, "remove lbas", 0,
+ 0x13, "query pinned set", 0,
+ 0x13, "query misses", 0,
+ 0x14, "flush", 0,
+ 0x15, "disable", 0,
+ 0x16, "disable", 0,
+};
+
+Fetab _b6[] = {
+ Ffeat, nvfeat, nelem(nvfeat),
+ 0, 0, 0,
+};
+
+Txtab umodes[] = {
+ 0x40, "0", 0,
+ 0x41, "1", 0,
+ 0x42, "2", 0,
+ 0x43, "3", 0,
+ 0x44, "4", 0,
+ 0x45, "5", 0,
+ 0x46, "6", 0,
+};
+
+Fetab _ef0340[] = {
+ Fsc, umodes, nelem(umodes),
+ 0, 0, 0,
+};
+
+Txtab txmode[] = {
+ 0x00, "pio", 0,
+ 0x01, "pio-iordy", 0,
+ 0x08, "piofc", 0,
+ 0x20, "mwdma", 0,
+ 0x40, "udma", _ef0340,
+};
+
+Fetab _ef03[] = {
+ Fsc, txmode, nelem(txmode),
+ 0, 0, 0,
+};
+
+Txtab apmmode[] = {
+ 0xfe, "maximum", 0,
+ 0x80, "minimum without standby", 0,
+ 0x02, "intermediate", 0,
+ 0x01, "standby", 0,
+};
+
+Fetab _ef05[] = {
+ Fsc, apmmode, nelem(apmmode),
+ 0, 0, 0,
+};
+
+Txtab scisone[] = {
+ 1, "", 0,
+};
+
+Fetab _scis1[] = {
+ Fsc, scisone, nelem(scisone),
+ 0, 0, 0,
+};
+
+Txtab feat[] = {
+ 0x01, "enable 8-bit pio", 0,
+ 0x02, "enable write cache", 0,
+ 0x03, "set transfer mode", _ef03,
+ 0x05, "enable apm", _ef05,
+ 0x06, "enable power-up in standby", 0,
+ 0x07, "power-up in standby device spin-up", 0,
+ 0x10, "enable sata features", 0,
+ 0x0a, "enable cfa power mode 1", 0,
+ 0x31, "disable media status notification", 0,
+ 0x42, "enable aam", 0,
+ 0x43, "set maximum host interface sector times", 0,
+ 0x55, "disable read look-ahead", 0,
+ 0x5d, "enable release interrupt", 0,
+ 0x5e, "enable service interrupt", 0,
+ 0x66, "disable reverting to power-on defaults", 0,
+ 0x81, "disable 8-bit pio", 0,
+ 0x82, "disable write cache", 0,
+ 0x85, "disable apm", 0,
+ 0x86, "disable power-up in standby", 0,
+ 0x8a, "disable cfa power mode 1", 0,
+ 0x10, "disable sata features", 0,
+ 0x95, "enable media status notification", 0,
+ 0xaa, "enable read look-ahead", 0,
+ 0xc1, "disable free-fall control", 0,
+ 0xc2, "disable aam", 0,
+ 0xc3, "sense data", 0, /* incomplete; enable/disable */
+ 0xcc, "enable reverting to power-on defaults", 0,
+ 0xdd, "disable release interrupt", 0,
+ 0xde, "disable service interrupt", 0,
+};
+
+Fetab _ef[] = {
+ Ffeat, feat, nelem(feat),
+ 0, 0, 0,
+};
+
+/* 0xffff — sct command executing in background */
+char *sctetab[] = {
+ "Command complete without error",
+ "Invalid Function Code",
+ "Input LBA out of range"
+ "Request 512-byte data block count overflow.", /* sic */
+ "Invalid Function code in Error Recovery command",
+ "Invalid Selection code in Error Recovery command",
+ "Host read command timer is less than minimum value",
+ "Host write command timer is less than minimum value",
+ "Background SCT command was aborted because of an interrupting host command",
+ "Background SCT command was terminated because of unrecoverable error",
+ "Invalid Function code in SCT Read/Write Long command",
+ "SCT data transfer command was issued without first issuing an SCT command",
+ "Invalid Function code in SCT Feature Control command",
+ "Invalid Feature code in SCT Feature Control command",
+ "Invalid New State value in SCT Feature Control command",
+ "Invalid Option Flags value in SCT Feature Control command",
+ "Invalid SCT Action code",
+ "Invalid Table ID (table not supported)",
+ "Command wa saborted due to device security being locked",
+ "Invalid revision code in SCT data",
+ "Foreground SCT operation was terminated because of unrecoverable error",
+ "Error Recovery Timer expired", /* sic */
+};
+
+Txtab fcfewcrt[] = {
+ 1, "enable", 0,
+ 2, "disable", 0,
+};
+
+Fetab fcfewcr[] = {
+ Sstate, fcfewcrt, nelem(fcfewcrt),
+ 0, 0, 0,
+};
+
+Txtab fcfewct[] = {
+ 1, "set features", 0,
+ 2, "enable", 0,
+ 3, "disable", 0,
+};
+
+Fetab fcfewc[] = {
+ Sstate, fcfewct, nelem(fcfewct),
+ 0, 0, 0,
+};
+
+Txtab fcfn[] = {
+ 1, "set state", 0,
+ 2, "return state", 0,
+ 3, "return feature option flags", 0,
+};
+
+Txtab fcfe[] = {
+ 2, "write cache reordering", fcfewcr,
+ 1, "write cache", fcfewc,
+ 3, "temperature logging interval", 0,
+};
+
+Txtab fcoptf[] = {
+ 1, "preserve", 0,
+};
+
+Txtab fcproto[] = {
+ Pnd, "", 0,
+};
+
+Fetab sctfc[] = {
+ Sfn, fcfn, nelem(fcfn),
+ Sfe, fcfe, nelem(fcfe),
+ Soptf, fcoptf, nelem(fcoptf),
+ Pbase, fcproto, nelem(fcproto),
+ 0, 0, 0,
+};
+
+Txtab sctdt[] = {
+ Stabid, "tableid", 0,
+};
+
+Txtab tabnam[] = {
+ 2, "hda temperature history", 0,
+};
+
+Txtab tablefc[] = {
+ 1, "", 0,
+};
+
+Fetab tables[] = {
+ Sfn, tablefc, nelem(tablefc),
+ Stabid, tabnam, nelem(tabnam),
+ 0, 0, 0,
+};
+
+Txtab ersc[] = {
+ 1, "read timer", 0,
+ 2, "write timer", 0,
+};
+
+Txtab erfc[] = {
+ 1, "set", 0,
+ 2, "return", 0,
+};
+
+Txtab erti[] = {
+ -1, "=", 0,
+};
+
+Fetab scter[] = {
+ Sfn, erfc, nelem(erfc),
+ Ssc, ersc, nelem(ersc),
+ Stimer, erti, nelem(erti),
+ Pbase, fcproto, nelem(fcproto),
+ 0, 0, 0,
+};
+
+Fetab patfe[] = {
+ Pbase, fcproto, nelem(fcproto),
+ 0, 0, 0,
+};
+
+Txtab wsfc[] = {
+ 1, "repeat write pattern", patfe,
+ 2, "repeat write data block", 0,
+ 0x101, "repeat write pattern foreground", patfe,
+ 0x102, "repeat write data block foreground", 0,
+};
+
+Txtab wslba[] = {
+ -1, "lba", 0,
+};
+
+Txtab wscnt[] = {
+ -1, "count", 0,
+};
+
+Txtab wspat[] = {
+ -1, "pattern", 0,
+};
+
+Fetab wsame[] = {
+ Sfn, wsfc, nelem(wsfc),
+ Slba, wslba, nelem(wslba),
+ Scnt, wscnt, nelem(wscnt),
+ Spat, wspat, nelem(wspat),
+ 0, 0, 0,
+};
+
+Txtab action[] = {
+ 5, "read data table", tables,
+ 4, "feature control", sctfc,
+ 3, "error recovery time", scter,
+ 2, "write same", wsame,
+};
+
+Fetab scta[] = {
+ Saction, action, nelem(action),
+ 0, 0, 0,
+};
+
+Atatab atatab[] = {
+0x00, 0, 0, Pnd|P28, 0, 0, "nop",
+0x03, 0, Cmdn, Pnd|P28, 0, 0, "cfa request extended error",
+0x08, Cmdn, 0, Preset|P28, 0, 0, "device reset",
+0x0b, 0, Cmdp, Pnd|P48, 0, 0, "request sense data ext",
+0x20, 0, 0, Pin|Ppio|P28, 0, iofmt, "read sector",
+0x24, 0, Cmdn, Pin|Ppio|P48, 0, iofmt, "read sector ext",
+0x25, 0, Cmdn, Pin|Pdma|P48, 0, iofmt, "read dma ext",
+0x26, 0, Cmdn, Pin|Pdmq|P48, 0, iofmt, "read dma queued ext",
+0x27, 0, Cmdn, Pnd|P48, 0, 0, "read native max address ext",
+0x29, 0, Cmdn, Pin|Ppio|P48, 0, iofmt, "read multiple ext",
+0x2a, 0, Cmdn, Pin|Pdma|P48, 0, iofmt, "read stream dma ext",
+0x2b, 0, Cmdn, Pin|Ppio|P48, 0, iofmt, "read stream ext",
+0x2f, Cmd5sc, 0, Pin|Ppio|P48|P512, _2f, glfmt, "read log ext",
+0x2f, Cmd5sc, 0, Psct|Pin|Ppio|P48|P512, scta, 0, "sct",
+0x30, 0, Cmdn, Pout|Ppio|P28, 0, 0, "write sector",
+0x34, 0, Cmdn, Pout|Ppio|P48, 0, 0, "write sector ext",
+0x35, 0, Cmdn, Pout|Pdma|P48, 0, 0, "write dma ext",
+0x36, 0, Cmdn, Pout|Pdmq|P48, 0, 0, "write dma queued ext",
+0x37, 0, Cmdn, Pnd|P48, 0, 0, "set max address ext",
+0x38, 0, Cmdn, Pout|Ppio|P28, 0, 0, "cfa write sectors without erase",
+0x39, 0, Cmdn, Pout|Ppio|P48, 0, 0, "write multiple ext",
+0x3a, 0, Cmdn, Pout|Pdma|P48, 0, 0, "write stream dma ext",
+0x3b, 0, Cmdn, Pout|Ppio|P48, 0, 0, "write stream ext",
+0x3d, 0, Cmdn, Pout|Pdma|P48, 0, 0, "write dma fua ext",
+0x3e, 0, Cmdn, Pout|Pdmq|P48, 0, 0, "write dma queued fua ext",
+0x3f, 0, 0, Pout|Ppio|P48, 0, 0, "write log ext",
+0x40, 0, Cmdn, Pnd|P28, 0, 0, "read verify sector",
+0x42, 0, Cmdn, Pnd|P48, 0, 0, "read verify sector ext",
+0x45, 0, Cmdn, Pnd|P48, 0, 0, "write uncorrectable ext",
+0x47, Cmd5sc, 0, Pin|Pdma|P48|P512, _2f, glfmt, "read log dma ext",
+0x51, 0, 0, Pnd|P48, 0, 0, "configure stream",
+0x57, 0, 0, Pout|Pdma|P48, 0, 0, "write log dma ext",
+0x5b, 0, Cmdp, Pnd|P28, 0, 0, "trusted non-data",
+0x5c, 0, Cmdp, Pin|Ppio|P28, 0, iofmt, "trusted receive",
+0x5d, 0, Cmdp, Pin|Pdma|P28, 0, iofmt, "trusted receive dma",
+0x5e, 0, Cmdp, Pout|Ppio|P28, 0, 0, "trusted send",
+0x5f, 0, Cmdp, Pout|Pdma|P28, 0, 0, "trusted send dma",
+0x60, 0, Cmdn, Pin|Pdmq|P48, 0, iofmt, "read fpdma queued",
+0x61, 0, Cmdn, Pout|Pdmq|P48, 0, 0, "write fpdma queued",
+0x87, 0, Cmdn, Pin|Ppio|P28, 0, iofmt, "cfa translate sector",
+0x90, 0, 0, Pdiag|P28, 0, 0, "execute device diagnostic",
+0x92, 0, Cmdn, Pout|Ppio|P28, 0, 0, "download microcode",
+0x93, 0, Cmdn, Pout|Pdma|P28, 0, 0, "download microcode dma",
+0xa0, Cmdn, 0, Ppkt, 0, 0, "packet",
+0xa1, Cmdn, 0, Pin|Ppio|P28|P512, _scis1, idfmt, "identify packet device",
+0xb0, Cmd5sc, Cmdn, Pin|Ppio|P28|P512, _b0d0, sdfmt, "smart read data",
+0xb0, Cmd5sc, Cmdn, Pin|Ppio|P28|P512, _b0d5, slfmt, "smart read log",
+0xb0, 0, Cmdn, Pnd|P28, _b0, smfmt, "smart",
+0xb1, 0, 0, Pnd|P28, 0, 0, "device configuration overlay",
+0xb6, 0, Cmdn, Pnd|P48, 0, 0, "nv cache",
+0xc0, Cmdf, Cmdn, Pnd|P28, 0, 0, "cfa erase sectors",
+0xc4, 0, Cmdn, Pin|Ppio|P28, 0, iofmt, "read multiple",
+0xc5, 0, Cmdn, Pout|Ppio|P28, 0, 0, "write multiple",
+0xc6, 0, Cmdn, Pnd|P28, 0, 0, "set multiple mode",
+0xc7, 0, Cmdn, Pin|Pdmq|P28, 0, iofmt, "read dma queued",
+0xc8, 0, Cmdn, Pin|Pdma|P28, 0, iofmt, "read dma",
+0xca, 0, Cmdn, Pout|Pdma|P28, 0, 0, "write dma",
+0xcc, 0, Cmdn, Pout|Pdmq|P28, 0, 0, "write dma queued",
+0xcd, 0, Cmdn, Pout|Ppio|P28, 0, 0, "cfa write multiple without erase",
+0xce, 0, Cmdn, Pout|Ppio|P48, 0, 0, "write multiple fua ext",
+0xd1, 0, Cmdn, Pnd|P28, 0, 0, "check media card type",
+0xda, 0, Cmdn, Pnd|P28, 0, 0, "get media status",
+0xe0, 0, 0, Pnd|P28, 0, 0, "standby immediate",
+0xe1, 0, 0, Pnd|P28, 0, 0, "idle immediate",
+0xe2, 0, 0, Pnd|P28, 0, 0, "standby",
+0xe3, 0, 0, Pnd|P28, 0, 0, "idle",
+0xe4, 0, Cmdn, Pin|Ppio|P28, 0, iofmt, "read buffer",
+0xe5, 0, 0, Pnd|P28, 0, 0, "check power mode",
+0xe6, 0, 0, Pnd|P28, 0, 0, "sleep",
+0xe7, 0, 0, Pnd|P28, 0, 0, "flush cache",
+0xe8, 0, Cmdn, Pout|Ppio|P28, 0, 0, "write buffer",
+0xe9, 0, Cmdn, Pin|Pdma|P28, 0, iofmt, "read buffer dma",
+0xea, 0, Cmdn, Pnd|P28, 0, 0, "flush cache ext",
+0xeb, 0, Cmdn, Pdma|P28, 0, 0, "write buffer dma",
+0xec, 0, 0, Pin|Ppio|P28|P512, _scis1, idfmt, "identify device",
+0xef, 0, 0, Pnd|P28, _ef, 0, "set features",
+0xf1, 0, 0, Pout|Ppio|P28, 0, 0, "security set password",
+0xf2, 0, 0, Pout|Ppio|P28, 0, 0, "security unlock",
+0xf3, 0, 0, Pnd|P28, 0, 0, "security erase prepare",
+0xf4, 0, 0, Pout|Ppio|P28, 0, 0, "security erase unit",
+0xf5, 0, 0, Pnd|P28, 0, 0, "security freeze lock",
+0xf6, 0, 0, Pout|Ppio|P28, 0, 0, "security disable password",
+0xf8, 0, 0, Pnd|P28, 0, 0, "read native max address",
+0xf9, 0, 0, Pnd|P28, 0, 0, "set max address",
+0xf000, 0, 0, Pnd|P28, 0, sigfmt, "signature",
+0xf100, 0, 0, Pnd|P28, 0, 0, "oobreset",
+};