Linux-2.6.12-rc2
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / drivers / block / ida_ioctl.h
blob888fff9caed089e0491bf8fbd9bf7c0c67ea1b54
1 /*
2 * Disk Array driver for Compaq SMART2 Controllers
3 * Copyright 1998 Compaq Computer Corporation
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.
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.
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.
19 * Questions/Comments/Bugfixes to iss_storagedev@hp.com
22 #ifndef IDA_IOCTL_H
23 #define IDA_IOCTL_H
25 #include "ida_cmd.h"
26 #include "cpqarray.h"
28 #define IDAGETDRVINFO 0x27272828
29 #define IDAPASSTHRU 0x28282929
30 #define IDAGETCTLRSIG 0x29293030
31 #define IDAREVALIDATEVOLS 0x30303131
32 #define IDADRIVERVERSION 0x31313232
33 #define IDAGETPCIINFO 0x32323333
35 typedef struct _ida_pci_info_struct
37 unsigned char bus;
38 unsigned char dev_fn;
39 __u32 board_id;
40 } ida_pci_info_struct;
42 * Normally, the ioctl determines the logical unit for this command by
43 * the major,minor number of the fd passed to ioctl. If you need to send
44 * a command to a different/nonexistant unit (such as during config), you
45 * can override the normal behavior by setting the unit valid bit. (Normally,
46 * it should be zero) The controller the command is sent to is still
47 * determined by the major number of the open device.
50 #define UNITVALID 0x80
51 typedef struct {
52 __u8 cmd;
53 __u8 rcode;
54 __u8 unit;
55 __u32 blk;
56 __u16 blk_cnt;
58 /* currently, sg_cnt is assumed to be 1: only the 0th element of sg is used */
59 struct {
60 void __user *addr;
61 size_t size;
62 } sg[SG_MAX];
63 int sg_cnt;
65 union ctlr_cmds {
66 drv_info_t drv;
67 unsigned char buf[1024];
69 id_ctlr_t id_ctlr;
70 drv_param_t drv_param;
71 id_log_drv_t id_log_drv;
72 id_log_drv_ext_t id_log_drv_ext;
73 sense_log_drv_stat_t sense_log_drv_stat;
74 id_phys_drv_t id_phys_drv;
75 blink_drv_leds_t blink_drv_leds;
76 sense_blink_leds_t sense_blink_leds;
77 config_t config;
78 reorder_log_drv_t reorder_log_drv;
79 label_log_drv_t label_log_drv;
80 surf_delay_t surf_delay;
81 overhead_delay_t overhead_delay;
82 mp_delay_t mp_delay;
83 scsi_param_t scsi_param;
84 } c;
85 } ida_ioctl_t;
87 #endif /* IDA_IOCTL_H */