Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
megaraid_ioctl.h
Go to the documentation of this file.
1 /*
2  *
3  * Linux MegaRAID device driver
4  *
5  * Copyright (c) 2003-2004 LSI Logic Corporation.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version
10  * 2 of the License, or (at your option) any later version.
11  *
12  * FILE : megaraid_ioctl.h
13  *
14  * Definitions to interface with user level applications
15  */
16 
17 #ifndef _MEGARAID_IOCTL_H_
18 #define _MEGARAID_IOCTL_H_
19 
20 #include <linux/types.h>
21 #include <linux/semaphore.h>
22 
23 #include "mbox_defs.h"
24 
25 /*
26  * console messages debug levels
27  */
28 #define CL_ANN 0 /* print unconditionally, announcements */
29 #define CL_DLEVEL1 1 /* debug level 1, informative */
30 #define CL_DLEVEL2 2 /* debug level 2, verbose */
31 #define CL_DLEVEL3 3 /* debug level 3, very verbose */
32 
42 #define con_log(level, fmt) if (LSI_DBGLVL >= level) printk fmt;
43 
44 /*
45  * Definitions & Declarations needed to use common management module
46  */
47 
48 #define MEGAIOC_MAGIC 'm'
49 #define MEGAIOCCMD _IOWR(MEGAIOC_MAGIC, 0, mimd_t)
50 
51 #define MEGAIOC_QNADAP 'm' /* Query # of adapters */
52 #define MEGAIOC_QDRVRVER 'e' /* Query driver version */
53 #define MEGAIOC_QADAPINFO 'g' /* Query adapter information */
54 
55 #define USCSICMD 0x80
56 #define UIOC_RD 0x00001
57 #define UIOC_WR 0x00002
58 
59 #define MBOX_CMD 0x00000
60 #define GET_DRIVER_VER 0x10000
61 #define GET_N_ADAP 0x20000
62 #define GET_ADAP_INFO 0x30000
63 #define GET_CAP 0x40000
64 #define GET_STATS 0x50000
65 #define GET_IOCTL_VERSION 0x01
66 
67 #define EXT_IOCTL_SIGN_SZ 16
68 #define EXT_IOCTL_SIGN "$$_EXTD_IOCTL_$$"
69 
70 #define MBOX_LEGACY 0x00 /* ioctl has legacy mbox*/
71 #define MBOX_HPE 0x01 /* ioctl has hpe mbox */
72 
73 #define APPTYPE_MIMD 0x00 /* old existing apps */
74 #define APPTYPE_UIOC 0x01 /* new apps using uioc */
75 
76 #define IOCTL_ISSUE 0x00000001 /* Issue ioctl */
77 #define IOCTL_ABORT 0x00000002 /* Abort previous ioctl */
78 
79 #define DRVRTYPE_MBOX 0x00000001 /* regular mbox driver */
80 #define DRVRTYPE_HPE 0x00000002 /* new hpe driver */
81 
82 #define MKADAP(adapno) (MEGAIOC_MAGIC << 8 | (adapno) )
83 #define GETADAP(mkadap) ((mkadap) ^ MEGAIOC_MAGIC << 8)
84 
85 #define MAX_DMA_POOLS 5 /* 4k, 8k, 16k, 32k, 64k*/
86 
87 
117 typedef struct uioc {
118 
119 /* User Apps: */
120 
131 
132 /* Driver Data: */
135 
136  /* 64bit alignment */
138 
139  mraid_passthru_t __user *user_pthru;
140 
141  mraid_passthru_t *pthru32;
143 
144  struct list_head list;
145  void (*done)(struct uioc*);
146 
151 
153 
154 } __attribute__ ((aligned(1024),packed)) uioc_t;
155 
156 
190 
192 } __attribute__ ((aligned(256), packed)) mraid_hba_info_t;
193 
210 
221 
222 } __attribute__ ((packed)) mcontroller_t;
223 
239  struct dma_pool *handle;
242 } mm_dmapool_t;
243 
244 
267 typedef struct mraid_mmadp {
268 
269 /* Filled by driver */
270 
273  unsigned long drvr_data;
276 
277  struct pci_dev *pdev;
278 
279  int(*issue_uioc)(unsigned long, uioc_t *, uint32_t);
280 
281 /* Maintained by common module */
283 
284  struct list_head list;
285  uioc_t *kioc_list;
289 
290  mbox64_t *mbox_list;
293 
294 } mraid_mmadp_t;
295 
299 
300 #endif /* _MEGARAID_IOCTL_H_ */