struct v4l2_frmsizeenum *fsize)
{
struct mxc_isi_dev *mxc_isi = video_drvdata(file);
+ struct device_node *node = mxc_isi->pdev->dev.of_node;
struct v4l2_subdev *sd;
struct mxc_isi_fmt *fmt;
struct media_pad *source_pad;
if (ret)
return ret;
+ if (of_device_is_compatible(node, "fsl,imx8mn-isi") &&
+ (fse.max_width > 2048 || fse.min_width > 2048))
+ return -EINVAL;
+
+
if (fse.min_width == fse.max_width &&
fse.min_height == fse.max_height) {
fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
struct v4l2_frmivalenum *interval)
{
struct mxc_isi_dev *mxc_isi = video_drvdata(file);
+ struct device_node *node = mxc_isi->pdev->dev.of_node;
struct v4l2_subdev *sd;
struct mxc_isi_fmt *fmt;
struct media_pad *source_pad;
if (ret)
return ret;
+ if (of_device_is_compatible(node, "fsl,imx8mn-isi") && fie.width > 2048)
+ return -EINVAL;
+
interval->type = V4L2_FRMIVAL_TYPE_DISCRETE;
interval->discrete = fie.interval;
struct v4l2_subdev_format *fmt)
{
struct mxc_isi_dev *mxc_isi = v4l2_get_subdevdata(sd);
+ struct device_node *node = mxc_isi->pdev->dev.of_node;
struct v4l2_mbus_framefmt *mf = &fmt->format;
struct mxc_isi_frame *dst_f = &mxc_isi->isi_cap.dst_f;
struct mxc_isi_fmt *out_fmt;
return -EINVAL;
}
+ if (of_device_is_compatible(node, "fsl,imx8mn-isi") && mf->width > 2048)
+ return -EINVAL;
+
mutex_lock(&mxc_isi->lock);
/* update out put frame size and formate */
dst_f->fmt = &mxc_isi_out_formats[i];