hd screen LP097Qx1: max resolution supported on rk3066b is 2047
[firefly-linux-kernel-4.4.55.git] / drivers / video / display / screen / lcd_LP097QX1.c
1 #include <linux/fb.h>\r
2 #include <linux/delay.h>\r
3 #include "../../rk29_fb.h"\r
4 #include <mach/gpio.h>\r
5 #include <mach/iomux.h>\r
6 #include <mach/board.h>\r
7 #include "screen.h"\r
8 \r
9 \r
10 /* Base */\r
11 #define OUT_TYPE            SCREEN_RGB\r
12 \r
13 #define OUT_FACE            OUT_P666 \r
14 \r
15 \r
16 #define OUT_CLK           205000000 //160000000//205000000\r
17 #define LCDC_ACLK        300000000           //29 lcdc axi DMA ÆµÂÊ\r
18 \r
19 /* Timing */\r
20 #define H_PW                    5\r
21 #define H_BP                    5\r
22 \r
23 #if defined(CONFIG_ARCH_RK3066B)\r
24 #define H_VD                    2047\r
25 #else\r
26 #define H_VD                    2048\r
27 #endif\r
28 \r
29 \r
30 #define H_FP                    150\r
31 \r
32 #define V_PW                    1\r
33 #define V_BP                    9\r
34 #define V_VD                    1536\r
35 #define V_FP                    3\r
36 \r
37 #define LCD_WIDTH          216\r
38 #define LCD_HEIGHT         135\r
39 /* Other */\r
40 #define DCLK_POL                1\r
41 #define SWAP_RB                 0\r
42 #define SWAP_DUMMY              0\r
43 #define SWAP_GB                 0\r
44 #define SWAP_RG                 0\r
45 \r
46 int dsp_lut[256] ={\r
47                 0x00000000, 0x00010101, 0x00020202, 0x00030303, 0x00040404, 0x00050505, 0x00060606, 0x00070707, \r
48                 0x00080808, 0x00090909, 0x000a0a0a, 0x000b0b0b, 0x000c0c0c, 0x000d0d0d, 0x000e0e0e, 0x000f0f0f, \r
49                 0x00101010, 0x00111111, 0x00121212, 0x00131313, 0x00141414, 0x00151515, 0x00161616, 0x00171717, \r
50                 0x00181818, 0x00191919, 0x001a1a1a, 0x001b1b1b, 0x001c1c1c, 0x001d1d1d, 0x001e1e1e, 0x001f1f1f, \r
51                 0x00202020, 0x00212121, 0x00222222, 0x00232323, 0x00242424, 0x00252525, 0x00262626, 0x00272727, \r
52                 0x00282828, 0x00292929, 0x002a2a2a, 0x002b2b2b, 0x002c2c2c, 0x002d2d2d, 0x002e2e2e, 0x002f2f2f, \r
53                 0x00303030, 0x00313131, 0x00323232, 0x00333333, 0x00343434, 0x00353535, 0x00363636, 0x00373737, \r
54                 0x00383838, 0x00393939, 0x003a3a3a, 0x003b3b3b, 0x003c3c3c, 0x003d3d3d, 0x003e3e3e, 0x003f3f3f, \r
55                 0x00404040, 0x00414141, 0x00424242, 0x00434343, 0x00444444, 0x00454545, 0x00464646, 0x00474747, \r
56                 0x00484848, 0x00494949, 0x004a4a4a, 0x004b4b4b, 0x004c4c4c, 0x004d4d4d, 0x004e4e4e, 0x004f4f4f, \r
57                 0x00505050, 0x00515151, 0x00525252, 0x00535353, 0x00545454, 0x00555555, 0x00565656, 0x00575757, \r
58                 0x00585858, 0x00595959, 0x005a5a5a, 0x005b5b5b, 0x005c5c5c, 0x005d5d5d, 0x005e5e5e, 0x005f5f5f, \r
59                 0x00606060, 0x00616161, 0x00626262, 0x00636363, 0x00646464, 0x00656565, 0x00666666, 0x00676767, \r
60                 0x00686868, 0x00696969, 0x006a6a6a, 0x006b6b6b, 0x006c6c6c, 0x006d6d6d, 0x006e6e6e, 0x006f6f6f, \r
61                 0x00707070, 0x00717171, 0x00727272, 0x00737373, 0x00747474, 0x00757575, 0x00767676, 0x00777777, \r
62                 0x00787878, 0x00797979, 0x007a7a7a, 0x007b7b7b, 0x007c7c7c, 0x007d7d7d, 0x007e7e7e, 0x007f7f7f, \r
63                 0x00808080, 0x00818181, 0x00828282, 0x00838383, 0x00848484, 0x00858585, 0x00868686, 0x00878787, \r
64                 0x00888888, 0x00898989, 0x008a8a8a, 0x008b8b8b, 0x008c8c8c, 0x008d8d8d, 0x008e8e8e, 0x008f8f8f, \r
65                 0x00909090, 0x00919191, 0x00929292, 0x00939393, 0x00949494, 0x00959595, 0x00969696, 0x00979797, \r
66                 0x00989898, 0x00999999, 0x009a9a9a, 0x009b9b9b, 0x009c9c9c, 0x009d9d9d, 0x009e9e9e, 0x009f9f9f, \r
67                 0x00a0a0a0, 0x00a1a1a1, 0x00a2a2a2, 0x00a3a3a3, 0x00a4a4a4, 0x00a5a5a5, 0x00a6a6a6, 0x00a7a7a7, \r
68                 0x00a8a8a8, 0x00a9a9a9, 0x00aaaaaa, 0x00ababab, 0x00acacac, 0x00adadad, 0x00aeaeae, 0x00afafaf, \r
69                 0x00b0b0b0, 0x00b1b1b1, 0x00b2b2b2, 0x00b3b3b3, 0x00b4b4b4, 0x00b5b5b5, 0x00b6b6b6, 0x00b7b7b7, \r
70                 0x00b8b8b8, 0x00b9b9b9, 0x00bababa, 0x00bbbbbb, 0x00bcbcbc, 0x00bdbdbd, 0x00bebebe, 0x00bfbfbf, \r
71                 0x00c0c0c0, 0x00c1c1c1, 0x00c2c2c2, 0x00c3c3c3, 0x00c4c4c4, 0x00c5c5c5, 0x00c6c6c6, 0x00c7c7c7, \r
72                 0x00c8c8c8, 0x00c9c9c9, 0x00cacaca, 0x00cbcbcb, 0x00cccccc, 0x00cdcdcd, 0x00cecece, 0x00cfcfcf, \r
73                 0x00d0d0d0, 0x00d1d1d1, 0x00d2d2d2, 0x00d3d3d3, 0x00d4d4d4, 0x00d5d5d5, 0x00d6d6d6, 0x00d7d7d7, \r
74                 0x00d8d8d8, 0x00d9d9d9, 0x00dadada, 0x00dbdbdb, 0x00dcdcdc, 0x00dddddd, 0x00dedede, 0x00dfdfdf, \r
75                 0x00e0e0e0, 0x00e1e1e1, 0x00e2e2e2, 0x00e3e3e3, 0x00e4e4e4, 0x00e5e5e5, 0x00e6e6e6, 0x00e7e7e7, \r
76                 0x00e8e8e8, 0x00e9e9e9, 0x00eaeaea, 0x00ebebeb, 0x00ececec, 0x00ededed, 0x00eeeeee, 0x00efefef, \r
77                 0x00f0f0f0, 0x00f1f1f1, 0x00f2f2f2, 0x00f3f3f3, 0x00f4f4f4, 0x00f5f5f5, 0x00f6f6f6, 0x00f7f7f7, \r
78                 0x00f8f8f8, 0x00f9f9f9, 0x00fafafa, 0x00fbfbfb, 0x00fcfcfc, 0x00fdfdfd, 0x00fefefe, 0x00ffffff, \r
79 };\r
80 \r
81 void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )\r
82 {\r
83     /* screen type & face */\r
84     screen->type = OUT_TYPE;\r
85     screen->face = OUT_FACE;\r
86 \r
87     /* Screen size */\r
88     screen->x_res = H_VD;\r
89     screen->y_res = V_VD;\r
90 \r
91     screen->width = LCD_WIDTH;\r
92     screen->height = LCD_HEIGHT;\r
93 \r
94     /* Timing */\r
95     screen->lcdc_aclk = LCDC_ACLK;\r
96     screen->pixclock = OUT_CLK;\r
97         screen->left_margin = H_BP;\r
98         screen->right_margin = H_FP;\r
99         screen->hsync_len = H_PW;\r
100         screen->upper_margin = V_BP;\r
101         screen->lower_margin = V_FP;\r
102         screen->vsync_len = V_PW;\r
103 \r
104         /* Pin polarity */\r
105         screen->pin_hsync = 0;\r
106         screen->pin_vsync = 0;\r
107         screen->pin_den = 0;\r
108         screen->pin_dclk = DCLK_POL;\r
109 \r
110         /* Swap rule */\r
111     screen->swap_rb = SWAP_RB;\r
112     screen->swap_rg = SWAP_RG;\r
113     screen->swap_gb = SWAP_GB;\r
114     screen->swap_delta = 0;\r
115     screen->swap_dumy = SWAP_DUMMY;\r
116 \r
117     /* Operation function*/\r
118     screen->init = NULL;\r
119     screen->standby = NULL;\r
120     screen->dsp_lut = dsp_lut;\r
121 }\r