diff options
author | Misael Lopez Cruz <misael.lopez@ti.com> | 2012-05-04 14:14:06 -0500 |
---|---|---|
committer | Dmytro Kedrovskyi <x0169235@ti.com> | 2012-07-13 13:12:59 +0300 |
commit | 7d4174b9934e56a2c6d32f2657bea9080e186352 (patch) | |
tree | 6d1f2d3855188a12460bfdf51cefe84869608c6f /sound/soc/omap | |
parent | 79591fc29dac0ef7cb9a74918e20a906c337ce60 (diff) | |
download | kernel_samsung_espresso10-7d4174b9934e56a2c6d32f2657bea9080e186352.zip kernel_samsung_espresso10-7d4174b9934e56a2c6d32f2657bea9080e186352.tar.gz kernel_samsung_espresso10-7d4174b9934e56a2c6d32f2657bea9080e186352.tar.bz2 |
ASoC: OMAP ABE: BT backend as 16-bits stereo
Bluetooth data interface is connected to OMAP via McBSP and then to ABE.
ABE BT_VX ports require a low value for McBSP FIFO threshold (e.g. 1 for
mono, 2 for stereo), which has a side effect on latency. Since McBSP FIFO
stores each sample in a separate FIFO entry, using stereo instead of mono
halves the latency.
Change-Id: I03b9a04cafe65e1a5e5c97e2740ae17f3a9c8cdd
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
Diffstat (limited to 'sound/soc/omap')
-rw-r--r-- | sound/soc/omap/omap-abe.c | 4 | ||||
-rwxr-xr-x | sound/soc/omap/sdp4430.c | 25 |
2 files changed, 7 insertions, 22 deletions
diff --git a/sound/soc/omap/omap-abe.c b/sound/soc/omap/omap-abe.c index 08994b3..2893f03 100644 --- a/sound/soc/omap/omap-abe.c +++ b/sound/soc/omap/omap-abe.c @@ -374,7 +374,7 @@ static void enable_be_port(struct snd_soc_pcm_runtime *be, /* BT_DL connection to McBSP 1 ports */ format.f = 8000; - format.samp_format = MONO_RSHIFTED_16; + format.samp_format = STEREO_RSHIFTED_16; abe_connect_serial_port(BT_VX_DL_PORT, &format, MCBSP1_TX); omap_abe_port_enable(abe_priv->abe, abe_priv->port[OMAP_ABE_BE_PORT_BT_VX_DL]); @@ -387,7 +387,7 @@ static void enable_be_port(struct snd_soc_pcm_runtime *be, /* BT_UL connection to McBSP 1 ports */ format.f = 8000; - format.samp_format = MONO_RSHIFTED_16; + format.samp_format = STEREO_RSHIFTED_16; abe_connect_serial_port(BT_VX_UL_PORT, &format, MCBSP1_RX); omap_abe_port_enable(abe_priv->abe, abe_priv->port[OMAP_ABE_BE_PORT_BT_VX_UL]); diff --git a/sound/soc/omap/sdp4430.c b/sound/soc/omap/sdp4430.c index de4ac69..8d488e8 100755 --- a/sound/soc/omap/sdp4430.c +++ b/sound/soc/omap/sdp4430.c @@ -211,22 +211,12 @@ static int sdp4430_mcbsp_hw_params(struct snd_pcm_substream *substream, struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; int ret = 0; - unsigned int be_id, channels; + unsigned int channels; - be_id = rtd->dai_link->be_id; - - if (be_id == OMAP_ABE_DAI_BT_VX) { - ret = snd_soc_dai_set_fmt(cpu_dai, - SND_SOC_DAIFMT_DSP_B | - SND_SOC_DAIFMT_NB_IF | + ret = snd_soc_dai_set_fmt(cpu_dai, + SND_SOC_DAIFMT_I2S | + SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM); - } else { - /* Set cpu DAI configuration */ - ret = snd_soc_dai_set_fmt(cpu_dai, - SND_SOC_DAIFMT_I2S | - SND_SOC_DAIFMT_NB_NF | - SND_SOC_DAIFMT_CBM_CFM); - } if (ret < 0) { printk(KERN_ERR "can't set cpu DAI configuration\n"); @@ -322,13 +312,8 @@ static int mcbsp_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, { struct snd_interval *channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); - unsigned int be_id = rtd->dai_link->be_id; - - if (be_id == OMAP_ABE_DAI_BT_VX) - channels->min = 1; - else - channels->min = 2; + channels->min = 2; snd_mask_set(¶ms->masks[SNDRV_PCM_HW_PARAM_FORMAT - SNDRV_PCM_HW_PARAM_FIRST_MASK], SNDRV_PCM_FORMAT_S16_LE); |