mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-21 21:18:16 -04:00
media: meson: vdec_1: Refactor vdec_1_stop()
Factor out all the power off logic, except the clk_disable_unprepare(), to a new function __vdec_1_stop(). This allows vdec_1_start() to explicitly clean-out the clock during the error-path. The following smatch warning is fixed: drivers/staging/media/meson/vdec/vdec_1.c:239 vdec_1_start() warn: 'core->vdec_1_clk' from clk_prepare_enable() not released on lines: 239. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
committed by
Hans Verkuil
parent
157c73682d
commit
bc24a85d41
@@ -129,7 +129,7 @@ static u32 vdec_1_vififo_level(struct amvdec_session *sess)
|
||||
return amvdec_read_dos(core, VLD_MEM_VIFIFO_LEVEL);
|
||||
}
|
||||
|
||||
static int vdec_1_stop(struct amvdec_session *sess)
|
||||
static void __vdec_1_stop(struct amvdec_session *sess)
|
||||
{
|
||||
struct amvdec_core *core = sess->core;
|
||||
struct amvdec_codec_ops *codec_ops = sess->fmt_out->codec_ops;
|
||||
@@ -158,10 +158,17 @@ static int vdec_1_stop(struct amvdec_session *sess)
|
||||
regmap_update_bits(core->regmap_ao, AO_RTI_GEN_PWR_SLEEP0,
|
||||
GEN_PWR_VDEC_1, GEN_PWR_VDEC_1);
|
||||
|
||||
clk_disable_unprepare(core->vdec_1_clk);
|
||||
|
||||
if (sess->priv)
|
||||
codec_ops->stop(sess);
|
||||
}
|
||||
|
||||
static int vdec_1_stop(struct amvdec_session *sess)
|
||||
{
|
||||
struct amvdec_core *core = sess->core;
|
||||
|
||||
__vdec_1_stop(sess);
|
||||
|
||||
clk_disable_unprepare(core->vdec_1_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -235,7 +242,8 @@ static int vdec_1_start(struct amvdec_session *sess)
|
||||
return 0;
|
||||
|
||||
stop:
|
||||
vdec_1_stop(sess);
|
||||
__vdec_1_stop(sess);
|
||||
clk_disable_unprepare(core->vdec_1_clk);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user