00001
00049 #ifndef SCSI_SBC_PROTOCOL_H_INCLUDED
00050 #define SCSI_SBC_PROTOCOL_H_INCLUDED
00051
00053
00054 #define SCSI_CMD_FORMAT_UNIT 0x04
00055 #define SCSI_CMD_READ6 0x08
00056 #define SCSI_CMD_WRITE6 0x0a
00057 #define SCSI_CMD_START_STOP_UNIT 0x1b
00058 #define SCSI_CMD_READ_CAPACITY10 0x25
00059 #define SCSI_CMD_READ10 0x28
00060 #define SCSI_CMD_WRITE10 0x2a
00061 #define SCSI_CMD_VERIFY10 0x2f
00062
00063
00065
00066
00067 enum scsi_sbc_mode_page_code {
00068 SCSI_MS_PAGE_CACHING = 0x08,
00069 };
00070
00072
00073 #define SCSI_MS_SBC_WP 0x80 //!< Write Protected
00074 #define SCSI_MS_SBC_DPOFUA 0x10 //!< DPO and FUA supported
00075
00076
00080 struct sbc_slba_block_desc {
00081 be32_t nr_blocks;
00082 be32_t block_len;
00083 #define SBC_SLBA_BLOCK_LEN_MASK 0x00ffffffU //!< Mask reserved bits
00084 };
00085
00089 struct sbc_caching_mode_page {
00090 uint8_t page_code;
00091 uint8_t page_length;
00092 uint8_t flags2;
00093 #define SBC_MP_CACHE_IC (1 << 7) //!< Initiator Control
00094 #define SBC_MP_CACHE_ABPF (1 << 6) //!< Abort Pre-Fetch
00095 #define SBC_MP_CACHE_CAP (1 << 5) //!< Caching Analysis Permitted
00096 #define SBC_MP_CACHE_DISC (1 << 4) //!< Discontinuity
00097 #define SBC_MP_CACHE_SIZE (1 << 3) //!< Size enable
00098 #define SBC_MP_CACHE_WCE (1 << 2) //!< Writeback Cache Enable
00099 #define SBC_MP_CACHE_MF (1 << 1) //!< Multiplication Factor
00100 #define SBC_MP_CACHE_RCD (1 << 0) //!< Read Cache Disable
00101 uint8_t retention;
00102 be16_t dis_pf_transfer_len;
00103 be16_t min_prefetch;
00104 be16_t max_prefetch;
00105 be16_t max_prefetch_ceil;
00106 uint8_t flags12;
00107 #define SBC_MP_CACHE_FSW (1 << 7) //!< Force Sequential Write
00108 #define SBC_MP_CACHE_LBCSS (1 << 6) //!< Logical Blk Cache Seg Sz
00109 #define SBC_MP_CACHE_DRA (1 << 5) //!< Disable Read-Ahead
00110 #define SBC_MP_CACHE_NV_DIS (1 << 0) //!< Non-Volatile Cache Disable
00111 uint8_t nr_cache_segments;
00112 be16_t cache_segment_size;
00113 uint8_t reserved[4];
00114 };
00115
00117
00121 struct sbc_read_capacity10_data {
00122 be32_t max_lba;
00123 be32_t block_len;
00124 };
00125
00126 #endif