<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: it does not work &amp;quot;MXCFB_CSC_UPDATE&amp;quot; on fsl-yocto-Linux-4.9.11 in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087769#M159504</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&amp;nbsp;&lt;STRONG class="" style="color: #646464; background-color: #ffffff; border: 0px; font-weight: 200; font-size: 1.286rem; padding: 0px 0px 0px 30px;"&gt;&lt;SPAN class="" style="border: 0px; font-weight: inherit; font-size: 18.004px;"&gt;igorpadykov&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG class="" style="color: #646464; background-color: #ffffff; border: 0px; font-weight: 200; font-size: 1.286rem; padding: 0px 0px 0px 30px;"&gt;&lt;SPAN class="" style="border: 0px; font-weight: inherit; font-size: 18.004px;"&gt;i read the kernel code ,and find about "&lt;/SPAN&gt;&lt;/STRONG&gt;MXCFB_CSC_UPDATE"&amp;nbsp;&lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Flinux-imx%2Ftree%2Fdrivers%2Fvideo%2Ffbdev%2Fmxc%2Fmxc_ipuv3_fb.c%3Fh%3Dimx_4.9.11_1.0.0_ga" rel="nofollow" style="color: #3d9ce7; background-color: #ffffff; border: 0px; text-decoration: underline; padding: 0px calc(12px + 0.35ex) 0px 0px;" target="_blank"&gt;mxc_ipuv3_fb.c\mxc\fbdev\video\drivers&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;but i have&amp;nbsp;one questio:&lt;/P&gt;&lt;P&gt;1. int&amp;nbsp;&lt;SPAN style="background-color: #1e1e1e; font-size: 14px; color: #dcdcaa;"&gt;ipu_set_csc_coefficients&lt;/SPAN&gt;&lt;SPAN style="background-color: #1e1e1e; color: #d4d4d4; font-size: 14px;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="background-color: #1e1e1e; color: #9cdcfe; font-size: 14px; "&gt;) funciton&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="background-color: #1e1e1e; color: #d4d4d4; font-size: 14px;"&gt;, it just setup&amp;nbsp;&lt;SPAN style="color: #333333; background-color: #ffffff;"&gt;Color conversion coefficient, and do not setup IPU_DP_COM_CONF_ASYNC0 reg to enable the CSC funciton , is it disabled when IPU finished&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;initialization&lt;SPAN style="background-color: #ffffff; color: #333333; font-size: 14px; "&gt;?, so when I use imx_csc.c to setup CSC is useless?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 27 Jul 2020 04:54:01 GMT</pubDate>
    <dc:creator>liangyan</dc:creator>
    <dc:date>2020-07-27T04:54:01Z</dc:date>
    <item>
      <title>it does not work "MXCFB_CSC_UPDATE" on fsl-yocto-Linux-4.9.11</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087765#M159500</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;below is imx_csc.c code, but it does not work on kernel 4.9.11, it is wrong?&lt;/P&gt;&lt;P&gt;#include &amp;lt;unistd.h&amp;gt;&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;BR /&gt;#include &amp;lt;string.h&amp;gt;&lt;BR /&gt;#include &amp;lt;fcntl.h&amp;gt;&lt;BR /&gt;#include &amp;lt;linux/fb.h&amp;gt;&lt;BR /&gt;#include &amp;lt;linux/fs.h&amp;gt;&lt;BR /&gt;#include &amp;lt;sys/mman.h&amp;gt;&lt;BR /&gt;#include &amp;lt;sys/ioctl.h&amp;gt;&lt;BR /&gt;#include &amp;lt;sys/stat.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;math.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/mxcfb.h&amp;gt;&lt;/P&gt;&lt;P&gt;static const int ycbcr2rgb_coeff_sd[5][3] = {&lt;BR /&gt; {0x095, 0x000, 0x0CC},&lt;BR /&gt; {0x095, 0x3CE, 0x398},&lt;BR /&gt; {0x095, 0x0FF, 0x000},&lt;BR /&gt; {0x3E42, 0x010A, 0x3DD6}, /*B0,B1,B2 */&lt;BR /&gt; {0x1, 0x1, 0x1}, /*S0,S1,S2 */&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static const int ycbcr2rgb_coeff_hd[5][3] = {&lt;BR /&gt; {0x095, 0x000, 0x0E5},&lt;BR /&gt; {0x095, 0x3E5, 0x3BC},&lt;BR /&gt; {0x095, 0x10E, 0x000},&lt;BR /&gt; {0x3E10, 0x0099, 0x3DBE}, /*B0,B1,B2 */&lt;BR /&gt; {0x1, 0x1, 0x1}, /*S0,S1,S2 */&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* */&lt;BR /&gt;static double default_matrix_coeff_sd[3][3] = {&lt;BR /&gt; { 1.1644, 0.0000, 1.5962 },&lt;BR /&gt; { 1.1644, -0.3937, -0.8133 },&lt;BR /&gt; { 1.1644, 2.0174, 0.0000 },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static double default_matrix_coeff_hd[3][3] = {&lt;BR /&gt; { 1.1644, 0.0000, 1.7927 },&lt;BR /&gt; { 1.1644, -0.2132, -0.5329 },&lt;BR /&gt; { 1.1644, 2.1124, 0.0000 },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static double brightness_saturation_matrix[3][3] = {&lt;BR /&gt; { 1.0000, 0.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 1.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 0.0000, 1.0000 },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static double hue_matrix[3][3] = {&lt;BR /&gt; { 1.0000, 0.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 1.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 0.0000, 1.0000 },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static double SrSgSb_matrix[3][3] = {&lt;BR /&gt; { 1.0000, 0.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 1.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 0.0000, 1.0000 },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static double ColorTemp_coeff_matrix[3][3] = {&lt;BR /&gt; { 1.0000, 0.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 1.0000, 0.0000 },&lt;BR /&gt; { 0.0000, 0.0000, 1.0000 },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static double ColorTemp_table[3][3];&lt;BR /&gt;static double White_P0[3] = { 1.0,1.0,1.0 };&lt;BR /&gt;static double White_P1[3] = { 1.0,1.0,1.0 };&lt;BR /&gt;static double White_XYZp0[3] = { 1.0,1.0,1.0 };&lt;BR /&gt;static double White_XYZp1[3] = { 1.0,1.0,1.0 };&lt;/P&gt;&lt;P&gt;static int enable_color_temp = 0;&lt;/P&gt;&lt;P&gt;static double xyz_inverse_matrix[3][3];&lt;BR /&gt;static double XYZ_matrix[3][3];&lt;BR /&gt;static double XYZ_inverse_matrix[3][3];&lt;/P&gt;&lt;P&gt;static double KRGB[3];&lt;BR /&gt;static double Kmax = 0;&lt;/P&gt;&lt;P&gt;static double color_correction_matrix[5][3];&lt;/P&gt;&lt;P&gt;static int file_matrix[5][3];&lt;/P&gt;&lt;P&gt;static int brightness = 50;&lt;BR /&gt;static int contrast = 50;&lt;BR /&gt;static int saturation = 50;&lt;BR /&gt;static int hue = 50;&lt;/P&gt;&lt;P&gt;static double brightness_coeff = 1.0;&lt;BR /&gt;static double contrast_coeff = 1.0;&lt;BR /&gt;static double saturation_coeff = 1.0;&lt;BR /&gt;static double hue_coeff = 0;&lt;/P&gt;&lt;P&gt;#if 0&lt;BR /&gt;static double gamma_value = 1.0;&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;static double r_gamma = 1.0;&lt;BR /&gt;static double g_gamma = 1.0;&lt;BR /&gt;static double b_gamma = 1.0;&lt;/P&gt;&lt;P&gt;#define PI 3.141592&lt;/P&gt;&lt;P&gt;void print_color_correction_matrix()&lt;BR /&gt;{&lt;BR /&gt; static int num = 1;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; printf("\n");&lt;BR /&gt; printf("new matrix %d\n",num);&lt;/P&gt;&lt;P&gt;printf("-------------------------------\n");&lt;BR /&gt; printf("Hex. table\n");&lt;BR /&gt; printf("-------------------------------\n");&lt;BR /&gt; printf("{ %lf, %lf, %lf }\n",color_correction_matrix[0][0],color_correction_matrix[0][1],color_correction_matrix[0][2]);&lt;BR /&gt; printf("{ %lf, %lf, %lf }\n",color_correction_matrix[1][0],color_correction_matrix[1][1],color_correction_matrix[1][2]);&lt;BR /&gt; printf("{ %lf, %lf, %lf }\n",color_correction_matrix[2][0],color_correction_matrix[2][1],color_correction_matrix[2][2]);&lt;BR /&gt; printf("{ %lf, %lf, %lf }\n",color_correction_matrix[3][0],color_correction_matrix[3][1],color_correction_matrix[3][2]);&lt;BR /&gt; printf("{ %lf, %lf, %lf }\n",color_correction_matrix[4][0],color_correction_matrix[4][1],color_correction_matrix[4][2]);&lt;/P&gt;&lt;P&gt;num++;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;int gauss_jordan(double a[3][3],double out[3][3])&lt;BR /&gt;{&lt;BR /&gt; int ipv, i, j;&lt;BR /&gt; double inv_pivot, temp;&lt;BR /&gt; double big;&lt;BR /&gt; int pivot_row = 0, row[3+10];&lt;BR /&gt; int n = 3;&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; out[i][j] = a[i][j];&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(ipv=0 ; ipv &amp;lt; n ; ipv++)&lt;BR /&gt; {&lt;BR /&gt; big=0.0;&lt;BR /&gt; for(i=ipv ; i &amp;lt; n ; i++)&lt;BR /&gt; {&lt;BR /&gt; if(fabs(out[i][ipv]) &amp;gt; big)&lt;BR /&gt; {&lt;BR /&gt; big = fabs(out[i][ipv]);&lt;BR /&gt; pivot_row = i;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; if(big == 0.0)&lt;BR /&gt; {&lt;BR /&gt; return(0);&lt;BR /&gt; }&lt;BR /&gt; row[ipv] = pivot_row;&lt;/P&gt;&lt;P&gt;if(ipv != pivot_row)&lt;BR /&gt; {&lt;BR /&gt; for(i=0 ; i &amp;lt; n ; i++)&lt;BR /&gt; {&lt;BR /&gt; temp = out[ipv][i];&lt;BR /&gt; out[ipv][i] = out[pivot_row][i];&lt;BR /&gt; out[pivot_row][i] = temp;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;inv_pivot = 1.0/out[ipv][ipv];&lt;BR /&gt; out[ipv][ipv]=1.0;&lt;BR /&gt; for(j=0 ; j &amp;lt; n ; j++)&lt;BR /&gt; {&lt;BR /&gt; out[ipv][j] *= inv_pivot;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(i=0 ; i&amp;lt;n ; i++)&lt;BR /&gt; {&lt;BR /&gt; if(i != ipv)&lt;BR /&gt; {&lt;BR /&gt; temp = out[i][ipv];&lt;BR /&gt; out[i][ipv]=0.0;&lt;BR /&gt; for(j=0 ; j&amp;lt;n ; j++)&lt;BR /&gt; {&lt;BR /&gt; out[i][j] -= temp*out[ipv][j];&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(j=n-1 ; j&amp;gt;=0 ; j--)&lt;BR /&gt; {&lt;BR /&gt; if(j != row[j])&lt;BR /&gt; {&lt;BR /&gt; for(i=0 ; i&amp;lt;n ; i++)&lt;BR /&gt; {&lt;BR /&gt; temp = out[i][j];&lt;BR /&gt; out[i][j]=out[i][row[j]];&lt;BR /&gt; out[i][row[j]]=temp;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; return(1);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void color_temp_func()&lt;BR /&gt;{&lt;BR /&gt; int i,j;&lt;/P&gt;&lt;P&gt;gauss_jordan(ColorTemp_table,xyz_inverse_matrix);&lt;/P&gt;&lt;P&gt;White_XYZp0[0] = White_P0[0] / White_P0[1];&lt;BR /&gt; White_XYZp0[1] = 1.0;&lt;BR /&gt; White_XYZp0[2] = White_P0[2] / White_P0[1];&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; SrSgSb_matrix[i][i] = xyz_inverse_matrix[i][0] * White_XYZp0[0] + xyz_inverse_matrix[i][1] * White_XYZp0[1] + xyz_inverse_matrix[i][2] * White_XYZp0[2];&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; XYZ_matrix[i][j] = SrSgSb_matrix[j][j] * ColorTemp_table[i][j];&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;gauss_jordan(XYZ_matrix,XYZ_inverse_matrix);&lt;/P&gt;&lt;P&gt;White_XYZp1[0] = White_P1[0] / White_P1[1];&lt;BR /&gt; White_XYZp1[1] = 1.0;&lt;BR /&gt; White_XYZp1[2] = White_P1[2] / White_P1[1];&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; KRGB[i] = XYZ_inverse_matrix[i][0] * White_XYZp1[0] + XYZ_inverse_matrix[i][1] * White_XYZp1[1] + XYZ_inverse_matrix[i][2] * White_XYZp1[2];&lt;BR /&gt; if(Kmax &amp;lt; KRGB[i])&lt;BR /&gt; {&lt;BR /&gt; Kmax = KRGB[i];&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;ColorTemp_coeff_matrix[0][0] = 1. / Kmax * KRGB[0];&lt;BR /&gt; ColorTemp_coeff_matrix[1][1] = 1. / Kmax * KRGB[1];&lt;BR /&gt; ColorTemp_coeff_matrix[2][2] = 1. / Kmax * KRGB[2];&lt;/P&gt;&lt;P&gt;ColorTemp_coeff_matrix[0][0] = pow(ColorTemp_coeff_matrix[0][0], 1./r_gamma);&lt;BR /&gt; ColorTemp_coeff_matrix[1][1] = pow(ColorTemp_coeff_matrix[1][1], 1./g_gamma);&lt;BR /&gt; ColorTemp_coeff_matrix[2][2] = pow(ColorTemp_coeff_matrix[2][2], 1./b_gamma);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void multi_color_temp_coeff()&lt;BR /&gt;{&lt;BR /&gt; int i,j;&lt;BR /&gt; double tmp[3][3];&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; tmp[i][j] = color_correction_matrix[i][j] / 128.;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[i][j] = ColorTemp_coeff_matrix[i][i] * tmp[i][j];&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[3][i] = (color_correction_matrix[i][0] * -16.) + (color_correction_matrix[i][1] * -128.) + (color_correction_matrix[i][2] * -128.);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[3][i] = color_correction_matrix[3][i] * 2.0;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[i][j] = color_correction_matrix[i][j] * 128.;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void create_color_correction_matrix()&lt;BR /&gt;{&lt;BR /&gt; int i,j;&lt;/P&gt;&lt;P&gt;double tmp;&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[i][j] = color_correction_matrix[i][j] * contrast_coeff;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;brightness_saturation_matrix[0][0] = brightness_coeff;&lt;BR /&gt; brightness_saturation_matrix[1][1] = saturation_coeff;&lt;BR /&gt; brightness_saturation_matrix[2][2] = saturation_coeff;&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[i][j] = color_correction_matrix[i][j] * brightness_saturation_matrix[j][j];&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;hue_matrix[1][1] = cos(hue_coeff * PI / 180.);&lt;BR /&gt; hue_matrix[1][2] = sin(hue_coeff * PI / 180.);&lt;BR /&gt; hue_matrix[2][1] = sin(hue_coeff * PI / 180.) * -1.;&lt;BR /&gt; hue_matrix[2][2] = hue_matrix[1][1];&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[i][0] = color_correction_matrix[i][0];&lt;/P&gt;&lt;P&gt;tmp = color_correction_matrix[i][1];&lt;/P&gt;&lt;P&gt;color_correction_matrix[i][1] = ( tmp * hue_matrix[1][1] ) + ( color_correction_matrix[i][2] * hue_matrix[2][1] );&lt;BR /&gt; color_correction_matrix[i][2] = ( tmp * hue_matrix[1][2] ) + ( color_correction_matrix[i][2] * hue_matrix[2][2] );&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[3][i] = (color_correction_matrix[i][0] * -16.) + (color_correction_matrix[i][1] * -128.) + (color_correction_matrix[i][2] * -128.);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[3][i] = color_correction_matrix[3][i] * 2.0;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; color_correction_matrix[i][j] = color_correction_matrix[i][j] * 128.;&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;color_correction_matrix[4][0] = 1.;&lt;BR /&gt; color_correction_matrix[4][1] = 1.;&lt;BR /&gt; color_correction_matrix[4][2] = 1.;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void fb_set_std_table(int fd_fb,int index)&lt;BR /&gt;{&lt;BR /&gt; struct mxcfb_csc_matrix csc_matrix;&lt;BR /&gt; int retval;&lt;/P&gt;&lt;P&gt;memset(&amp;amp;csc_matrix,0,sizeof(csc_matrix));&lt;/P&gt;&lt;P&gt;if(index == 0)&lt;BR /&gt; {&lt;BR /&gt; // BT709 standard&lt;BR /&gt; memcpy(csc_matrix.param,ycbcr2rgb_coeff_hd,sizeof(ycbcr2rgb_coeff_hd));&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt; else if(index == 1)&lt;BR /&gt; {&lt;BR /&gt; // BT601 standard&lt;BR /&gt; memcpy(csc_matrix.param,ycbcr2rgb_coeff_sd,sizeof(ycbcr2rgb_coeff_sd));&lt;BR /&gt; }&lt;BR /&gt; else if(index == 2)&lt;BR /&gt; {&lt;BR /&gt; int i,j;&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; csc_matrix.param[i][j] = file_matrix[i][j] &amp;amp; 0x3FF;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; csc_matrix.param[3][i] = file_matrix[3][i] &amp;amp; 0x3FFF;&lt;BR /&gt; csc_matrix.param[4][i] = file_matrix[4][i];&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; int i,j;&lt;/P&gt;&lt;P&gt;for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; for(j = 0;j &amp;lt; 3;j++)&lt;BR /&gt; {&lt;BR /&gt; csc_matrix.param[i][j] = (int)color_correction_matrix[i][j] &amp;amp; 0x3FF;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; for(i = 0;i &amp;lt; 3;i++)&lt;BR /&gt; {&lt;BR /&gt; csc_matrix.param[3][i] = (int)color_correction_matrix[3][i] &amp;amp; 0x3FFF;&lt;BR /&gt; csc_matrix.param[4][i] = (int)color_correction_matrix[4][i];&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;printf("\n");&lt;/P&gt;&lt;P&gt;printf("CSC parameters\n");&lt;/P&gt;&lt;P&gt;printf("\n");&lt;/P&gt;&lt;P&gt;printf("-------------------------------\n");&lt;BR /&gt; printf("Hex. table\n");&lt;BR /&gt; printf("-------------------------------\n");&lt;BR /&gt; printf("{ %03X, %03X, %03X }\n",csc_matrix.param[0][0],csc_matrix.param[0][1],csc_matrix.param[0][2]);&lt;BR /&gt; printf("{ %03X, %03X, %03X }\n",csc_matrix.param[1][0],csc_matrix.param[1][1],csc_matrix.param[1][2]);&lt;BR /&gt; printf("{ %03X, %03X, %03X }\n",csc_matrix.param[2][0],csc_matrix.param[2][1],csc_matrix.param[2][2]);&lt;BR /&gt; printf("{ %04X, %04X, %04X }\n",csc_matrix.param[3][0],csc_matrix.param[3][1],csc_matrix.param[3][2]);&lt;BR /&gt; printf("{ %03X, %03X, %03X }\n",csc_matrix.param[4][0],csc_matrix.param[4][1],csc_matrix.param[4][2]);&lt;/P&gt;&lt;P&gt;retval = ioctl(fd_fb, MXCFB_CSC_UPDATE, &amp;amp;csc_matrix);&lt;BR /&gt; if (retval &amp;lt; 0) {&lt;BR /&gt; printf("Ioctl MXCFB_CSC_UPDATE fail!\n");&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void usage()&lt;BR /&gt;{&lt;BR /&gt; printf(" Usage :\n");&lt;BR /&gt; printf(" imx_csc &amp;lt;0 or 1 or f &amp;lt;csc file&amp;gt;&amp;gt; [-b &amp;lt;value&amp;gt;] [-c &amp;lt;value&amp;gt;] [-s &amp;lt;value&amp;gt;] [-h &amp;lt;value&amp;gt;] [-a &amp;lt;xy file&amp;gt;] [-x &amp;lt;x value&amp;gt;] [-y &amp;lt;y value&amp;gt;] [-g &amp;lt;value&amp;gt;]\n");&lt;BR /&gt; printf("\n Mandatory Options :\n");&lt;BR /&gt; printf(" 0 : Use BT.709 standard(HDTV)\n");&lt;BR /&gt; printf(" 1 : Use BT.601 standard(SDTV)\n");&lt;BR /&gt; printf(" f &amp;lt;csc file&amp;gt; : Read matrix from file (Other options are ignored)\n");&lt;/P&gt;&lt;P&gt;printf("\n Options : All &amp;lt;value&amp;gt;s set to a percentage(0%% to 100%%) number\n");&lt;BR /&gt; printf(" -b &amp;lt;value&amp;gt; : set Brightness value (default 50%%)\n");&lt;BR /&gt; printf(" -c &amp;lt;value&amp;gt; : set Contrast value (default 50%%)\n");&lt;BR /&gt; printf(" -s &amp;lt;value&amp;gt; : set Saturation value (default 50%%)\n");&lt;BR /&gt; printf(" -h &amp;lt;value&amp;gt; : set Hue value (default 50%%)\n");&lt;/P&gt;&lt;P&gt;printf("\n Options : All &amp;lt;value&amp;gt;s set to a fraction (0.0 to 1.0) number\n");&lt;BR /&gt; printf(" You must specify all three options. If not, it will be ignored.\n");&lt;BR /&gt; printf(" -a &amp;lt;xy file&amp;gt; : Read default xy axis from file (default is ignored)\n");&lt;BR /&gt; printf(" -x &amp;lt;value&amp;gt; : set target x axis (default value from xy file)\n");&lt;BR /&gt; printf(" -y &amp;lt;value&amp;gt; : set target y axis (default value from xy file)\n");&lt;BR /&gt; printf(" gamma value set to a fraction (0.1 to 3.0) number.\n");&lt;BR /&gt; printf(" -g &amp;lt;r,g,b&amp;gt; : set target gamma value(default 1.0)\n");&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void parse_command_line_args (int argc, char **argv)&lt;BR /&gt;{&lt;BR /&gt; extern int optind; /* getopt sys globals */&lt;BR /&gt; extern char *optarg; /* getopt sys globals */&lt;BR /&gt; signed char command;&lt;/P&gt;&lt;P&gt;int flag = 0;&lt;BR /&gt; struct stat st;&lt;/P&gt;&lt;P&gt;while ((command = getopt(argc, argv, "b:c:s:h:a:x:y:g:")) != -1)&lt;BR /&gt; {&lt;BR /&gt; switch (command)&lt;BR /&gt; {&lt;BR /&gt; case 'b':&lt;BR /&gt; brightness = atoi(optarg);&lt;BR /&gt; if(brightness &amp;lt; 0)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 0%% for braightness\n");&lt;BR /&gt; brightness = 0;&lt;BR /&gt; }&lt;BR /&gt; else if(brightness &amp;gt; 100)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 100%% for braightness\n");&lt;BR /&gt; brightness = 100;&lt;BR /&gt; }&lt;BR /&gt; brightness_coeff = 2.0 * ((float)brightness/100.);&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 'c':&lt;BR /&gt; contrast = atoi(optarg);&lt;BR /&gt; if(contrast &amp;lt; 0)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 0%% for contrast\n");&lt;BR /&gt; contrast = 0;&lt;BR /&gt; }&lt;BR /&gt; else if(contrast &amp;gt; 100)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 100%% for contrast\n");&lt;BR /&gt; contrast = 100;&lt;BR /&gt; }&lt;BR /&gt; contrast_coeff = 2.0 * ((float)contrast/100.);&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 's':&lt;BR /&gt; saturation = atoi(optarg);&lt;BR /&gt; if(saturation &amp;lt; 0)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 0%% for saturation\n");&lt;BR /&gt; saturation = 0;&lt;BR /&gt; }&lt;BR /&gt; else if(saturation &amp;gt; 100)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 100%% for saturation\n");&lt;BR /&gt; saturation = 100;&lt;BR /&gt; }&lt;BR /&gt; saturation_coeff = 2.0 * ((float)saturation/100.);&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 'h':&lt;BR /&gt; hue = atoi(optarg);&lt;BR /&gt; if(hue &amp;lt; 0)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 0%% for hue\n");&lt;BR /&gt; hue = 0;&lt;BR /&gt; }&lt;BR /&gt; else if(hue &amp;gt; 100)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 100%% for hue\n");&lt;BR /&gt; hue = 100;&lt;BR /&gt; }&lt;BR /&gt; if(hue &amp;lt; 50)&lt;BR /&gt; {&lt;BR /&gt; hue = hue * 2;&lt;BR /&gt; hue_coeff = 180 + (180 * ((float)hue/100.));&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; hue = (hue - 50) * 2;&lt;BR /&gt; hue_coeff = 180 * ((float)hue/100.);&lt;BR /&gt; }&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 'a':&lt;BR /&gt; if(stat(optarg,&amp;amp;st) != 0)&lt;BR /&gt; {&lt;BR /&gt; printf("xy axis file not found. color temp function is ignored.\n");&lt;BR /&gt; flag = 0;&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; if( (st.st_mode &amp;amp; S_IFMT) == S_IFREG)&lt;BR /&gt; {&lt;BR /&gt; FILE *fp;&lt;BR /&gt; fp = fopen(optarg,"r");&lt;BR /&gt; if(fp == NULL)&lt;BR /&gt; {&lt;BR /&gt; printf("can not open xy axis file. color temp function is ignored.\n");&lt;BR /&gt; flag = 0;&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; // R G B W&lt;BR /&gt; fscanf(fp,"%lf,%lf,%lf,%lf",&amp;amp;ColorTemp_table[0][0],&amp;amp;ColorTemp_table[0][1],&amp;amp;ColorTemp_table[0][2],&amp;amp;White_P0[0]); // x&lt;BR /&gt; fscanf(fp,"%lf,%lf,%lf,%lf",&amp;amp;ColorTemp_table[1][0],&amp;amp;ColorTemp_table[1][1],&amp;amp;ColorTemp_table[1][2],&amp;amp;White_P0[1]); // y&lt;BR /&gt; fclose(fp);&lt;/P&gt;&lt;P&gt;// z&lt;BR /&gt; ColorTemp_table[2][0] = 1. - ColorTemp_table[0][0] - ColorTemp_table[1][0];&lt;BR /&gt; ColorTemp_table[2][1] = 1. - ColorTemp_table[0][1] - ColorTemp_table[1][1];&lt;BR /&gt; ColorTemp_table[2][2] = 1. - ColorTemp_table[0][2] - ColorTemp_table[1][2];&lt;BR /&gt; White_P0[2] = 1. - White_P0[0] - White_P0[1];&lt;/P&gt;&lt;P&gt;flag |= 1;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; printf("xy axis file not found. color temp function is ignored.\n");&lt;BR /&gt; flag = 0;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 'x':&lt;BR /&gt; White_P1[0] = atof(optarg);&lt;BR /&gt; flag |= 2;&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 'y':&lt;BR /&gt; White_P1[1] = atof(optarg);&lt;BR /&gt; flag |= 4;&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;case 'g':&lt;/P&gt;&lt;P&gt;if(sscanf(optarg,"%lf,%lf,%lf",&amp;amp;r_gamma,&amp;amp;g_gamma,&amp;amp;b_gamma) == EOF)&lt;BR /&gt; {&lt;BR /&gt; r_gamma = 1.0;&lt;BR /&gt; g_gamma = 1.0;&lt;BR /&gt; b_gamma = 1.0;&lt;BR /&gt; printf("all gamma value set to 1.0\n");&lt;BR /&gt; }&lt;BR /&gt;#if 0&lt;BR /&gt; gamma_value = atof(optarg);&lt;BR /&gt; if(gamma_value &amp;lt; 0.1)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 0.1 for gamma\n");&lt;BR /&gt; gamma_value = 0.1;&lt;BR /&gt; }&lt;BR /&gt; else if(gamma_value &amp;gt; 3.0)&lt;BR /&gt; {&lt;BR /&gt; printf("Clip to 3.0 for gamma\n");&lt;BR /&gt; gamma_value = 3.0;&lt;BR /&gt; }&lt;BR /&gt;#endif&lt;BR /&gt; flag |= 8;&lt;BR /&gt; break;&lt;/P&gt;&lt;P&gt;default:&lt;BR /&gt; usage();&lt;BR /&gt; exit(1);&lt;BR /&gt; break;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; if(flag == 15)&lt;BR /&gt; {&lt;BR /&gt; if(White_P0[0] == White_P1[0] &amp;amp;&amp;amp; White_P0[1] == White_P1[1])&lt;BR /&gt; {&lt;BR /&gt; printf("target xy and file xy as same. color temp function is ignored.\n");&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; White_P1[2] = 1. - White_P1[0] - White_P1[1];&lt;BR /&gt; enable_color_temp = 1;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;int main(int argc, char *argv[])&lt;BR /&gt;{&lt;BR /&gt; int fd;&lt;BR /&gt; int index = 1;&lt;/P&gt;&lt;P&gt;int i;&lt;/P&gt;&lt;P&gt;FILE *fp;&lt;/P&gt;&lt;P&gt;if(argc &amp;lt; 2)&lt;BR /&gt; {&lt;BR /&gt; printf("invald arguments!\n");&lt;BR /&gt; usage();&lt;BR /&gt; return -1;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;if(strcmp(argv[1],"0") == 0)&lt;BR /&gt; {&lt;BR /&gt; index = 0;&lt;BR /&gt; }&lt;BR /&gt; else if(strcmp(argv[1],"1") == 0)&lt;BR /&gt; {&lt;BR /&gt; index = 1;&lt;BR /&gt; }&lt;BR /&gt; else if(strcmp(argv[1],"f") == 0)&lt;BR /&gt; {&lt;BR /&gt; index = 2;&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; printf("invald arguments!\n");&lt;BR /&gt; usage();&lt;BR /&gt; return -1;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;parse_command_line_args(argc, argv);&lt;/P&gt;&lt;P&gt;fd = open("/dev/fb0",O_RDWR);&lt;/P&gt;&lt;P&gt;if(fd &amp;lt; 0)&lt;BR /&gt; {&lt;BR /&gt; printf("Can not open device\n");&lt;BR /&gt; return -1;&lt;BR /&gt; }&lt;BR /&gt; if(argc == 2)&lt;BR /&gt; {&lt;BR /&gt; if(index == 0)&lt;BR /&gt; {&lt;BR /&gt; printf("Set to BT.709 standard(HDTV) and all parameters set to default\n");&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; printf("Set to BT.601 standard(SDTV) and all parameters set to default\n");&lt;BR /&gt; }&lt;BR /&gt; fb_set_std_table(fd, index);&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; if(index == 2)&lt;BR /&gt; {&lt;BR /&gt; fp = fopen(argv[2],"r");&lt;BR /&gt; if(fp == NULL)&lt;BR /&gt; {&lt;BR /&gt; printf("CSC file open Error!");&lt;BR /&gt; close(fd);&lt;BR /&gt; return -1;&lt;BR /&gt; }&lt;BR /&gt; for(i = 0;i &amp;lt; 5;i++)&lt;BR /&gt; {&lt;BR /&gt; fscanf(fp,"%d,%d,%d",&amp;amp;file_matrix[i][0],&amp;amp;file_matrix[i][1],&amp;amp;file_matrix[i][2]);&lt;BR /&gt; }&lt;BR /&gt; fb_set_std_table(fd, 2);&lt;BR /&gt; fclose(fp);&lt;BR /&gt; close(fd);&lt;BR /&gt; printf("Done.\n");&lt;BR /&gt; return 0;&lt;BR /&gt; }&lt;BR /&gt; else if(index == 0)&lt;BR /&gt; {&lt;BR /&gt; memcpy(color_correction_matrix,default_matrix_coeff_hd,sizeof(default_matrix_coeff_hd));&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; memcpy(color_correction_matrix,default_matrix_coeff_sd,sizeof(default_matrix_coeff_sd));&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;printf("Brightness set to : %d%%(%lf)\n",brightness,brightness_coeff);&lt;BR /&gt; printf(" Contrast set to : %d%%(%lf)\n",contrast,contrast_coeff);&lt;BR /&gt; printf("Saturation set to : %d%%(%lf)\n",saturation,saturation_coeff);&lt;BR /&gt; printf(" Hue set to : %lf degree\n",hue_coeff);&lt;/P&gt;&lt;P&gt;create_color_correction_matrix();&lt;BR /&gt; if(enable_color_temp == 1)&lt;BR /&gt; {&lt;BR /&gt; color_temp_func();&lt;BR /&gt; multi_color_temp_coeff();&lt;/P&gt;&lt;P&gt;printf("Default xy value(W): (%lf,%lf)\n",White_P0[0],White_P0[1]);&lt;BR /&gt; printf(" Target xy value(W): (%lf,%lf)\n",White_P1[0],White_P1[1]);&lt;BR /&gt; printf(" Target gamma value: %lf,%lf,%lf\n",r_gamma,g_gamma,b_gamma);&lt;BR /&gt; }&lt;BR /&gt; fb_set_std_table(fd, 255);&lt;BR /&gt; }&lt;BR /&gt; close(fd);&lt;BR /&gt; printf("Done.\n");&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 25 Jul 2020 09:29:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087765#M159500</guid>
      <dc:creator>liangyan</dc:creator>
      <dc:date>2020-07-25T09:29:43Z</dc:date>
    </item>
    <item>
      <title>Re: it does not work "MXCFB_CSC_UPDATE" on fsl-yocto-Linux-4.9.11</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087766#M159501</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi liang&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can try with unit tests:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://source.codeaurora.org/external/imx/imx-test/tree/test/mxc_fb_test/mxc_fb_test.c?h=nxp/imx_4.9.11_1.0.0_ga" title="https://source.codeaurora.org/external/imx/imx-test/tree/test/mxc_fb_test/mxc_fb_test.c?h=nxp/imx_4.9.11_1.0.0_ga"&gt;mxc_fb_test.c\mxc_fb_test\test - imx-test - i.MX Driver Test Application Software&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;BR /&gt;igor&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 26 Jul 2020 23:06:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087766#M159501</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2020-07-26T23:06:37Z</dc:date>
    </item>
    <item>
      <title>Re: it does not work "MXCFB_CSC_UPDATE" on fsl-yocto-Linux-4.9.11</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087767#M159502</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&amp;nbsp;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="206296" data-username="igorpadykov" href="https://community.nxp.com/people/igorpadykov" style="color: #3d9ce7; background-color: #ffffff; border: 0px; font-weight: 200; text-decoration: none; font-size: 1.286rem;"&gt;igorpadykov&lt;/A&gt;&lt;/P&gt;&lt;P&gt;in file mxc_fb_test.c, i can't find&amp;nbsp; &amp;nbsp;about "MXCFB_CSC_UPDATE" ioctl text?, could you share me this file ?&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Jul 2020 00:04:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087767#M159502</guid>
      <dc:creator>liangyan</dc:creator>
      <dc:date>2020-07-27T00:04:00Z</dc:date>
    </item>
    <item>
      <title>Re: it does not work "MXCFB_CSC_UPDATE" on fsl-yocto-Linux-4.9.11</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087768#M159503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A class="link-titled" href="https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/video/fbdev/mxc/mxc_ipuv3_fb.c?h=imx_4.9.11_1.0.0_ga" title="https://source.codeaurora.org/external/imx/linux-imx/tree/drivers/video/fbdev/mxc/mxc_ipuv3_fb.c?h=imx_4.9.11_1.0.0_ga"&gt;mxc_ipuv3_fb.c\mxc\fbdev\video\drivers - linux-imx - i.MX Linux kernel&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;~igor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Jul 2020 01:06:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087768#M159503</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2020-07-27T01:06:06Z</dc:date>
    </item>
    <item>
      <title>Re: it does not work "MXCFB_CSC_UPDATE" on fsl-yocto-Linux-4.9.11</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087769#M159504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&amp;nbsp;&lt;STRONG class="" style="color: #646464; background-color: #ffffff; border: 0px; font-weight: 200; font-size: 1.286rem; padding: 0px 0px 0px 30px;"&gt;&lt;SPAN class="" style="border: 0px; font-weight: inherit; font-size: 18.004px;"&gt;igorpadykov&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG class="" style="color: #646464; background-color: #ffffff; border: 0px; font-weight: 200; font-size: 1.286rem; padding: 0px 0px 0px 30px;"&gt;&lt;SPAN class="" style="border: 0px; font-weight: inherit; font-size: 18.004px;"&gt;i read the kernel code ,and find about "&lt;/SPAN&gt;&lt;/STRONG&gt;MXCFB_CSC_UPDATE"&amp;nbsp;&lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Flinux-imx%2Ftree%2Fdrivers%2Fvideo%2Ffbdev%2Fmxc%2Fmxc_ipuv3_fb.c%3Fh%3Dimx_4.9.11_1.0.0_ga" rel="nofollow" style="color: #3d9ce7; background-color: #ffffff; border: 0px; text-decoration: underline; padding: 0px calc(12px + 0.35ex) 0px 0px;" target="_blank"&gt;mxc_ipuv3_fb.c\mxc\fbdev\video\drivers&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;but i have&amp;nbsp;one questio:&lt;/P&gt;&lt;P&gt;1. int&amp;nbsp;&lt;SPAN style="background-color: #1e1e1e; font-size: 14px; color: #dcdcaa;"&gt;ipu_set_csc_coefficients&lt;/SPAN&gt;&lt;SPAN style="background-color: #1e1e1e; color: #d4d4d4; font-size: 14px;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="background-color: #1e1e1e; color: #9cdcfe; font-size: 14px; "&gt;) funciton&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="background-color: #1e1e1e; color: #d4d4d4; font-size: 14px;"&gt;, it just setup&amp;nbsp;&lt;SPAN style="color: #333333; background-color: #ffffff;"&gt;Color conversion coefficient, and do not setup IPU_DP_COM_CONF_ASYNC0 reg to enable the CSC funciton , is it disabled when IPU finished&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;initialization&lt;SPAN style="background-color: #ffffff; color: #333333; font-size: 14px; "&gt;?, so when I use imx_csc.c to setup CSC is useless?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Jul 2020 04:54:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/it-does-not-work-quot-MXCFB-CSC-UPDATE-quot-on-fsl-yocto-Linux-4/m-p/1087769#M159504</guid>
      <dc:creator>liangyan</dc:creator>
      <dc:date>2020-07-27T04:54:01Z</dc:date>
    </item>
  </channel>
</rss>

