Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
drivers
vx
vx_cmd.c
Go to the documentation of this file.
1
/*
2
* Driver for Digigram VX soundcards
3
*
4
* DSP commands
5
*
6
* Copyright (c) 2002 by Takashi Iwai <
[email protected]
>
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
*/
22
23
#include <
sound/core.h
>
24
#include <
sound/pcm.h
>
25
#include <
sound/vx_core.h
>
26
#include "
vx_cmd.h
"
27
28
/*
29
* Array of DSP commands
30
*/
31
static
struct
vx_cmd_info
vx_dsp_cmds[] = {
32
[
CMD_VERSION
] = { 0x010000, 2,
RMH_SSIZE_FIXED
, 1 },
33
[
CMD_SUPPORTED
] = { 0x020000, 1,
RMH_SSIZE_FIXED
, 2 },
34
[
CMD_TEST_IT
] = { 0x040000, 1,
RMH_SSIZE_FIXED
, 1 },
35
[
CMD_SEND_IRQA
] = { 0x070001, 1,
RMH_SSIZE_FIXED
, 0 },
36
[
CMD_IBL
] = { 0x080000, 1,
RMH_SSIZE_FIXED
, 4 },
37
[
CMD_ASYNC
] = { 0x0A0000, 1,
RMH_SSIZE_ARG
, 0 },
38
[
CMD_RES_PIPE
] = { 0x400000, 1,
RMH_SSIZE_FIXED
, 0 },
39
[
CMD_FREE_PIPE
] = { 0x410000, 1,
RMH_SSIZE_FIXED
, 0 },
40
[
CMD_CONF_PIPE
] = { 0x42A101, 2,
RMH_SSIZE_FIXED
, 0 },
41
[
CMD_ABORT_CONF_PIPE
] = { 0x42A100, 2,
RMH_SSIZE_FIXED
, 0 },
42
[
CMD_PARAM_OUTPUT_PIPE
] = { 0x43A000, 2,
RMH_SSIZE_FIXED
, 0 },
43
[
CMD_STOP_PIPE
] = { 0x470004, 1,
RMH_SSIZE_FIXED
, 0 },
44
[
CMD_PIPE_STATE
] = { 0x480000, 1,
RMH_SSIZE_FIXED
, 1 },
45
[
CMD_PIPE_SPL_COUNT
] = { 0x49A000, 2,
RMH_SSIZE_FIXED
, 2 },
46
[
CMD_CAN_START_PIPE
] = { 0x4b0000, 1,
RMH_SSIZE_FIXED
, 1 },
47
[
CMD_SIZE_HBUFFER
] = { 0x4C0000, 1,
RMH_SSIZE_FIXED
, 1 },
48
[
CMD_START_STREAM
] = { 0x80A000, 2,
RMH_SSIZE_FIXED
, 0 },
49
[
CMD_START_ONE_STREAM
] = { 0x800000, 1,
RMH_SSIZE_FIXED
, 0 },
50
[
CMD_PAUSE_STREAM
] = { 0x81A000, 2,
RMH_SSIZE_FIXED
, 0 },
51
[
CMD_PAUSE_ONE_STREAM
] = { 0x810000, 1,
RMH_SSIZE_FIXED
, 0 },
52
[
CMD_STREAM_OUT_LEVEL_ADJUST
] = { 0x828000, 2,
RMH_SSIZE_FIXED
, 0 },
53
[
CMD_STOP_STREAM
] = { 0x830000, 1,
RMH_SSIZE_FIXED
, 0 },
54
[
CMD_FORMAT_STREAM_OUT
] = { 0x868000, 1,
RMH_SSIZE_FIXED
, 0 },
55
[
CMD_FORMAT_STREAM_IN
] = { 0x878800, 1,
RMH_SSIZE_FIXED
, 0 },
56
[
CMD_GET_STREAM_STATE
] = { 0x890001, 2,
RMH_SSIZE_FIXED
, 1 },
57
[
CMD_DROP_BYTES_AWAY
] = { 0x8A8000, 2,
RMH_SSIZE_FIXED
, 0 },
58
[
CMD_GET_REMAINING_BYTES
] = { 0x8D0800, 1,
RMH_SSIZE_FIXED
, 2 },
59
[
CMD_CONNECT_AUDIO
] = { 0xC10000, 1,
RMH_SSIZE_FIXED
, 0 },
60
[
CMD_AUDIO_LEVEL_ADJUST
] = { 0xC2A000, 3,
RMH_SSIZE_FIXED
, 0 },
61
[
CMD_AUDIO_VU_PIC_METER
] = { 0xC3A003, 2,
RMH_SSIZE_FIXED
, 1 },
62
[
CMD_GET_AUDIO_LEVELS
] = { 0xC4A000, 2,
RMH_SSIZE_FIXED
, 0 },
63
[
CMD_GET_NOTIFY_EVENT
] = { 0x4D0000, 1,
RMH_SSIZE_ARG
, 0 },
64
[
CMD_INFO_NOTIFIED
] = { 0x0B0000, 1,
RMH_SSIZE_FIXED
, 2 },
65
[
CMD_ACCESS_IO_FCT
] = { 0x098000, 1,
RMH_SSIZE_ARG
, 0 },
66
[
CMD_STATUS_R_BUFFERS
] = { 0x440000, 1,
RMH_SSIZE_ARG
, 0 },
67
[
CMD_UPDATE_R_BUFFERS
] = { 0x848000, 4,
RMH_SSIZE_FIXED
, 0 },
68
[
CMD_LOAD_EFFECT_CONTEXT
] = { 0x0c8000, 3,
RMH_SSIZE_FIXED
, 1 },
69
[
CMD_EFFECT_ONE_PIPE
] = { 0x458000, 0,
RMH_SSIZE_FIXED
, 0 },
70
[
CMD_MODIFY_CLOCK
] = { 0x0d0000, 1,
RMH_SSIZE_FIXED
, 0 },
71
[
CMD_STREAM1_OUT_SET_N_LEVELS
] ={ 0x858000, 3,
RMH_SSIZE_FIXED
, 0 },
72
[
CMD_PURGE_STREAM_DCMDS
] = { 0x8b8000, 3,
RMH_SSIZE_FIXED
, 0 },
73
[
CMD_NOTIFY_PIPE_TIME
] = { 0x4e0000, 1,
RMH_SSIZE_FIXED
, 0 },
74
[
CMD_LOAD_EFFECT_CONTEXT_PACKET
] = { 0x0c8000, 1,
RMH_SSIZE_FIXED
, 0 },
75
[
CMD_RELIC_R_BUFFER
] = { 0x8e0800, 1,
RMH_SSIZE_FIXED
, 1 },
76
[
CMD_RESYNC_AUDIO_INPUTS
] = { 0x0e0000, 1,
RMH_SSIZE_FIXED
, 0 },
77
[
CMD_NOTIFY_STREAM_TIME
] = { 0x8f0000, 1,
RMH_SSIZE_FIXED
, 0 },
78
[
CMD_STREAM_SAMPLE_COUNT
] = { 0x900000, 1,
RMH_SSIZE_FIXED
, 2 },
79
[
CMD_CONFIG_TIME_CODE
] = { 0x050000, 2,
RMH_SSIZE_FIXED
, 0 },
80
[
CMD_GET_TIME_CODE
] = { 0x060000, 1,
RMH_SSIZE_FIXED
, 5 },
81
[
CMD_MANAGE_SIGNAL
] = { 0x0f0000, 1,
RMH_SSIZE_FIXED
, 0 },
82
[
CMD_PARAMETER_STREAM_OUT
] = { 0x91A000, 3,
RMH_SSIZE_FIXED
, 0 },
83
[
CMD_READ_BOARD_FREQ
] = { 0x030000, 1,
RMH_SSIZE_FIXED
, 2 },
84
[
CMD_GET_STREAM_LEVELS
] = { 0x8c0000, 1,
RMH_SSIZE_FIXED
, 3 },
85
[
CMD_PURGE_PIPE_DCMDS
] = { 0x4f8000, 3,
RMH_SSIZE_FIXED
, 0 },
86
// [CMD_SET_STREAM_OUT_EFFECTS] = { 0x888000, 34, RMH_SSIZE_FIXED, 0 },
87
// [CMD_GET_STREAM_OUT_EFFECTS] = { 0x928000, 2, RMH_SSIZE_FIXED, 32 },
88
[
CMD_CONNECT_MONITORING
] = { 0xC00000, 1,
RMH_SSIZE_FIXED
, 0 },
89
[
CMD_STREAM2_OUT_SET_N_LEVELS
] = { 0x938000, 3,
RMH_SSIZE_FIXED
, 0 },
90
[
CMD_CANCEL_R_BUFFERS
] = { 0x948000, 4,
RMH_SSIZE_FIXED
, 0 },
91
[
CMD_NOTIFY_END_OF_BUFFER
] = { 0x950000, 1,
RMH_SSIZE_FIXED
, 0 },
92
[
CMD_GET_STREAM_VU_METER
] = { 0x95A000, 2,
RMH_SSIZE_ARG
, 0 },
93
};
94
100
void
vx_init_rmh
(
struct
vx_rmh
*rmh,
unsigned
int
cmd
)
101
{
102
if
(
snd_BUG_ON
(cmd >=
CMD_LAST_INDEX
))
103
return
;
104
rmh->
LgCmd
= vx_dsp_cmds[
cmd
].
length
;
105
rmh->
LgStat
= vx_dsp_cmds[
cmd
].
st_length
;
106
rmh->
DspStat
= vx_dsp_cmds[
cmd
].
st_type
;
107
rmh->
Cmd
[0] = vx_dsp_cmds[
cmd
].
opcode
;
108
}
109
Generated on Thu Jan 10 2013 15:04:20 for Linux Kernel by
1.8.2