提交 c3e5203b 编写于 作者: C Cliff Cai 提交者: Takashi Iwai

ALSA: ASoC: Blackfin: update SPORT0 port selector (v2)

- Setting the TFS pin selector for SPORT 0 based on whether the selected
  port id F or G. If the port is F then no conflict should exist for the
  TFS. When Port G is selected and EMAC then there is a conflict between
  the PHY interrupt line and TFS.  Current settings prevent the conflict
  by ignoring the TFS pin when Port G is selected. This allows both
  ssm2602 using Port G and EMAC concurrently.

 - some code cleanup
Signed-off-by: NCliff Cai <cliff.cai@analog.com>
Signed-off-by: NBryan Wu <cooloney@kernel.org>
Acked-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 4b7d2831
...@@ -70,12 +70,24 @@ static struct sport_param sport_params[2] = { ...@@ -70,12 +70,24 @@ static struct sport_param sport_params[2] = {
} }
}; };
static u16 sport_req[][7] = { /*
{ P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS, * Setting the TFS pin selector for SPORT 0 based on whether the selected
P_SPORT0_DRPRI, P_SPORT0_RSCLK, 0}, * port id F or G. If the port is F then no conflict should exist for the
{ P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS, * TFS. When Port G is selected and EMAC then there is a conflict between
P_SPORT1_DRPRI, P_SPORT1_RSCLK, 0}, * the PHY interrupt line and TFS. Current settings prevent the conflict
}; * by ignoring the TFS pin when Port G is selected. This allows both
* ssm2602 using Port G and EMAC concurrently.
*/
#ifdef CONFIG_BF527_SPORT0_PORTF
#define LOCAL_SPORT0_TFS (P_SPORT0_TFS)
#else
#define LOCAL_SPORT0_TFS (0)
#endif
static u16 sport_req[][7] = { {P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS,
P_SPORT0_DRPRI, P_SPORT0_RSCLK, LOCAL_SPORT0_TFS, 0},
{P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS, P_SPORT1_DRPRI,
P_SPORT1_RSCLK, P_SPORT1_TFS, 0} };
static int bf5xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai, static int bf5xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai,
unsigned int fmt) unsigned int fmt)
...@@ -98,23 +110,21 @@ static int bf5xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai, ...@@ -98,23 +110,21 @@ static int bf5xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai,
ret = -EINVAL; ret = -EINVAL;
break; break;
default: default:
printk(KERN_ERR "%s: Unknown DAI format type\n", __func__);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
case SND_SOC_DAIFMT_CBS_CFS:
ret = -EINVAL;
break;
case SND_SOC_DAIFMT_CBM_CFS:
ret = -EINVAL;
break;
case SND_SOC_DAIFMT_CBM_CFM: case SND_SOC_DAIFMT_CBM_CFM:
break; break;
case SND_SOC_DAIFMT_CBS_CFS:
case SND_SOC_DAIFMT_CBM_CFS:
case SND_SOC_DAIFMT_CBS_CFM: case SND_SOC_DAIFMT_CBS_CFM:
ret = -EINVAL; ret = -EINVAL;
break; break;
default: default:
printk(KERN_ERR "%s: Unknown DAI master type\n", __func__);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册