/* V-timing */
        unsigned int vts_def;
-
-       /* 2x2 binning is used */
-       bool binning;
 };
 
 static const struct cci_reg_sequence imx219_common_regs[] = {
                        .height = 2464
                },
                .vts_def = IMX219_VTS_15FPS,
-               .binning = false,
        },
        {
                /* 1080P 30fps cropped */
                        .height = 1080
                },
                .vts_def = IMX219_VTS_30FPS_1080P,
-               .binning = false,
        },
        {
                /* 2x2 binned 30fps mode */
                        .height = 2464
                },
                .vts_def = IMX219_VTS_30FPS_BINNED,
-               .binning = true,
        },
        {
                /* 640x480 30fps mode */
                        .height = 960
                },
                .vts_def = IMX219_VTS_30FPS_640x480,
-               .binning = true,
        },
 };
 
        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;