OSDN Git Service

ASoC: rockchip: i2s: Support mono capture
authorMatthias Kaehlcke <mka@chromium.org>
Fri, 5 Jan 2018 22:12:42 +0000 (14:12 -0800)
committerMark Brown <broonie@kernel.org>
Mon, 8 Jan 2018 11:28:33 +0000 (11:28 +0000)
The Rockchip I2S controller only allows to configure even numbers of
capture channels. It is still possible to capture monophonic audio by
using dual-channel mode and ignoring the 'data' from the second
channel.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/rockchip/rockchip_i2s.c

index 908211e..cc22ab3 100644 (file)
@@ -328,6 +328,7 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
                val |= I2S_CHN_4;
                break;
        case 2:
+       case 1:
                val |= I2S_CHN_2;
                break;
        default:
@@ -460,7 +461,7 @@ static struct snd_soc_dai_driver rockchip_i2s_dai = {
        },
        .capture = {
                .stream_name = "Capture",
-               .channels_min = 2,
+               .channels_min = 1,
                .channels_max = 2,
                .rates = SNDRV_PCM_RATE_8000_192000,
                .formats = (SNDRV_PCM_FMTBIT_S8 |
@@ -654,7 +655,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
        }
 
        if (!of_property_read_u32(node, "rockchip,capture-channels", &val)) {
-               if (val >= 2 && val <= 8)
+               if (val >= 1 && val <= 8)
                        soc_dai->capture.channels_max = val;
        }