From 497b5e94f820b3900dae89d34cd29db5ea394ff3 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 6 Jul 2020 20:36:26 +0200 Subject: [PATCH] media: ti-vpe: cal: Decouple context and phy cleanup at remove time The driver happens the use the same number of CAMERARX and context, but coupling their cleanup at remove time is wrong. To prepare for the introduction of additional contexts, decouple the two. Signed-off-by: Laurent Pinchart Reviewed-by: Benoit Parrot Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- drivers/media/platform/ti-vpe/cal.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c index 03b4d5351bfde..e4d8cadf7befd 100644 --- a/drivers/media/platform/ti-vpe/cal.c +++ b/drivers/media/platform/ti-vpe/cal.c @@ -1976,6 +1976,9 @@ static int cal_ctx_v4l2_register(struct cal_ctx *ctx) static void cal_ctx_v4l2_unregister(struct cal_ctx *ctx) { + ctx_dbg(1, ctx, "unregistering %s\n", + video_device_node_name(&ctx->vdev)); + video_unregister_device(&ctx->vdev); } @@ -2408,7 +2411,6 @@ error_camerarx: static int cal_remove(struct platform_device *pdev) { struct cal_dev *cal = platform_get_drvdata(pdev); - struct cal_ctx *ctx; unsigned int i; cal_dbg(1, cal, "Removing %s\n", CAL_MODULE_NAME); @@ -2418,14 +2420,18 @@ static int cal_remove(struct platform_device *pdev) cal_async_notifier_unregister(cal); for (i = 0; i < ARRAY_SIZE(cal->ctx); i++) { - ctx = cal->ctx[i]; - if (ctx) { - ctx_dbg(1, ctx, "unregistering %s\n", - video_device_node_name(&ctx->vdev)); - cal_ctx_v4l2_unregister(ctx); - cal_camerarx_disable(ctx->phy); - cal_ctx_v4l2_cleanup(ctx); - } + if (cal->ctx[i]) + cal_ctx_v4l2_unregister(cal->ctx[i]); + } + + for (i = 0; i < ARRAY_SIZE(cal->phy); i++) { + if (cal->phy[i]) + cal_camerarx_disable(cal->phy[i]); + } + + for (i = 0; i < ARRAY_SIZE(cal->ctx); i++) { + if (cal->ctx[i]) + cal_ctx_v4l2_cleanup(cal->ctx[i]); } v4l2_device_unregister(&cal->v4l2_dev); -- 2.30.2