aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/omap
diff options
context:
space:
mode:
authorMisael Lopez Cruz <misael.lopez@ti.com>2012-05-04 14:14:06 -0500
committerDmytro Kedrovskyi <x0169235@ti.com>2012-07-13 13:12:59 +0300
commit7d4174b9934e56a2c6d32f2657bea9080e186352 (patch)
tree6d1f2d3855188a12460bfdf51cefe84869608c6f /sound/soc/omap
parent79591fc29dac0ef7cb9a74918e20a906c337ce60 (diff)
downloadkernel_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.c4
-rwxr-xr-xsound/soc/omap/sdp4430.c25
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(&params->masks[SNDRV_PCM_HW_PARAM_FORMAT -
SNDRV_PCM_HW_PARAM_FIRST_MASK],
SNDRV_PCM_FORMAT_S16_LE);