in platform/imx-pxp.c [310:719]
static void pxp_setup_csc(struct pxp_ctx *ctx)
{
struct pxp_dev *dev = ctx->dev;
enum v4l2_ycbcr_encoding ycbcr_enc;
enum v4l2_quantization quantization;
if (pxp_v4l2_pix_fmt_is_yuv(ctx->q_data[V4L2_M2M_SRC].fmt->fourcc) &&
!pxp_v4l2_pix_fmt_is_yuv(ctx->q_data[V4L2_M2M_DST].fmt->fourcc)) {
/*
* CSC1 YUV/YCbCr to RGB conversion is implemented as follows:
*
* |R| |C0 0 C1| |Y + Yoffset |
* |G| = |C0 C3 C2| * |Cb + UVoffset|
* |B| |C0 C4 0 | |Cr + UVoffset|
*
* Results are clamped to 0..255.
*
* BT.601 limited range:
*
* |R| |1.1644 0.0000 1.5960| |Y - 16 |
* |G| = |1.1644 -0.3917 -0.8129| * |Cb - 128|
* |B| |1.1644 2.0172 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_bt601_lim[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x12a) | /* 1.1641 (-0.03 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(-16),
BF_PXP_CSC1_COEF1_C1(0x198) | /* 1.5938 (-0.23 %) */
BF_PXP_CSC1_COEF1_C4(0x204), /* 2.0156 (-0.16 %) */
BF_PXP_CSC1_COEF2_C2(0x730) | /* -0.8125 (+0.04 %) */
BF_PXP_CSC1_COEF2_C3(0x79c), /* -0.3906 (+0.11 %) */
};
/*
* BT.601 full range:
*
* |R| |1.0000 0.0000 1.4020| |Y + 0 |
* |G| = |1.0000 -0.3441 -0.7141| * |Cb - 128|
* |B| |1.0000 1.7720 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_bt601_full[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x100) | /* 1.0000 (+0.00 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(0),
BF_PXP_CSC1_COEF1_C1(0x166) | /* 1.3984 (-0.36 %) */
BF_PXP_CSC1_COEF1_C4(0x1c5), /* 1.7695 (-0.25 %) */
BF_PXP_CSC1_COEF2_C2(0x74a) | /* -0.7109 (+0.32 %) */
BF_PXP_CSC1_COEF2_C3(0x7a8), /* -0.3438 (+0.04 %) */
};
/*
* Rec.709 limited range:
*
* |R| |1.1644 0.0000 1.7927| |Y - 16 |
* |G| = |1.1644 -0.2132 -0.5329| * |Cb - 128|
* |B| |1.1644 2.1124 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_rec709_lim[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x12a) | /* 1.1641 (-0.03 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(-16),
BF_PXP_CSC1_COEF1_C1(0x1ca) | /* 1.7891 (-0.37 %) */
BF_PXP_CSC1_COEF1_C4(0x21c), /* 2.1094 (-0.30 %) */
BF_PXP_CSC1_COEF2_C2(0x778) | /* -0.5312 (+0.16 %) */
BF_PXP_CSC1_COEF2_C3(0x7ca), /* -0.2109 (+0.23 %) */
};
/*
* Rec.709 full range:
*
* |R| |1.0000 0.0000 1.5748| |Y + 0 |
* |G| = |1.0000 -0.1873 -0.4681| * |Cb - 128|
* |B| |1.0000 1.8556 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_rec709_full[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x100) | /* 1.0000 (+0.00 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(0),
BF_PXP_CSC1_COEF1_C1(0x193) | /* 1.5742 (-0.06 %) */
BF_PXP_CSC1_COEF1_C4(0x1db), /* 1.8555 (-0.01 %) */
BF_PXP_CSC1_COEF2_C2(0x789) | /* -0.4648 (+0.33 %) */
BF_PXP_CSC1_COEF2_C3(0x7d1), /* -0.1836 (+0.37 %) */
};
/*
* BT.2020 limited range:
*
* |R| |1.1644 0.0000 1.6787| |Y - 16 |
* |G| = |1.1644 -0.1874 -0.6505| * |Cb - 128|
* |B| |1.1644 2.1418 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_bt2020_lim[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x12a) | /* 1.1641 (-0.03 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(-16),
BF_PXP_CSC1_COEF1_C1(0x1ad) | /* 1.6758 (-0.29 %) */
BF_PXP_CSC1_COEF1_C4(0x224), /* 2.1406 (-0.11 %) */
BF_PXP_CSC1_COEF2_C2(0x75a) | /* -0.6484 (+0.20 %) */
BF_PXP_CSC1_COEF2_C3(0x7d1), /* -0.1836 (+0.38 %) */
};
/*
* BT.2020 full range:
*
* |R| |1.0000 0.0000 1.4746| |Y + 0 |
* |G| = |1.0000 -0.1646 -0.5714| * |Cb - 128|
* |B| |1.0000 1.8814 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_bt2020_full[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x100) | /* 1.0000 (+0.00 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(0),
BF_PXP_CSC1_COEF1_C1(0x179) | /* 1.4727 (-0.19 %) */
BF_PXP_CSC1_COEF1_C4(0x1e1), /* 1.8789 (-0.25 %) */
BF_PXP_CSC1_COEF2_C2(0x76e) | /* -0.5703 (+0.11 %) */
BF_PXP_CSC1_COEF2_C3(0x7d6), /* -0.1641 (+0.05 %) */
};
/*
* SMPTE 240m limited range:
*
* |R| |1.1644 0.0000 1.7937| |Y - 16 |
* |G| = |1.1644 -0.2565 -0.5427| * |Cb - 128|
* |B| |1.1644 2.0798 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_smpte240m_lim[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x12a) | /* 1.1641 (-0.03 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(-16),
BF_PXP_CSC1_COEF1_C1(0x1cb) | /* 1.7930 (-0.07 %) */
BF_PXP_CSC1_COEF1_C4(0x214), /* 2.0781 (-0.17 %) */
BF_PXP_CSC1_COEF2_C2(0x776) | /* -0.5391 (+0.36 %) */
BF_PXP_CSC1_COEF2_C3(0x7bf), /* -0.2539 (+0.26 %) */
};
/*
* SMPTE 240m full range:
*
* |R| |1.0000 0.0000 1.5756| |Y + 0 |
* |G| = |1.0000 -0.2253 -0.4767| * |Cb - 128|
* |B| |1.0000 1.8270 0.0000| |Cr - 128|
*/
static const u32 csc1_coef_smpte240m_full[3] = {
BM_PXP_CSC1_COEF0_YCBCR_MODE |
BF_PXP_CSC1_COEF0_C0(0x100) | /* 1.0000 (+0.00 %) */
BF_PXP_CSC1_COEF0_UV_OFFSET(-128) |
BF_PXP_CSC1_COEF0_Y_OFFSET(0),
BF_PXP_CSC1_COEF1_C1(0x193) | /* 1.5742 (-0.14 %) */
BF_PXP_CSC1_COEF1_C4(0x1d3), /* 1.8242 (-0.28 %) */
BF_PXP_CSC1_COEF2_C2(0x786) | /* -0.4766 (+0.01 %) */
BF_PXP_CSC1_COEF2_C3(0x7c7), /* -0.2227 (+0.26 %) */
};
const u32 *csc1_coef;
ycbcr_enc = ctx->q_data[V4L2_M2M_SRC].ycbcr_enc;
quantization = ctx->q_data[V4L2_M2M_SRC].quant;
if (ycbcr_enc == V4L2_YCBCR_ENC_601) {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc1_coef = csc1_coef_bt601_full;
else
csc1_coef = csc1_coef_bt601_lim;
} else if (ycbcr_enc == V4L2_YCBCR_ENC_709) {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc1_coef = csc1_coef_rec709_full;
else
csc1_coef = csc1_coef_rec709_lim;
} else if (ycbcr_enc == V4L2_YCBCR_ENC_BT2020) {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc1_coef = csc1_coef_bt2020_full;
else
csc1_coef = csc1_coef_bt2020_lim;
} else {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc1_coef = csc1_coef_smpte240m_full;
else
csc1_coef = csc1_coef_smpte240m_lim;
}
writel(csc1_coef[0], dev->mmio + HW_PXP_CSC1_COEF0);
writel(csc1_coef[1], dev->mmio + HW_PXP_CSC1_COEF1);
writel(csc1_coef[2], dev->mmio + HW_PXP_CSC1_COEF2);
} else {
writel(BM_PXP_CSC1_COEF0_BYPASS, dev->mmio + HW_PXP_CSC1_COEF0);
}
if (!pxp_v4l2_pix_fmt_is_yuv(ctx->q_data[V4L2_M2M_SRC].fmt->fourcc) &&
pxp_v4l2_pix_fmt_is_yuv(ctx->q_data[V4L2_M2M_DST].fmt->fourcc)) {
/*
* CSC2 RGB to YUV/YCbCr conversion is implemented as follows:
*
* |Y | |A1 A2 A3| |R| |D1|
* |Cb| = |B1 B2 B3| * |G| + |D2|
* |Cr| |C1 C2 C3| |B| |D3|
*
* Results are clamped to 0..255.
*
* BT.601 limited range:
*
* |Y | | 0.2568 0.5041 0.0979| |R| |16 |
* |Cb| = |-0.1482 -0.2910 0.4392| * |G| + |128|
* |Cr| | 0.4392 0.4392 -0.3678| |B| |128|
*/
static const u32 csc2_coef_bt601_lim[6] = {
BF_PXP_CSC2_COEF0_A2(0x081) | /* 0.5039 (-0.02 %) */
BF_PXP_CSC2_COEF0_A1(0x041), /* 0.2539 (-0.29 %) */
BF_PXP_CSC2_COEF1_B1(0x7db) | /* -0.1445 (+0.37 %) */
BF_PXP_CSC2_COEF1_A3(0x019), /* 0.0977 (-0.02 %) */
BF_PXP_CSC2_COEF2_B3(0x070) | /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF2_B2(0x7b6), /* -0.2891 (+0.20 %) */
BF_PXP_CSC2_COEF3_C2(0x7a2) | /* -0.3672 (+0.06 %) */
BF_PXP_CSC2_COEF3_C1(0x070), /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF4_D1(16) |
BF_PXP_CSC2_COEF4_C3(0x7ee), /* -0.0703 (+0.11 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* BT.601 full range:
*
* |Y | | 0.2990 0.5870 0.1140| |R| |0 |
* |Cb| = |-0.1687 -0.3313 0.5000| * |G| + |128|
* |Cr| | 0.5000 0.5000 -0.4187| |B| |128|
*/
static const u32 csc2_coef_bt601_full[6] = {
BF_PXP_CSC2_COEF0_A2(0x096) | /* 0.5859 (-0.11 %) */
BF_PXP_CSC2_COEF0_A1(0x04c), /* 0.2969 (-0.21 %) */
BF_PXP_CSC2_COEF1_B1(0x7d5) | /* -0.1680 (+0.07 %) */
BF_PXP_CSC2_COEF1_A3(0x01d), /* 0.1133 (-0.07 %) */
BF_PXP_CSC2_COEF2_B3(0x080) | /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF2_B2(0x7ac), /* -0.3281 (+0.32 %) */
BF_PXP_CSC2_COEF3_C2(0x795) | /* -0.4180 (+0.07 %) */
BF_PXP_CSC2_COEF3_C1(0x080), /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF4_D1(0) |
BF_PXP_CSC2_COEF4_C3(0x7ec), /* -0.0781 (+0.32 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* Rec.709 limited range:
*
* |Y | | 0.1826 0.6142 0.0620| |R| |16 |
* |Cb| = |-0.1007 -0.3385 0.4392| * |G| + |128|
* |Cr| | 0.4392 0.4392 -0.3990| |B| |128|
*/
static const u32 csc2_coef_rec709_lim[6] = {
BF_PXP_CSC2_COEF0_A2(0x09d) | /* 0.6133 (-0.09 %) */
BF_PXP_CSC2_COEF0_A1(0x02e), /* 0.1797 (-0.29 %) */
BF_PXP_CSC2_COEF1_B1(0x7e7) | /* -0.0977 (+0.30 %) */
BF_PXP_CSC2_COEF1_A3(0x00f), /* 0.0586 (-0.34 %) */
BF_PXP_CSC2_COEF2_B3(0x070) | /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF2_B2(0x7aa), /* -0.3359 (+0.26 %) */
BF_PXP_CSC2_COEF3_C2(0x79a) | /* -0.3984 (+0.05 %) */
BF_PXP_CSC2_COEF3_C1(0x070), /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF4_D1(16) |
BF_PXP_CSC2_COEF4_C3(0x7f6), /* -0.0391 (+0.12 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* Rec.709 full range:
*
* |Y | | 0.2126 0.7152 0.0722| |R| |0 |
* |Cb| = |-0.1146 -0.3854 0.5000| * |G| + |128|
* |Cr| | 0.5000 0.5000 -0.4542| |B| |128|
*/
static const u32 csc2_coef_rec709_full[6] = {
BF_PXP_CSC2_COEF0_A2(0x0b7) | /* 0.7148 (-0.04 %) */
BF_PXP_CSC2_COEF0_A1(0x036), /* 0.2109 (-0.17 %) */
BF_PXP_CSC2_COEF1_B1(0x7e3) | /* -0.1133 (+0.13 %) */
BF_PXP_CSC2_COEF1_A3(0x012), /* 0.0703 (-0.19 %) */
BF_PXP_CSC2_COEF2_B3(0x080) | /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF2_B2(0x79e), /* -0.3828 (+0.26 %) */
BF_PXP_CSC2_COEF3_C2(0x78c) | /* -0.4531 (+0.11 %) */
BF_PXP_CSC2_COEF3_C1(0x080), /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF4_D1(0) |
BF_PXP_CSC2_COEF4_C3(0x7f5), /* -0.0430 (+0.28 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* BT.2020 limited range:
*
* |Y | | 0.2256 0.5823 0.0509| |R| |16 |
* |Cb| = |-0.1226 -0.3166 0.4392| * |G| + |128|
* |Cr| | 0.4392 0.4392 -0.4039| |B| |128|
*/
static const u32 csc2_coef_bt2020_lim[6] = {
BF_PXP_CSC2_COEF0_A2(0x095) | /* 0.5820 (-0.03 %) */
BF_PXP_CSC2_COEF0_A1(0x039), /* 0.2227 (-0.30 %) */
BF_PXP_CSC2_COEF1_B1(0x7e1) | /* -0.1211 (+0.15 %) */
BF_PXP_CSC2_COEF1_A3(0x00d), /* 0.0508 (-0.01 %) */
BF_PXP_CSC2_COEF2_B3(0x070) | /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF2_B2(0x7af), /* -0.3164 (+0.02 %) */
BF_PXP_CSC2_COEF3_C2(0x799) | /* -0.4023 (+0.16 %) */
BF_PXP_CSC2_COEF3_C1(0x070), /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF4_D1(16) |
BF_PXP_CSC2_COEF4_C3(0x7f7), /* -0.0352 (+0.02 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* BT.2020 full range:
*
* |Y | | 0.2627 0.6780 0.0593| |R| |0 |
* |Cb| = |-0.1396 -0.3604 0.5000| * |G| + |128|
* |Cr| | 0.5000 0.5000 -0.4598| |B| |128|
*/
static const u32 csc2_coef_bt2020_full[6] = {
BF_PXP_CSC2_COEF0_A2(0x0ad) | /* 0.6758 (-0.22 %) */
BF_PXP_CSC2_COEF0_A1(0x043), /* 0.2617 (-0.10 %) */
BF_PXP_CSC2_COEF1_B1(0x7dd) | /* -0.1367 (+0.29 %) */
BF_PXP_CSC2_COEF1_A3(0x00f), /* 0.0586 (-0.07 %) */
BF_PXP_CSC2_COEF2_B3(0x080) | /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF2_B2(0x7a4), /* -0.3594 (+0.10 %) */
BF_PXP_CSC2_COEF3_C2(0x78b) | /* -0.4570 (+0.28 %) */
BF_PXP_CSC2_COEF3_C1(0x080), /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF4_D1(0) |
BF_PXP_CSC2_COEF4_C3(0x7f6), /* -0.0391 (+0.11 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* SMPTE 240m limited range:
*
* |Y | | 0.1821 0.6020 0.0747| |R| |16 |
* |Cb| = |-0.1019 -0.3373 0.4392| * |G| + |128|
* |Cr| | 0.4392 0.4392 -0.3909| |B| |128|
*/
static const u32 csc2_coef_smpte240m_lim[6] = {
BF_PXP_CSC2_COEF0_A2(0x09a) | /* 0.6016 (-0.05 %) */
BF_PXP_CSC2_COEF0_A1(0x02e), /* 0.1797 (-0.24 %) */
BF_PXP_CSC2_COEF1_B1(0x7e6) | /* -0.1016 (+0.03 %) */
BF_PXP_CSC2_COEF1_A3(0x013), /* 0.0742 (-0.05 %) */
BF_PXP_CSC2_COEF2_B3(0x070) | /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF2_B2(0x7aa), /* -0.3359 (+0.14 %) */
BF_PXP_CSC2_COEF3_C2(0x79c) | /* -0.3906 (+0.03 %) */
BF_PXP_CSC2_COEF3_C1(0x070), /* 0.4375 (-0.17 %) */
BF_PXP_CSC2_COEF4_D1(16) |
BF_PXP_CSC2_COEF4_C3(0x7f4), /* -0.0469 (+0.14 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
/*
* SMPTE 240m full range:
*
* |Y | | 0.2120 0.7010 0.0870| |R| |0 |
* |Cb| = |-0.1160 -0.3840 0.5000| * |G| + |128|
* |Cr| | 0.5000 0.5000 -0.4450| |B| |128|
*/
static const u32 csc2_coef_smpte240m_full[6] = {
BF_PXP_CSC2_COEF0_A2(0x0b3) | /* 0.6992 (-0.18 %) */
BF_PXP_CSC2_COEF0_A1(0x036), /* 0.2109 (-0.11 %) */
BF_PXP_CSC2_COEF1_B1(0x7e3) | /* -0.1133 (+0.27 %) */
BF_PXP_CSC2_COEF1_A3(0x016), /* 0.0859 (-0.11 %) */
BF_PXP_CSC2_COEF2_B3(0x080) | /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF2_B2(0x79e), /* -0.3828 (+0.12 %) */
BF_PXP_CSC2_COEF3_C2(0x78f) | /* -0.4414 (+0.36 %) */
BF_PXP_CSC2_COEF3_C1(0x080), /* 0.5000 (+0.00 %) */
BF_PXP_CSC2_COEF4_D1(0) |
BF_PXP_CSC2_COEF4_C3(0x7f2), /* -0.0547 (+0.03 %) */
BF_PXP_CSC2_COEF5_D3(128) |
BF_PXP_CSC2_COEF5_D2(128),
};
const u32 *csc2_coef;
u32 csc2_ctrl;
ycbcr_enc = ctx->q_data[V4L2_M2M_DST].ycbcr_enc;
quantization = ctx->q_data[V4L2_M2M_DST].quant;
if (ycbcr_enc == V4L2_YCBCR_ENC_601) {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc2_coef = csc2_coef_bt601_full;
else
csc2_coef = csc2_coef_bt601_lim;
} else if (ycbcr_enc == V4L2_YCBCR_ENC_709) {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc2_coef = csc2_coef_rec709_full;
else
csc2_coef = csc2_coef_rec709_lim;
} else if (ycbcr_enc == V4L2_YCBCR_ENC_BT2020) {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc2_coef = csc2_coef_bt2020_full;
else
csc2_coef = csc2_coef_bt2020_lim;
} else {
if (quantization == V4L2_QUANTIZATION_FULL_RANGE)
csc2_coef = csc2_coef_smpte240m_full;
else
csc2_coef = csc2_coef_smpte240m_lim;
}
if (quantization == V4L2_QUANTIZATION_FULL_RANGE) {
csc2_ctrl = BV_PXP_CSC2_CTRL_CSC_MODE__RGB2YUV <<
BP_PXP_CSC2_CTRL_CSC_MODE;
} else {
csc2_ctrl = BV_PXP_CSC2_CTRL_CSC_MODE__RGB2YCbCr <<
BP_PXP_CSC2_CTRL_CSC_MODE;
}
writel(csc2_ctrl, dev->mmio + HW_PXP_CSC2_CTRL);
writel(csc2_coef[0], dev->mmio + HW_PXP_CSC2_COEF0);
writel(csc2_coef[1], dev->mmio + HW_PXP_CSC2_COEF1);
writel(csc2_coef[2], dev->mmio + HW_PXP_CSC2_COEF2);
writel(csc2_coef[3], dev->mmio + HW_PXP_CSC2_COEF3);
writel(csc2_coef[4], dev->mmio + HW_PXP_CSC2_COEF4);
writel(csc2_coef[5], dev->mmio + HW_PXP_CSC2_COEF5);
} else {
writel(BM_PXP_CSC2_CTRL_BYPASS, dev->mmio + HW_PXP_CSC2_CTRL);
}
}