diff options
author | Mark Brown <broonie@linaro.org> | 2014-08-15 07:51:28 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-08-15 07:51:28 -0400 |
commit | 543c675482bcf1e7b9f85bb1589314f38f60c520 (patch) | |
tree | 904f425393ac99539827d3164d2b0f78ac1607c5 /sound/soc/soc-compress.c | |
parent | 2fa4a285ddfd39cfa711da3f5e898ec2ce80ef87 (diff) | |
parent | ae34a78c430c37c06404f032fb04e51315204281 (diff) |
Merge tag 'asoc-v3.17' into asoc-linus
ASoC: Updates for v3.17
This has been a pretty exciting release in terms of the framework, we've
finally got support for multiple CODECs attached to a single DAI link
which has been something there's been interest in as long as I've been
working on ASoC. A big thanks to Benoit and Misael for their work on
this.
Otherwise it's been a fairly standard release for development, including
more componentisation work from Lars-Peter and a good selection of both
CODEC and CPU drivers.
- Support for multiple CODECs attached to a single DAI, enabling
systems with for example multiple DAC/speaker drivers on a single
link, contributed by Benoit Cousson based on work from Misael Lopez
Cruz.
- Support for byte controls larger than 256 bytes based on the use of
TLVs contributed by Omair Mohammed Abdullah.
- More componentisation work from Lars-Peter Clausen.
- The remainder of the conversions of CODEC drivers to params_width()
- Drivers for Cirrus Logic CS4265, Freescale i.MX ASRC blocks, Realtek
RT286 and RT5670, Rockchip RK3xxx I2S controllers and Texas Instruments
TAS2552.
- Lots of updates and fixes, especially to the DaVinci, Intel,
Freescale, Realtek, and rcar drivers.
# gpg: Signature made Mon 04 Aug 2014 17:13:21 BST using RSA key ID 7EA229BD
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
# gpg: aka "Mark Brown <broonie@debian.org>"
# gpg: aka "Mark Brown <broonie@kernel.org>"
# gpg: aka "Mark Brown <broonie@tardis.ed.ac.uk>"
# gpg: aka "Mark Brown <broonie@linaro.org>"
# gpg: aka "Mark Brown <Mark.Brown@linaro.org>"
Diffstat (limited to 'sound/soc/soc-compress.c')
-rw-r--r-- | sound/soc/soc-compress.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c index 10f7f1da2aca..27c06acce205 100644 --- a/sound/soc/soc-compress.c +++ b/sound/soc/soc-compress.c | |||
@@ -37,7 +37,8 @@ static int soc_compr_open(struct snd_compr_stream *cstream) | |||
37 | if (platform->driver->compr_ops && platform->driver->compr_ops->open) { | 37 | if (platform->driver->compr_ops && platform->driver->compr_ops->open) { |
38 | ret = platform->driver->compr_ops->open(cstream); | 38 | ret = platform->driver->compr_ops->open(cstream); |
39 | if (ret < 0) { | 39 | if (ret < 0) { |
40 | pr_err("compress asoc: can't open platform %s\n", platform->name); | 40 | pr_err("compress asoc: can't open platform %s\n", |
41 | platform->component.name); | ||
41 | goto out; | 42 | goto out; |
42 | } | 43 | } |
43 | } | 44 | } |
@@ -84,7 +85,8 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream) | |||
84 | if (platform->driver->compr_ops && platform->driver->compr_ops->open) { | 85 | if (platform->driver->compr_ops && platform->driver->compr_ops->open) { |
85 | ret = platform->driver->compr_ops->open(cstream); | 86 | ret = platform->driver->compr_ops->open(cstream); |
86 | if (ret < 0) { | 87 | if (ret < 0) { |
87 | pr_err("compress asoc: can't open platform %s\n", platform->name); | 88 | pr_err("compress asoc: can't open platform %s\n", |
89 | platform->component.name); | ||
88 | goto out; | 90 | goto out; |
89 | } | 91 | } |
90 | } | 92 | } |
@@ -627,6 +629,11 @@ int soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) | |||
627 | char new_name[64]; | 629 | char new_name[64]; |
628 | int ret = 0, direction = 0; | 630 | int ret = 0, direction = 0; |
629 | 631 | ||
632 | if (rtd->num_codecs > 1) { | ||
633 | dev_err(rtd->card->dev, "Multicodec not supported for compressed stream\n"); | ||
634 | return -EINVAL; | ||
635 | } | ||
636 | |||
630 | /* check client and interface hw capabilities */ | 637 | /* check client and interface hw capabilities */ |
631 | snprintf(new_name, sizeof(new_name), "%s %s-%d", | 638 | snprintf(new_name, sizeof(new_name), "%s %s-%d", |
632 | rtd->dai_link->stream_name, codec_dai->name, num); | 639 | rtd->dai_link->stream_name, codec_dai->name, num); |
@@ -680,7 +687,7 @@ int soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) | |||
680 | ret = snd_compress_new(rtd->card->snd_card, num, direction, compr); | 687 | ret = snd_compress_new(rtd->card->snd_card, num, direction, compr); |
681 | if (ret < 0) { | 688 | if (ret < 0) { |
682 | pr_err("compress asoc: can't create compress for codec %s\n", | 689 | pr_err("compress asoc: can't create compress for codec %s\n", |
683 | codec->name); | 690 | codec->component.name); |
684 | goto compr_err; | 691 | goto compr_err; |
685 | } | 692 | } |
686 | 693 | ||