|
|
@@ -501,11 +501,20 @@ int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd,
|
|
|
struct v4l2_subdev_format *source_fmt,
|
|
|
struct v4l2_subdev_format *sink_fmt)
|
|
|
{
|
|
|
+ /* The width, height and code must match. */
|
|
|
if (source_fmt->format.width != sink_fmt->format.width
|
|
|
|| source_fmt->format.height != sink_fmt->format.height
|
|
|
|| source_fmt->format.code != sink_fmt->format.code)
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ /* The field order must match, or the sink field order must be NONE
|
|
|
+ * to support interlaced hardware connected to bridges that support
|
|
|
+ * progressive formats only.
|
|
|
+ */
|
|
|
+ if (source_fmt->format.field != sink_fmt->format.field &&
|
|
|
+ sink_fmt->format.field != V4L2_FIELD_NONE)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate_default);
|