mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
dts: S400: change tdm-b for audio capture
PD#145484: audio: support snd_soc_dai_set_sysclk for mutli codec Change-Id: I3a2e24e1321e9251029e0abe79e97a9852a68450 Signed-off-by: Peipeng Zhao <peipeng.zhao@amlogic.com>
This commit is contained in:
@@ -357,10 +357,10 @@
|
||||
format = "i2s";
|
||||
mclk-fs = <256>;
|
||||
continuous-clock;
|
||||
bitclock-inversion;
|
||||
frame-inversion;
|
||||
//bitclock-master = <&aml_tdmb>;
|
||||
//frame-master = <&aml_tdmb>;
|
||||
//bitclock-inversion;
|
||||
//frame-inversion;
|
||||
bitclock-master = <&aml_tdmb>;
|
||||
frame-master = <&aml_tdmb>;
|
||||
cpu {
|
||||
sound-dai = <&aml_tdmb>;
|
||||
dai-tdm-slot-tx-mask = <1 1>;
|
||||
@@ -370,7 +370,8 @@
|
||||
system-clock-frequency = <12288000>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&dummy_codec &dummy_codec>;
|
||||
sound-dai = <&tlv320adc3101_32 &tlv320adc3101_30
|
||||
&tlv320adc3101_34 &tlv320adc3101_36>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -630,11 +631,11 @@
|
||||
status = "okay";
|
||||
//pinctrl-names="default";
|
||||
//pinctrl-0=<&b_i2c_master>;
|
||||
tlv320adc3101_32: tlv320adc3101_32@30 {
|
||||
tlv320adc3101_32: tlv320adc3101_32@32 {
|
||||
compatible = "ti,tlv320adc3101";
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x32>;
|
||||
status = "disabled";
|
||||
reg = <0x19>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
tas5707_36: tas5707_36@36 {
|
||||
@@ -662,19 +663,19 @@
|
||||
tlv320adc3101_30: tlv320adc3101_30@30 {
|
||||
compatible = "ti,tlv320adc3101";
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x30>;
|
||||
reg = <0x18>;
|
||||
status = "okay";
|
||||
};
|
||||
tlv320adc3101_34: tlv320adc3101_34@30 {
|
||||
compatible = "ti,tlv320adc3101";
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x34>;
|
||||
reg = <0x1a>;
|
||||
status = "okay";
|
||||
};
|
||||
tlv320adc3101_36: tlv320adc3101_36@30 {
|
||||
compatible = "ti,tlv320adc3101";
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x36>;
|
||||
reg = <0x1b>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
@@ -713,7 +714,7 @@
|
||||
GIC_SPI 89 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "tdmin", "tdmout";
|
||||
pinctrl-names = "tdm_pins";
|
||||
pinctrl-0 = <&tdmb_mclk &tdmout_b>;
|
||||
pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
|
||||
};
|
||||
|
||||
aml_tdmc: tdmc {
|
||||
@@ -801,20 +802,18 @@
|
||||
|
||||
tdmout_b: tdmout_b {
|
||||
mux {
|
||||
pins = "GPIOA_8", "GPIOA_9", "GPIOA_10",
|
||||
"GPIOA_11", "GPIOA_12", "GPIOA_13";
|
||||
pins = "GPIOA_8", "GPIOA_9";
|
||||
/*"GPIOA_10","GPIOA_11", "GPIOA_12", "GPIOA_13";*/
|
||||
function = "tdmb_out";
|
||||
};
|
||||
};
|
||||
// tdmin and tdmout are the same pins. can't use at same time
|
||||
/*
|
||||
*tdmin_b:tdmin_b {
|
||||
* mux {
|
||||
* pins = "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13";
|
||||
* function = "tdmb_in";
|
||||
* };
|
||||
*};
|
||||
*/
|
||||
tdmin_b:tdmin_b {
|
||||
mux {
|
||||
pins = "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13";
|
||||
function = "tdmb_in";
|
||||
};
|
||||
};
|
||||
|
||||
tdmc_mclk: tdmc_mclk {
|
||||
mux {
|
||||
|
||||
@@ -151,14 +151,14 @@ static int aml_card_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_dai *codec_dai = rtd->codec_dai;
|
||||
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||
struct aml_card_data *priv = snd_soc_card_get_drvdata(rtd->card);
|
||||
struct aml_dai_props *dai_props =
|
||||
aml_priv_to_props(priv, rtd->num);
|
||||
unsigned int mclk, mclk_fs = 0;
|
||||
int ret = 0;
|
||||
int i = 0, ret = 0;
|
||||
|
||||
pr_info("%s ..numcodec:%d\n", __func__, rtd->num_codecs);
|
||||
if (priv->mclk_fs)
|
||||
mclk_fs = priv->mclk_fs;
|
||||
else if (dai_props->mclk_fs)
|
||||
@@ -166,11 +166,16 @@ static int aml_card_hw_params(struct snd_pcm_substream *substream,
|
||||
|
||||
if (mclk_fs) {
|
||||
mclk = params_rate(params) * mclk_fs;
|
||||
ret = snd_soc_dai_set_sysclk(codec_dai, 0, mclk,
|
||||
SND_SOC_CLOCK_IN);
|
||||
if (ret && ret != -ENOTSUPP)
|
||||
goto err;
|
||||
|
||||
for (i = 0; i < rtd->num_codecs; i++) {
|
||||
struct snd_soc_dai *codec_dai = rtd->codec_dais[i];
|
||||
|
||||
ret = snd_soc_dai_set_sysclk(codec_dai, 0, mclk,
|
||||
SND_SOC_CLOCK_IN);
|
||||
|
||||
if (ret && ret != -ENOTSUPP)
|
||||
goto err;
|
||||
}
|
||||
ret = snd_soc_dai_set_sysclk(cpu_dai, 0, mclk,
|
||||
SND_SOC_CLOCK_OUT);
|
||||
if (ret && ret != -ENOTSUPP)
|
||||
|
||||
Reference in New Issue
Block a user