arm: tegra: calibrate cmu for lgd wxga panel
Min-wuk Lee [Tue, 14 May 2013 15:12:10 +0000 (00:12 +0900)]
Calibrate color management unit for lgd wxga 7.0 inches
panel. In default, gained matrix is set which gives D65
white balance. In order to switch to normalized matrix,
set CMU_CSC_GAINED_MATRIX to 0.

Bug 1233941

Change-Id: I687248c811aab6237e0c10d95846f4cdff337819
Signed-off-by: Min-wuk Lee <mlee@nvidia.com>
Reviewed-on: http://git-master/r/228413
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Mitch Luban <mluban@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>

arch/arm/mach-tegra/board-tegratab-panel.c
arch/arm/mach-tegra/panel-lgd-wxga-7-0.c

index cbd080c..740b714 100644 (file)
@@ -277,15 +277,8 @@ static struct tegra_dc_platform_data tegratab_disp1_pdata = {
        .default_out    = &tegratab_disp1_out,
        .fb             = &tegratab_disp1_fb_data,
        .emc_clk_rate   = 204000000,
-       /*
-        * In early panel bring-up stage, we will not
-        * enable CMU. Check if CONFIG_TEGRA_DC_CMU is
-        * removed in early bring-up stage as well.
-        * TODO...enable CMU later.
-        */
 #ifdef CONFIG_TEGRA_DC_CMU
-       .cmu_enable     = 0,
-       /*.cmu_enable   = 1,*/
+       .cmu_enable     = 1,
 #endif
 };
 
index 6597012..ae73671 100644 (file)
@@ -46,6 +46,8 @@
  */
 #define VIDEO_CLK_MODE_TX_ONLY         1
 
+#define CMU_CSC_GAINED_MATRIX          1
+
 static bool reg_requested;
 static struct platform_device *disp_device;
 static struct regulator *avdd_lcd_3v3;
@@ -265,6 +267,183 @@ static struct tegra_dc_mode dsi_lgd_wxga_7_0_modes[] = {
 };
 #endif
 
