diff options
author | Erik Gilling <konkers@android.com> | 2011-11-11 13:53:25 -0800 |
---|---|---|
committer | Erik Gilling <konkers@android.com> | 2011-11-11 13:53:25 -0800 |
commit | 570004caf2532d28fb7b704f543ca73e1a278eaa (patch) | |
tree | 43cb47641871c8f6c55dffbadc09ea2aaa09fe47 /sound/soc | |
parent | 8838c8db22acdab21bb61ebdb1fcb864b46c2868 (diff) | |
parent | b9c9da1604032f10bb417e4fd0b6c91bd001badd (diff) | |
download | kernel_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.c | 4 | ||||
-rw-r--r-- | sound/soc/omap/abe/abe_port.c | 48 | ||||
-rw-r--r-- | sound/soc/omap/omap-mcpdm.c | 7 |
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) { |