@@ -102,3 +102,11 @@ Image Source Control IDs
This control may only be used on a V4L2 sub-device.
This is a read-only control.
+
+``V4L2_CID_COLOUR_PATTERN_FLIP (bitmask)``
+ Whether the horizontal or vertical flipping controls (V4L2_CID_HFLIP and
+ V4L2_CID_VFLIP) have an effect on the pixel order of the output colour
+ pattern. Macros ``V4L2_COLOUR_PATTERN_FLIP_HORIZONTAL`` and
+ ``V4L2_COLOUR_PATTERN_FLIP_VERTICAL`` define bitmasks for both bits. If
+ either horizontal or vertical bit is set, the readout pattern order is that
+ of the reversed readout.
@@ -1156,6 +1156,7 @@ const char *v4l2_ctrl_get_name(u32 id)
case V4L2_CID_TEST_PATTERN_GREENB: return "Green (Blue) Pixel Value";
case V4L2_CID_NOTIFY_GAINS: return "Notify Gains";
case V4L2_CID_COLOUR_PATTERN: return "Colour Pattern";
+ case V4L2_CID_COLOUR_PATTERN_FLIP: return "Colour Pattern Flip";
/* Image processing controls */
/* Keep the order of the 'case's the same as in v4l2-controls.h! */
@@ -1474,6 +1475,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
*max = 0xffff;
break;
case V4L2_CID_FLASH_FAULT:
+ case V4L2_CID_COLOUR_PATTERN_FLIP:
case V4L2_CID_JPEG_ACTIVE_MARKER:
case V4L2_CID_3A_LOCK:
case V4L2_CID_AUTO_FOCUS_STATUS:
@@ -1215,11 +1215,26 @@ enum v4l2_jpeg_chroma_subsampling {
#define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
#define V4L2_CID_COLOUR_PATTERN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 10)
+/*
+ * CFA pattern start shall be aligned with the number of patterns for colour
+ * components. Patterns shall be calculable based on flipping when it affects
+ * the pattern the following way:
+ *
+ * flipped_pattern = native_pattern ^
+ * ((hflip ? V4L2_COLOUR_PATTERN_FLIP_HORIZONTAL : 0) |
+ * (vflip ? V4L2_COLOUR_PATTERN_FLIP_VERTICAL : 0))
+ *
+ * where hflip and vflip are the values of V4L2_CID_HFLIP and V4L2_CID_VFLIP
+ * controls, respectively.
+ */
#define V4L2_COLOUR_PATTERN_GRBG 0
#define V4L2_COLOUR_PATTERN_RGGB 1
#define V4L2_COLOUR_PATTERN_BGGR 2
#define V4L2_COLOUR_PATTERN_GBRG 3
+#define V4L2_CID_COLOUR_PATTERN_FLIP (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 11)
+#define V4L2_COLOUR_PATTERN_FLIP_HORIZONTAL (1U << 0)
+#define V4L2_COLOUR_PATTERN_FLIP_VERTICAL (1U << 1)
/* Image processing controls */
Add a bitmask control (V4L2_CID_COLOUR_PATTERN_FLIP) to tell whether flipping results in a change in the sensor's colour pattern, separately horizontally and vertically. The information is essential for raw formats when using generic raw mbus codes. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> --- .../media/v4l/ext-ctrls-image-source.rst | 8 ++++++++ drivers/media/v4l2-core/v4l2-ctrls-defs.c | 2 ++ include/uapi/linux/v4l2-controls.h | 15 +++++++++++++++ 3 files changed, 25 insertions(+)