diff mbox

ASoC: rt5645: Allow 4 channel recording on AIF1

Message ID 1443472357-12150-1-git-send-email-benzh@chromium.org (mailing list archive)
State Accepted
Commit fbe039bb0815e6113f82021aa8c0e36a1941f511
Headers show

Commit Message

Ben Zhang Sept. 28, 2015, 8:32 p.m. UTC
The codec supports 4 channel recording with TDM on AIF1.
This patch modifies the DAI capability to allow it.

Signed-off-by: Ben Zhang <benzh@chromium.org>
---
 sound/soc/codecs/rt5645.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mark Brown Sept. 30, 2015, 7:03 p.m. UTC | #1
On Mon, Sep 28, 2015 at 01:32:37PM -0700, Ben Zhang wrote:
> The codec supports 4 channel recording with TDM on AIF1.
> This patch modifies the DAI capability to allow it.

Is there no code change needed to configure for the number of channels
being used?  I can't see any current handling of that, nor anything that
looks like non-stereo handling in the DAPM graph.
Ben Zhang Sept. 30, 2015, 10:14 p.m. UTC | #2
On Wed, Sep 30, 2015 at 12:03 PM, Mark Brown <broonie@kernel.org> wrote:
> On Mon, Sep 28, 2015 at 01:32:37PM -0700, Ben Zhang wrote:
>> The codec supports 4 channel recording with TDM on AIF1.
>> This patch modifies the DAI capability to allow it.
>
> Is there no code change needed to configure for the number of channels
> being used?  I can't see any current handling of that, nor anything that
> looks like non-stereo handling in the DAPM graph.

No code change is needed. The current driver already supports 4
channel recording from DMICs using the Stereo1 path and the two Mono
paths. rt5645_set_tdm_slot callback handles the I2S1 port config for
TDM. It has been tested on a broadwell chromebook. An ASoC machine
driver just needs to call snd_soc_dai_set_tdm_slot, and let ucm config
file set the muxes/mixers for the following paths.

"DMIC L1"/"DMIC R1"
-> "DMIC1"
-> "Stereo1 DMIC Mux"
-> "Stereo1 ADC L2 Mux"/"Stereo1 ADC R2 Mux"
-> "Sto1 ADC MIXL"/"Sto1 ADC MIXR"
-> "Stereo1 ADC MIXL"/"Stereo1 ADC MIXR"
-> "IF_ADC1"
-> "RT5650 IF1 ADC1 Swap Mux"
-> "IF1 ADC"
-> "RT5650 IF1 ADC Mux"
-> "AIF1TX"
-> "AIF1 Capture"

"DMIC L2"
-> "Mono DMIC L Mux"
-> "Mono ADC L2 Mux"
-> "Mono ADC MIXL"
-> "IF_ADC2"
-> "RT5650 IF1 ADC2 Swap Mux"
-> "IF1 ADC"
-> "RT5650 IF1 ADC Mux"
-> "AIF1TX"
-> "AIF1 Capture"

"DMIC R2"
-> "Mono DMIC R Mux"
-> "Mono ADC R2 Mux"
-> "Mono ADC MIXR"
-> "IF_ADC2"
-> "RT5650 IF1 ADC2 Swap Mux"
-> "IF1 ADC"
-> "RT5650 IF1 ADC Mux"
-> "AIF1TX"
-> "AIF1 Capture"
diff mbox

Patch

diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
index b0d96b6..0d092bf 100644
--- a/sound/soc/codecs/rt5645.c
+++ b/sound/soc/codecs/rt5645.c
@@ -3101,7 +3101,7 @@  static struct snd_soc_dai_driver rt5645_dai[] = {
 		.capture = {
 			.stream_name = "AIF1 Capture",
 			.channels_min = 1,
-			.channels_max = 2,
+			.channels_max = 4,
 			.rates = RT5645_STEREO_RATES,
 			.formats = RT5645_FORMATS,
 		},