On 11/4/19 4:49 PM, Chuhong Yuan wrote: > This driver forgets to disable and unprepare clock when remove. > Add a call to clk_disable_unprepare to fix it. I'd like an Ack from Samsung before I apply this. I see this in the probe() in fimc-lite.c: if (!pm_runtime_enabled(dev)) { ret = clk_prepare_enable(fimc->clock); if (ret < 0) goto err_sd; } So is it right to always call clk_disable_unprepare in the remove()? I suspect it is correct, but I would like someone else to take a look as well. Regards, Hans > > Signed-off-by: Chuhong Yuan <hslester96@xxxxxxxxx> > --- > drivers/media/platform/exynos4-is/fimc-lite.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c > index e87c6a09205b..6748bd96aada 100644 > --- a/drivers/media/platform/exynos4-is/fimc-lite.c > +++ b/drivers/media/platform/exynos4-is/fimc-lite.c > @@ -1614,6 +1614,7 @@ static int fimc_lite_remove(struct platform_device *pdev) > struct fimc_lite *fimc = platform_get_drvdata(pdev); > struct device *dev = &pdev->dev; > > + clk_disable_unprepare(fimc->clock); > pm_runtime_disable(dev); > pm_runtime_set_suspended(dev); > fimc_lite_unregister_capture_subdev(fimc); >