Merge branch 'linus' into sched/core
[linux-2.6] / drivers / block / ida_ioctl.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 IDA_IOCTL_H
23 #define IDA_IOCTL_H
24
25 #include "ida_cmd.h"
26 #include "cpqarray.h"
27
28 #define IDAGETDRVINFO           0x27272828
29 #define IDAPASSTHRU             0x28282929
30 #define IDAGETCTLRSIG           0x29293030
31 #define IDAREVALIDATEVOLS       0x30303131
32 #define IDADRIVERVERSION        0x31313232
33 #define IDAGETPCIINFO           0x32323333
34
35 typedef struct _ida_pci_info_struct
36 {
37         unsigned char   bus;
38         unsigned char   dev_fn;
39         __u32           board_id;
40 } ida_pci_info_struct;
41 /*
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.
48  */
49
50 #define UNITVALID       0x80
51 typedef struct {
52         __u8    cmd;
53         __u8    rcode;
54         __u8    unit;
55         __u32   blk;
56         __u16   blk_cnt;
57
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;
64
65         union ctlr_cmds {
66                 drv_info_t              drv;
67                 unsigned char           buf[1024];
68
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;
86
87 #endif /* IDA_IOCTL_H */