media: atomisp: Avoid picking too big sensor resolution

atomisp_try_fmt() is limiting the width of the requested resolution to 1920
before calling the sensor's try_fmt() method. But it is not limiting
the height. In case of the old mode-list based t4ka3 driver which has
a mode list of:

736x496
896x736
1936x1096
3280x2464

This results in 3280x2464 being selected when try_fmt is called
with a requested resolution of 3280x2464, which is not supported because
its width > 1920 .

Fix this by also limiting the height when in preview mode.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20241211173516.350779-1-hdegoede@redhat.com
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Hans de Goede
2024-12-11 18:35:16 +01:00
committed by Mauro Carvalho Chehab
parent 48ba117fad
commit 1d2e5bef13

View File

@@ -3784,9 +3784,14 @@ int atomisp_try_fmt(struct atomisp_device *isp, struct v4l2_pix_format *f,
return -EINVAL;
}
/* The preview pipeline does not support width > 1920 */
if (asd->run_mode->val == ATOMISP_RUN_MODE_PREVIEW)
f->width = min_t(u32, f->width, 1920);
/*
* The preview pipeline does not support width > 1920. Also limit height
* to avoid sensor drivers still picking a too wide resolution.
*/
if (asd->run_mode->val == ATOMISP_RUN_MODE_PREVIEW) {
f->width = min(f->width, 1920U);
f->height = min(f->height, 1440U);
}
/*
* atomisp_set_fmt() will set the sensor resolution to the requested