NetBSD/sys/arch/i386/isa/asreg.h

105 lines
3.0 KiB
C

struct scsicmd {
int lun;
int readflag; /* 1=read, 0=write */
int blkno; /* just used in seek sorting */
unsigned int cdblen;
caddr_t cdb;
unsigned int datalen;
caddr_t data;
unsigned int ccblen;
caddr_t ccb;
};
#define SCSICMD _IOWR('a', 150, struct scsicmd)
/* write regs */
#define AS_CONTROL 0
#define AS_DATA_OUT 1
/* read regs */
#define AS_STATUS 0
#define AS_DATA_IN 1
#define AS_INTR 2
/* control port bits */
#define AS_CONTROL_HRST 0x80 /* hard reset */
#define AS_CONTROL_SRST 0x40 /* soft reset */
#define AS_CONTROL_IRST 0x20 /* interrupt reset */
#define AS_CONTROL_SCRST 0x10 /* scsi bus reset */
/* status port bits */
#define AS_STATUS_STST 0x80 /* self test in progress */
#define AS_STATUS_DIAGF 0x40 /* internal diagnostic failure */
#define AS_STATUS_INIT 0x20 /* mailbox initialization required */
#define AS_STATUS_IDLE 0x10 /* scsi host adapter idle */
#define AS_STATUS_CDF 0x08 /* command/data out port full */
#define AS_STATUS_DF 0x04 /* data in port full */
/* 0x02 reserved */
#define AS_STATUS_INVDCMD 0x01 /* invalid host adapter command */
/* interrupt port bits */
#define AS_INTR_ANY 0x80
#define AS_INTR_SCRD 0x08 /* scsi reset detected */
#define AS_INTR_HACC 0x04 /* host adapter command complete */
#define AS_INTR_MBOA 0x02 /* mailbox out available */
#define AS_INTR_MBIF 0x01 /* mailbox in available */
/* command bytes */
#define AS_CMD_NOP 0x00
#define AS_CMD_MAILBOX_INIT 0x01
#define AS_CMD_START_SCSI_COMMAND 0x02
#define AS_CMD_START_BIOS_COMMAND 0x03
#define AS_CMD_ADAPTER_INQUIRY 0x04
#define AS_CMD_ENABLE_MBOA_INTR 0x05
#define AS_CMD_SET_SELECTION_TIMEOUT 0x06
#define AS_CMD_SET_BUS_ON_TIME 0x07
#define AS_CMD_SET_BUS_OFF_TIME 0x08
#define AS_CMD_SET_TRANSFER_SPEED 0x09
#define AS_CMD_RETURN_INSTALLED_DEVICES 0x0a
#define AS_CMD_RETURN_CONFIGURATION_DATA 0x0b
#define AS_CMD_ENABLE_TARGET_MODE 0x0c
#define AS_CMD_RETURN_SETUP_DATA 0x0d
#define AS_CMD_WRITE_ADAPTER_CHANNEL_2_BUFFER 0x1a
#define AS_CMD_READ_ADAPTER_CHANNEL_2_BUFGFER 0x1b
#define AS_CMD_WRITE_ADAPTER_FIFO_BUFFER 0x1c
#define AS_CMD_READ_ADAPTER_FIFO_BUFFER 0x1d
#define AS_CMD_ECHO 0x1f
#define AS_CMD_ADAPTER_DIAG 0x20
#define AS_CMD_SET_ADAPTER_OPTIONS 0x21
struct mailbox_entry {
unsigned char cmd;
unsigned char msb;
unsigned char mid;
unsigned char lsb;
};
#define MAXCDB 50
#define MAXSENSE 100
struct ccb {
unsigned char ccb_opcode;
unsigned char ccb_addr_and_control;
unsigned char ccb_scsi_command_len;
unsigned char ccb_requst_sense_allocation_len;
unsigned char ccb_data_len_msb;
unsigned char ccb_data_len_mid;
unsigned char ccb_data_len_lsb;
unsigned char ccb_data_ptr_msb;
unsigned char ccb_data_ptr_mid;
unsigned char ccb_data_ptr_lsb;
unsigned char ccb_link_msb;
unsigned char ccb_link_mid;
unsigned char ccb_link_lsb;
unsigned char ccb_link_id;
unsigned char ccb_host_status;
unsigned char ccb_target_status;
unsigned char ccb_zero1;
unsigned char ccb_zero2;
unsigned char ccb_cdb[MAXCDB + MAXSENSE];
};
#define ccb_sense(ccb) ((ccb)->ccb_cdb + (ccb)->ccb_scsi_command_len)