Commit 497b5e94 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

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: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarBenoit Parrot <bparrot@ti.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 517cf52b
......@@ -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 @@ static int cal_probe(struct platform_device *pdev)
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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment