kernel: bump 5.15 to 5.15.100
[openwrt/openwrt.git] / target / linux / bcm27xx / patches-5.15 / 950-0706-media-i2c-imx219-Scale-the-pixel-clock-rate-for-the-.patch
index 124117ce8bfdd7a4e081d2d8838041eda2e86ed7..83bf71c265b735ed6e241ac2a1f48a08ac8a2db8 100644 (file)
@@ -15,53 +15,53 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
 
 --- a/drivers/media/i2c/imx219.c
 +++ b/drivers/media/i2c/imx219.c
-@@ -153,6 +153,9 @@ struct imx219_mode {
+@@ -162,6 +162,9 @@ struct imx219_mode {
  
-       /* Default register values */
-       struct imx219_reg_list reg_list;
+       /* 2x2 binning is used */
+       bool binning;
 +
 +      /* Relative pixel clock rate factor for the mode. */
 +      unsigned int rate_factor;
  };
  
- /*
-@@ -495,6 +498,7 @@ static const struct imx219_mode supporte
-                       .num_of_regs = ARRAY_SIZE(mode_3280x2464_regs),
+ static const struct imx219_reg imx219_common_regs[] = {
+@@ -402,6 +405,7 @@ static const struct imx219_mode supporte
                        .regs = mode_3280x2464_regs,
                },
+               .binning = false,
 +              .rate_factor = 1,
        },
        {
                /* 1080P 30fps cropped */
-@@ -511,6 +515,7 @@ static const struct imx219_mode supporte
-                       .num_of_regs = ARRAY_SIZE(mode_1920_1080_regs),
+@@ -419,6 +423,7 @@ static const struct imx219_mode supporte
                        .regs = mode_1920_1080_regs,
                },
+               .binning = false,
 +              .rate_factor = 1,
        },
        {
                /* 2x2 binned 30fps mode */
-@@ -527,6 +532,7 @@ static const struct imx219_mode supporte
-                       .num_of_regs = ARRAY_SIZE(mode_1640_1232_regs),
+@@ -436,6 +441,7 @@ static const struct imx219_mode supporte
                        .regs = mode_1640_1232_regs,
                },
+               .binning = true,
 +              .rate_factor = 1,
        },
        {
                /* 640x480 30fps mode */
-@@ -543,6 +549,11 @@ static const struct imx219_mode supporte
-                       .num_of_regs = ARRAY_SIZE(mode_640_480_regs),
+@@ -453,6 +459,11 @@ static const struct imx219_mode supporte
                        .regs = mode_640_480_regs,
                },
+               .binning = true,
 +              /*
-+               * This mode uses a special 2x2 binning that doubles the
-+               * the internal pixel clock rate.
-+               */
++              * This mode uses a special 2x2 binning that doubles the
++              * the internal pixel clock rate.
++              */
 +              .rate_factor = 2,
        },
  };
  
-@@ -765,7 +776,8 @@ static int imx219_set_ctrl(struct v4l2_c
+@@ -675,7 +686,8 @@ static int imx219_set_ctrl(struct v4l2_c
                break;
        case V4L2_CID_EXPOSURE:
                ret = imx219_write_reg(imx219, IMX219_REG_EXPOSURE,
@@ -71,7 +71,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
                break;
        case V4L2_CID_DIGITAL_GAIN:
                ret = imx219_write_reg(imx219, IMX219_REG_DIGITAL_GAIN,
-@@ -785,7 +797,8 @@ static int imx219_set_ctrl(struct v4l2_c
+@@ -695,7 +707,8 @@ static int imx219_set_ctrl(struct v4l2_c
        case V4L2_CID_VBLANK:
                ret = imx219_write_reg(imx219, IMX219_REG_VTS,
                                       IMX219_REG_VALUE_16BIT,
@@ -81,7 +81,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
                break;
        case V4L2_CID_TEST_PATTERN_RED:
                ret = imx219_write_reg(imx219, IMX219_REG_TESTP_RED,
-@@ -957,7 +970,7 @@ static int imx219_set_pad_format(struct
+@@ -867,7 +880,7 @@ static int imx219_set_pad_format(struct
        struct imx219 *imx219 = to_imx219(sd);
        const struct imx219_mode *mode;
        struct v4l2_mbus_framefmt *framefmt;
@@ -90,7 +90,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
        unsigned int i;
  
        if (fmt->pad >= NUM_PADS)
-@@ -1018,6 +1031,12 @@ static int imx219_set_pad_format(struct
+@@ -928,6 +941,12 @@ static int imx219_set_pad_format(struct
                        hblank = IMX219_PPL_DEFAULT - mode->width;
                        __v4l2_ctrl_modify_range(imx219->hblank, hblank, hblank,
                                                 1, hblank);
@@ -103,7 +103,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
                }
        } else {
                if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
-@@ -1362,7 +1381,7 @@ static int imx219_init_controls(struct i
+@@ -1315,7 +1334,7 @@ static int imx219_init_controls(struct i
        struct v4l2_ctrl_handler *ctrl_hdlr;
        unsigned int height = imx219->mode->height;
        struct v4l2_fwnode_device_properties props;
@@ -112,7 +112,7 @@ Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
        int i, ret;
  
        ctrl_hdlr = &imx219->ctrl_handler;
-@@ -1374,11 +1393,11 @@ static int imx219_init_controls(struct i
+@@ -1327,11 +1346,11 @@ static int imx219_init_controls(struct i
        ctrl_hdlr->lock = &imx219->mutex;
  
        /* By default, PIXEL_RATE is read only */