summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--[-rwxr-xr-x]Media.mk1
-rw-r--r--drivers/amvdec_ports/Makefile1
-rw-r--r--drivers/amvdec_ports/aml_vcodec_adapt.c112
-rw-r--r--drivers/amvdec_ports/aml_vcodec_adapt.h5
-rw-r--r--drivers/amvdec_ports/aml_vcodec_dec.c992
-rw-r--r--drivers/amvdec_ports/aml_vcodec_dec.h2
-rw-r--r--drivers/amvdec_ports/aml_vcodec_dec_drv.c122
-rw-r--r--drivers/amvdec_ports/aml_vcodec_dec_pm.c206
-rw-r--r--drivers/amvdec_ports/aml_vcodec_dec_pm.h34
-rw-r--r--drivers/amvdec_ports/aml_vcodec_drv.h188
-rw-r--r--drivers/amvdec_ports/aml_vcodec_util.c34
-rw-r--r--drivers/amvdec_ports/aml_vcodec_util.h90
-rw-r--r--drivers/amvdec_ports/aml_vcodec_vfm.c28
-rw-r--r--drivers/amvdec_ports/decoder/aml_h264_parser.c81
-rw-r--r--drivers/amvdec_ports/decoder/aml_h264_parser.h1
-rw-r--r--drivers/amvdec_ports/decoder/aml_hevc_parser.c133
-rw-r--r--drivers/amvdec_ports/decoder/aml_hevc_parser.h1
-rw-r--r--drivers/amvdec_ports/decoder/aml_mjpeg_parser.c34
-rw-r--r--drivers/amvdec_ports/decoder/aml_mjpeg_parser.h1
-rw-r--r--drivers/amvdec_ports/decoder/aml_mpeg12_parser.h1
-rw-r--r--drivers/amvdec_ports/decoder/aml_mpeg4_parser.c178
-rw-r--r--drivers/amvdec_ports/decoder/aml_mpeg4_parser.h1
-rw-r--r--drivers/amvdec_ports/decoder/aml_vp9_parser.c26
-rw-r--r--drivers/amvdec_ports/decoder/aml_vp9_parser.h1
-rw-r--r--drivers/amvdec_ports/decoder/vdec_h264_if.c223
-rw-r--r--drivers/amvdec_ports/decoder/vdec_hevc_if.c194
-rw-r--r--drivers/amvdec_ports/decoder/vdec_mjpeg_if.c210
-rw-r--r--drivers/amvdec_ports/decoder/vdec_mpeg12_if.c304
-rw-r--r--drivers/amvdec_ports/decoder/vdec_mpeg4_if.c209
-rw-r--r--drivers/amvdec_ports/decoder/vdec_vp9_if.c195
-rw-r--r--drivers/amvdec_ports/vdec_drv_if.c6
-rw-r--r--drivers/amvdec_ports/vdec_drv_if.h21
-rw-r--r--drivers/common/chips/chips.c1
-rw-r--r--drivers/common/chips/decoder_cpu_ver_info.c8
-rw-r--r--drivers/common/chips/decoder_cpu_ver_info.h1
-rw-r--r--drivers/common/firmware/firmware_drv.c9
-rw-r--r--drivers/common/firmware/firmware_type.c1
-rw-r--r--drivers/common/firmware/firmware_type.h1
-rw-r--r--drivers/common/media_clock/clk/clk.c3
-rw-r--r--drivers/common/media_clock/clk/clkg12.c5
-rw-r--r--drivers/frame_provider/decoder/Makefile1
-rw-r--r--drivers/frame_provider/decoder/avs/avs.c60
-rw-r--r--drivers/frame_provider/decoder/avs2/avs2_bufmgr.c12
-rw-r--r--drivers/frame_provider/decoder/avs2/avs2_global.h3
-rw-r--r--drivers/frame_provider/decoder/avs2/vavs2.c115
-rw-r--r--drivers/frame_provider/decoder/avs_multi/Makefile2
-rw-r--r--drivers/frame_provider/decoder/avs_multi/avs_multi.c1633
-rw-r--r--drivers/frame_provider/decoder/avs_multi/avsp_trans_multi.c5065
-rw-r--r--drivers/frame_provider/decoder/h264/vh264.c58
-rw-r--r--drivers/frame_provider/decoder/h264_multi/h264_dpb.c50
-rw-r--r--drivers/frame_provider/decoder/h264_multi/h264_dpb.h34
-rw-r--r--drivers/frame_provider/decoder/h264_multi/vmh264.c1043
-rw-r--r--drivers/frame_provider/decoder/h265/vh265.c707
-rw-r--r--drivers/frame_provider/decoder/mjpeg/vmjpeg_multi.c60
-rw-r--r--drivers/frame_provider/decoder/mpeg12/vmpeg12_multi.c595
-rw-r--r--drivers/frame_provider/decoder/mpeg4/vmpeg4.c5
-rw-r--r--drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c80
-rw-r--r--drivers/frame_provider/decoder/utils/amvdec.c5
-rw-r--r--drivers/frame_provider/decoder/utils/frame_check.c178
-rw-r--r--drivers/frame_provider/decoder/utils/frame_check.h4
-rw-r--r--drivers/frame_provider/decoder/utils/vdec.c530
-rw-r--r--drivers/frame_provider/decoder/utils/vdec.h18
-rw-r--r--drivers/frame_provider/decoder/utils/vdec_input.c12
-rw-r--r--drivers/frame_provider/decoder/utils/vdec_input.h3
-rw-r--r--drivers/frame_provider/decoder/utils/vdec_v4l2_buffer_ops.c92
-rw-r--r--drivers/frame_provider/decoder/utils/vdec_v4l2_buffer_ops.h7
-rw-r--r--drivers/frame_provider/decoder/vav1/Makefile2
-rw-r--r--drivers/frame_provider/decoder/vav1/aom_av1_define.h171
-rw-r--r--drivers/frame_provider/decoder/vav1/av1_bufmgr.c3392
-rw-r--r--drivers/frame_provider/decoder/vav1/av1_global.h2310
-rw-r--r--drivers/frame_provider/decoder/vav1/vav1.c9946
-rw-r--r--drivers/frame_provider/decoder/vav1/vav1.h22
-rw-r--r--drivers/frame_provider/decoder/vc1/vvc1.c46
-rw-r--r--drivers/frame_provider/decoder/vp9/vvp9.c449
-rw-r--r--drivers/frame_sink/encoder/h264/encoder.c2
-rw-r--r--drivers/stream_input/Makefile5
-rw-r--r--drivers/stream_input/amports/amstream.c263
-rw-r--r--drivers/stream_input/parser/demux/aml_dvb.h5
-rw-r--r--drivers/stream_input/parser/demux/hw_demux/demod_gt.h62
-rw-r--r--drivers/stream_input/parser/demux/hw_demux/frontend.c293
-rw-r--r--drivers/stream_input/parser/dvb_common.c17
-rw-r--r--drivers/stream_input/parser/dvb_common.h26
-rw-r--r--drivers/stream_input/parser/esparser.c15
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_demod_gt.h87
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_dmx.c270
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_dvb.c445
-rw-r--r--drivers/stream_input/parser/hw_demux/aml_dvb.h32
-rw-r--r--drivers/stream_input/parser/streambuf.c9
-rw-r--r--drivers/stream_input/parser/tsdemux.c14
-rw-r--r--drivers/stream_input/parser/tsdemux.h1
-rw-r--r--drivers/stream_input/tv_frontend/Makefile16
-rw-r--r--drivers/stream_input/tv_frontend/aml_fe.c1372
-rw-r--r--drivers/stream_input/tv_frontend/aml_fe.h213
-rw-r--r--drivers/stream_input/tv_frontend/atv_demod/atvdemod_frontend.c791
-rw-r--r--drivers/stream_input/tv_frontend/atv_demod/atvdemod_func.c2163
-rw-r--r--drivers/stream_input/tv_frontend/atv_demod/atvdemod_func.h323
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/aml_demod.c725
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/amlfrontend.c1402
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/demod_func.c2996
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/dvbc_func.c1331
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/dvbt_func.c2188
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/i2c_func.c42
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/acf_filter_coefficient.h414
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_che.h77
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_che_bit.h266
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_front.h70
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_front_bit.h331
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_sync.h53
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_sync_bit.h110
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_top.h90
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/addr_dtmb_top_bit.h178
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/aml_dtv_demod_reg.h28
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/amlfrontend.h86
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/include/demod_func.h626
-rw-r--r--drivers/stream_input/tv_frontend/dtv_demod/tuner_func.c189
-rw-r--r--firmware/video_ucode.bin14148
116 files changed, 25845 insertions, 36303 deletions
diff --git a/drivers/frame_provider/decoder/avs/avs.c b/drivers/frame_provider/decoder/avs/avs.c
index 642c3bb..b97cb33 100644
--- a/drivers/frame_provider/decoder/avs/avs.c
+++ b/drivers/frame_provider/decoder/avs/avs.c
@@ -151,7 +151,7 @@ static struct vframe_provider_s vavs_vf_prov;
#define RV_AI_BUFF_START_ADDR 0x01a00000
#define LONG_CABAC_RV_AI_BUFF_START_ADDR 0x00000000
-static u32 vf_buf_num = 4;
+static u32 vf_buf_num = 8;
static u32 vf_buf_num_used;
static u32 canvas_base = 128;
#ifdef NV21
@@ -479,7 +479,7 @@ static void vavs_isr(void)
(((reg >> 8) & 0x3) << 3) - 1) & 0x1f;
else
buffer_index =
- ((reg & 0x7) - 1) & 3;
+ ((reg & 0x7) - 1) & 7;
picture_type = (reg >> 3) & 7;
#ifdef DEBUG_PTS
@@ -644,7 +644,6 @@ static void vavs_isr(void)
decoder_bmmu_box_get_mem_handle(
mm_blk_handle,
buffer_index);
-
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
@@ -727,6 +726,7 @@ static void vavs_isr(void)
mm_blk_handle,
buffer_index);
decoder_do_frame_check(NULL, vf);
+
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
@@ -969,13 +969,14 @@ void vavs_recover(void)
WRITE_VREG(DOS_SW_RESET0, (1 << 9) | (1 << 8));
WRITE_VREG(DOS_SW_RESET0, 0);
-
+ WRITE_VREG(AV_SCRATCH_H, 0);
if (firmware_sel == 1) {
WRITE_VREG(POWER_CTL_VLD, 0x10);
WRITE_VREG_BITS(VLD_MEM_VIFIFO_CONTROL, 2,
MEM_FIFO_CNT_BIT, 2);
WRITE_VREG_BITS(VLD_MEM_VIFIFO_CONTROL, 8,
MEM_LEVEL_CNT_BIT, 6);
+ WRITE_VREG(AV_SCRATCH_H, 1); // 8 buf flag to ucode
}
@@ -1078,6 +1079,7 @@ static int vavs_prot_init(void)
/*************************************************************/
r = vavs_canvas_init();
+ WRITE_VREG(AV_SCRATCH_H, 0);
#ifdef NV21
if (firmware_sel == 0) {
/* fixed canvas index */
@@ -1095,12 +1097,7 @@ static int vavs_prot_init(void)
<< 16)
);
}
- /*
- *WRITE_VREG(AV_SCRATCH_0, 0x010100);
- *WRITE_VREG(AV_SCRATCH_1, 0x040403);
- *WRITE_VREG(AV_SCRATCH_2, 0x070706);
- *WRITE_VREG(AV_SCRATCH_3, 0x0a0a09);
- */
+ WRITE_VREG(AV_SCRATCH_H, 1); // 8 buf flag to ucode
}
#else
/* index v << 16 | u << 8 | y */
@@ -1161,7 +1158,7 @@ static int vavs_prot_init(void)
#ifdef AVSP_LONG_CABAC
static unsigned char es_write_addr[MAX_CODED_FRAME_SIZE] __aligned(64);
#endif
-static void vavs_local_init(void)
+static void vavs_local_init(bool is_reset)
{
int i;
@@ -1180,19 +1177,23 @@ static void vavs_local_init(void)
#ifdef DEBUG_PTS
pts_hit = pts_missed = pts_i_hit = pts_i_missed = 0;
#endif
- INIT_KFIFO(display_q);
- INIT_KFIFO(recycle_q);
- INIT_KFIFO(newframe_q);
- for (i = 0; i < VF_POOL_SIZE; i++) {
- const struct vframe_s *vf = &vfpool[i];
+ if (!is_reset) {
+ INIT_KFIFO(display_q);
+ INIT_KFIFO(recycle_q);
+ INIT_KFIFO(newframe_q);
- vfpool[i].index = vf_buf_num;
- vfpool[i].bufWidth = 1920;
- kfifo_put(&newframe_q, vf);
+ for (i = 0; i < VF_POOL_SIZE; i++) {
+ const struct vframe_s *vf = &vfpool[i];
+
+ vfpool[i].index = vf_buf_num;
+ vfpool[i].bufWidth = 1920;
+ kfifo_put(&newframe_q, vf);
+ }
+
+ for (i = 0; i < vf_buf_num; i++)
+ vfbuf_use[i] = 0;
}
- for (i = 0; i < vf_buf_num; i++)
- vfbuf_use[i] = 0;
cur_vfpool = vfpool;
@@ -1232,7 +1233,7 @@ static void vavs_ppmgr_reset(void)
{
vf_notify_receiver(PROVIDER_NAME, VFRAME_EVENT_PROVIDER_RESET, NULL);
- vavs_local_init();
+ vavs_local_init(true);
pr_info("vavs: vf_ppmgr_reset\n");
}
@@ -1241,12 +1242,12 @@ static void vavs_ppmgr_reset(void)
static void vavs_local_reset(void)
{
mutex_lock(&vavs_mutex);
- recover_flag = 1;
+ //recover_flag = 1;
pr_info("error, local reset\n");
amvdec_stop();
msleep(100);
vf_notify_receiver(PROVIDER_NAME, VFRAME_EVENT_PROVIDER_RESET, NULL);
- vavs_local_init();
+ vavs_local_init(true);
vavs_recover();
@@ -1283,7 +1284,7 @@ static void vavs_fatal_error_handler(struct work_struct *work)
vavs_ppmgr_reset();
#else
vf_light_unreg_provider(&vavs_vf_prov);
- vavs_local_init();
+ vavs_local_init(true);
vf_reg_provider(&vavs_vf_prov);
#endif
vavs_recover();
@@ -1341,7 +1342,7 @@ static void vavs_put_timer_func(unsigned long arg)
vavs_ppmgr_reset();
#else
vf_light_unreg_provider(&vavs_vf_prov);
- vavs_local_init();
+ vavs_local_init(true);
vf_reg_provider(&vavs_vf_prov);
#endif
vavs_recover();
@@ -1409,7 +1410,6 @@ static void vavs_put_timer_func(unsigned long arg)
kfifo_put(&newframe_q,
(const struct vframe_s *)vf);
}
-
}
if (frame_dur > 0 && saved_resolution !=
@@ -1548,7 +1548,7 @@ static s32 vavs_init(void)
stat |= STAT_TIMER_INIT;
amvdec_enable();
- vavs_local_init();
+ vavs_local_init(false);
if (get_cpu_major_id() >= AM_MESON_CPU_MAJOR_ID_GXM)
size = get_firmware_data(VIDEO_DEC_AVS, buf);
@@ -1660,9 +1660,9 @@ static int amvdec_avs_probe(struct platform_device *pdev)
firmware_sel = 1;
if (firmware_sel == 1) {
- vf_buf_num = 4;
+ vf_buf_num = 8;
canvas_base = 0;
- canvas_num = 3;
+ canvas_num = 2;
} else {
canvas_base = 128;