media: ov5640: add missing output pixel format setting
The output pixel format changed by set_fmt() pad operation is not correctly applied. It is intended to be restored by calling ov5640_set_framefmt() when the video stream is started. However, when the device is powered on by s_power subdev operation before the video stream is started, the current output mode setting is restored by ov5640_restore_mode() that also clears pending_mode_change flag in ov5640_set_mode(). So ov5640_set_framefmt() isn't called as intended and the output pixel format is not restored. This change adds the missing output pixel format setting in the ov5640_restore_mode() that is called when the device is powered on. Cc: Steve Longerbeam <slongerbeam@gmail.com> Cc: Hugues Fruchet <hugues.fruchet@st.com> Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
4996c3d4cf
commit
19ad26f9e6
|
@ -1641,6 +1641,9 @@ static int ov5640_set_mode(struct ov5640_dev *sensor,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ov5640_set_framefmt(struct ov5640_dev *sensor,
|
||||
struct v4l2_mbus_framefmt *format);
|
||||
|
||||
/* restore the last set video mode after chip power-on */
|
||||
static int ov5640_restore_mode(struct ov5640_dev *sensor)
|
||||
{
|
||||
|
@ -1652,7 +1655,11 @@ static int ov5640_restore_mode(struct ov5640_dev *sensor)
|
|||
return ret;
|
||||
|
||||
/* now restore the last capture mode */
|
||||
return ov5640_set_mode(sensor, &ov5640_mode_init_data);
|
||||
ret = ov5640_set_mode(sensor, &ov5640_mode_init_data);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return ov5640_set_framefmt(sensor, &sensor->fmt);
|
||||
}
|
||||
|
||||
static void ov5640_power(struct ov5640_dev *sensor, bool enable)
|
||||
|
|
Loading…
Reference in New Issue