vreal: uninit when init fail

PD#163348: fix for hang up when playing video after play vreal format

Change-Id: I13fc45d6092351d86db4dfdbfd6f837d7deca605
This commit is contained in:
wenbiao zhang
2018-04-04 10:49:25 +08:00
committed by Dongjin Kim
parent 7613cd2882
commit 13fd1902f3

View File

@@ -811,13 +811,16 @@ s32 vreal_init(struct vdec_s *vdec)
ret = rmparser_init(vdec);
if (ret) {
amvdec_disable();
vfree(buf);
pr_info("rm parser init failed\n");
return ret;
}
if (vreal_amstream_dec_info.format == VIDEO_DEC_FORMAT_REAL_8) {
if (vreal_amstream_dec_info.param == NULL) {
rmparser_release();
amvdec_disable();
vfree(buf);
return -1;
}
load_block_data((void *)pic_sz_tbl, 12);
@@ -839,6 +842,7 @@ s32 vreal_init(struct vdec_s *vdec)
pr_info("unsurpported real format\n");
if (size < 0) {
rmparser_release();
amvdec_disable();
pr_err("get firmware fail.");
vfree(buf);
@@ -847,6 +851,7 @@ s32 vreal_init(struct vdec_s *vdec)
if (size == 1)
pr_info ("tee load ok");
else if (amvdec_loadmc_ex(VFORMAT_REAL, NULL, buf) < 0) {
rmparser_release();
amvdec_disable();
vfree(buf);
return -EBUSY;
@@ -858,10 +863,14 @@ s32 vreal_init(struct vdec_s *vdec)
/* enable AMRISC side protocol */
ret = vreal_prot_init();
if (ret < 0)
if (ret < 0) {
rmparser_release();
amvdec_disable();
return ret;
}
if (vdec_request_irq(VDEC_IRQ_1, vreal_isr,
"vreal-irq", (void *)vreal_dec_id)) {
rmparser_release();
amvdec_disable();
pr_info("vreal irq register error.\n");