Skip to content

Commit

Permalink
media: ti-vpe: cal: Init formats in cal_ctx_v4l2_register()
Browse files Browse the repository at this point in the history
To prepare for splitting the V4L2 API support to a separate file, call
cal_ctx_v4l2_init_formats() from cal_ctx_v4l2_register().

Signed-off-by: Laurent Pinchart <[email protected]>
Reviewed-by: Benoit Parrot <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
pinchartl authored and sigmaris committed Aug 8, 2020
1 parent ea34c28 commit e410850
Showing 1 changed file with 39 additions and 44 deletions.
83 changes: 39 additions & 44 deletions drivers/media/platform/ti-vpe/cal.c
Original file line number Diff line number Diff line change
Expand Up @@ -1948,39 +1948,6 @@ static const struct video_device cal_videodev = {
V4L2_CAP_READWRITE,
};

static int cal_ctx_v4l2_register(struct cal_ctx *ctx)
{
struct v4l2_ctrl_handler *hdl = &ctx->ctrl_handler;
struct video_device *vfd = &ctx->vdev;
int ret;

ret = v4l2_ctrl_add_handler(hdl, ctx->phy->sensor->ctrl_handler, NULL,
true);
if (ret < 0) {
ctx_err(ctx, "Failed to add sensor ctrl handler\n");
return ret;
}

ret = video_register_device(vfd, VFL_TYPE_VIDEO, video_nr);
if (ret < 0) {
ctx_err(ctx, "Failed to register video device\n");
return ret;
}

ctx_info(ctx, "V4L2 device registered as %s\n",
video_device_node_name(vfd));

return 0;
}

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);
}

static int cal_ctx_v4l2_init_formats(struct cal_ctx *ctx)
{
struct v4l2_subdev_mbus_code_enum mbus_code;
Expand Down Expand Up @@ -2047,6 +2014,43 @@ static int cal_ctx_v4l2_init_formats(struct cal_ctx *ctx)
return 0;
}

static int cal_ctx_v4l2_register(struct cal_ctx *ctx)
{
struct v4l2_ctrl_handler *hdl = &ctx->ctrl_handler;
struct video_device *vfd = &ctx->vdev;
int ret;

ret = cal_ctx_v4l2_init_formats(ctx);
if (ret)
return ret;

ret = v4l2_ctrl_add_handler(hdl, ctx->phy->sensor->ctrl_handler, NULL,
true);
if (ret < 0) {
ctx_err(ctx, "Failed to add sensor ctrl handler\n");
return ret;
}

ret = video_register_device(vfd, VFL_TYPE_VIDEO, video_nr);
if (ret < 0) {
ctx_err(ctx, "Failed to register video device\n");
return ret;
}

ctx_info(ctx, "V4L2 device registered as %s\n",
video_device_node_name(vfd));

return 0;
}

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);
}

static int cal_ctx_v4l2_init(struct cal_ctx *ctx)
{
struct v4l2_ctrl_handler *hdl = &ctx->ctrl_handler;
Expand Down Expand Up @@ -2147,19 +2151,10 @@ static int cal_async_notifier_complete(struct v4l2_async_notifier *notifier)
{
struct cal_dev *cal = container_of(notifier, struct cal_dev, notifier);
unsigned int i;
int ret;

for (i = 0; i < ARRAY_SIZE(cal->ctx); ++i) {
struct cal_ctx *ctx = cal->ctx[i];

if (!ctx)
continue;

ret = cal_ctx_v4l2_init_formats(ctx);
if (ret)
continue;

cal_ctx_v4l2_register(ctx);
if (cal->ctx[i])
cal_ctx_v4l2_register(cal->ctx[i]);
}

return 0;
Expand Down

0 comments on commit e410850

Please sign in to comment.