summaryrefslogtreecommitdiff
path: root/sound/soc/ux500/ux500_msp_dai.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/ux500/ux500_msp_dai.c')
-rw-r--r--sound/soc/ux500/ux500_msp_dai.c30
1 files changed, 10 insertions, 20 deletions
diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c
index 1eb8cf88323..6cdc96734ed 100644
--- a/sound/soc/ux500/ux500_msp_dai.c
+++ b/sound/soc/ux500/ux500_msp_dai.c
@@ -339,32 +339,18 @@ static void ux500_msp_dai_setup_clocking(unsigned int fmt,
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
default:
case SND_SOC_DAIFMT_NB_NF:
- msp_config->tx_frame_sync_pol =
- MSP_FRAME_SYNC_POL(MSP_FRAME_SYNC_POL_ACTIVE_HIGH);
- msp_config->rx_frame_sync_pol =
- MSP_FRAME_SYNC_POL_ACTIVE_HIGH << RFSPOL_SHIFT;
break;
case SND_SOC_DAIFMT_NB_IF:
- msp_config->tx_frame_sync_pol =
- MSP_FRAME_SYNC_POL(MSP_FRAME_SYNC_POL_ACTIVE_LOW);
- msp_config->rx_frame_sync_pol =
- 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;
+ msp_config->tx_frame_sync_pol ^= 1 << TFSPOL_SHIFT;
+ msp_config->rx_frame_sync_pol ^= 1 << RFSPOL_SHIFT;
break;
}
if ((fmt & SND_SOC_DAIFMT_MASTER_MASK) == SND_SOC_DAIFMT_CBM_CFM) {
pr_debug("%s: Codec is MASTER.\n",
__func__);
-
+ msp_config->iodelay = 0x20;
msp_config->rx_frame_sync_sel = 0;
msp_config->tx_frame_sync_sel = 1 << TFSSEL_SHIFT;
msp_config->tx_clock_sel = 0;
@@ -392,17 +378,19 @@ static void ux500_msp_dai_compile_prot_desc_pcm(unsigned int fmt,
prot_desc->tx_phase2_start_mode = MSP_PHASE2_START_MODE_IMEDIATE;
prot_desc->rx_bit_transfer_format = MSP_BTF_MS_BIT_FIRST;
prot_desc->tx_bit_transfer_format = MSP_BTF_MS_BIT_FIRST;
+ prot_desc->tx_frame_sync_pol = MSP_FRAME_SYNC_POL(MSP_FRAME_SYNC_POL_ACTIVE_HIGH);
+ prot_desc->rx_frame_sync_pol = MSP_FRAME_SYNC_POL_ACTIVE_HIGH << RFSPOL_SHIFT;
if ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_DSP_A) {
pr_debug("%s: DSP_A.\n",
__func__);
+ prot_desc->rx_clock_pol = MSP_RISING_EDGE;
prot_desc->tx_clock_pol = MSP_FALLING_EDGE;
- prot_desc->rx_clock_pol = MSP_FALLING_EDGE;
} else {
pr_debug("%s: DSP_B.\n",
__func__);
+ prot_desc->rx_clock_pol = MSP_FALLING_EDGE;
prot_desc->tx_clock_pol = MSP_RISING_EDGE;
- prot_desc->rx_clock_pol = MSP_RISING_EDGE;
}
prot_desc->rx_half_word_swap = MSP_HWS_NO_SWAP;
@@ -424,6 +412,8 @@ static void ux500_msp_dai_compile_prot_desc_i2s(struct msp_protocol_desc *prot_d
MSP_PHASE2_START_MODE_FRAME_SYNC;
prot_desc->rx_bit_transfer_format = MSP_BTF_MS_BIT_FIRST;
prot_desc->tx_bit_transfer_format = MSP_BTF_MS_BIT_FIRST;
+ prot_desc->tx_frame_sync_pol = MSP_FRAME_SYNC_POL(MSP_FRAME_SYNC_POL_ACTIVE_LOW);
+ prot_desc->rx_frame_sync_pol = MSP_FRAME_SYNC_POL_ACTIVE_LOW << RFSPOL_SHIFT;
prot_desc->rx_frame_length_1 = MSP_FRAME_LENGTH_1;
prot_desc->rx_frame_length_2 = MSP_FRAME_LENGTH_1;
@@ -435,7 +425,7 @@ static void ux500_msp_dai_compile_prot_desc_i2s(struct msp_protocol_desc *prot_d
prot_desc->tx_element_length_2 = MSP_ELEM_LENGTH_16;
prot_desc->rx_clock_pol = MSP_RISING_EDGE;
- prot_desc->tx_clock_pol = MSP_RISING_EDGE;
+ prot_desc->tx_clock_pol = MSP_FALLING_EDGE;
prot_desc->tx_half_word_swap = MSP_HWS_NO_SWAP;
prot_desc->rx_half_word_swap = MSP_HWS_NO_SWAP;