+#ifdef CONFIG_TEGRA_DC_CMU
+static struct tegra_dc_cmu dsi_lgd_wxga_7_0_cmu = {
+       /* lut1 maps sRGB to linear space. */
+       {
+       0,    1,    2,    4,    5,    6,    7,    9,
+       10,   11,   12,   14,   15,   16,   18,   20,
+       21,   23,   25,   27,   29,   31,   33,   35,
+       37,   40,   42,   45,   48,   50,   53,   56,
+       59,   62,   66,   69,   72,   76,   79,   83,
+       87,   91,   95,   99,   103,  107,  112,  116,
+       121,  126,  131,  136,  141,  146,  151,  156,
+       162,  168,  173,  179,  185,  191,  197,  204,
+       210,  216,  223,  230,  237,  244,  251,  258,
+       265,  273,  280,  288,  296,  304,  312,  320,
+       329,  337,  346,  354,  363,  372,  381,  390,
+       400,  409,  419,  428,  438,  448,  458,  469,
+       479,  490,  500,  511,  522,  533,  544,  555,
+       567,  578,  590,  602,  614,  626,  639,  651,
+       664,  676,  689,  702,  715,  728,  742,  755,
+       769,  783,  797,  811,  825,  840,  854,  869,
+       884,  899,  914,  929,  945,  960,  976,  992,
+       1008, 1024, 1041, 1057, 1074, 1091, 1108, 1125,
+       1142, 1159, 1177, 1195, 1213, 1231, 1249, 1267,
+       1286, 1304, 1323, 1342, 1361, 1381, 1400, 1420,
+       1440, 1459, 1480, 1500, 1520, 1541, 1562, 1582,
+       1603, 1625, 1646, 1668, 1689, 1711, 1733, 1755,
+       1778, 1800, 1823, 1846, 1869, 1892, 1916, 1939,
+       1963, 1987, 2011, 2035, 2059, 2084, 2109, 2133,
+       2159, 2184, 2209, 2235, 2260, 2286, 2312, 2339,
+       2365, 2392, 2419, 2446, 2473, 2500, 2527, 2555,
+       2583, 2611, 2639, 2668, 2696, 2725, 2754, 2783,
+       2812, 2841, 2871, 2901, 2931, 2961, 2991, 3022,
+       3052, 3083, 3114, 3146, 3177, 3209, 3240, 3272,
+       3304, 3337, 3369, 3402, 3435, 3468, 3501, 3535,
+       3568, 3602, 3636, 3670, 3705, 3739, 3774, 3809,
+       3844, 3879, 3915, 3950, 3986, 4022, 4059, 4095,
+       },
+       /* csc */
+       {
+#if CMU_CSC_GAINED_MATRIX
+               /* gained matrix */
+               0x103, 0x3ED, 0x00F, /* 1.010 -0.070 0.060 */
+               0x3F9, 0x0DC, 0x3F0, /* -0.023 0.863 -0.059 */
+               0x003, 0x3FD, 0x0DD, /* 0.010 -0.008 0.865 */
+#else
+               /* normalized matrix */
+               0x103, 0x3ED, 0x00F, /* 1.010 -0.070 0.060 */
+               0x3F8, 0x11B, 0x3EC, /* -0.029 1.105 -0.076 */
+               0x003, 0x3FC, 0x0FE, /* 0.012 -0.010 0.998 */
+#endif
+       },
+       /* lut2 maps linear space to sRGB */
+       {
+               0, 2, 5, 7, 10, 12, 14, 16,
+               17, 19, 20, 22, 23, 24, 25, 26,
+               27, 27, 28, 29, 29, 29, 30, 30,
+               30, 31, 31, 31, 31, 31, 31, 31,
+               31, 31, 32, 32, 32, 32, 32, 32,
+               32, 33, 33, 33, 33, 34, 34, 34,
+               34, 35, 35, 35, 36, 36, 36, 36,
+               37, 37, 38, 38, 38, 39, 39, 39,
+               40, 40, 40, 41, 41, 42, 42, 42,
+               43, 43, 43, 44, 44, 45, 45, 45,
+               46, 46, 46, 47, 47, 48, 48, 48,
+               49, 49, 49, 49, 50, 50, 50, 51,
+               51, 51, 52, 52, 52, 52, 53, 53,
+               53, 53, 54, 54, 54, 54, 55, 55,
+               55, 55, 55, 56, 56, 56, 56, 56,
+               57, 57, 57, 57, 57, 58, 58, 58,
+               58, 58, 58, 59, 59, 59, 59, 59,
+               59, 59, 60, 60, 60, 60, 60, 60,
+               60, 61, 61, 61, 61, 61, 61, 61,
+               61, 62, 62, 62, 62, 62, 62, 62,
+               62, 63, 63, 63, 63, 63, 63, 63,
+               63, 64, 64, 64, 64, 64, 64, 64,
+               64, 65, 65, 65, 65, 65, 65, 65,
+               65, 66, 66, 66, 66, 66, 66, 66,
+               66, 67, 67, 67, 67, 67, 67, 67,
+               68, 68, 68, 68, 68, 68, 68, 69,
+               69, 69, 69, 69, 69, 69, 69, 70,
+               70, 70, 70, 70, 70, 70, 71, 71,
+               71, 71, 71, 71, 71, 72, 72, 72,
+               72, 72, 72, 72, 73, 73, 73, 73,
+               73, 73, 73, 74, 74, 74, 74, 74,
+               74, 74, 74, 75, 75, 75, 75, 75,
+               75, 75, 76, 76, 76, 76, 76, 76,
+               76, 77, 77, 77, 77, 77, 77, 77,
+               77, 78, 78, 78, 78, 78, 78, 78,
+               79, 79, 79, 79, 79, 79, 79, 79,
+               80, 80, 80, 80, 80, 80, 80, 80,
+               81, 81, 81, 81, 81, 81, 81, 81,
+               81, 82, 82, 82, 82, 82, 82, 82,
+               82, 83, 83, 83, 83, 83, 83, 83,
+               83, 83, 84, 84, 84, 84, 84, 84,
+               84, 84, 84, 85, 85, 85, 85, 85,
+               85, 85, 85, 85, 86, 86, 86, 86,
+               86, 86, 86, 86, 86, 86, 87, 87,
+               87, 87, 87, 87, 87, 87, 87, 87,
+               88, 88, 88, 88, 88, 88, 88, 88,
+               88, 88, 89, 89, 89, 89, 89, 89,
+               89, 89, 89, 89, 89, 90, 90, 90,
+               90, 90, 90, 90, 90, 90, 90, 90,
+               91, 91, 91, 91, 91, 91, 91, 91,
+               91, 91, 91, 92, 92, 92, 92, 92,
+               92, 92, 92, 92, 92, 92, 92, 93,
+               93, 93, 93, 93, 93, 93, 93, 93,
+               93, 93, 93, 94, 94, 94, 94, 94,
+               94, 94, 94, 94, 94, 94, 95, 95,
+               95, 95, 95, 95, 95, 95, 95, 95,
+               95, 95, 95, 96, 96, 96, 96, 96,
+               96, 96, 96, 96, 96, 96, 96, 97,
+               97, 97, 97, 97, 97, 97, 97, 97,
+               97, 97, 97, 98, 98, 98, 98, 98,
+               98, 98, 98, 98, 98, 98, 98, 99,
+               99, 99, 99, 99, 99, 99, 99, 99,
+               99, 99, 99, 99, 100, 100, 100, 100,
+               100, 100, 100, 100, 100, 100, 100, 100,
+               101, 102, 102, 103, 104, 104, 105, 105,
+               106, 107, 107, 108, 108, 109, 110, 110,
+               111, 111, 112, 112, 113, 114, 114, 115,
+               115, 116, 116, 117, 117, 118, 118, 119,
+               119, 120, 120, 121, 121, 122, 122, 123,
+               123, 124, 124, 125, 125, 126, 126, 127,
+               127, 128, 128, 129, 129, 130, 130, 131,
+               131, 131, 132, 132, 133, 133, 134, 134,
+               135, 135, 135, 136, 136, 137, 137, 138,
+               138, 138, 139, 139, 140, 140, 141, 141,
+               141, 142, 142, 143, 143, 143, 144, 144,
+               145, 145, 145, 146, 146, 146, 147, 147,
+               148, 148, 148, 149, 149, 149, 150, 150,
+               151, 151, 151, 152, 152, 152, 153, 153,
+               153, 154, 154, 155, 155, 155, 156, 156,
+               156, 157, 157, 157, 158, 158, 159, 159,
+               159, 160, 160, 160, 161, 161, 162, 162,
+               162, 163, 163, 163, 164, 164, 165, 165,
+               165, 166, 166, 167, 167, 167, 168, 168,
+               168, 169, 169, 170, 170, 170, 171, 171,
+               172, 172, 172, 173, 173, 174, 174, 174,
+               175, 175, 176, 176, 176, 177, 177, 177,
+               178, 178, 179, 179, 179, 180, 180, 181,
+               181, 181, 182, 182, 182, 183, 183, 184,
+               184, 184, 185, 185, 185, 186, 186, 187,
+               187, 187, 188, 188, 188, 189, 189, 190,
+               190, 190, 191, 191, 191, 192, 192, 192,
+               193, 193, 193, 194, 194, 194, 195, 195,
+               195, 196, 196, 196, 197, 197, 197, 198,
+               198, 198, 199, 199, 199, 200, 200, 200,
+               201, 201, 201, 202, 202, 202, 203, 203,
+               203, 204, 204, 204, 204, 205, 205, 205,
+               206, 206, 206, 207, 207, 207, 208, 208,
+               208, 208, 209, 209, 209, 210, 210, 210,
+               211, 211, 211, 212, 212, 212, 212, 213,
+               213, 213, 214, 214, 214, 215, 215, 215,
+               215, 216, 216, 216, 217, 217, 217, 218,
+               218, 218, 218, 219, 219, 219, 220, 220,
+               220, 220, 221, 221, 221, 222, 222, 222,
+               222, 223, 223, 223, 223, 224, 224, 224,
+               225, 225, 225, 225, 226, 226, 226, 226,
+               227, 227, 227, 227, 228, 228, 228, 229,
+               229, 229, 229, 230, 230, 230, 230, 231,
+               231, 231, 231, 232, 232, 232, 232, 233,
+               233, 233, 233, 233, 234, 234, 234, 234,
+               235, 235, 235, 235, 236, 236, 236, 236,
+               237, 237, 237, 237, 237, 238, 238, 238,
+               238, 239, 239, 239, 239, 240, 240, 240,
+               240, 241, 241, 241, 241, 241, 242, 242,
+               242, 242, 243, 243, 243, 243, 244, 244,
+               244, 244, 244, 245, 245, 245, 245, 246,
+               246, 246, 246, 247, 247, 247, 247, 247,
+               248, 248, 248, 248, 249, 249, 249, 249,
+               250, 250, 250, 250, 251, 251, 251, 251,
+               252, 252, 252, 252, 253, 253, 253, 253,
+               254, 254, 254, 254, 255, 255, 255, 255,
+       },
+};
+#endif
+
 static int dsi_lgd_wxga_7_0_bl_notify(struct device *unused, int brightness)
 {
        /*
@@ -386,7 +565,7 @@ dsi_lgd_wxga_7_0_sd_settings_init(struct tegra_dc_sd_settings *settings)
 
 static void dsi_lgd_wxga_7_0_cmu_init(struct tegra_dc_platform_data *pdata)
 {
-       pdata->cmu = NULL; /* will write CMU stuff after calibration */
+       pdata->cmu = &dsi_lgd_wxga_7_0_cmu;
 }
 
 struct tegra_panel __initdata dsi_lgd_wxga_7_0 = {