Root/drivers/block/ida_cmd.h

1/*
2 * Disk Array driver for Compaq SMART2 Controllers
3 * Copyright 1998 Compaq Computer Corporation
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
13 * NON INFRINGEMENT. See the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *
19 * Questions/Comments/Bugfixes to iss_storagedev@hp.com
20 *
21 */
22#ifndef ARRAYCMD_H
23#define ARRAYCMD_H
24
25#include <asm/types.h>
26#if 0
27#include <linux/blkdev.h>
28#endif
29
30/* for the Smart Array 42XX cards */
31#define S42XX_REQUEST_PORT_OFFSET 0x40
32#define S42XX_REPLY_INTR_MASK_OFFSET 0x34
33#define S42XX_REPLY_PORT_OFFSET 0x44
34#define S42XX_INTR_STATUS 0x30
35
36#define S42XX_INTR_OFF 0x08
37#define S42XX_INTR_PENDING 0x08
38
39#define COMMAND_FIFO 0x04
40#define COMMAND_COMPLETE_FIFO 0x08
41#define INTR_MASK 0x0C
42#define INTR_STATUS 0x10
43#define INTR_PENDING 0x14
44
45#define FIFO_NOT_EMPTY 0x01
46#define FIFO_NOT_FULL 0x02
47
48#define BIG_PROBLEM 0x40
49#define LOG_NOT_CONF 2
50
51#pragma pack(1)
52typedef struct {
53    __u32 size;
54    __u32 addr;
55} sg_t;
56
57#define RCODE_NONFATAL 0x02
58#define RCODE_FATAL 0x04
59#define RCODE_INVREQ 0x10
60typedef struct {
61    __u16 next;
62    __u8 cmd;
63    __u8 rcode;
64    __u32 blk;
65    __u16 blk_cnt;
66    __u8 sg_cnt;
67    __u8 reserved;
68} rhdr_t;
69
70#define SG_MAX 32
71typedef struct {
72    rhdr_t hdr;
73    sg_t sg[SG_MAX];
74    __u32 bp;
75} rblk_t;
76
77typedef struct {
78    __u8 unit;
79    __u8 prio;
80    __u16 size;
81} chdr_t;
82
83#define CMD_RWREQ 0x00
84#define CMD_IOCTL_PEND 0x01
85#define CMD_IOCTL_DONE 0x02
86
87typedef struct cmdlist {
88    chdr_t hdr;
89    rblk_t req;
90    __u32 size;
91    int retry_cnt;
92    __u32 busaddr;
93    int ctlr;
94    struct cmdlist *prev;
95    struct cmdlist *next;
96    struct request *rq;
97    int type;
98} cmdlist_t;
99    
100#define ID_CTLR 0x11
101typedef struct {
102    __u8 nr_drvs;
103    __u32 cfg_sig;
104    __u8 firm_rev[4];
105    __u8 rom_rev[4];
106    __u8 hw_rev;
107    __u32 bb_rev;
108    __u32 drv_present_map;
109    __u32 ext_drv_map;
110    __u32 board_id;
111    __u8 cfg_error;
112    __u32 non_disk_bits;
113    __u8 bad_ram_addr;
114    __u8 cpu_rev;
115    __u8 pdpi_rev;
116    __u8 epic_rev;
117    __u8 wcxc_rev;
118    __u8 marketing_rev;
119    __u8 ctlr_flags;
120    __u8 host_flags;
121    __u8 expand_dis;
122    __u8 scsi_chips;
123    __u32 max_req_blocks;
124    __u32 ctlr_clock;
125    __u8 drvs_per_bus;
126    __u16 big_drv_present_map[8];
127    __u16 big_ext_drv_map[8];
128    __u16 big_non_disk_map[8];
129    __u16 task_flags;
130    __u8 icl_bus;
131    __u8 red_modes;
132    __u8 cur_red_mode;
133    __u8 red_ctlr_stat;
134    __u8 red_fail_reason;
135    __u8 reserved[403];
136} id_ctlr_t;
137
138typedef struct {
139    __u16 cyl;
140    __u8 heads;
141    __u8 xsig;
142    __u8 psectors;
143    __u16 wpre;
144    __u8 maxecc;
145    __u8 drv_ctrl;
146    __u16 pcyls;
147    __u8 pheads;
148    __u16 landz;
149    __u8 sect_per_track;
150    __u8 cksum;
151} drv_param_t;
152
153#define ID_LOG_DRV 0x10
154typedef struct {
155    __u16 blk_size;
156    __u32 nr_blks;
157    drv_param_t drv;
158    __u8 fault_tol;
159    __u8 reserved;
160    __u8 bios_disable;
161} id_log_drv_t;
162
163#define ID_LOG_DRV_EXT 0x18
164typedef struct {
165    __u32 log_drv_id;
166    __u8 log_drv_label[64];
167    __u8 reserved[418];
168} id_log_drv_ext_t;
169
170#define SENSE_LOG_DRV_STAT 0x12
171typedef struct {
172    __u8 status;
173    __u32 fail_map;
174    __u16 read_err[32];
175    __u16 write_err[32];
176    __u8 drv_err_data[256];
177    __u8 drq_timeout[32];
178    __u32 blks_to_recover;
179    __u8 drv_recovering;
180    __u16 remap_cnt[32];
181    __u32 replace_drv_map;
182    __u32 act_spare_map;
183    __u8 spare_stat;
184    __u8 spare_repl_map[32];
185    __u32 repl_ok_map;
186    __u8 media_exch;
187    __u8 cache_fail;
188    __u8 expn_fail;
189    __u8 unit_flags;
190    __u16 big_fail_map[8];
191    __u16 big_remap_map[128];
192    __u16 big_repl_map[8];
193    __u16 big_act_spare_map[8];
194    __u8 big_spar_repl_map[128];
195    __u16 big_repl_ok_map[8];
196    __u8 big_drv_rebuild;
197    __u8 reserved[36];
198} sense_log_drv_stat_t;
199
200#define START_RECOVER 0x13
201
202#define ID_PHYS_DRV 0x15
203typedef struct {
204    __u8 scsi_bus;
205    __u8 scsi_id;
206    __u16 blk_size;
207    __u32 nr_blks;
208    __u32 rsvd_blks;
209    __u8 drv_model[40];
210    __u8 drv_sn[40];
211    __u8 drv_fw[8];
212    __u8 scsi_iq_bits;
213    __u8 compaq_drv_stmp;
214    __u8 last_fail;
215    __u8 phys_drv_flags;
216    __u8 phys_drv_flags1;
217    __u8 scsi_lun;
218    __u8 phys_drv_flags2;
219    __u8 reserved;
220    __u32 spi_speed_rules;
221    __u8 phys_connector[2];
222    __u8 phys_box_on_bus;
223    __u8 phys_bay_in_box;
224} id_phys_drv_t;
225
226#define BLINK_DRV_LEDS 0x16
227typedef struct {
228    __u32 blink_duration;
229    __u32 reserved;
230    __u8 blink[256];
231    __u8 reserved1[248];
232} blink_drv_leds_t;
233
234#define SENSE_BLINK_LEDS 0x17
235typedef struct {
236    __u32 blink_duration;
237    __u32 btime_elap;
238    __u8 blink[256];
239    __u8 reserved1[248];
240} sense_blink_leds_t;
241
242#define IDA_READ 0x20
243#define IDA_WRITE 0x30
244#define IDA_WRITE_MEDIA 0x31
245#define RESET_TO_DIAG 0x40
246#define DIAG_PASS_THRU 0x41
247
248#define SENSE_CONFIG 0x50
249#define SET_CONFIG 0x51
250typedef struct {
251    __u32 cfg_sig;
252    __u16 compat_port;
253    __u8 data_dist_mode;
254    __u8 surf_an_ctrl;
255    __u16 ctlr_phys_drv;
256    __u16 log_unit_phys_drv;
257    __u16 fault_tol_mode;
258    __u8 phys_drv_param[16];
259    drv_param_t drv;
260    __u32 drv_asgn_map;
261    __u16 dist_factor;
262    __u32 spare_asgn_map;
263    __u8 reserved[6];
264    __u16 os;
265    __u8 ctlr_order;
266    __u8 extra_info;
267    __u32 data_offs;
268    __u8 parity_backedout_write_drvs;
269    __u8 parity_dist_mode;
270    __u8 parity_shift_fact;
271    __u8 bios_disable_flag;
272    __u32 blks_on_vol;
273    __u32 blks_per_drv;
274    __u8 scratch[16];
275    __u16 big_drv_map[8];
276    __u16 big_spare_map[8];
277    __u8 ss_source_vol;
278    __u8 mix_drv_cap_range;
279    struct {
280        __u16 big_drv_map[8];
281        __u32 blks_per_drv;
282        __u16 fault_tol_mode;
283        __u16 dist_factor;
284    } MDC_range[4];
285    __u8 reserved1[248];
286} config_t;
287
288#define BYPASS_VOL_STATE 0x52
289#define SS_CREATE_VOL 0x53
290#define CHANGE_CONFIG 0x54
291#define SENSE_ORIG_CONF 0x55
292#define REORDER_LOG_DRV 0x56
293typedef struct {
294    __u8 old_units[32];
295} reorder_log_drv_t;
296
297#define LABEL_LOG_DRV 0x57
298typedef struct {
299    __u8 log_drv_label[64];
300} label_log_drv_t;
301
302#define SS_TO_VOL 0x58
303    
304#define SET_SURF_DELAY 0x60
305typedef struct {
306    __u16 delay;
307    __u8 reserved[510];
308} surf_delay_t;
309
310#define SET_OVERHEAT_DELAY 0x61
311typedef struct {
312    __u16 delay;
313} overhead_delay_t;
314 
315#define SET_MP_DELAY
316typedef struct {
317    __u16 delay;
318    __u8 reserved[510];
319} mp_delay_t;
320
321#define PASSTHRU_A 0x91
322typedef struct {
323    __u8 target;
324    __u8 bus;
325    __u8 lun;
326    __u32 timeout;
327    __u32 flags;
328    __u8 status;
329    __u8 error;
330    __u8 cdb_len;
331    __u8 sense_error;
332    __u8 sense_key;
333    __u32 sense_info;
334    __u8 sense_code;
335    __u8 sense_qual;
336    __u32 residual;
337    __u8 reserved[4];
338    __u8 cdb[12];
339} scsi_param_t;
340
341#define RESUME_BACKGROUND_ACTIVITY 0x99
342#define SENSE_CONTROLLER_PERFORMANCE 0xa8
343#define FLUSH_CACHE 0xc2
344#define COLLECT_BUFFER 0xd2
345#define READ_FLASH_ROM 0xf6
346#define WRITE_FLASH_ROM 0xf7
347#pragma pack()
348
349#endif /* ARRAYCMD_H */
350

Archive Download this file



interactive