Skip to content

Commit

Permalink
ASoC: DPCM: make some DPCM API calls non static for compressed usage
Browse files Browse the repository at this point in the history
The ASoC compressed code needs to call the internal DPCM APIs in order to
dynamically route compressed data to different DAIs.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Liam Girdwood authored and Mark Brown committed Jan 17, 2014
1 parent 6ce4eac commit 2360702
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 17 deletions.
22 changes: 22 additions & 0 deletions include/sound/soc-dpcm.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#ifndef __LINUX_SND_SOC_DPCM_H
#define __LINUX_SND_SOC_DPCM_H

#include <linux/slab.h>
#include <linux/list.h>
#include <sound/pcm.h>

Expand Down Expand Up @@ -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_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
29 changes: 12 additions & 17 deletions sound/soc/soc-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
EXPORT_SYMBOL_GPL(snd_soc_set_runtime_hwparams);

/* 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)
{
struct snd_soc_dpcm *dpcm;
Expand Down Expand Up @@ -773,7 +773,7 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *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;

Expand Down Expand Up @@ -869,7 +869,7 @@ static int widget_in_list(struct snd_soc_dapm_widget_list *list,
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_)
{
struct snd_soc_dai *cpu_dai = fe->cpu_dai;
Expand All @@ -891,11 +891,6 @@ static int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
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,
struct snd_soc_dapm_widget_list **list_)
{
Expand Down Expand Up @@ -965,7 +960,7 @@ static int dpcm_add_paths(struct snd_soc_pcm_runtime *fe, int stream,
continue;

/* don't connect if FE is not running */
if (!fe->dpcm[stream].runtime)
if (!fe->dpcm[stream].runtime && !fe->fe_compr)
continue;

/* newly connected FE and BE */
Expand All @@ -990,7 +985,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
* 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)
{
if (new)
Expand All @@ -999,7 +994,7 @@ static int dpcm_process_paths(struct snd_soc_pcm_runtime *fe,
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;

Expand Down Expand Up @@ -1037,7 +1032,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;
int err, count = 0;
Expand Down Expand Up @@ -1186,7 +1181,7 @@ static int dpcm_fe_dai_startup(struct snd_pcm_substream *fe_substream)
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;

Expand Down Expand Up @@ -1247,7 +1242,7 @@ static int dpcm_fe_dai_shutdown(struct snd_pcm_substream *substream)
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;

Expand Down Expand Up @@ -1312,7 +1307,7 @@ static int dpcm_fe_dai_hw_free(struct snd_pcm_substream *substream)
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;
int ret;
Expand Down Expand Up @@ -1442,7 +1437,7 @@ static int dpcm_do_trigger(struct snd_soc_dpcm *dpcm,
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)
{
struct snd_soc_dpcm *dpcm;
Expand Down Expand Up @@ -1610,7 +1605,7 @@ static int dpcm_fe_dai_trigger(struct snd_pcm_substream *substream, int cmd)
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;
int ret = 0;
Expand Down

0 comments on commit 2360702

Please sign in to comment.