|
|
1.1 root 1: struct scsicmd {
2: int lun;
3: int readflag; /* 1=read, 0=write */
4: int blkno; /* just used in seek sorting */
5:
6: unsigned int cdblen;
7: caddr_t cdb;
8:
9: unsigned int datalen;
10: caddr_t data;
11:
12: unsigned int ccblen;
13: caddr_t ccb;
14: };
15: #define SCSICMD _IOWR('a', 150, struct scsicmd)
16:
17: /* write regs */
18: #define AS_CONTROL 0
19: #define AS_DATA_OUT 1
20:
21: /* read regs */
22: #define AS_STATUS 0
23: #define AS_DATA_IN 1
24: #define AS_INTR 2
25:
26: /* control port bits */
27: #define AS_CONTROL_HRST 0x80 /* hard reset */
28: #define AS_CONTROL_SRST 0x40 /* soft reset */
29: #define AS_CONTROL_IRST 0x20 /* interrupt reset */
30: #define AS_CONTROL_SCRST 0x10 /* scsi bus reset */
31:
32: /* status port bits */
33: #define AS_STATUS_STST 0x80 /* self test in progress */
34: #define AS_STATUS_DIAGF 0x40 /* internal diagnostic failure */
35: #define AS_STATUS_INIT 0x20 /* mailbox initialization required */
36: #define AS_STATUS_IDLE 0x10 /* scsi host adapter idle */
37: #define AS_STATUS_CDF 0x08 /* command/data out port full */
38: #define AS_STATUS_DF 0x04 /* data in port full */
39: /* 0x02 reserved */
40: #define AS_STATUS_INVDCMD 0x01 /* invalid host adapter command */
41:
42: /* interrupt port bits */
43: #define AS_INTR_ANY 0x80
44: #define AS_INTR_SCRD 0x08 /* scsi reset detected */
45: #define AS_INTR_HACC 0x04 /* host adapter command complete */
46: #define AS_INTR_MBOA 0x02 /* mailbox out available */
47: #define AS_INTR_MBIF 0x01 /* mailbox in available */
48:
49: /* command bytes */
50: #define AS_CMD_NOP 0x00
51: #define AS_CMD_MAILBOX_INIT 0x01
52: #define AS_CMD_START_SCSI_COMMAND 0x02
53: #define AS_CMD_START_BIOS_COMMAND 0x03
54: #define AS_CMD_ADAPTER_INQUIRY 0x04
55: #define AS_CMD_ENABLE_MBOA_INTR 0x05
56: #define AS_CMD_SET_SELECTION_TIMEOUT 0x06
57: #define AS_CMD_SET_BUS_ON_TIME 0x07
58: #define AS_CMD_SET_BUS_OFF_TIME 0x08
59: #define AS_CMD_SET_TRANSFER_SPEED 0x09
60: #define AS_CMD_RETURN_INSTALLED_DEVICES 0x0a
61: #define AS_CMD_RETURN_CONFIGURATION_DATA 0x0b
62: #define AS_CMD_ENABLE_TARGET_MODE 0x0c
63: #define AS_CMD_RETURN_SETUP_DATA 0x0d
64: #define AS_CMD_WRITE_ADAPTER_CHANNEL_2_BUFFER 0x1a
65: #define AS_CMD_READ_ADAPTER_CHANNEL_2_BUFGFER 0x1b
66: #define AS_CMD_WRITE_ADAPTER_FIFO_BUFFER 0x1c
67: #define AS_CMD_READ_ADAPTER_FIFO_BUFFER 0x1d
68: #define AS_CMD_ECHO 0x1f
69: #define AS_CMD_ADAPTER_DIAG 0x20
70: #define AS_CMD_SET_ADAPTER_OPTIONS 0x21
71:
72: struct mailbox_entry {
73: unsigned char cmd;
74: unsigned char msb;
75: unsigned char mid;
76: unsigned char lsb;
77: };
78:
79: #define MAXCDB 50
80: #define MAXSENSE 100
81:
82: struct ccb {
83: unsigned char ccb_opcode;
84: unsigned char ccb_addr_and_control;
85: unsigned char ccb_scsi_command_len;
86: unsigned char ccb_requst_sense_allocation_len;
87: unsigned char ccb_data_len_msb;
88: unsigned char ccb_data_len_mid;
89: unsigned char ccb_data_len_lsb;
90: unsigned char ccb_data_ptr_msb;
91: unsigned char ccb_data_ptr_mid;
92: unsigned char ccb_data_ptr_lsb;
93: unsigned char ccb_link_msb;
94: unsigned char ccb_link_mid;
95: unsigned char ccb_link_lsb;
96: unsigned char ccb_link_id;
97: unsigned char ccb_host_status;
98: unsigned char ccb_target_status;
99: unsigned char ccb_zero1;
100: unsigned char ccb_zero2;
101: unsigned char ccb_cdb[MAXCDB + MAXSENSE];
102: };
103: #define ccb_sense(ccb) ((ccb)->ccb_cdb + (ccb)->ccb_scsi_command_len)
104:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.