The V4L2_DV_RGB_RANGE_* settings are, as the name says, for RGB formats only.
So they should be ignored for non-RGB formats.

Signed-off-by: Hans Verkuil <[email protected]>
---
diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c 
b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
index cf1dadd..3ec3ceb 100644
--- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
+++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
@@ -777,7 +777,7 @@ static void precalculate_color(struct tpg_data *tpg, int k)
         * Remember that r, g and b are still in the 0 - 0xff0 range.
         */
        if (tpg->real_rgb_range == V4L2_DV_RGB_RANGE_LIMITED &&
-           tpg->rgb_range == V4L2_DV_RGB_RANGE_FULL) {
+           tpg->rgb_range == V4L2_DV_RGB_RANGE_FULL && !tpg->is_yuv) {
                /*
                 * Convert from full range (which is what r, g and b are)
                 * to limited range (which is the 'real' RGB range), which
@@ -787,7 +787,7 @@ static void precalculate_color(struct tpg_data *tpg, int k)
                g = (g * 219) / 255 + (16 << 4);
                b = (b * 219) / 255 + (16 << 4);
        } else if (tpg->real_rgb_range != V4L2_DV_RGB_RANGE_LIMITED &&
-                  tpg->rgb_range == V4L2_DV_RGB_RANGE_LIMITED) {
+                  tpg->rgb_range == V4L2_DV_RGB_RANGE_LIMITED && !tpg->is_yuv) 
{
                /*
                 * Clamp r, g and b to the limited range and convert to full
                 * range since that's what we deliver.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to