media: imx: csis: Store pads format separately
authorJacopo Mondi <jacopo@jmondi.org>
Tue, 22 Feb 2022 21:46:43 +0000 (22:46 +0100)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 23 Feb 2022 07:53:08 +0000 (08:53 +0100)
As the formats on the sink and source pad might be different store
them separately.

The pad format is used to configure the image width and height in
mipi_csis_system_enable(). As the csis cannot downscale, using the sink
or the source one isn't relevant.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/imx/imx-mipi-csis.c

index e3e0f4a..0a72734 100644 (file)
@@ -330,7 +330,7 @@ struct csi_state {
 
        struct mutex lock;      /* Protect csis_fmt, format_mbus and state */
        const struct csis_pix_format *csis_fmt;
-       struct v4l2_mbus_framefmt format_mbus;
+       struct v4l2_mbus_framefmt format_mbus[CSIS_PADS_NUM];
        u32 state;
 
        spinlock_t slock;       /* Protect events */
@@ -535,7 +535,7 @@ static void mipi_csis_system_enable(struct csi_state *state, int on)
 /* Called with the state.lock mutex held */
 static void __mipi_csis_set_format(struct csi_state *state)
 {
-       struct v4l2_mbus_framefmt *mf = &state->format_mbus;
+       struct v4l2_mbus_framefmt *mf = &state->format_mbus[CSIS_PAD_SINK];
        u32 val;
 
        /* Color format */
@@ -967,7 +967,7 @@ mipi_csis_get_format(struct csi_state *state,
        if (which == V4L2_SUBDEV_FORMAT_TRY)
                return v4l2_subdev_get_try_format(&state->sd, sd_state, pad);
 
-       return &state->format_mbus;
+       return &state->format_mbus[pad];
 }
 
 static int mipi_csis_init_cfg(struct v4l2_subdev *sd,