Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
ac6d7c48
Commit
ac6d7c48
authored
Jan 20, 2014
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/compress' into asoc-next
parents
31824e65
2a99ef0f
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
335 additions
and
18 deletions
+335
-18
include/sound/soc-dpcm.h
include/sound/soc-dpcm.h
+22
-0
include/sound/soc.h
include/sound/soc.h
+1
-0
sound/soc/soc-compress.c
sound/soc/soc-compress.c
+300
-1
sound/soc/soc-pcm.c
sound/soc/soc-pcm.c
+12
-17
No files found.
include/sound/soc-dpcm.h
View file @
ac6d7c48
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
#ifndef __LINUX_SND_SOC_DPCM_H
#ifndef __LINUX_SND_SOC_DPCM_H
#define __LINUX_SND_SOC_DPCM_H
#define __LINUX_SND_SOC_DPCM_H
#include <linux/slab.h>
#include <linux/list.h>
#include <linux/list.h>
#include <sound/pcm.h>
#include <sound/pcm.h>
...
@@ -135,4 +136,25 @@ int soc_dpcm_be_digital_mute(struct snd_soc_pcm_runtime *fe, int mute);
...
@@ -135,4 +136,25 @@ int soc_dpcm_be_digital_mute(struct snd_soc_pcm_runtime *fe, int mute);
int
soc_dpcm_debugfs_add
(
struct
snd_soc_pcm_runtime
*
rtd
);
int
soc_dpcm_debugfs_add
(
struct
snd_soc_pcm_runtime
*
rtd
);
int
soc_dpcm_runtime_update
(
struct
snd_soc_card
*
);
int
soc_dpcm_runtime_update
(
struct
snd_soc_card
*
);
int
dpcm_path_get
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
struct
snd_soc_dapm_widget_list
**
list_
);
int
dpcm_process_paths
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
struct
snd_soc_dapm_widget_list
**
list
,
int
new
);
int
dpcm_be_dai_startup
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
);
int
dpcm_be_dai_shutdown
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
);
void
dpcm_be_disconnect
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
);
void
dpcm_clear_pending_state
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
);
int
dpcm_be_dai_hw_free
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
);
int
dpcm_be_dai_hw_params
(
struct
snd_soc_pcm_runtime
*
fe
,
int
tream
);
int
dpcm_be_dai_trigger
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
int
cmd
);
int
dpcm_be_dai_prepare
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
);
int
dpcm_dapm_stream_event
(
struct
snd_soc_pcm_runtime
*
fe
,
int
dir
,
int
event
);
static
inline
void
dpcm_path_put
(
struct
snd_soc_dapm_widget_list
**
list
)
{
kfree
(
*
list
);
}
#endif
#endif
include/sound/soc.h
View file @
ac6d7c48
...
@@ -1042,6 +1042,7 @@ struct snd_soc_pcm_runtime {
...
@@ -1042,6 +1042,7 @@ struct snd_soc_pcm_runtime {
/* Dynamic PCM BE runtime data */
/* Dynamic PCM BE runtime data */
struct
snd_soc_dpcm_runtime
dpcm
[
2
];
struct
snd_soc_dpcm_runtime
dpcm
[
2
];
int
fe_compr
;
long
pmdown_time
;
long
pmdown_time
;
unsigned
char
pop_wait
:
1
;
unsigned
char
pop_wait
:
1
;
...
...
sound/soc/soc-compress.c
View file @
ac6d7c48
This diff is collapsed.
Click to expand it.
sound/soc/soc-pcm.c
View file @
ac6d7c48
...
@@ -58,7 +58,7 @@ int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
...
@@ -58,7 +58,7 @@ int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
EXPORT_SYMBOL_GPL
(
snd_soc_set_runtime_hwparams
);
EXPORT_SYMBOL_GPL
(
snd_soc_set_runtime_hwparams
);
/* DPCM stream event, send event to FE and all active BEs. */
/* DPCM stream event, send event to FE and all active BEs. */
static
int
dpcm_dapm_stream_event
(
struct
snd_soc_pcm_runtime
*
fe
,
int
dir
,
int
dpcm_dapm_stream_event
(
struct
snd_soc_pcm_runtime
*
fe
,
int
dir
,
int
event
)
int
event
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
...
@@ -885,7 +885,7 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *fe,
...
@@ -885,7 +885,7 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *fe,
}
}
/* disconnect a BE and FE */
/* disconnect a BE and FE */
static
void
dpcm_be_disconnect
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
void
dpcm_be_disconnect
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
,
*
d
;
struct
snd_soc_dpcm
*
dpcm
,
*
d
;
...
@@ -981,7 +981,7 @@ static int widget_in_list(struct snd_soc_dapm_widget_list *list,
...
@@ -981,7 +981,7 @@ static int widget_in_list(struct snd_soc_dapm_widget_list *list,
return
0
;
return
0
;
}
}
static
int
dpcm_path_get
(
struct
snd_soc_pcm_runtime
*
fe
,
int
dpcm_path_get
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
struct
snd_soc_dapm_widget_list
**
list_
)
int
stream
,
struct
snd_soc_dapm_widget_list
**
list_
)
{
{
struct
snd_soc_dai
*
cpu_dai
=
fe
->
cpu_dai
;
struct
snd_soc_dai
*
cpu_dai
=
fe
->
cpu_dai
;
...
@@ -1003,11 +1003,6 @@ static int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
...
@@ -1003,11 +1003,6 @@ static int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
return
paths
;
return
paths
;
}
}
static
inline
void
dpcm_path_put
(
struct
snd_soc_dapm_widget_list
**
list
)
{
kfree
(
*
list
);
}
static
int
dpcm_prune_paths
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
static
int
dpcm_prune_paths
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
struct
snd_soc_dapm_widget_list
**
list_
)
struct
snd_soc_dapm_widget_list
**
list_
)
{
{
...
@@ -1077,7 +1072,7 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
...
@@ -1077,7 +1072,7 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
continue
;
continue
;
/* don't connect if FE is not running */
/* don't connect if FE is not running */
if
(
!
fe
->
dpcm
[
stream
].
runtime
)
if
(
!
fe
->
dpcm
[
stream
].
runtime
&&
!
fe
->
fe_compr
)
continue
;
continue
;
/* newly connected FE and BE */
/* newly connected FE and BE */
...
@@ -1102,7 +1097,7 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
...
@@ -1102,7 +1097,7 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
* Find the corresponding BE DAIs that source or sink audio to this
* Find the corresponding BE DAIs that source or sink audio to this
* FE substream.
* FE substream.
*/
*/
static
int
dpcm_process_paths
(
struct
snd_soc_pcm_runtime
*
fe
,
int
dpcm_process_paths
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
struct
snd_soc_dapm_widget_list
**
list
,
int
new
)
int
stream
,
struct
snd_soc_dapm_widget_list
**
list
,
int
new
)
{
{
if
(
new
)
if
(
new
)
...
@@ -1111,7 +1106,7 @@ static int dpcm_process_paths(struct snd_soc_pcm_runtime *fe,
...
@@ -1111,7 +1106,7 @@ static int dpcm_process_paths(struct snd_soc_pcm_runtime *fe,
return
dpcm_prune_paths
(
fe
,
stream
,
list
);
return
dpcm_prune_paths
(
fe
,
stream
,
list
);
}
}
static
void
dpcm_clear_pending_state
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
void
dpcm_clear_pending_state
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
...
@@ -1149,7 +1144,7 @@ static void dpcm_be_dai_startup_unwind(struct snd_soc_pcm_runtime *fe,
...
@@ -1149,7 +1144,7 @@ static void dpcm_be_dai_startup_unwind(struct snd_soc_pcm_runtime *fe,
}
}
}
}
static
int
dpcm_be_dai_startup
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
int
dpcm_be_dai_startup
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
int
err
,
count
=
0
;
int
err
,
count
=
0
;
...
@@ -1301,7 +1296,7 @@ static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)
...
@@ -1301,7 +1296,7 @@ static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)
return
ret
;
return
ret
;
}
}
static
int
dpcm_be_dai_shutdown
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
int
dpcm_be_dai_shutdown
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
...
@@ -1362,7 +1357,7 @@ static int dpcm_fe_dai_shutdown(struct snd_pcm_substream *substream)
...
@@ -1362,7 +1357,7 @@ static int dpcm_fe_dai_shutdown(struct snd_pcm_substream *substream)
return
0
;
return
0
;
}
}
static
int
dpcm_be_dai_hw_free
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
int
dpcm_be_dai_hw_free
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
...
@@ -1427,7 +1422,7 @@ static int dpcm_fe_dai_hw_free(struct snd_pcm_substream *substream)
...
@@ -1427,7 +1422,7 @@ static int dpcm_fe_dai_hw_free(struct snd_pcm_substream *substream)
return
0
;
return
0
;
}
}
static
int
dpcm_be_dai_hw_params
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
int
dpcm_be_dai_hw_params
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
int
ret
;
int
ret
;
...
@@ -1557,7 +1552,7 @@ static int dpcm_do_trigger(struct snd_soc_dpcm *dpcm,
...
@@ -1557,7 +1552,7 @@ static int dpcm_do_trigger(struct snd_soc_dpcm *dpcm,
return
ret
;
return
ret
;
}
}
static
int
dpcm_be_dai_trigger
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
int
dpcm_be_dai_trigger
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
,
int
cmd
)
int
cmd
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
...
@@ -1725,7 +1720,7 @@ static int dpcm_fe_dai_trigger(struct snd_pcm_substream *substream, int cmd)
...
@@ -1725,7 +1720,7 @@ static int dpcm_fe_dai_trigger(struct snd_pcm_substream *substream, int cmd)
return
ret
;
return
ret
;
}
}
static
int
dpcm_be_dai_prepare
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
int
dpcm_be_dai_prepare
(
struct
snd_soc_pcm_runtime
*
fe
,
int
stream
)
{
{
struct
snd_soc_dpcm
*
dpcm
;
struct
snd_soc_dpcm
*
dpcm
;
int
ret
=
0
;
int
ret
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment