summaryrefslogtreecommitdiff
path: root/arch/arm/plat-omap/include/syslink/messageq_transportshm_ioctl.h
blob: 3790dc0d22e89f5ad4b8460128d1c97b0ae8730d (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
/*
 *  messageq_transportshm_ioctl.h
 *
 *  Definitions of messageq_transportshm driver types and structures.
 *
 *  Copyright (C) 2008-2009 Texas Instruments, Inc.
 *
 *  This package is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 *  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 *  WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 *  PURPOSE.
 */

#ifndef _MESSAGEQ_TRANSPORTSHM_IOCTL_H_
#define _MESSAGEQ_TRANSPORTSHM_IOCTL_H_

/* Standard headers */
#include <linux/types.h>

/* Syslink headers */
#include <ipc_ioctl.h>
#include <messageq_transportshm.h>
#include <sharedregion.h>


/* =============================================================================
 *  Macros and types
 * =============================================================================
 */
/* Base command ID for messageq_transportshm */
#define MESSAGEQ_TRANSPORTSHM_IOC_MAGIC		IPC_IOC_MAGIC
enum messageq_transportshm_drv_cmd {
	MESSAGEQ_TRANSPORTSHM_GETCONFIG = MESSAGEQ_TRANSPORTSHM_BASE_CMD,
	MESSAGEQ_TRANSPORTSHM_SETUP,
	MESSAGEQ_TRANSPORTSHM_DESTROY,
	MESSAGEQ_TRANSPORTSHM_PARAMS_INIT,
	MESSAGEQ_TRANSPORTSHM_CREATE,
	MESSAGEQ_TRANSPORTSHM_DELETE,
	MESSAGEQ_TRANSPORTSHM_PUT,
	MESSAGEQ_TRANSPORTSHM_SHAREDMEMREQ,
	MESSAGEQ_TRANSPORTSHM_GETSTATUS
};

/*  ----------------------------------------------------------------------------
 *  IOCTL command IDs for messageq_transportshm
 *  ----------------------------------------------------------------------------
 */
/* Base command ID for messageq_transportshm */
#define MESSAGEQ_TRANSPORTSHM_BASE_CMD		0x0

/* Command for messageq_transportshm_get_config */
#define CMD_MESSAGEQ_TRANSPORTSHM_GETCONFIG \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, \
	MESSAGEQ_TRANSPORTSHM_GETCONFIG, struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_setup */
#define CMD_MESSAGEQ_TRANSPORTSHM_SETUP \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, MESSAGEQ_TRANSPORTSHM_SETUP, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_setup */
#define CMD_MESSAGEQ_TRANSPORTSHM_DESTROY \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, MESSAGEQ_TRANSPORTSHM_DESTROY, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_destroy */
#define CMD_MESSAGEQ_TRANSPORTSHM_PARAMS_INIT \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, \
	MESSAGEQ_TRANSPORTSHM_PARAMS_INIT, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_create */
#define CMD_MESSAGEQ_TRANSPORTSHM_CREATE \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, MESSAGEQ_TRANSPORTSHM_CREATE, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_delete */
#define CMD_MESSAGEQ_TRANSPORTSHM_DELETE \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, MESSAGEQ_TRANSPORTSHM_DELETE, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_put */
#define CMD_MESSAGEQ_TRANSPORTSHM_PUT \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, MESSAGEQ_TRANSPORTSHM_PUT, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_shared_memreq */
#define CMD_MESSAGEQ_TRANSPORTSHM_SHAREDMEMREQ \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, \
	MESSAGEQ_TRANSPORTSHM_SHAREDMEMREQ, \
	struct messageq_transportshm_cmd_args)

/* Command for messageq_transportshm_get_status */
#define CMD_MESSAGEQ_TRANSPORTSHM_GETSTATUS \
	_IOWR(MESSAGEQ_TRANSPORTSHM_IOC_MAGIC, \
	MESSAGEQ_TRANSPORTSHM_GETSTATUS, struct messageq_transportshm_cmd_args)

/* Command arguments for messageq_transportshm */
struct messageq_transportshm_cmd_args {
	union {
		struct {
			struct messageq_transportshm_config *config;
		} get_config;

		struct {
			struct messageq_transportshm_config *config;
		} setup;

		struct {
			void *messageq_transportshm_handle;
			struct messageq_transportshm_params *params;
		} params_init;

		struct {
			void *messageq_transportshm_handle;
			u16 proc_id;
			struct messageq_transportshm_params *params;
			u32 shared_addr_srptr;
			void *knl_lock_handle;
			void *knl_notify_driver;
		} create;

		struct {
			void *messageq_transportshm_handle;
		} delete_transport;

		struct {
			void *messageq_transportshm_handle;
			u32 *msg_srptr;
		} put;

		struct {
			void *messageq_transportshm_handle;
			enum messageq_transportshm_status status;
		} get_status;

		struct {
			struct messageq_transportshm_params *params;
			u32 bytes;
		} shared_memreq;
	} args;

	int api_status;
};

/*  ----------------------------------------------------------------------------
 *  IOCTL functions for messageq_transportshm module
 *  ----------------------------------------------------------------------------
 */
/*
 *  ioctl interface function for messageq_transportshm
 */
int messageq_transportshm_ioctl(struct inode *inode, struct file *filp,
				unsigned int cmd, unsigned long args);

#endif /* _MESSAGEQ_TRANSPORTSHM_IOCTL_H_ */