1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *
4  *			Linux MegaRAID device driver
5  *
6  * Copyright (c) 2003-2004  LSI Logic Corporation.
7  *
8  * FILE		: megaraid_mm.h
9  */
10 
11 #ifndef MEGARAID_MM_H
12 #define MEGARAID_MM_H
13 
14 #include <linux/spinlock.h>
15 #include <linux/fs.h>
16 #include <linux/uaccess.h>
17 #include <linux/module.h>
18 #include <linux/moduleparam.h>
19 #include <linux/pci.h>
20 #include <linux/list.h>
21 #include <linux/miscdevice.h>
22 
23 #include "mbox_defs.h"
24 #include "megaraid_ioctl.h"
25 
26 
27 #define LSI_COMMON_MOD_VERSION	"2.20.2.7"
28 #define LSI_COMMON_MOD_EXT_VERSION	\
29 		"(Release Date: Sun Jul 16 00:01:03 EST 2006)"
30 
31 
32 #define LSI_DBGLVL			dbglevel
33 
34 // The smallest dma pool
35 #define MRAID_MM_INIT_BUFF_SIZE		4096
36 
37 /**
38  * mimd_t	: Old style ioctl packet structure (deprecated)
39  *
40  * @inlen	:
41  * @outlen	:
42  * @fca		:
43  * @opcode	:
44  * @subopcode	:
45  * @adapno	:
46  * @buffer	:
47  * @pad		:
48  * @length	:
49  * @mbox	:
50  * @pthru	:
51  * @data	:
52  * @pad		:
53  *
54  * Note		: This structure is DEPRECATED. New applications must use
55  *		: uioc_t structure instead. All new hba drivers use the new
56  *		: format. If we get this mimd packet, we will convert it into
57  *		: new uioc_t format and send it to the hba drivers.
58  */
59 
60 typedef struct mimd {
61 
62 	uint32_t inlen;
63 	uint32_t outlen;
64 
65 	union {
66 		uint8_t fca[16];
67 		struct {
68 			uint8_t opcode;
69 			uint8_t subopcode;
70 			uint16_t adapno;
71 #if BITS_PER_LONG == 32
72 			uint8_t __user *buffer;
73 			uint8_t pad[4];
74 #endif
75 #if BITS_PER_LONG == 64
76 			uint8_t __user *buffer;
77 #endif
78 			uint32_t length;
79 		} __attribute__ ((packed)) fcs;
80 	} __attribute__ ((packed)) ui;
81 
82 	uint8_t mbox[18];		/* 16 bytes + 2 status bytes */
83 	mraid_passthru_t pthru;
84 
85 #if BITS_PER_LONG == 32
86 	char __user *data;		/* buffer <= 4096 for 0x80 commands */
87 	char pad[4];
88 #endif
89 #if BITS_PER_LONG == 64
90 	char __user *data;
91 #endif
92 
93 } __attribute__ ((packed))mimd_t;
94 
95 #endif // MEGARAID_MM_H
96 
97 // vi: set ts=8 sw=8 tw=78:
98