aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorErik Gilling <konkers@android.com>2011-11-11 13:53:25 -0800
committerErik Gilling <konkers@android.com>2011-11-11 13:53:25 -0800
commit570004caf2532d28fb7b704f543ca73e1a278eaa (patch)
tree43cb47641871c8f6c55dffbadc09ea2aaa09fe47 /sound/soc
parent8838c8db22acdab21bb61ebdb1fcb864b46c2868 (diff)
parentb9c9da1604032f10bb417e4fd0b6c91bd001badd (diff)
downloadkernel_samsung_tuna-570004caf2532d28fb7b704f543ca73e1a278eaa.zip
kernel_samsung_tuna-570004caf2532d28fb7b704f543ca73e1a278eaa.tar.gz
kernel_samsung_tuna-570004caf2532d28fb7b704f543ca73e1a278eaa.tar.bz2
Merge branch 'android-omap-3.0' into android-omap-tuna-3.0
Conflicts: drivers/mfd/twl6040-codec.c Change-Id: Ieb38108b8918870f5f8c0d29d2d1b0521d78706c
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/omap/abe/abe_ini.c4
-rw-r--r--sound/soc/omap/abe/abe_port.c48
-rw-r--r--sound/soc/omap/omap-mcpdm.c7
3 files changed, 30 insertions, 29 deletions
diff --git a/sound/soc/omap/abe/abe_ini.c b/sound/soc/omap/abe/abe_ini.c
index 9fad4ce..a126e23 100644
--- a/sound/soc/omap/abe/abe_ini.c
+++ b/sound/soc/omap/abe/abe_ini.c
@@ -253,7 +253,7 @@ void omap_abe_build_scheduler_table(struct omap_abe *abe)
i < sizeof(abe->MultiFrame); i++)
*ptr++ = 0;
- abe->MultiFrame[0][2] = ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_DL);
+ abe->MultiFrame[0][2] = 0/*ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_DL)*/;
abe->MultiFrame[0][3] = ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_DL_8);
abe->MultiFrame[1][3] = ABE_TASK_ID(C_ABE_FW_TASK_VX_DL_8_48_FIR);
@@ -314,7 +314,7 @@ void omap_abe_build_scheduler_table(struct omap_abe *abe)
abe->MultiFrame[15][6] = 0/*ABE_TASK_ID(C_ABE_FW_TASK_ASRC_BT_UL_8)*/;
abe->MultiFrame[16][2] = ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_UL_8);
- abe->MultiFrame[16][3] = ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_UL);
+ abe->MultiFrame[16][3] = 0/*ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_UL)*/;
abe->MultiFrame[17][2] = ABE_TASK_ID(C_ABE_FW_TASK_BT_UL_8_48);
abe->MultiFrame[17][3] = 0/*ABE_TASK_ID(C_ABE_FW_TASK_IO_MM_UL2)*/;
diff --git a/sound/soc/omap/abe/abe_port.c b/sound/soc/omap/abe/abe_port.c
index d7e8d14..724dabd 100644
--- a/sound/soc/omap/abe/abe_port.c
+++ b/sound/soc/omap/abe/abe_port.c
@@ -625,26 +625,8 @@ int omap_abe_enable_data_transfer(struct omap_abe *abe, u32 id)
abe->MultiFrame[TASK_IO_MM_DL_SLT][TASK_IO_MM_DL_IDX] = ABE_TASK_ID(C_ABE_FW_TASK_IO_MM_DL);
break;
case OMAP_ABE_VX_UL_PORT:
- if (abe_port[OMAP_ABE_VX_DL_PORT].status == OMAP_ABE_PORT_ACTIVITY_RUNNING) {
- /* VX_DL port already started, hence no need to
- initialize ASRC */
- } else {
- /* Init VX_UL ASRC & VX_DL ASRC and enable its adaptation */
- abe_init_asrc_vx_ul(-250);
- abe_init_asrc_vx_dl(250);
- }
- abe->MultiFrame[16][3] = ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_UL);
break;
case OMAP_ABE_VX_DL_PORT:
- if (abe_port[OMAP_ABE_VX_UL_PORT].status == OMAP_ABE_PORT_ACTIVITY_RUNNING) {
- /* VX_UL port already started, hence no need to
- initialize ASRC */
- } else {
- /* Init VX_UL ASRC & VX_DL ASRC and enable its adaptation */
- abe_init_asrc_vx_ul(-250);
- abe_init_asrc_vx_dl(250);
- }
- abe->MultiFrame[0][2] = ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_DL);
break;
case OMAP_ABE_MM_UL2_PORT:
abe->MultiFrame[17][3] = ABE_TASK_ID(C_ABE_FW_TASK_IO_MM_UL2);
@@ -712,13 +694,14 @@ int omap_abe_connect_cbpr_dmareq_port(struct omap_abe *abe,
/* load the dma_t with physical information from AE memory mapping */
abe_init_dma_t(id, &((abe_port[id]).protocol));
+ /* load the ATC descriptors - disabled */
+ omap_abe_init_atc(abe, id);
+
/* load the micro-task parameters */
abe_init_io_tasks(id, &((abe_port[id]).format),
&((abe_port[id]).protocol));
abe_port[id].status = OMAP_ABE_PORT_INITIALIZED;
- /* load the ATC descriptors - disabled */
- omap_abe_init_atc(abe, id);
/* return the dma pointer address */
abe_read_port_address(id, returned_dma_t);
return 0;
@@ -767,11 +750,13 @@ int omap_abe_connect_irq_ping_pong_port(struct omap_abe *abe,
(abe_port[id]).protocol.p.prot_pingpong.irq_addr =
ABE_DSP_IRQSTATUS_RAW;
abe_port[id].status = OMAP_ABE_PORT_INITIALIZED;
+
+ /* load the ATC descriptors - disabled */
+ omap_abe_init_atc(abe, id);
/* load the micro-task parameters */
abe_init_io_tasks(id, &((abe_port[id]).format),
&((abe_port[id]).protocol));
- /* load the ATC descriptors - disabled */
- omap_abe_init_atc(abe, id);
+
*sink = (abe_port[id]).protocol.p.prot_pingpong.buf_addr;
return 0;
}
@@ -803,14 +788,13 @@ int omap_abe_connect_serial_port(struct omap_abe *abe,
(abe_port[id]).protocol.p.prot_serial.iter =
abe_dma_port_iter_factor(f);
+ /* load the ATC descriptors - disabled */
+ omap_abe_init_atc(abe, id);
/* load the micro-task parameters */
abe_init_io_tasks(id, &((abe_port[id]).format),
&((abe_port[id]).protocol));
abe_port[id].status = OMAP_ABE_PORT_INITIALIZED;
- /* load the ATC descriptors - disabled */
- omap_abe_init_atc(abe, id);
-
return 0;
}
EXPORT_SYMBOL(omap_abe_connect_serial_port);
@@ -1132,6 +1116,7 @@ void abe_init_io_tasks(u32 id, abe_data_format_t *format,
case OMAP_ABE_MM_UL2_PORT:
break;
case OMAP_ABE_VX_DL_PORT:
+ abe->MultiFrame[0][2] = ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_DL);
/* check for 8kHz/16kHz */
if (abe_port[id].format.f == 8000) {
abe->MultiFrame[TASK_VX_DL_SLT][TASK_VX_DL_IDX] =
@@ -1150,6 +1135,9 @@ void abe_init_io_tasks(u32 id, abe_data_format_t *format,
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_DL_8);
abe->MultiFrame[TASK_ASRC_VX_UL_SLT][TASK_ASRC_VX_UL_IDX] =
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_UL_8_SIB);
+ /* Init VX_UL ASRC & VX_DL ASRC and enable its adaptation */
+ abe_init_asrc_vx_ul(-250);
+ abe_init_asrc_vx_dl(250);
} else {
/* Do nothing, Scheduling Table has already been patched */
}
@@ -1170,12 +1158,16 @@ void abe_init_io_tasks(u32 id, abe_data_format_t *format,
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_DL_16);
abe->MultiFrame[TASK_ASRC_VX_UL_SLT][TASK_ASRC_VX_UL_IDX] =
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_UL_16_SIB);
+ /* Init VX_UL ASRC & VX_DL ASRC and enable its adaptation */
+ abe_init_asrc_vx_ul(-250);
+ abe_init_asrc_vx_dl(250);
} else {
/* Do nothing, Scheduling Table has already been patched */
}
}
break;
case OMAP_ABE_VX_UL_PORT:
+ abe->MultiFrame[16][3] = ABE_TASK_ID(C_ABE_FW_TASK_IO_VX_UL);
/* check for 8kHz/16kHz */
if (abe_port[id].format.f == 8000) {
abe->MultiFrame[TASK_VX_UL_SLT][TASK_VX_UL_IDX] =
@@ -1195,6 +1187,9 @@ void abe_init_io_tasks(u32 id, abe_data_format_t *format,
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_DL_8_SIB);
abe->MultiFrame[TASK_ASRC_VX_UL_SLT][TASK_ASRC_VX_UL_IDX] =
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_UL_8);
+ /* Init VX_UL ASRC & VX_DL ASRC and enable its adaptation */
+ abe_init_asrc_vx_ul(-250);
+ abe_init_asrc_vx_dl(250);
} else {
/* Do nothing, Scheduling Table has already been patched */
}
@@ -1216,6 +1211,9 @@ void abe_init_io_tasks(u32 id, abe_data_format_t *format,
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_DL_16_SIB);
abe->MultiFrame[TASK_ASRC_VX_UL_SLT][TASK_ASRC_VX_UL_IDX] =
ABE_TASK_ID(C_ABE_FW_TASK_ASRC_VX_UL_16);
+ /* Init VX_UL ASRC & VX_DL ASRC and enable its adaptation */
+ abe_init_asrc_vx_ul(-250);
+ abe_init_asrc_vx_dl(250);
} else {
/* Do nothing, Scheduling Table has already been patched */
}
diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
index dfddd0c..43722ca 100644
--- a/sound/soc/omap/omap-mcpdm.c
+++ b/sound/soc/omap/omap-mcpdm.c
@@ -397,8 +397,11 @@ static int omap_mcpdm_dai_startup(struct snd_pcm_substream *substream,
pm_runtime_get_sync(mcpdm->dev);
val = __raw_readl(OMAP4430_CM1_ABE_PDM_CLKCTRL);
- if ((val & CLKCTRL_MODULEMODE_MASK) != CLKCTRL_MODULEMODE_ENABLED)
- dev_err(mcpdm->dev, "Clock not enabled: PDM_CLKCTRL=0x%x\n", val);
+ if ((val & CLKCTRL_MODULEMODE_MASK) != CLKCTRL_MODULEMODE_ENABLED) {
+ WARN(1, "Clock not enabled: PDM_CLKCTRL=0x%x\n", val);
+ pm_runtime_put_sync(mcpdm->dev);
+ goto out;
+ }
/* Enable McPDM watch dog for ES above ES 1.0 to avoid saturation */
if (omap_rev() != OMAP4430_REV_ES1_0) {