Commit | Line | Data |
---|---|---|
15637ed4 RG |
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 |