Commit ac6d7c48 authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branch 'asoc/topic/compress' into asoc-next

parents 31824e65 2a99ef0f
...@@ -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
...@@ -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;
......
This diff is collapsed.
...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment