Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63b5522f authored by Surendar karka's avatar Surendar karka
Browse files

ASoC: codecs: add 32bit capture support in codec



Add 32 bit format support and set I2S mode based
on format in Tx path.

CRs-Fixed: 2129947
Change-Id: I017bc8764368cc20ce691598d793167641a48e7f
Signed-off-by: default avatarSurendar karka <sukark@codeaurora.org>
parent b45ca68b
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -49,7 +49,8 @@
			SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000)
#define MSM8X16_WCD_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
		SNDRV_PCM_FMTBIT_S24_LE |\
		SNDRV_PCM_FMTBIT_S24_3LE)
		SNDRV_PCM_FMTBIT_S24_3LE |\
		SNDRV_PCM_FMTBIT_S32_LE)

#define NUM_INTERPOLATORS	3
#define BITS_PER_REG		8
@@ -4745,13 +4746,24 @@ static int msm8x16_wcd_hw_params(struct snd_pcm_substream *substream,
	}
	switch (params_format(params)) {
	case SNDRV_PCM_FORMAT_S16_LE:
		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
			snd_soc_update_bits(dai->codec,
				MSM8X16_WCD_A_CDC_CLK_RX_I2S_CTL, 0x20, 0x20);
		} else if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
			snd_soc_update_bits(dai->codec,
				MSM8X16_WCD_A_CDC_CLK_TX_I2S_CTL, 0x20, 0x20);
		}
		break;
	case SNDRV_PCM_FORMAT_S24_LE:
	case SNDRV_PCM_FORMAT_S24_3LE:
	case SNDRV_PCM_FORMAT_S32_LE:
		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
			snd_soc_update_bits(dai->codec,
				MSM8X16_WCD_A_CDC_CLK_RX_I2S_CTL, 0x20, 0x00);
		} else if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
			snd_soc_update_bits(dai->codec,
				MSM8X16_WCD_A_CDC_CLK_TX_I2S_CTL, 0x20, 0x00);
		}
		break;
	default:
		dev_err(dai->codec->dev, "%s: wrong format selected\n",