Loading sound/soc/codecs/msm_sdw/msm_sdw_cdc.c +47 −33 Original line number Diff line number Diff line Loading @@ -471,10 +471,9 @@ static int msm_sdw_codec_enable_vi_feedback(struct snd_soc_dapm_widget *w, MSM_SDW_TX10_SPKR_PROT_PATH_CTL, 0x20, 0x20); snd_soc_update_bits(codec, MSM_SDW_TX9_SPKR_PROT_PATH_CTL, 0x0F, 0x00); MSM_SDW_TX9_SPKR_PROT_PATH_CTL, 0x0F, 0x04); snd_soc_update_bits(codec, MSM_SDW_TX10_SPKR_PROT_PATH_CTL, 0x0F, 0x00); MSM_SDW_TX10_SPKR_PROT_PATH_CTL, 0x0F, 0x04); snd_soc_update_bits(codec, MSM_SDW_TX9_SPKR_PROT_PATH_CTL, 0x10, 0x10); snd_soc_update_bits(codec, Loading @@ -497,10 +496,10 @@ static int msm_sdw_codec_enable_vi_feedback(struct snd_soc_dapm_widget *w, 0x20); snd_soc_update_bits(codec, MSM_SDW_TX11_SPKR_PROT_PATH_CTL, 0x0F, 0x00); 0x04); snd_soc_update_bits(codec, MSM_SDW_TX12_SPKR_PROT_PATH_CTL, 0x0F, 0x00); 0x04); snd_soc_update_bits(codec, MSM_SDW_TX11_SPKR_PROT_PATH_CTL, 0x10, 0x10); Loading Loading @@ -1236,7 +1235,7 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { u8 rx_clk_fs_rate, rx_fs_rate; u8 clk_fs_rate, fs_rate; dev_dbg(dai->codec->dev, "%s: dai_name = %s DAI-ID %x rate %d num_ch %d format %d\n", Loading @@ -1245,28 +1244,28 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, switch (params_rate(params)) { case 8000: rx_clk_fs_rate = 0x00; rx_fs_rate = 0x00; clk_fs_rate = 0x00; fs_rate = 0x00; break; case 16000: rx_clk_fs_rate = 0x01; rx_fs_rate = 0x01; clk_fs_rate = 0x01; fs_rate = 0x01; break; case 32000: rx_clk_fs_rate = 0x02; rx_fs_rate = 0x03; clk_fs_rate = 0x02; fs_rate = 0x03; break; case 48000: rx_clk_fs_rate = 0x03; rx_fs_rate = 0x04; clk_fs_rate = 0x03; fs_rate = 0x04; break; case 96000: rx_clk_fs_rate = 0x04; rx_fs_rate = 0x05; clk_fs_rate = 0x04; fs_rate = 0x05; break; case 192000: rx_clk_fs_rate = 0x05; rx_fs_rate = 0x06; clk_fs_rate = 0x05; fs_rate = 0x06; break; default: dev_err(dai->codec->dev, Loading @@ -1275,20 +1274,37 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x1C, (clk_fs_rate << 2)); } else { snd_soc_update_bits(dai->codec, MSM_SDW_TOP_RX_I2S_CTL, 0x1C, (rx_clk_fs_rate << 2)); MSM_SDW_TOP_RX_I2S_CTL, 0x1C, (clk_fs_rate << 2)); snd_soc_update_bits(dai->codec, MSM_SDW_RX7_RX_PATH_CTL, 0x0F, rx_fs_rate); MSM_SDW_RX7_RX_PATH_CTL, 0x0F, fs_rate); snd_soc_update_bits(dai->codec, MSM_SDW_RX8_RX_PATH_CTL, 0x0F, rx_fs_rate); MSM_SDW_RX8_RX_PATH_CTL, 0x0F, fs_rate); } switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x20, 0x20); else snd_soc_update_bits(dai->codec, MSM_SDW_TOP_RX_I2S_CTL, 0x20, 0x20); break; case SNDRV_PCM_FORMAT_S24_LE: case SNDRV_PCM_FORMAT_S24_3LE: if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x20, 0x00); else snd_soc_update_bits(dai->codec, MSM_SDW_TOP_RX_I2S_CTL, 0x20, 0x00); break; Loading @@ -1297,8 +1313,6 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, __func__); return -EINVAL; } snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x20, 0x20); return 0; } Loading Loading @@ -1414,7 +1428,7 @@ static struct snd_soc_dai_driver msm_sdw_dai[] = { .rate_max = 192000, .rate_min = 8000, .channels_min = 1, .channels_max = 2, .channels_max = 4, }, .ops = &msm_sdw_dai_ops, }, Loading @@ -1423,9 +1437,9 @@ static struct snd_soc_dai_driver msm_sdw_dai[] = { .id = AIF1_SDW_VIFEED, .capture = { .stream_name = "VIfeed_SDW", .rates = SNDRV_PCM_RATE_8000, .rates = MSM_SDW_RATES, .formats = SNDRV_PCM_FMTBIT_S16_LE, .rate_max = 8000, .rate_max = 48000, .rate_min = 8000, .channels_min = 2, .channels_max = 4, Loading Loading
sound/soc/codecs/msm_sdw/msm_sdw_cdc.c +47 −33 Original line number Diff line number Diff line Loading @@ -471,10 +471,9 @@ static int msm_sdw_codec_enable_vi_feedback(struct snd_soc_dapm_widget *w, MSM_SDW_TX10_SPKR_PROT_PATH_CTL, 0x20, 0x20); snd_soc_update_bits(codec, MSM_SDW_TX9_SPKR_PROT_PATH_CTL, 0x0F, 0x00); MSM_SDW_TX9_SPKR_PROT_PATH_CTL, 0x0F, 0x04); snd_soc_update_bits(codec, MSM_SDW_TX10_SPKR_PROT_PATH_CTL, 0x0F, 0x00); MSM_SDW_TX10_SPKR_PROT_PATH_CTL, 0x0F, 0x04); snd_soc_update_bits(codec, MSM_SDW_TX9_SPKR_PROT_PATH_CTL, 0x10, 0x10); snd_soc_update_bits(codec, Loading @@ -497,10 +496,10 @@ static int msm_sdw_codec_enable_vi_feedback(struct snd_soc_dapm_widget *w, 0x20); snd_soc_update_bits(codec, MSM_SDW_TX11_SPKR_PROT_PATH_CTL, 0x0F, 0x00); 0x04); snd_soc_update_bits(codec, MSM_SDW_TX12_SPKR_PROT_PATH_CTL, 0x0F, 0x00); 0x04); snd_soc_update_bits(codec, MSM_SDW_TX11_SPKR_PROT_PATH_CTL, 0x10, 0x10); Loading Loading @@ -1236,7 +1235,7 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { u8 rx_clk_fs_rate, rx_fs_rate; u8 clk_fs_rate, fs_rate; dev_dbg(dai->codec->dev, "%s: dai_name = %s DAI-ID %x rate %d num_ch %d format %d\n", Loading @@ -1245,28 +1244,28 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, switch (params_rate(params)) { case 8000: rx_clk_fs_rate = 0x00; rx_fs_rate = 0x00; clk_fs_rate = 0x00; fs_rate = 0x00; break; case 16000: rx_clk_fs_rate = 0x01; rx_fs_rate = 0x01; clk_fs_rate = 0x01; fs_rate = 0x01; break; case 32000: rx_clk_fs_rate = 0x02; rx_fs_rate = 0x03; clk_fs_rate = 0x02; fs_rate = 0x03; break; case 48000: rx_clk_fs_rate = 0x03; rx_fs_rate = 0x04; clk_fs_rate = 0x03; fs_rate = 0x04; break; case 96000: rx_clk_fs_rate = 0x04; rx_fs_rate = 0x05; clk_fs_rate = 0x04; fs_rate = 0x05; break; case 192000: rx_clk_fs_rate = 0x05; rx_fs_rate = 0x06; clk_fs_rate = 0x05; fs_rate = 0x06; break; default: dev_err(dai->codec->dev, Loading @@ -1275,20 +1274,37 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x1C, (clk_fs_rate << 2)); } else { snd_soc_update_bits(dai->codec, MSM_SDW_TOP_RX_I2S_CTL, 0x1C, (rx_clk_fs_rate << 2)); MSM_SDW_TOP_RX_I2S_CTL, 0x1C, (clk_fs_rate << 2)); snd_soc_update_bits(dai->codec, MSM_SDW_RX7_RX_PATH_CTL, 0x0F, rx_fs_rate); MSM_SDW_RX7_RX_PATH_CTL, 0x0F, fs_rate); snd_soc_update_bits(dai->codec, MSM_SDW_RX8_RX_PATH_CTL, 0x0F, rx_fs_rate); MSM_SDW_RX8_RX_PATH_CTL, 0x0F, fs_rate); } switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x20, 0x20); else snd_soc_update_bits(dai->codec, MSM_SDW_TOP_RX_I2S_CTL, 0x20, 0x20); break; case SNDRV_PCM_FORMAT_S24_LE: case SNDRV_PCM_FORMAT_S24_3LE: if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x20, 0x00); else snd_soc_update_bits(dai->codec, MSM_SDW_TOP_RX_I2S_CTL, 0x20, 0x00); break; Loading @@ -1297,8 +1313,6 @@ static int msm_sdw_hw_params(struct snd_pcm_substream *substream, __func__); return -EINVAL; } snd_soc_update_bits(dai->codec, MSM_SDW_TOP_TX_I2S_CTL, 0x20, 0x20); return 0; } Loading Loading @@ -1414,7 +1428,7 @@ static struct snd_soc_dai_driver msm_sdw_dai[] = { .rate_max = 192000, .rate_min = 8000, .channels_min = 1, .channels_max = 2, .channels_max = 4, }, .ops = &msm_sdw_dai_ops, }, Loading @@ -1423,9 +1437,9 @@ static struct snd_soc_dai_driver msm_sdw_dai[] = { .id = AIF1_SDW_VIFEED, .capture = { .stream_name = "VIfeed_SDW", .rates = SNDRV_PCM_RATE_8000, .rates = MSM_SDW_RATES, .formats = SNDRV_PCM_FMTBIT_S16_LE, .rate_max = 8000, .rate_max = 48000, .rate_min = 8000, .channels_min = 2, .channels_max = 4, Loading