aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/sep/memrar_stub.h
blob: 056bccefa9af8a86e09076308febc296ec13586c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*
 *	RAR Handler (/dev/memrar) internal driver API.
 *	Copyright (C) 2010 Intel Corporation. All rights reserved.
 *
 *	This program is free software; you can redistribute it and/or
 *	modify it under the terms of version 2 of the GNU General
 *	Public License as published by the Free Software Foundation.
 *
 *	This program is distributed in the hope that it will be
 *	useful, but WITHOUT ANY WARRANTY; without even the implied
 *	warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 *	PURPOSE.  See the GNU General Public License for more details.
 *	You should have received a copy of the GNU General Public
 *	License along with this program; if not, write to the Free
 *	Software Foundation, Inc., 59 Temple Place - Suite 330,
 *	Boston, MA  02111-1307, USA.
 *	The full GNU General Public License is included in this
 *	distribution in the file called COPYING.
 *
 *  CONTACTS:
 *
 *  Mark Allyn		mark.a.allyn@intel.com
 *
 *	Revisions:
 *	9/2010 - Initial publish (Mark Allyn)
 */

#ifndef _MEMRAR_STUB_H
#define _MEMRAR_STUB_H

/* This stub header is for non Moorestown driver only */

/*
 * Constants that specify different kinds of RAR regions that could be
 * set up.
 */
static __u32 const RAR_TYPE_VIDEO;  /* 0 */
static __u32 const RAR_TYPE_AUDIO = 1;
static __u32 const RAR_TYPE_IMAGE = 2;
static __u32 const RAR_TYPE_DATA  = 3;

/*
 * @struct RAR_stat
 *
 * @brief This structure is used for @c RAR_HANDLER_STAT ioctl and for
 *	@c RAR_get_stat() user space wrapper function.
 */
struct RAR_stat {
	/* Type of RAR memory (e.g., audio vs. video) */
	__u32 type;

	/*
	* Total size of RAR memory region.
	*/
	__u32 capacity;

	/* Size of the largest reservable block. */
	__u32 largest_block_size;
};


/*
 * @struct RAR_block_info
 *
 * @brief The argument for the @c RAR_HANDLER_RESERVE @c ioctl.
 *
 */
struct RAR_block_info {
	/* Type of RAR memory (e.g., audio vs. video) */
	__u32 type;

	/* Requested size of a block to be reserved in RAR. */
	__u32 size;

	/* Handle that can be used to refer to reserved block. */
	__u32 handle;
};

/*
 * @struct RAR_buffer
 *
 * Structure that contains all information related to a given block of
 * memory in RAR.  It is generally only used when retrieving bus
 * addresses.
 *
 * @note This structure is used only by RAR-enabled drivers, and is
 *	 not intended to be exposed to the user space.
 */
struct RAR_buffer {
	/* Structure containing base RAR buffer information */
	struct RAR_block_info info;

	/* Buffer bus address */
	__u32 bus_address;
};


#define RAR_IOCTL_BASE 0xE0

/* Reserve RAR block. */
#define RAR_HANDLER_RESERVE _IOWR(RAR_IOCTL_BASE, 0x00, struct RAR_block_info)

/* Release previously reserved RAR block. */
#define RAR_HANDLER_RELEASE _IOW(RAR_IOCTL_BASE, 0x01, __u32)

/* Get RAR stats. */
#define RAR_HANDLER_STAT    _IOWR(RAR_IOCTL_BASE, 0x02, struct RAR_stat)


/* -------------------------------------------------------------- */
/*		 Kernel Side RAR Handler Interface		*/
/* -------------------------------------------------------------- */

/*
 * @function rar_reserve
 *
 * @brief Reserve RAR buffers.
 *
 * This function will reserve buffers in the restricted access regions
 * of given types.
 *
 * @return Number of successfully reserved buffers.
 *	 Successful buffer reservations will have the corresponding
 *	 @c bus_address field set to a non-zero value in the
 *	 given @a buffers vector.
 */
#define rar_reserve(a, b) ((size_t)NULL)

/*
 * @function rar_release
 *
 * @brief Release RAR buffers retrieved through call to
 *	@c rar_reserve() or @c rar_handle_to_bus().
 *
 * This function will release RAR buffers that were retrieved through
 * a call to @c rar_reserve() or @c rar_handle_to_bus() by
 * decrementing the reference count.  The RAR buffer will be reclaimed
 * when the reference count drops to zero.
 *
 * @return Number of successfully released buffers.
 *	 Successful releases will have their handle field set to
 *	 zero in the given @a buffers vector.
 */
#define rar_release(a, b) ((size_t)NULL)

/*
 * @function rar_handle_to_bus
 *
 * @brief Convert a vector of RAR handles to bus addresses.
 *
 * This function will retrieve the RAR buffer bus addresses, type and
 * size corresponding to the RAR handles provided in the @a buffers
 * vector.
 *
 * @return Number of successfully converted buffers.
 *	 The bus address will be set to @c 0 for unrecognized
 *	 handles.
 *
 * @note The reference count for each corresponding buffer in RAR will
 *	 be incremented.  Call @c rar_release() when done with the
 *	 buffers.
 */
#define rar_handle_to_bus(a, b) ((size_t)NULL)

#endif  /* _MEMRAR_H */


/*
  Local Variables:
    c-file-style: "linux"
  End:
*/