Unverified Commit 8baa3b5a authored by Mark Brown's avatar Mark Brown
Browse files

Merge series "ASoC: add snd_compress_ops and replace" from Kuninori Morimoto...

Merge series "ASoC: add snd_compress_ops and replace" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

Hi Mark

Current snd_soc_component_driver has compr_ops,
but it is created for ALSA, not for ALSA SoC.
This means it doesn't know the callback is for which component,
thus, each callback needs to get component via lookup function.

It is not good design, and will not work in the future,
because ASoC can have multipul same name component which
current lookup function can't handle.

This v2 patch-set adds new snd_compress_ops and call
callbacks with component.
v1 is here

Link: https://lore.kernel.org/alsa-devel/87blnqpuqp.wl-kuninori.morimoto.gx@renesas.com/

Kuninori Morimoto (8):
  ASoC: soc-compress: add snd_compress_ops
  ASoC: codec: wm_adsp: use snd_compress_ops
  ASoC: uniphier: use snd_compress_ops
  ASoC: qcom: q6sp6: use snd_compress_ops
  ASoC: intel: atom: use snd_compress_ops
  ASoC: sof: use snd_compress_ops
  ASoC: sprd: use snd_compress_ops
  ASoC: soc-compress: remove snd_compr_ops

 include/sound/soc-component.h                 | 40 ++++++++-
 sound/soc/codecs/cs47l15.c                    |  9 +-
 sound/soc/codecs/cs47l24.c                    |  8 +-
 sound/soc/codecs/cs47l35.c                    |  9 +-
 sound/soc/codecs/cs47l85.c                    |  9 +-
 sound/soc/codecs/cs47l90.c                    |  9 +-
 sound/soc/codecs/cs47l92.c                    |  9 +-
 sound/soc/codecs/wm5102.c                     |  9 +-
 sound/soc/codecs/wm5110.c                     |  8 +-
 sound/soc/codecs/wm_adsp.c                    | 18 ++--
 sound/soc/codecs/wm_adsp.h                    | 18 ++--
 .../intel/atom/sst-mfld-platform-compress.c   | 43 +++++----
 sound/soc/intel/atom/sst-mfld-platform-pcm.c  |  2 +-
 sound/soc/intel/atom/sst-mfld-platform.h      |  2 +-
 sound/soc/qcom/qdsp6/q6asm-dai.c              | 51 ++++++-----
 sound/soc/soc-compress.c                      | 89 ++++++++++---------
 sound/soc/sof/compress.c                      |  7 +-
 sound/soc/sof/compress.h                      |  7 +-
 sound/soc/sof/pcm.c                           |  4 +-
 sound/soc/sof/sof-priv.h                      |  2 +-
 sound/soc/sprd/sprd-pcm-compress.c            | 49 +++++-----
 sound/soc/sprd/sprd-pcm-dma.c                 |  2 +-
 sound/soc/sprd/sprd-pcm-dma.h                 |  2 +-
 sound/soc/uniphier/aio-compress.c             | 45 ++++++----
 sound/soc/uniphier/aio-dma.c                  |  2 +-
 sound/soc/uniphier/aio.h                      |  2 +-
 26 files changed, 265 insertions(+), 190 deletions(-)

--
2.17.1
parents 52e8a94b e7cbe528
Loading
Loading
Loading
Loading
+39 −1
Original line number Diff line number Diff line
@@ -25,6 +25,44 @@
	     order++)

