--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
-@@ -118,6 +118,16 @@
+@@ -124,6 +124,16 @@
#define IMX219_PIXEL_ARRAY_WIDTH 3280U
#define IMX219_PIXEL_ARRAY_HEIGHT 2464U
struct imx219_reg {
u16 address;
u8 val;
-@@ -538,7 +548,7 @@ static const struct imx219_mode supporte
+@@ -448,7 +458,7 @@ static const struct imx219_mode supporte
struct imx219 {
struct v4l2_subdev sd;
struct v4l2_mbus_framefmt fmt;
-@@ -688,18 +698,26 @@ static void imx219_set_default_format(st
+@@ -598,18 +608,26 @@ static void imx219_set_default_format(st
static int imx219_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{
struct imx219 *imx219 = to_imx219(sd);
/* Initialize try_crop rectangle. */
try_crop = v4l2_subdev_get_try_crop(sd, fh->state, 0);
-@@ -808,12 +826,21 @@ static int imx219_enum_mbus_code(struct
+@@ -718,12 +736,21 @@ static int imx219_enum_mbus_code(struct
{
struct imx219 *imx219 = to_imx219(sd);
return 0;
}
-@@ -823,21 +850,30 @@ static int imx219_enum_frame_size(struct
+@@ -733,21 +760,30 @@ static int imx219_enum_frame_size(struct
struct v4l2_subdev_frame_size_enum *fse)
{
struct imx219 *imx219 = to_imx219(sd);
return 0;
}
-@@ -852,9 +888,9 @@ static void imx219_reset_colorspace(stru
+@@ -762,9 +798,9 @@ static void imx219_reset_colorspace(stru
fmt->xfer_func = V4L2_MAP_XFER_FUNC_DEFAULT(fmt->colorspace);
}
{
fmt->format.width = mode->width;
fmt->format.height = mode->height;
-@@ -862,21 +898,39 @@ static void imx219_update_pad_format(str
+@@ -772,21 +808,39 @@ static void imx219_update_pad_format(str
imx219_reset_colorspace(&fmt->format);
}
}
return 0;
-@@ -906,51 +960,74 @@ static int imx219_set_pad_format(struct
+@@ -816,51 +870,74 @@ static int imx219_set_pad_format(struct
int exposure_max, exposure_def, hblank;
unsigned int i;
}
mutex_unlock(&imx219->mutex);
-@@ -1037,9 +1114,11 @@ static int imx219_start_streaming(struct
+@@ -976,9 +1053,11 @@ static int imx219_start_streaming(struct
const struct imx219_reg_list *reg_list;
int ret;
return ret;
+ }
- /* Apply default values of current mode */
- reg_list = &imx219->mode->reg_list;
-@@ -1133,21 +1212,22 @@ err_unlock:
+ /* Send all registers that are common to all modes */
+ ret = imx219_write_regs(imx219, imx219_common_regs, ARRAY_SIZE(imx219_common_regs));
+@@ -1086,21 +1165,22 @@ err_unlock:
/* Power/clock management functions */
static int imx219_power_on(struct device *dev)
{
__func__);
goto reg_off;
}
-@@ -1166,7 +1246,8 @@ reg_off:
+@@ -1119,7 +1199,8 @@ reg_off:
static int imx219_power_off(struct device *dev)
{
struct imx219 *imx219 = to_imx219(sd);
gpiod_set_value_cansleep(imx219->reset_gpio, 0);
-@@ -1178,7 +1259,8 @@ static int imx219_power_off(struct devic
+@@ -1131,7 +1212,8 @@ static int imx219_power_off(struct devic
static int __maybe_unused imx219_suspend(struct device *dev)
{
struct imx219 *imx219 = to_imx219(sd);
if (imx219->streaming)
-@@ -1189,7 +1271,8 @@ static int __maybe_unused imx219_suspend
+@@ -1142,7 +1224,8 @@ static int __maybe_unused imx219_suspend
static int __maybe_unused imx219_resume(struct device *dev)
{
struct imx219 *imx219 = to_imx219(sd);
int ret;
-@@ -1525,13 +1608,14 @@ static int imx219_probe(struct i2c_clien
+@@ -1478,13 +1561,14 @@ static int imx219_probe(struct i2c_clien
V4L2_SUBDEV_FL_HAS_EVENTS;
imx219->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;