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
include
sound
soc-dpcm.h
Go to the documentation of this file.
1
/*
2
* linux/sound/soc-dpcm.h -- ALSA SoC Dynamic PCM Support
3
*
4
* Author: Liam Girdwood <
[email protected]
>
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation.
9
*/
10
11
#ifndef __LINUX_SND_SOC_DPCM_H
12
#define __LINUX_SND_SOC_DPCM_H
13
14
#include <linux/list.h>
15
#include <
sound/pcm.h
>
16
17
struct
snd_soc_pcm_runtime
;
18
19
/*
20
* Types of runtime_update to perform. e.g. originated from FE PCM ops
21
* or audio route changes triggered by muxes/mixers.
22
*/
23
enum
snd_soc_dpcm_update
{
24
SND_SOC_DPCM_UPDATE_NO
= 0,
25
SND_SOC_DPCM_UPDATE_BE
,
26
SND_SOC_DPCM_UPDATE_FE
,
27
};
28
29
/*
30
* Dynamic PCM Frontend -> Backend link management states.
31
*/
32
enum
snd_soc_dpcm_link_state
{
33
SND_SOC_DPCM_LINK_STATE_NEW
= 0,
/* newly created link */
34
SND_SOC_DPCM_LINK_STATE_FREE
,
/* link to be dismantled */
35
};
36
37
/*
38
* Dynamic PCM Frontend -> Backend link PCM states.
39
*/
40
enum
snd_soc_dpcm_state
{
41
SND_SOC_DPCM_STATE_NEW
= 0,
42
SND_SOC_DPCM_STATE_OPEN
,
43
SND_SOC_DPCM_STATE_HW_PARAMS
,
44
SND_SOC_DPCM_STATE_PREPARE
,
45
SND_SOC_DPCM_STATE_START
,
46
SND_SOC_DPCM_STATE_STOP
,
47
SND_SOC_DPCM_STATE_PAUSED
,
48
SND_SOC_DPCM_STATE_SUSPEND
,
49
SND_SOC_DPCM_STATE_HW_FREE
,
50
SND_SOC_DPCM_STATE_CLOSE
,
51
};
52
53
/*
54
* Dynamic PCM trigger ordering. Triggering flexibility is required as some
55
* DSPs require triggering before/after their CPU platform and DAIs.
56
*
57
* i.e. some clients may want to manually order this call in their PCM
58
* trigger() whilst others will just use the regular core ordering.
59
*/
60
enum
snd_soc_dpcm_trigger
{
61
SND_SOC_DPCM_TRIGGER_PRE
= 0,
62
SND_SOC_DPCM_TRIGGER_POST
,
63
SND_SOC_DPCM_TRIGGER_BESPOKE
,
64
};
65
66
/*
67
* Dynamic PCM link
68
* This links together a FE and BE DAI at runtime and stores the link
69
* state information and the hw_params configuration.
70
*/
71
struct
snd_soc_dpcm
{
72
/* FE and BE DAIs*/
73
struct
snd_soc_pcm_runtime
*
be
;
74
struct
snd_soc_pcm_runtime
*
fe
;
75
76
/* link state */
77
enum
snd_soc_dpcm_link_state
state
;
78
79
/* list of BE and FE for this DPCM link */
80
struct
list_head
list_be
;
81
struct
list_head
list_fe
;
82
83
/* hw params for this link - may be different for each link */
84
struct
snd_pcm_hw_params
hw_params
;
85
#ifdef CONFIG_DEBUG_FS
86
struct
dentry
*debugfs_state;
87
#endif
88
};
89
90
/*
91
* Dynamic PCM runtime data.
92
*/
93
struct
snd_soc_dpcm_runtime
{
94
struct
list_head
be_clients
;
95
struct
list_head
fe_clients
;
96
97
int
users
;
98
struct
snd_pcm_runtime
*
runtime
;
99
struct
snd_pcm_hw_params
hw_params
;
100
101
/* state and update */
102
enum
snd_soc_dpcm_update
runtime_update
;
103
enum
snd_soc_dpcm_state
state
;
104
};
105
106
/* can this BE stop and free */
107
int
snd_soc_dpcm_can_be_free_stop
(
struct
snd_soc_pcm_runtime
*fe,
108
struct
snd_soc_pcm_runtime
*be,
int
stream);
109
110
/* can this BE perform a hw_params() */
111
int
snd_soc_dpcm_can_be_params
(
struct
snd_soc_pcm_runtime
*fe,
112
struct
snd_soc_pcm_runtime
*be,
int
stream);
113
114
/* is the current PCM operation for this FE ? */
115
int
snd_soc_dpcm_fe_can_update
(
struct
snd_soc_pcm_runtime
*fe,
int
stream);
116
117
/* is the current PCM operation for this BE ? */
118
int
snd_soc_dpcm_be_can_update
(
struct
snd_soc_pcm_runtime
*fe,
119
struct
snd_soc_pcm_runtime
*be,
int
stream);
120
121
/* get the substream for this BE */
122
struct
snd_pcm_substream
*
123
snd_soc_dpcm_get_substream
(
struct
snd_soc_pcm_runtime
*be,
int
stream
);
124
125
/* get the BE runtime state */
126
enum
snd_soc_dpcm_state
127
snd_soc_dpcm_be_get_state
(
struct
snd_soc_pcm_runtime
*be,
int
stream
);
128
129
/* set the BE runtime state */
130
void
snd_soc_dpcm_be_set_state
(
struct
snd_soc_pcm_runtime
*be,
int
stream
,
131
enum
snd_soc_dpcm_state
state
);
132
133
/* internal use only */
134
int
soc_dpcm_be_digital_mute
(
struct
snd_soc_pcm_runtime
*fe,
int
mute
);
135
int
soc_dpcm_debugfs_add
(
struct
snd_soc_pcm_runtime
*rtd);
136
int
soc_dpcm_runtime_update
(
struct
snd_soc_dapm_widget
*);
137
138
#endif
Generated on Thu Jan 10 2013 14:53:37 for Linux Kernel by
1.8.2