/* component interface */
struct snd_compress_ops {
	int (*open)(struct snd_soc_component *component,
		    struct snd_compr_stream *stream);
	int (*free)(struct snd_soc_component *component,
		    struct snd_compr_stream *stream);
	int (*set_params)(struct snd_soc_component *component,
			  struct snd_compr_stream *stream,
			  struct snd_compr_params *params);
	int (*get_params)(struct snd_soc_component *component,
			  struct snd_compr_stream *stream,
			  struct snd_codec *params);
	int (*set_metadata)(struct snd_soc_component *component,
			    struct snd_compr_stream *stream,
			    struct snd_compr_metadata *metadata);
	int (*get_metadata)(struct snd_soc_component *component,
			    struct snd_compr_stream *stream,
			    struct snd_compr_metadata *metadata);
	int (*trigger)(struct snd_soc_component *component,
		       struct snd_compr_stream *stream, int cmd);
	int (*pointer)(struct snd_soc_component *component,
		       struct snd_compr_stream *stream,
		       struct snd_compr_tstamp *tstamp);
	int (*copy)(struct snd_soc_component *component,
		    struct snd_compr_stream *stream, char __user *buf,
		    size_t count);
	int (*mmap)(struct snd_soc_component *component,
		    struct snd_compr_stream *stream,
		    struct vm_area_struct *vma);
	int (*ack)(struct snd_soc_component *component,
		   struct snd_compr_stream *stream, size_t bytes);
	int (*get_caps)(struct snd_soc_component *component,
			struct snd_compr_stream *stream,
			struct snd_compr_caps *caps);
	int (*get_codec_caps)(struct snd_soc_component *component,
			      struct snd_compr_stream *stream,
			      struct snd_compr_codec_caps *codec);
};

struct snd_soc_component_driver {
	const char *name;

@@ -108,7 +146,7 @@ struct snd_soc_component_driver {
		    struct snd_pcm_substream *substream,
		    struct vm_area_struct *vma);

	const struct snd_compr_ops *compr_ops;
	const struct snd_compress_ops *compress_ops;

	/* probe ordering - for components with runtime dependencies */
	int probe_order;
+4 −5
Original line number Diff line number Diff line
@@ -1229,11 +1229,10 @@ static struct snd_soc_dai_driver cs47l15_dai[] = {
	},
};

