From 51e606c92788ed9c1fdbd752159dcd29634eadee Mon Sep 17 00:00:00 2001 From: ing07300 Date: Sun, 13 Nov 2011 15:01:28 +0530 Subject: Ux500 ASOC:Enable codec as master for 5500 This patch enables codec as master and MSP as slave specific to 5500, to resolve AV sync issue. ST-Ericsson Linux next: 373944 ST-Ericsson ID: 373944 ST-Ericsson FOSS-OUT ID: STETL-FOSS-OUT-10006 Change-Id: I244b967086109b93cb3cb7d2b1aea9d46a5c2e52 Signed-off-by: ing07300 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/37511 Tested-by: Kumar K M Reviewed-by: QABUILD Reviewed-by: Amaresh MULAGE Reviewed-by: Roger NILSSON1 Reviewed-by: Henrik CARLING --- sound/soc/ux500/ux500_ab5500.c | 7 +++++-- sound/soc/ux500/ux500_msp_dai.c | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'sound') diff --git a/sound/soc/ux500/ux500_ab5500.c b/sound/soc/ux500/ux500_ab5500.c index 76deb346cda..5b4e5576cf0 100644 --- a/sound/soc/ux500/ux500_ab5500.c +++ b/sound/soc/ux500/ux500_ab5500.c @@ -46,14 +46,17 @@ int ux500_ab5500_hw_params(struct snd_pcm_substream *substream, printk(KERN_DEBUG "%s: DAI-index (Platform): %d\n", __func__, cpu_dai->id); ret = snd_soc_dai_set_fmt(codec_dai, - SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS); + SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM); if (ret < 0) return ret; ret = snd_soc_dai_set_fmt(cpu_dai, - SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS); + SND_SOC_DAIFMT_I2S | + SND_SOC_DAIFMT_CBM_CFM | + SND_SOC_DAIFMT_IB_IF); if (ret < 0) return ret; + ux500_msp_dai_set_data_delay(cpu_dai, MSP_DELAY_1); return ret; } diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c index 8ff8b9dbdd8..1eb8cf88323 100644 --- a/sound/soc/ux500/ux500_msp_dai.c +++ b/sound/soc/ux500/ux500_msp_dai.c @@ -352,6 +352,13 @@ static void ux500_msp_dai_setup_clocking(unsigned int fmt, MSP_FRAME_SYNC_POL_ACTIVE_LOW << RFSPOL_SHIFT; break; + case SND_SOC_DAIFMT_IB_IF: + msp_config->iodelay = 0x20; + msp_config->protocol_desc.tx_clock_pol = 1; + msp_config->tx_frame_sync_pol = 1 << TFSPOL_SHIFT; + msp_config->protocol_desc.rx_clock_pol = 1; + msp_config->rx_frame_sync_pol = 1 << RFSPOL_SHIFT; + break; } if ((fmt & SND_SOC_DAIFMT_MASTER_MASK) == SND_SOC_DAIFMT_CBM_CFM) { @@ -665,6 +672,7 @@ static int ux500_msp_dai_set_dai_fmt(struct snd_soc_dai *dai, switch (fmt & SND_SOC_DAIFMT_INV_MASK) { case SND_SOC_DAIFMT_NB_NF: case SND_SOC_DAIFMT_NB_IF: + case SND_SOC_DAIFMT_IB_IF: break; default: -- cgit v1.2.3