11.1Stsutsui/*	$NetBSD: iris_scsicmd.h,v 1.1 2019/01/12 16:44:47 tsutsui Exp $	*/
21.1Stsutsui
31.1Stsutsui/*
41.1Stsutsui * Copyright (c) 2018 Naruaki Etomi
51.1Stsutsui * All rights reserved.
61.1Stsutsui *
71.1Stsutsui * Redistribution and use in source and binary forms, with or without
81.1Stsutsui * modification, are permitted provided that the following conditions
91.1Stsutsui * are met:
101.1Stsutsui * 1. Redistributions of source code must retain the above copyright
111.1Stsutsui *    notice, this list of conditions and the following disclaimer.
121.1Stsutsui * 2. Redistributions in binary form must reproduce the above copyright
131.1Stsutsui *    notice, this list of conditions and the following disclaimer in the
141.1Stsutsui *    documentation and/or other materials provided with the distribution.
151.1Stsutsui *
161.1Stsutsui * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
171.1Stsutsui * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
181.1Stsutsui * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
191.1Stsutsui * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
201.1Stsutsui * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
211.1Stsutsui * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
221.1Stsutsui * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
231.1Stsutsui * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
241.1Stsutsui * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
251.1Stsutsui * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
261.1Stsutsui */
271.1Stsutsui
281.1Stsutsui/*
291.1Stsutsui * Silicon Graphics "IRIS" series MIPS processors machine bootloader.
301.1Stsutsui */
311.1Stsutsui
321.1Stsutsui/*
331.1Stsutsui * scsipi_xfer status flags
341.1Stsutsui */
351.1Stsutsui#define XS_STS_DONE		0x00000001
361.1Stsutsui
371.1Stsutsui/* SCSI Commands */
381.1Stsutsui#define CMD_TEST_UNIT_READY		0x00
391.1Stsutsui#define CMD_REQUEST_SENSE		0x03
401.1Stsutsui#define CMD_INQUIRY			0x12
411.1Stsutsui#define CMD_SEND_DIAGNOSTIC		0x1D
421.1Stsutsui
431.1Stsutsui#define CMD_REWIND			0x01
441.1Stsutsui#define CMD_REZERO			0x01
451.1Stsutsui#define CMD_FORMAT_UNIT			0x04
461.1Stsutsui#define CMD_READ_BLOCK_LIMITS		0x05
471.1Stsutsui#define CMD_REASSIGN_BLOCKS		0x07
481.1Stsutsui#define CMD_READ			0x08
491.1Stsutsui#define CMD_WRITE			0x0A
501.1Stsutsui#define CMD_WRITE_FILEMARK		0x10
511.1Stsutsui#define CMD_SPACE			0x11
521.1Stsutsui#define CMD_MODE_SELECT			0x15
531.1Stsutsui#define CMD_RELEASE_UNIT		0x17
541.1Stsutsui#define CMD_ERASE			0x19
551.1Stsutsui#define CMD_MODE_SENSE			0x1A
561.1Stsutsui#define CMD_LOADUNLOAD			0x1B
571.1Stsutsui#define CMD_RECEIVE_DIAG		0x1C
581.1Stsutsui#define CMD_SEND_DIAG			0x1D
591.1Stsutsui#define CMD_P_A_MEDIA_REMOVAL		0x1E
601.1Stsutsui#define CMD_READ_CAPACITY		0x25
611.1Stsutsui#define CMD_READ_EXT			0x28
621.1Stsutsui#define CMD_WRITE_EXT			0x2A
631.1Stsutsui#define CMD_READ_DEFECT_DATA		0x37
641.1Stsutsui#define 	SD_MANUFAC_DEFECTS	0x14000000
651.1Stsutsui#define 	SD_GROWN_DEFECTS	0x0c000000
661.1Stsutsui#define CMD_READ_BUFFER			0x3B
671.1Stsutsui#define CMD_WRITE_BUFFER		0x3C
681.1Stsutsui#define CMD_READ_FULL			0xF0
691.1Stsutsui#define CMD_MEDIA_TEST			0xF1
701.1Stsutsui#define CMD_ACCESS_LOG			0xF2
711.1Stsutsui#define CMD_WRITE_FULL			0xFC
721.1Stsutsui#define CMD_MANAGE_PRIMARY		0xFD
731.1Stsutsui#define CMD_EXECUTE_DATA		0xFE
741.1Stsutsui
751.1Stsutsui/* command descriptor blocks */
761.1Stsutsui
771.1Stsutsuistruct scsi_cdb6 {
781.1Stsutsui	uint8_t	cmd;		/* command code */
791.1Stsutsui	uint8_t	lun:  3,	/* logical unit on ctlr */
801.1Stsutsui		lbah: 5;	/* msb of read/write logical block addr */
811.1Stsutsui	uint8_t	lbam;		/* middle byte of l.b.a. */
821.1Stsutsui	uint8_t	lbal;		/* lsb of l.b.a. */
831.1Stsutsui	uint8_t	len;		/* transfer length */
841.1Stsutsui	uint8_t	xtra;
851.1Stsutsui};
861.1Stsutsui
871.1Stsutsuistruct scsi_cdb10 {
881.1Stsutsui	uint8_t	cmd;		/* command code */
891.1Stsutsui	uint8_t	lun: 3,		/* logical unit on ctlr */
901.1Stsutsui		   : 4,
911.1Stsutsui		rel: 1;		/* l.b.a. is relative addr if =1 */
921.1Stsutsui	uint8_t	lbah;		/* msb of read/write logical block addr */
931.1Stsutsui	uint8_t	lbahm;		/* high middle byte of l.b.a. */
941.1Stsutsui	uint8_t	lbalm;		/* low middle byte of l.b.a. */
951.1Stsutsui	uint8_t	lbal;		/* lsb of l.b.a. */
961.1Stsutsui	uint8_t	reserved;
971.1Stsutsui	uint8_t	lenh;		/* msb transfer length */
981.1Stsutsui	uint8_t	lenl;		/* lsb transfer length */
991.1Stsutsui	uint8_t	xtra;
1001.1Stsutsui};
101