static int cs47l15_open(struct snd_compr_stream *stream)
static int cs47l15_open(struct snd_soc_component *component,
			struct snd_compr_stream *stream)
{
	struct snd_soc_pcm_runtime *rtd = stream->private_data;
	struct snd_soc_component *component =
		snd_soc_rtdcom_lookup(rtd, DRV_NAME);
	struct cs47l15 *cs47l15 = snd_soc_component_get_drvdata(component);
	struct madera_priv *priv = &cs47l15->core;
	struct madera *madera = priv->madera;
@@ -1329,7 +1328,7 @@ static unsigned int cs47l15_digital_vu[] = {
	MADERA_DAC_DIGITAL_VOLUME_5R,
};

static const struct snd_compr_ops cs47l15_compr_ops = {
static const struct snd_compress_ops cs47l15_compress_ops = {
	.open = &cs47l15_open,
	.free = &wm_adsp_compr_free,
	.set_params = &wm_adsp_compr_set_params,
@@ -1345,7 +1344,7 @@ static const struct snd_soc_component_driver soc_component_dev_cs47l15 = {
	.set_sysclk		= &madera_set_sysclk,
	.set_pll		= &cs47l15_set_fll,
	.name			= DRV_NAME,
	.compr_ops		= &cs47l15_compr_ops,
	.compress_ops		= &cs47l15_compress_ops,
	.controls		= cs47l15_snd_controls,
	.num_controls		= ARRAY_SIZE(cs47l15_snd_controls),
	.dapm_widgets		= cs47l15_dapm_widgets,
+4 −4
Original line number Diff line number Diff line
@@ -1068,10 +1068,10 @@ static struct snd_soc_dai_driver cs47l24_dai[] = {
	},
};

static int cs47l24_open(struct snd_compr_stream *stream)
static int cs47l24_open(struct snd_soc_component *component,
			struct snd_compr_stream *stream)
{
	struct snd_soc_pcm_runtime *rtd = stream->private_data;
	struct snd_soc_component *component = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
	struct cs47l24_priv *priv = snd_soc_component_get_drvdata(component);
	struct arizona *arizona = priv->core.arizona;
	int n_adsp;
@@ -1178,7 +1178,7 @@ static unsigned int cs47l24_digital_vu[] = {
	ARIZONA_DAC_DIGITAL_VOLUME_4L,
};

static struct snd_compr_ops cs47l24_compr_ops = {
static struct snd_compress_ops cs47l24_compress_ops = {
	.open		= cs47l24_open,
	.free		= wm_adsp_compr_free,
	.set_params	= wm_adsp_compr_set_params,
@@ -1194,7 +1194,7 @@ static const struct snd_soc_component_driver soc_component_dev_cs47l24 = {
	.set_sysclk		= arizona_set_sysclk,
	.set_pll		= cs47l24_set_fll,
	.name			= DRV_NAME,
	.compr_ops		= &cs47l24_compr_ops,
	.compress_ops		= &cs47l24_compress_ops,
	.controls		= cs47l24_snd_controls,
	.num_controls		= ARRAY_SIZE(cs47l24_snd_controls),
	.dapm_widgets		= cs47l24_dapm_widgets,
+4 −5
Original line number Diff line number Diff line
@@ -1504,11 +1504,10 @@ static struct snd_soc_dai_driver cs47l35_dai[] = {
	},
};

static int cs47l35_open(struct snd_compr_stream *stream)
static int cs47l35_open(struct snd_soc_component *component,
			struct snd_compr_stream *stream)
{
	struct snd_soc_pcm_runtime *rtd = stream->private_data;
	struct snd_soc_component *component =
		snd_soc_rtdcom_lookup(rtd, DRV_NAME);
	struct cs47l35 *cs47l35 = snd_soc_component_get_drvdata(component);
	struct madera_priv *priv = &cs47l35->core;
	struct madera *madera = priv->madera;
@@ -1622,7 +1621,7 @@ static unsigned int cs47l35_digital_vu[] = {
	MADERA_DAC_DIGITAL_VOLUME_5R,
};

static const struct snd_compr_ops cs47l35_compr_ops = {
static const struct snd_compress_ops cs47l35_compress_ops = {
	.open = &cs47l35_open,
	.free = &wm_adsp_compr_free,
	.set_params = &wm_adsp_compr_set_params,
@@ -1638,7 +1637,7 @@ static const struct snd_soc_component_driver soc_component_dev_cs47l35 = {
	.set_sysclk		= &madera_set_sysclk,
	.set_pll		= &cs47l35_set_fll,
	.name			= DRV_NAME,
	.compr_ops		= &cs47l35_compr_ops,
	.compress_ops		= &cs47l35_compress_ops,
	.controls		= cs47l35_snd_controls,
	.num_controls		= ARRAY_SIZE(cs47l35_snd_controls),
	.dapm_widgets		= cs47l35_dapm_widgets,
+4 −5
Original line number Diff line number Diff line
@@ -2447,11 +2447,10 @@ static struct snd_soc_dai_driver cs47l85_dai[] = {
	},
};

static int cs47l85_open(struct snd_compr_stream *stream)
static int cs47l85_open(struct snd_soc_component *component,
			struct snd_compr_stream *stream)
{
	struct snd_soc_pcm_runtime *rtd = stream->private_data;
	struct snd_soc_component *component =
		snd_soc_rtdcom_lookup(rtd, DRV_NAME);
	struct cs47l85 *cs47l85 = snd_soc_component_get_drvdata(component);
	struct madera_priv *priv = &cs47l85->core;
	struct madera *madera = priv->madera;
@@ -2566,7 +2565,7 @@ static const unsigned int cs47l85_digital_vu[] = {
	MADERA_DAC_DIGITAL_VOLUME_6R,
};

static const struct snd_compr_ops cs47l85_compr_ops = {
static const struct snd_compress_ops cs47l85_compress_ops = {
	.open = &cs47l85_open,
	.free = &wm_adsp_compr_free,
	.set_params = &wm_adsp_compr_set_params,
@@ -2582,7 +2581,7 @@ static const struct snd_soc_component_driver soc_component_dev_cs47l85 = {
	.set_sysclk		= &madera_set_sysclk,
	.set_pll		= &cs47l85_set_fll,
	.name			= DRV_NAME,
	.compr_ops		= &cs47l85_compr_ops,
	.compress_ops		= &cs47l85_compress_ops,
	.controls		= cs47l85_snd_controls,
	.num_controls		= ARRAY_SIZE(cs47l85_snd_controls),
	.dapm_widgets		= cs47l85_dapm_widgets,
Loading