@@ -835,6 +835,40 @@ int v4l2_subdev_validate_v4l2_ctrl(struct media_device *media,
return 0;
}
+int v4l2_subdev_format_compare(struct v4l2_mbus_framefmt *fmt1,
+ struct v4l2_mbus_framefmt *fmt2)
+{
+ if (fmt1 == NULL || fmt2 == NULL)
+ return 0;
+
+ if (fmt1->width != fmt2->width) {
+ printf("width mismatch\n");
+ return 0;
+ }
+
+ if (fmt1->height != fmt2->height) {
+ printf("height mismatch\n");
+ return 0;
+ }
+
+ if (fmt1->code != fmt2->code) {
+ printf("mbus code mismatch\n");
+ return 0;
+ }
+
+ if (fmt1->field != fmt2->field) {
+ printf("field mismatch\n");
+ return 0;
+ }
+
+ if (fmt1->colorspace != fmt2->colorspace) {
+ printf("colorspace mismatch\n");
+ return 0;
+ }
+
+ return 1;
+}
+
bool v4l2_subdev_has_v4l2_control_redir(struct media_device *media,
struct media_entity *entity,
int ctrl_id)
@@ -314,6 +314,18 @@ int v4l2_subdev_validate_v4l2_ctrl(struct media_device *media,
__u32 ctrl_id);
/**
+ * @brief Compare mbus formats
+ * @param fmt1 - 1st mbus format to compare.
+ * @param fmt2 - 2nd mbus format to compare.
+ *
+ * Check whether two mbus formats are compatible.
+ *
+ * @return 1 if formats are compatible, 0 otherwise.
+ */
+int v4l2_subdev_format_compare(struct v4l2_mbus_framefmt *fmt1,
+ struct v4l2_mbus_framefmt *fmt2);
+
+/**
* @brief Check if there was a v4l2_control redirection defined for the entity
* @param media - media device.
* @param entity - subdev-device media entity.