summaryrefslogtreecommitdiff
path: root/include/asm-arm/arch-omap/dsp.h
blob: 57bf4f39ca580db55612fca034381eb7e999c814 (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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
/*
 * linux/include/asm-arm/arch-omap/dsp.h
 *
 * Header for OMAP DSP driver
 *
 * Copyright (C) 2002-2005 Nokia Corporation
 *
 * Written by Toshihiro Kobayashi <toshihiro.kobayashi@nokia.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * 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
 *
 * 2005/06/01:  DSP Gateway version 3.3
 */

#ifndef ASM_ARCH_DSP_H
#define ASM_ARCH_DSP_H


/*
 * for /dev/dspctl/ctl
 */
#define OMAP_DSP_IOCTL_RESET			1
#define OMAP_DSP_IOCTL_RUN			2
#define OMAP_DSP_IOCTL_SETRSTVECT		3
#define OMAP_DSP_IOCTL_CPU_IDLE			4
#define OMAP_DSP_IOCTL_MPUI_WORDSWAP_ON		5
#define OMAP_DSP_IOCTL_MPUI_WORDSWAP_OFF	6
#define OMAP_DSP_IOCTL_MPUI_BYTESWAP_ON		7
#define OMAP_DSP_IOCTL_MPUI_BYTESWAP_OFF	8
#define OMAP_DSP_IOCTL_GBL_IDLE			9
#define OMAP_DSP_IOCTL_DSPCFG			10
#define OMAP_DSP_IOCTL_DSPUNCFG			11
#define OMAP_DSP_IOCTL_TASKCNT			12
#define OMAP_DSP_IOCTL_POLL			13
#define OMAP_DSP_IOCTL_REGMEMR			40
#define OMAP_DSP_IOCTL_REGMEMW			41
#define OMAP_DSP_IOCTL_REGIOR			42
#define OMAP_DSP_IOCTL_REGIOW			43
#define OMAP_DSP_IOCTL_GETVAR			44
#define OMAP_DSP_IOCTL_SETVAR			45
#define OMAP_DSP_IOCTL_RUNLEVEL			50
#define OMAP_DSP_IOCTL_SUSPEND			51
#define OMAP_DSP_IOCTL_RESUME			52
#define OMAP_DSP_IOCTL_FBEN			53
#define OMAP_DSP_IOCTL_FBDIS			54
#define OMAP_DSP_IOCTL_MBSEND			99

/*
 * for taskdev
 * (ioctls below should be >= 0x10000)
 */
#define OMAP_DSP_TASK_IOCTL_BFLSH	0x10000
#define OMAP_DSP_TASK_IOCTL_SETBSZ	0x10001
#define OMAP_DSP_TASK_IOCTL_LOCK	0x10002
#define OMAP_DSP_TASK_IOCTL_UNLOCK	0x10003
#define OMAP_DSP_TASK_IOCTL_GETNAME	0x10004

/*
 * for /dev/dspctl/mem
 */
#define OMAP_DSP_MEM_IOCTL_EXMAP	1
#define OMAP_DSP_MEM_IOCTL_EXUNMAP	2
#define OMAP_DSP_MEM_IOCTL_EXMAP_FLUSH	3
#define OMAP_DSP_MEM_IOCTL_FBEXPORT	5
#define OMAP_DSP_MEM_IOCTL_MMUITACK	7
#define OMAP_DSP_MEM_IOCTL_MMUINIT	9
#define OMAP_DSP_MEM_IOCTL_KMEM_RESERVE	11
#define OMAP_DSP_MEM_IOCTL_KMEM_RELEASE	12

struct omap_dsp_mapinfo {
	unsigned long dspadr;
	unsigned long size;
};

/*
 * for /dev/dspctl/twch
 */
#define OMAP_DSP_TWCH_IOCTL_MKDEV	1
#define OMAP_DSP_TWCH_IOCTL_RMDEV	2
#define OMAP_DSP_TWCH_IOCTL_TADD	11
#define OMAP_DSP_TWCH_IOCTL_TDEL	12
#define OMAP_DSP_TWCH_IOCTL_TKILL	13

#define OMAP_DSP_DEVSTATE_NOTASK	0x00000001
#define OMAP_DSP_DEVSTATE_ATTACHED	0x00000002
#define OMAP_DSP_DEVSTATE_GARBAGE	0x00000004
#define OMAP_DSP_DEVSTATE_INVALID	0x00000008
#define OMAP_DSP_DEVSTATE_ADDREQ	0x00000100
#define OMAP_DSP_DEVSTATE_DELREQ	0x00000200
#define OMAP_DSP_DEVSTATE_ADDFAIL	0x00001000
#define OMAP_DSP_DEVSTATE_ADDING	0x00010000
#define OMAP_DSP_DEVSTATE_DELING	0x00020000
#define OMAP_DSP_DEVSTATE_KILLING	0x00040000
#define OMAP_DSP_DEVSTATE_STATE_MASK	0x7fffffff
#define OMAP_DSP_DEVSTATE_STALE		0x80000000

struct omap_dsp_taddinfo {
	unsigned char minor;
	unsigned long taskadr;
};
#define OMAP_DSP_TADD_ABORTADR	0xffffffff


/*
 * error cause definition (for error detection device)
 */
#define OMAP_DSP_ERRDT_WDT	0x00000001
#define OMAP_DSP_ERRDT_MMU	0x00000002


/*
 * mailbox protocol definitions
 */

struct omap_dsp_mailbox_cmd {
	unsigned short cmd;
	unsigned short data;
};

struct omap_dsp_reginfo {
	unsigned short adr;
	unsigned short val;
};

struct omap_dsp_varinfo {
	unsigned char varid;
	unsigned short val[0];
};

#define OMAP_DSP_MBPROT_REVISION	0x0019

#define OMAP_DSP_MBCMD_WDSND	0x10
#define OMAP_DSP_MBCMD_WDREQ	0x11
#define OMAP_DSP_MBCMD_BKSND	0x20
#define OMAP_DSP_MBCMD_BKREQ	0x21
#define OMAP_DSP_MBCMD_BKYLD	0x23
#define OMAP_DSP_MBCMD_BKSNDP	0x24
#define OMAP_DSP_MBCMD_BKREQP	0x25
#define OMAP_DSP_MBCMD_TCTL	0x30
#define OMAP_DSP_MBCMD_TCTLDATA	0x31
#define OMAP_DSP_MBCMD_POLL	0x32
#define OMAP_DSP_MBCMD_WDT	0x50	/* v3.3: obsolete */
#define OMAP_DSP_MBCMD_RUNLEVEL	0x51
#define OMAP_DSP_MBCMD_PM	0x52
#define OMAP_DSP_MBCMD_SUSPEND	0x53
#define OMAP_DSP_MBCMD_KFUNC	0x54
#define OMAP_DSP_MBCMD_TCFG	0x60
#define OMAP_DSP_MBCMD_TADD	0x62
#define OMAP_DSP_MBCMD_TDEL	0x63
#define OMAP_DSP_MBCMD_TSTOP	0x65
#define OMAP_DSP_MBCMD_DSPCFG	0x70
#define OMAP_DSP_MBCMD_REGRW	0x72
#define OMAP_DSP_MBCMD_GETVAR	0x74
#define OMAP_DSP_MBCMD_SETVAR	0x75
#define OMAP_DSP_MBCMD_ERR	0x78
#define OMAP_DSP_MBCMD_DBG	0x79

#define OMAP_DSP_MBCMD_TCTL_TINIT	0x0000
#define OMAP_DSP_MBCMD_TCTL_TEN		0x0001
#define OMAP_DSP_MBCMD_TCTL_TDIS	0x0002
#define OMAP_DSP_MBCMD_TCTL_TCLR	0x0003
#define OMAP_DSP_MBCMD_TCTL_TCLR_FORCE	0x0004

#define OMAP_DSP_MBCMD_RUNLEVEL_USER		0x01
#define OMAP_DSP_MBCMD_RUNLEVEL_SUPER		0x0e
#define OMAP_DSP_MBCMD_RUNLEVEL_RECOVERY	0x10

#define OMAP_DSP_MBCMD_PM_DISABLE	0x00
#define OMAP_DSP_MBCMD_PM_ENABLE	0x01

#define OMAP_DSP_MBCMD_KFUNC_FBCTL	0x00

#define OMAP_DSP_MBCMD_FBCTL_ENABLE	0x0002
#define OMAP_DSP_MBCMD_FBCTL_DISABLE	0x0003

#define OMAP_DSP_MBCMD_TDEL_SAFE	0x0000
#define OMAP_DSP_MBCMD_TDEL_KILL	0x0001

#define OMAP_DSP_MBCMD_DSPCFG_REQ	0x00
#define OMAP_DSP_MBCMD_DSPCFG_SYSADRH	0x28
#define OMAP_DSP_MBCMD_DSPCFG_SYSADRL	0x29
#define OMAP_DSP_MBCMD_DSPCFG_PROTREV	0x70
#define OMAP_DSP_MBCMD_DSPCFG_ABORT	0x78
#define OMAP_DSP_MBCMD_DSPCFG_LAST	0x80

#define OMAP_DSP_MBCMD_REGRW_MEMR	0x00
#define OMAP_DSP_MBCMD_REGRW_MEMW	0x01
#define OMAP_DSP_MBCMD_REGRW_IOR	0x02
#define OMAP_DSP_MBCMD_REGRW_IOW	0x03
#define OMAP_DSP_MBCMD_REGRW_DATA	0x04

#define OMAP_DSP_MBCMD_VARID_ICRMASK	0x00
#define OMAP_DSP_MBCMD_VARID_LOADINFO	0x01

#define OMAP_DSP_TTYP_ARCV	0x0001
#define OMAP_DSP_TTYP_ASND	0x0002
#define OMAP_DSP_TTYP_BKMD	0x0004
#define OMAP_DSP_TTYP_BKDM	0x0008
#define OMAP_DSP_TTYP_PVMD	0x0010
#define OMAP_DSP_TTYP_PVDM	0x0020

#define OMAP_DSP_EID_BADTID	0x10
#define OMAP_DSP_EID_BADTCN	0x11
#define OMAP_DSP_EID_BADBID	0x20
#define OMAP_DSP_EID_BADCNT	0x21
#define OMAP_DSP_EID_NOTLOCKED	0x22
#define OMAP_DSP_EID_STVBUF	0x23
#define OMAP_DSP_EID_BADADR	0x24
#define OMAP_DSP_EID_BADTCTL	0x30
#define OMAP_DSP_EID_BADPARAM	0x50
#define OMAP_DSP_EID_FATAL	0x58
#define OMAP_DSP_EID_NOMEM	0xc0
#define OMAP_DSP_EID_NORES	0xc1
#define OMAP_DSP_EID_IPBFULL	0xc2
#define OMAP_DSP_EID_WDT	0xd0
#define OMAP_DSP_EID_TASKNOTRDY	0xe0
#define OMAP_DSP_EID_TASKBSY	0xe1
#define OMAP_DSP_EID_TASKERR	0xef
#define OMAP_DSP_EID_BADCFGTYP	0xf0
#define OMAP_DSP_EID_DEBUG	0xf8
#define OMAP_DSP_EID_BADSEQ	0xfe
#define OMAP_DSP_EID_BADCMD	0xff

#define OMAP_DSP_TNM_LEN	16

#define OMAP_DSP_TID_FREE	0xff
#define OMAP_DSP_TID_ANON	0xfe

#define OMAP_DSP_BID_NULL	0xffff
#define OMAP_DSP_BID_PVT	0xfffe

#endif /* ASM_ARCH_DSP_H */