summaryrefslogtreecommitdiff
authorGong Ke <ke.gong@amlogic.com>2020-04-27 10:25:21 (GMT)
committer Zhi Zhou <zhi.zhou@amlogic.com>2020-04-29 04:58:50 (GMT)
commitcf4afdca2675dc69a103471f4f0fcb659a71a1b3 (patch)
treecc3cdd9f32d89866838acf87d4e1a658787b5e4c
parentf7a807582fff33856fdf41cccd16433794bb719e (diff)
downloadmedia_modules-cf4afdca2675dc69a103471f4f0fcb659a71a1b3.zip
media_modules-cf4afdca2675dc69a103471f4f0fcb659a71a1b3.tar.gz
media_modules-cf4afdca2675dc69a103471f4f0fcb659a71a1b3.tar.bz2
sub: fix the demux driver to support amsub interface. [1/1]
PD#SWPL-24950 Problem: amsub interface cannot be used. Solution: fixed demux driver to support use amsub interface. Verify: need verify on subtitle service. Signed-off-by: Gong Ke <ke.gong@amlogic.com> Change-Id: Ie6792bd8c876f6165ce67633353d1a16be5aaee7
Diffstat
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_dmx.c2
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_dvb.c1
-rw-r--r--drivers/stream_input/parser/tsdemux.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/drivers/stream_input/parser/hw_demux/aml_dmx.c b/drivers/stream_input/parser/hw_demux/aml_dmx.c
index eb8f30e..ef4725d 100644
--- a/drivers/stream_input/parser/hw_demux/aml_dmx.c
+++ b/drivers/stream_input/parser/hw_demux/aml_dmx.c
@@ -4386,11 +4386,13 @@ exit:
static int set_subtitle_pes_buffer(struct aml_dmx *dmx)
{
#ifdef SUB_PARSER
+ if (dmx->sub_chan == -1) {
unsigned long addr = virt_to_phys((void *)dmx->sub_pages);
WRITE_MPEG_REG(PARSER_SUB_RP, addr);
WRITE_MPEG_REG(PARSER_SUB_START_PTR, addr);
WRITE_MPEG_REG(PARSER_SUB_END_PTR, addr + dmx->sub_buf_len - 8);
pr_inf("set sub buff: (%d) %lx %x\n", dmx->id, addr, dmx->sub_buf_len);
+ }
#endif
return 0;
}
diff --git a/drivers/stream_input/parser/hw_demux/aml_dvb.c b/drivers/stream_input/parser/hw_demux/aml_dvb.c
index 71f171f..cdc9b99 100644
--- a/drivers/stream_input/parser/hw_demux/aml_dvb.c
+++ b/drivers/stream_input/parser/hw_demux/aml_dvb.c
@@ -2720,6 +2720,7 @@ static int aml_tsdemux_set_sid(int spid)
}
if ((spid >= 0) && (spid < 0x1FFF)) {
+ dmx->sub_chan = 3;
dmx->sub_chan =
dmx_alloc_chan(dmx, DMX_TYPE_TS,
DMX_PES_SUBTITLE, spid);
diff --git a/drivers/stream_input/parser/tsdemux.c b/drivers/stream_input/parser/tsdemux.c
index e3f61fe..7aa8a06 100644
--- a/drivers/stream_input/parser/tsdemux.c
+++ b/drivers/stream_input/parser/tsdemux.c
@@ -597,7 +597,7 @@ s32 tsdemux_init(u32 vid, u32 aid, u32 sid, u32 pcrid, bool is_hevc,
WRITE_AIU_REG(AIU_MEM_AIFIFO_BUF_CNTL, MEM_BUFCTRL_INIT);
CLEAR_AIU_REG_MASK(AIU_MEM_AIFIFO_BUF_CNTL, MEM_BUFCTRL_INIT);
- if (!enable_demux_driver()) {
+ if (!enable_demux_driver() || ((sid > 0) && (sid < 0x1fff))) {
WRITE_PARSER_REG(PARSER_SUB_START_PTR, parser_sub_start_ptr);
WRITE_PARSER_REG(PARSER_SUB_END_PTR, parser_sub_end_ptr);
WRITE_PARSER_REG(PARSER_SUB_RP, parser_sub_rp);