media: ti-vpe: cal: Allocate cal_ctx active_fmt array dynamically
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 6 Jul 2020 18:36:36 +0000 (20:36 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sun, 19 Jul 2020 08:37:10 +0000 (10:37 +0200)
To avoid making the cal_ctx structure layoug depend on the size of the
cal_formats array, allocate the active_fmt array dynamically. This
prepares for splitting the driver in multiple files.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/ti-vpe/cal.c

index 26747e6..31878a3 100644 (file)
@@ -325,7 +325,7 @@ struct cal_ctx {
        struct v4l2_mbus_framefmt       m_fmt;
 
        /* Current subdev enumerated format */
-       const struct cal_fmt    *active_fmt[ARRAY_SIZE(cal_formats)];
+       const struct cal_fmt    **active_fmt;
        unsigned int            num_active_fmt;
 
        unsigned int            sequence;
@@ -1957,7 +1957,13 @@ static int cal_ctx_v4l2_init_formats(struct cal_ctx *ctx)
        int ret = 0;
 
        /* Enumerate sub device formats and enable all matching local formats */
+       ctx->active_fmt = devm_kcalloc(ctx->cal->dev, ARRAY_SIZE(cal_formats),
+                                      sizeof(*ctx->active_fmt), GFP_KERNEL);
+       if (!ctx->active_fmt)
+               return -ENOMEM;
+
        ctx->num_active_fmt = 0;
+
        for (j = 0, i = 0; ret != -EINVAL; ++j) {
 
                memset(&mbus_code, 0, sizeof(mbus_code));