lkml.org 
[lkml]   [2016]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 26/59] ASoC: compress: Fix compress device direction check
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Vinod Koul <vinod.koul@intel.com>

    commit a1068045883ed4a18363a4ebad0c3d55e473b716 upstream.

    The detection of direction for compress was only taking into account codec
    capabilities and not CPU ones. Fix this by checking the CPU side capabilities
    as well

    Tested-by: Ashish Panwar <ashish.panwar@intel.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    sound/soc/soc-compress.c | 23 ++++++++++++++++++++---
    1 file changed, 20 insertions(+), 3 deletions(-)

    --- a/sound/soc/soc-compress.c
    +++ b/sound/soc/soc-compress.c
    @@ -665,17 +665,34 @@ int soc_new_compress(struct snd_soc_pcm_
    struct snd_pcm *be_pcm;
    char new_name[64];
    int ret = 0, direction = 0;
    + int playback = 0, capture = 0;

    /* check client and interface hw capabilities */
    snprintf(new_name, sizeof(new_name), "%s %s-%d",
    rtd->dai_link->stream_name, codec_dai->name, num);

    if (codec_dai->driver->playback.channels_min)
    + playback = 1;
    + if (codec_dai->driver->capture.channels_min)
    + capture = 1;
    +
    + capture = capture && cpu_dai->driver->capture.channels_min;
    + playback = playback && cpu_dai->driver->playback.channels_min;
    +
    + /*
    + * Compress devices are unidirectional so only one of the directions
    + * should be set, check for that (xor)
    + */
    + if (playback + capture != 1) {
    + dev_err(rtd->card->dev, "Invalid direction for compress P %d, C %d\n",
    + playback, capture);
    + return -EINVAL;
    + }
    +
    + if(playback)
    direction = SND_COMPRESS_PLAYBACK;
    - else if (codec_dai->driver->capture.channels_min)
    - direction = SND_COMPRESS_CAPTURE;
    else
    - return -EINVAL;
    + direction = SND_COMPRESS_CAPTURE;

    compr = kzalloc(sizeof(*compr), GFP_KERNEL);
    if (compr == NULL) {

    \
     
     \ /
      Last update: 2016-01-27 20:41    [W:3.238 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site