mirror of
https://github.com/torvalds/linux.git
synced 2024-12-31 23:31:29 +00:00
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: Cliff Cai <cliff.cai@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
4b7d283150
commit
c3e5203bed
@ -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,
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user