Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. #ifndef BUILD_LK
  2. #include <linux/string.h>
  3. #endif
  4. #include "lcm_drv.h"
  5.  
  6. #ifdef BUILD_LK
  7. #include <platform/mt_gpio.h>
  8. #include <platform/mt_pmic.h>
  9. #elif defined(BUILD_UBOOT)
  10. #include <asm/arch/mt_gpio.h>
  11. #else
  12. #include <mach/mt_gpio.h>
  13. #include <linux/xlog.h>
  14. #include <mach/mt_pm_ldo.h>
  15. #endif
  16.  
  17. // ---------------------------------------------------------------------------
  18. // Local Constants
  19. // ---------------------------------------------------------------------------
  20.  
  21. #define FRAME_WIDTH (1080)
  22. #define FRAME_HEIGHT (1920)
  23.  
  24. #define LCM_ID_NT35590 (0x90)
  25. // ---------------------------------------------------------------------------
  26. // Local Variables
  27. // ---------------------------------------------------------------------------
  28.  
  29. static LCM_UTIL_FUNCS lcm_util = {0};
  30.  
  31. #define SET_RESET_PIN(v) (lcm_util.set_reset_pin((v)))
  32.  
  33. #define UDELAY(n) (lcm_util.udelay(n))
  34. #define MDELAY(n) (lcm_util.mdelay(n))
  35.  
  36.  
  37. // ---------------------------------------------------------------------------
  38. // Local Functions
  39. // ---------------------------------------------------------------------------
  40.  
  41. #define dsi_set_cmdq_V2(cmd, count, ppara, force_update) lcm_util.dsi_set_cmdq_V2(cmd, count, ppara, force_update)
  42. #define dsi_set_cmdq(pdata, queue_size, force_update) lcm_util.dsi_set_cmdq(pdata, queue_size, force_update)
  43. #define wrtie_cmd(cmd) lcm_util.dsi_write_cmd(cmd)
  44. #define write_regs(addr, pdata, byte_nums) lcm_util.dsi_write_regs(addr, pdata, byte_nums)
  45. #define read_reg(cmd) lcm_util.dsi_dcs_read_lcm_reg(cmd)
  46. #define read_reg_v2(cmd, buffer, buffer_size) lcm_util.dsi_dcs_read_lcm_reg_v2(cmd, buffer, buffer_size)
  47.  
  48. #define dsi_lcm_set_gpio_out(pin, out) lcm_util.set_gpio_out(pin, out)
  49. #define dsi_lcm_set_gpio_mode(pin, mode) lcm_util.set_gpio_mode(pin, mode)
  50. #define dsi_lcm_set_gpio_dir(pin, dir) lcm_util.set_gpio_dir(pin, dir)
  51. #define dsi_lcm_set_gpio_pull_enable(pin, en) lcm_util.set_gpio_pull_enable(pin, en)
  52.  
  53. #define LCM_DSI_CMD_MODE 0
  54.  
  55.  
  56. void NT35596J_DCS_write_1A_1P(unsigned char cmd, unsigned char para)
  57. {
  58. unsigned int data_array[16];
  59. //unsigned char buffer;
  60. data_array[0] =(0x00023902);
  61. data_array[1] =(0x00000000| (para<<8)|(cmd));
  62. dsi_set_cmdq(data_array, 2, 1);
  63.  
  64. //MDELAY(1);
  65. }
  66.  
  67. #define NT35596J_DCS_write_1A_0P(cmd) data_array[0]=(0x00000500 | (cmd<<16)); \
  68. dsi_set_cmdq(data_array, 1, 1);
  69.  
  70. static void init_lcm_registers(void)
  71. {
  72. unsigned int data_array[16];
  73.  
  74. NT35596J_DCS_write_1A_0P(0x11);
  75. //Delayus(150000);
  76. MDELAY(150);
  77. //
  78. NT35596J_DCS_write_1A_1P(0xFF,0x00);
  79. //NT35596J_DCS_write_1A_1P(0x34,0x00);
  80. NT35596J_DCS_write_1A_1P(0x35,0x00);
  81. NT35596J_DCS_write_1A_0P(0x29);
  82. MDELAY(10);
  83.  
  84. }
  85.  
  86. // ---------------------------------------------------------------------------
  87. // LCM Driver Implementations
  88. // ---------------------------------------------------------------------------
  89.  
  90. static void lcm_set_util_funcs(const LCM_UTIL_FUNCS *util)
  91. {
  92. memcpy(&lcm_util, util, sizeof(LCM_UTIL_FUNCS));
  93. }
  94.  
  95.  
  96. static void lcm_get_params(LCM_PARAMS *params)
  97. {
  98.  
  99. memset(params, 0, sizeof(LCM_PARAMS));
  100.  
  101. params->type = LCM_TYPE_DSI;
  102.  
  103. params->width = FRAME_WIDTH;
  104. params->height = FRAME_HEIGHT;
  105.  
  106. // enable tearing-free
  107. params->dbi.te_mode = LCM_DBI_TE_MODE_VSYNC_ONLY;
  108. params->dbi.te_edge_polarity = LCM_POLARITY_RISING;
  109.  
  110. #if (LCM_DSI_CMD_MODE)
  111. params->dsi.mode = CMD_MODE;
  112. #else
  113. params->dsi.mode = BURST_VDO_MODE;
  114. #endif
  115.  
  116. // DSI
  117. /* Command mode setting */
  118. //1 Three lane or Four lane
  119. params->dsi.LANE_NUM = LCM_FOUR_LANE;
  120. //The following defined the fomat for data coming from LCD engine.
  121. params->dsi.data_format.color_order = LCM_COLOR_ORDER_RGB;
  122. params->dsi.data_format.trans_seq = LCM_DSI_TRANS_SEQ_MSB_FIRST;
  123. params->dsi.data_format.padding = LCM_DSI_PADDING_ON_LSB;
  124. params->dsi.data_format.format = LCM_DSI_FORMAT_RGB888;
  125.  
  126. // Highly depends on LCD driver capability.
  127. // Not support in MT6573
  128. params->dsi.packet_size=256;
  129.  
  130. // Video mode setting
  131. params->dsi.intermediat_buffer_num = 0;//because DSI/DPI HW design change, this parameters should be 0 when video mode in MT658X; or memory leakage
  132.  
  133. params->dsi.PS=LCM_PACKED_PS_24BIT_RGB888;
  134. params->dsi.word_count=720*3;
  135.  
  136.  
  137. params->dsi.vertical_sync_active = 1;
  138. params->dsi.vertical_backporch = 4;
  139. params->dsi.vertical_frontporch = 2;
  140. params->dsi.vertical_active_line = FRAME_HEIGHT;
  141.  
  142. params->dsi.horizontal_sync_active = 10;//10
  143. params->dsi.horizontal_backporch = 32;//30
  144. params->dsi.horizontal_frontporch = 32;//30
  145. params->dsi.horizontal_active_pixel = FRAME_WIDTH;
  146. //params->dsi.pll_select=1; //0: MIPI_PLL; 1: LVDS_PLL
  147. // Bit rate calculation
  148. //1 Every lane speed
  149. params->dsi.pll_div1=1; // div1=0,1,2,3;div1_real=1,2,4,4 ----0: 546Mbps 1:273Mbps
  150. params->dsi.pll_div2=0; // div2=0,1,2,3;div1_real=1,2,4,4
  151. params->dsi.fbk_div =10; //0x12 // fref=26MHz, fvco=fref*(fbk_div+1)*2/(div1_real*div2_real)
  152.  
  153. }
  154.  
  155. static void lcm_init(void)
  156. {
  157. init_lcm_registers();
  158. }
  159.  
  160. LCM_DRIVER nt35596_hitachi63_wanglong_hd_lcm_drv =
  161. {
  162. .name = "nt35596_hitachi63_wanglong_hd",
  163. .set_util_funcs = lcm_set_util_funcs,
  164. .get_params = lcm_get_params,
  165. .init = lcm_init,
  166. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement