@@ -161,9 +161,6 @@ struct imx219_mode {
/* V-timing */
unsigned int vts_def;
-
- /* 2x2 binning is used */
- bool binning;
};
static const struct cci_reg_sequence imx219_common_regs[] = {
@@ -306,7 +303,6 @@ static const struct imx219_mode supported_modes[] = {
.height = 2464
},
.vts_def = IMX219_VTS_15FPS,
- .binning = false,
},
{
/* 1080P 30fps cropped */
@@ -319,7 +315,6 @@ static const struct imx219_mode supported_modes[] = {
.height = 1080
},
.vts_def = IMX219_VTS_30FPS_1080P,
- .binning = false,
},
{
/* 2x2 binned 30fps mode */
@@ -332,7 +327,6 @@ static const struct imx219_mode supported_modes[] = {
.height = 2464
},
.vts_def = IMX219_VTS_30FPS_BINNED,
- .binning = true,
},
{
/* 640x480 30fps mode */
@@ -345,7 +339,6 @@ static const struct imx219_mode supported_modes[] = {
.height = 960
},
.vts_def = IMX219_VTS_30FPS_640x480,
- .binning = true,
},
};
@@ -648,7 +641,7 @@ static int imx219_set_framefmt(struct imx219 *imx219,
cci_write(imx219->regmap, IMX219_REG_Y_ADD_END_A,
crop->top - IMX219_PIXEL_ARRAY_TOP + crop->height - 1, &ret);
- if (!imx219->mode->binning)
+ if (format->width == crop->width && format->height == crop->height)
bin_mode = IMX219_BINNING_NONE;
else if (bpp == 8)
bin_mode = IMX219_BINNING_2X2_ANALOG;
Compare the format and crop rectangle dimensions to infer binning settings, instead of storing the binning mode in the imx219_mode structure. This removes duplicate information from the mode. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- drivers/media/i2c/imx219.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)