1*d02e022dStsutsui /* $NetBSD: iris_scsicmd.h,v 1.1 2019/01/12 16:44:47 tsutsui Exp $ */ 2*d02e022dStsutsui 3*d02e022dStsutsui /* 4*d02e022dStsutsui * Copyright (c) 2018 Naruaki Etomi 5*d02e022dStsutsui * All rights reserved. 6*d02e022dStsutsui * 7*d02e022dStsutsui * Redistribution and use in source and binary forms, with or without 8*d02e022dStsutsui * modification, are permitted provided that the following conditions 9*d02e022dStsutsui * are met: 10*d02e022dStsutsui * 1. Redistributions of source code must retain the above copyright 11*d02e022dStsutsui * notice, this list of conditions and the following disclaimer. 12*d02e022dStsutsui * 2. Redistributions in binary form must reproduce the above copyright 13*d02e022dStsutsui * notice, this list of conditions and the following disclaimer in the 14*d02e022dStsutsui * documentation and/or other materials provided with the distribution. 15*d02e022dStsutsui * 16*d02e022dStsutsui * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17*d02e022dStsutsui * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18*d02e022dStsutsui * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19*d02e022dStsutsui * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20*d02e022dStsutsui * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21*d02e022dStsutsui * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22*d02e022dStsutsui * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23*d02e022dStsutsui * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24*d02e022dStsutsui * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25*d02e022dStsutsui * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26*d02e022dStsutsui */ 27*d02e022dStsutsui 28*d02e022dStsutsui /* 29*d02e022dStsutsui * Silicon Graphics "IRIS" series MIPS processors machine bootloader. 30*d02e022dStsutsui */ 31*d02e022dStsutsui 32*d02e022dStsutsui /* 33*d02e022dStsutsui * scsipi_xfer status flags 34*d02e022dStsutsui */ 35*d02e022dStsutsui #define XS_STS_DONE 0x00000001 36*d02e022dStsutsui 37*d02e022dStsutsui /* SCSI Commands */ 38*d02e022dStsutsui #define CMD_TEST_UNIT_READY 0x00 39*d02e022dStsutsui #define CMD_REQUEST_SENSE 0x03 40*d02e022dStsutsui #define CMD_INQUIRY 0x12 41*d02e022dStsutsui #define CMD_SEND_DIAGNOSTIC 0x1D 42*d02e022dStsutsui 43*d02e022dStsutsui #define CMD_REWIND 0x01 44*d02e022dStsutsui #define CMD_REZERO 0x01 45*d02e022dStsutsui #define CMD_FORMAT_UNIT 0x04 46*d02e022dStsutsui #define CMD_READ_BLOCK_LIMITS 0x05 47*d02e022dStsutsui #define CMD_REASSIGN_BLOCKS 0x07 48*d02e022dStsutsui #define CMD_READ 0x08 49*d02e022dStsutsui #define CMD_WRITE 0x0A 50*d02e022dStsutsui #define CMD_WRITE_FILEMARK 0x10 51*d02e022dStsutsui #define CMD_SPACE 0x11 52*d02e022dStsutsui #define CMD_MODE_SELECT 0x15 53*d02e022dStsutsui #define CMD_RELEASE_UNIT 0x17 54*d02e022dStsutsui #define CMD_ERASE 0x19 55*d02e022dStsutsui #define CMD_MODE_SENSE 0x1A 56*d02e022dStsutsui #define CMD_LOADUNLOAD 0x1B 57*d02e022dStsutsui #define CMD_RECEIVE_DIAG 0x1C 58*d02e022dStsutsui #define CMD_SEND_DIAG 0x1D 59*d02e022dStsutsui #define CMD_P_A_MEDIA_REMOVAL 0x1E 60*d02e022dStsutsui #define CMD_READ_CAPACITY 0x25 61*d02e022dStsutsui #define CMD_READ_EXT 0x28 62*d02e022dStsutsui #define CMD_WRITE_EXT 0x2A 63*d02e022dStsutsui #define CMD_READ_DEFECT_DATA 0x37 64*d02e022dStsutsui #define SD_MANUFAC_DEFECTS 0x14000000 65*d02e022dStsutsui #define SD_GROWN_DEFECTS 0x0c000000 66*d02e022dStsutsui #define CMD_READ_BUFFER 0x3B 67*d02e022dStsutsui #define CMD_WRITE_BUFFER 0x3C 68*d02e022dStsutsui #define CMD_READ_FULL 0xF0 69*d02e022dStsutsui #define CMD_MEDIA_TEST 0xF1 70*d02e022dStsutsui #define CMD_ACCESS_LOG 0xF2 71*d02e022dStsutsui #define CMD_WRITE_FULL 0xFC 72*d02e022dStsutsui #define CMD_MANAGE_PRIMARY 0xFD 73*d02e022dStsutsui #define CMD_EXECUTE_DATA 0xFE 74*d02e022dStsutsui 75*d02e022dStsutsui /* command descriptor blocks */ 76*d02e022dStsutsui 77*d02e022dStsutsui struct scsi_cdb6 { 78*d02e022dStsutsui uint8_t cmd; /* command code */ 79*d02e022dStsutsui uint8_t lun: 3, /* logical unit on ctlr */ 80*d02e022dStsutsui lbah: 5; /* msb of read/write logical block addr */ 81*d02e022dStsutsui uint8_t lbam; /* middle byte of l.b.a. */ 82*d02e022dStsutsui uint8_t lbal; /* lsb of l.b.a. */ 83*d02e022dStsutsui uint8_t len; /* transfer length */ 84*d02e022dStsutsui uint8_t xtra; 85*d02e022dStsutsui }; 86*d02e022dStsutsui 87*d02e022dStsutsui struct scsi_cdb10 { 88*d02e022dStsutsui uint8_t cmd; /* command code */ 89*d02e022dStsutsui uint8_t lun: 3, /* logical unit on ctlr */ 90*d02e022dStsutsui : 4, 91*d02e022dStsutsui rel: 1; /* l.b.a. is relative addr if =1 */ 92*d02e022dStsutsui uint8_t lbah; /* msb of read/write logical block addr */ 93*d02e022dStsutsui uint8_t lbahm; /* high middle byte of l.b.a. */ 94*d02e022dStsutsui uint8_t lbalm; /* low middle byte of l.b.a. */ 95*d02e022dStsutsui uint8_t lbal; /* lsb of l.b.a. */ 96*d02e022dStsutsui uint8_t reserved; 97*d02e022dStsutsui uint8_t lenh; /* msb transfer length */ 98*d02e022dStsutsui uint8_t lenl; /* lsb transfer length */ 99*d02e022dStsutsui uint8_t xtra; 100*d02e022dStsutsui }; 101