This patchset adds support for Rec.709 encoding and inverse encoding, and encoding between both full-range and limited-range quantization for both YUV and RGB, to ipu-ic. The imx-media driver can now support both BT.601 and Rec.709 encoding, and limited and full-range quantization. History: v8: - removed the Fixes: and cc: stable in patch "Fully describe colorspace conversions". This patch is too difficult to backport to stable trees. No functional changes in this version. v7: - removed the run-time transformation of coefficients from full-range to limited-range, and instead hard-code all the coefficient tables. - moved the coefficient tables into a new module ipu-ic-csc.c. - introduced ipu_ic_calc_csc() which pre-determines coefficients, which are then passed to ipu_ic_task_init(_rsc)() as a filled 'struct ipu_ic_csc'. - added support for limited-range RGB. v6: - tweak some of the coefficients slightly, they were not getting rounded correctly. - move the introduction of calc_csc_coeffs() to an earlier patch for easier patch readability. v5: - the hard-coded encode coefficients now convert only between full-range quantization. A new function is added to transform the coefficients to limited-range at input or output. - add a bug fix patch for saturation bit in TPMEM register. - add a patch to fully describe input and output colorspace to the IC task init functions. - add imx_media_try_colorimetry(), called at all sink/source pad try_fmt. v4: - fix a compile error in init_csc(), reported by Tim Harvey. v3: - fix some inconsistent From: and Signed-off-by:'s. No functional changes. v2: - rename ic_csc_rgb2rgb matrix to ic_csc_identity. - only return "Unsupported YCbCr encoding" error if inf != outf, since if inf == outf, the identity matrix can be used. Reported by Tim Harvey. - move ic_route check above default colorimetry checks, and fill default colorspace for ic_route, otherwise it's not possible to set BT.709 encoding for ic routes. Steve Longerbeam (5): gpu: ipu-v3: ipu-ic: Fix saturation bit offset in TPMEM gpu: ipu-v3: ipu-ic: Fully describe colorspace conversions gpu: ipu-v3: ipu-ic-csc: Add support for limited range encoding gpu: ipu-v3: ipu-ic-csc: Add support for Rec.709 encoding media: imx: Try colorimetry at both sink and source pads drivers/gpu/ipu-v3/Makefile | 4 +- drivers/gpu/ipu-v3/ipu-ic-csc.c | 410 ++++++++++++++++++++ drivers/gpu/ipu-v3/ipu-ic.c | 138 +++---- drivers/gpu/ipu-v3/ipu-image-convert.c | 28 +- drivers/staging/media/imx/imx-ic-prp.c | 6 +- drivers/staging/media/imx/imx-ic-prpencvf.c | 42 +- drivers/staging/media/imx/imx-media-csi.c | 19 +- drivers/staging/media/imx/imx-media-utils.c | 73 ++-- drivers/staging/media/imx/imx-media-vdic.c | 5 +- drivers/staging/media/imx/imx-media.h | 5 +- drivers/staging/media/imx/imx7-media-csi.c | 8 +- include/video/imx-ipu-v3.h | 56 ++- 12 files changed, 614 insertions(+), 180 deletions(-) create mode 100644 drivers/gpu/ipu-v3/ipu-ic-csc.c -- 2.17.1