Advertisement
Guest User

Untitled

a guest
Dec 15th, 2010
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 62.67 KB | None | 0 0
  1. diff --git a/arch/arm/mach-msm/include/mach/camera.h b/arch/arm/mach-msm/include/mach/camera.h
  2. index 79f014e..0eb1072 100644
  3. --- a/arch/arm/mach-msm/include/mach/camera.h
  4. +++ b/arch/arm/mach-msm/include/mach/camera.h
  5. @@ -372,4 +372,3 @@ u32 msm_io_r_mb(void __iomem *addr);
  6. void msm_io_dump(void __iomem *addr, int size);
  7. void msm_io_memcpy(void __iomem *dest_addr, void __iomem *src_addr, u32 len);
  8.  
  9. -#endif
  10.  
  11. diff --git a/drivers/video/msm/lcdc_panel_wvga_oled.c b/drivers/video/msm/lcdc_panel_wvga_oled.c
  12. index 48170ee..10ae926 100644
  13. --- a/drivers/video/msm/lcdc_panel_wvga_oled.c
  14. +++ b/drivers/video/msm/lcdc_panel_wvga_oled.c
  15. @@ -1,36 +1,4 @@
  16. -/*
  17. - * =====================================================================================
  18. - *
  19. - * Filename: lcdc_panel_wvga_oled.c
  20. - *
  21. - * Description: Samsung WVGA panel(480x800) driver
  22. - *
  23. - * Version: 1.0
  24. - * Created: 03/25/2010 02:05:46 PM
  25. - * Revision: none
  26. - * Compiler: gcc
  27. - *
  28. - * Author: Lu Ya
  29. - * Company: ZTE Corp.
  30. - *
  31. - * =====================================================================================
  32. - */
  33. -/* ========================================================================================
  34. -when who what, where, why comment tag
  35. --------- ---- ----------------------------- --------------------------
  36. -2010-11-02 luya modify bkl for 729VV ZTE_LCD_LUYA_20
  37. -2010-06-29 luya modify mdelay to msleep ZTE_LCD_LUYA_20100629_0
  38. -2010-06-11 lht project mode display panel info ZTE_LCD_LHT_20100611_00
  39. -2010-05-29 luya add delay when init finish ZTE_LCD_LUYA_20
  40. -2010-05-22 luya modify BKL reg setting ZTE_LCD_LUYA_20
  41. -2010-05-17 luya delete mdelay ZTE_LCD
  42. -2010-05-13 luya not init for the 1st time ZTE_LCD_LUYA_20
  43. -2010-05-07 luya modify 729 BKL reg ZTE_LCD
  44. -2010-04-28 luya modify delay of bkl adjust ZTE_LCD_LUYA_20
  45. -2010-04-14 luya modify for 729 bkl ZTE_LCD
  46. -2010-03-25 luya merge samsung oled driver ZTE_LCD_LUYA_20
  47. -
  48. -==========================================================================================*/
  49. +
  50.  
  51.  
  52. #include "msm_fb.h"
  53. @@ -38,42 +6,24 @@ when who what, where, why commen
  54. #include <linux/module.h>
  55. #include <linux/delay.h>
  56.  
  57. -#define GPIO_LCD_BL_SC_OUT 57
  58. +#define GPIO_LCD_BL_SC_OUT 97
  59. #define GPIO_LCD_BL_EN
  60.  
  61. -#define GPIO_SPI_CS 122
  62. -#define GPIO_SPI_SDO 123
  63. -#define GPIO_SPI_SCLK 124
  64. -#define GPIO_SPI_SDI 132
  65. -
  66. #define LCD_BL_LEVEL 12
  67. #define lcd_bl_max lcd_bl_level-1
  68. #define lcd_bl_min 0
  69.  
  70. -typedef enum
  71. -{
  72. - LCD_PANEL_NONE = 0,
  73. - LCD_PANEL_LEAD_WVGA,
  74. - LCD_PANEL_TRULY_WVGA,
  75. - LCD_PANEL_OLED_WVGA,
  76. -}LCD_PANEL_TYPE;
  77. -
  78. -static LCD_PANEL_TYPE g_lcd_panel_type = LCD_PANEL_NONE;
  79. -
  80. -static boolean is_firsttime = true; ///ZTE_LCD_LUYA_20091221_001
  81. -static boolean can_adjustbkl = false; ////ZTE_LCD_LUYA_20101102_01
  82. -static boolean isOdd = true;
  83. -extern u32 LcdPanleID; //ZTE_LCD_LHT_20100611_001
  84. +static boolean is_firsttime = true;
  85. +static boolean isOdd = true;
  86. +
  87. static int spi_cs;
  88. static int spi_sclk;
  89. static int spi_sdi;
  90. static int spi_sdo;
  91. -static int panel_reset;
  92. -static bool onewiremode = true;
  93. -///ZTE_LCD_LUYA_20100414_001 //ZTE_LCD_LUYA_20100507_001,,ZTE_LCD_LUYA_20100522_001
  94. -static struct msm_panel_common_pdata * lcdc_tft_pdata;
  95. +static int oled_reset;
  96. +
  97. static unsigned int array[12][42] = { {0x40,0x05,0x41,0x3f,0x42,0x39,0x43,0x23,0x44,0x22,0x45,0x22,0x
  98. - {0x40,0x05,0x41,0x3f,0x42,0x1f,0x43,0x22,0x44,0
  99. + {0x40,0x00,0x41,0x3f,0x42,0x10,0x43,0x2a,0x44,0
  100. {0x40,0x05,0x41,0x3f,0x42,0x25,0x43,0x20,0x44,0
  101. {0x40,0x05,0x41,0x3f,0x42,0x22,0x43,0x20,0x44,0
  102. {0x40,0x05,0x41,0x3f,0x42,0x22,0x43,0x1f,0x44,0
  103. @@ -85,623 +35,56 @@ static unsigned int array[12][42] = { {0x40,0x05,0x41,0x3f,0x42,0x39,0x43,0x2
  104. {0x40,0x05,0x41,0x3f,0x42,0x15,0x43,0x1e,0x44,0
  105. {0x40,0x05,0x41,0x3f,0x42,0x16,0x43,0x1d,0x44,0
  106.  
  107. -static void gpio_lcd_truly_emuspi_write_one_index(unsigned short addr);
  108. -static void gpio_lcd_truly_emuspi_write_one_data(unsigned short data);
  109. +static struct msm_panel_common_pdata * lcdc_oled_pdata;
  110. static void gpio_lcd_emuspi_write_one_index(unsigned short addr);
  111. static void gpio_lcd_emuspi_write_one_data(unsigned short data);
  112. static void gpio_lcd_emuspi_write_more(unsigned int num,unsigned int level);
  113. -static void gpio_lcd_lead_emuspi_write_one_index(unsigned int addr,unsigned short data);
  114. -static void lcdc_lead_init(void);
  115. -static void lcdc_truly_init(void);
  116. -static void lcd_panel_init(void);
  117. +
  118. +static void lcdc_oled_sleep(void);
  119. +static void lcdc_oled_init(void);
  120. static void lcdc_set_bl(struct msm_fb_data_type *mfd);
  121. -void lcdc_lead_sleep(void);
  122. -void lcdc_truly_sleep(void);
  123. +
  124. static void spi_init(void);
  125. static int lcdc_panel_on(struct platform_device *pdev);
  126. static int lcdc_panel_off(struct platform_device *pdev);
  127. -static void SPI_Start(void)
  128. -{
  129. - gpio_direction_output(spi_cs, 0);
  130. -}
  131. -static void SPI_Stop(void)
  132. -{
  133. - gpio_direction_output(spi_cs, 1);
  134. -}
  135. -
  136. -////ZTE_LCD_LUYA_20100716_001
  137. -static void select_1wire_mode(void)
  138. -{
  139. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  140. - udelay(120);
  141. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  142. - udelay(300);
  143. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  144. - udelay(600);
  145. -
  146. -}
  147. -
  148. -static void send_bkl_address(void)
  149. -{
  150. - unsigned int i,j;
  151. - i = 0x72;
  152. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  153. - udelay(10);
  154. - printk("[LY] send_bkl_address \n");
  155. - for(j = 0; j < 8; j++)
  156. - {
  157. - if(i & 0x80)
  158. - {
  159. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  160. - udelay(10);
  161. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  162. - udelay(180);
  163. - }
  164. - else
  165. - {
  166. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  167. - udelay(180);
  168. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  169. - udelay(10);
  170. - }
  171. - i <<= 1;
  172. - }
  173. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  174. - udelay(10);
  175. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  176. -
  177. -}
  178. -
  179. -static void send_bkl_data(int level)
  180. -{
  181. - unsigned int i,j;
  182. - i = level & 0x1F;
  183. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  184. - udelay(10);
  185. - printk("[LY] send_bkl_data \n");
  186. - for(j = 0; j < 8; j++)
  187. - {
  188. - if(i & 0x80)
  189. - {
  190. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  191. - udelay(10);
  192. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  193. - udelay(180);
  194. - }
  195. - else
  196. - {
  197. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  198. - udelay(180);
  199. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  200. - udelay(10);
  201. - }
  202. - i <<= 1;
  203. - }
  204. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  205. - udelay(10);
  206. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  207. -
  208. -}
  209. -
  210. -
  211. -static void lcdc_set_bl(struct msm_fb_data_type *mfd)
  212. -{
  213. - /*value range is 1--32*/
  214. - int current_lel = mfd->bl_level;
  215. - unsigned long flags;
  216. -
  217. -
  218. - printk("[ZYF] lcdc_set_bl level=%d, %d\n",
  219. - current_lel , mfd->panel_power_on);
  220. - if(!can_adjustbkl) ////ZTE_LCD_LUYA_20101102_01
  221. - {
  222. - can_adjustbkl = true;
  223. - return;
  224. - }
  225. -
  226. -
  227. - if(!mfd->panel_power_on)
  228. - {
  229. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0); ///ZTE_LCD_LUYA_20100201_001
  230. - return;
  231. - }
  232. -
  233. - if(current_lel < 1)
  234. - {
  235. - current_lel = 0;
  236. - }
  237. - if(current_lel > 32)
  238. - {
  239. - current_lel = 32;
  240. - }
  241. -
  242. - /*ZTE_BACKLIGHT_WLY_005,@2009-11-28, set backlight as 32 levels, end*/
  243. - local_irq_save(flags);
  244. - if(current_lel==0)
  245. - {
  246. - gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  247. - mdelay(3);
  248. - onewiremode = FALSE;
  249. -
  250. - }
  251. - else
  252. - {
  253. - if(!onewiremode) //select 1 wire mode
  254. - {
  255. - printk("[LY] before select_1wire_mode\n");
  256. - select_1wire_mode();
  257. - onewiremode = TRUE;
  258. - }
  259. - send_bkl_address();
  260. - send_bkl_data(current_lel-1);
  261. -
  262. - }
  263. - local_irq_restore(flags);
  264. -}
  265. -static void lcdc_set_bl_oled(struct msm_fb_data_type *mfd)
  266. -{
  267. -
  268. - int current_lel = mfd->bl_level;
  269. - unsigned int num = (sizeof(array[current_lel-1])/sizeof(array[current_lel-1][0]))/2;
  270. - pr_info( "[oled] lcdc_set_bl level=%d, %d\n", current_lel , mfd->panel_power_on);
  271. -
  272. - if(!mfd->panel_power_on) ////ZTE_LCD_LUYA_20100513_001
  273. - return;
  274.  
  275. - if(current_lel < 1)
  276. - {
  277. - current_lel = 1;
  278. - }
  279. - if(current_lel > LCD_BL_LEVEL)
  280. - {
  281. - current_lel = LCD_BL_LEVEL;
  282. - }
  283. - if(isOdd) ////ZTE_LCD_LUYA_20100414_001
  284. - {
  285. - gpio_lcd_emuspi_write_one_index(0x39);
  286. - gpio_lcd_emuspi_write_one_data(0x43);
  287. -// mdelay(20); ///ZTE_LCD_LUYA_20100428_002
  288. -
  289. - }
  290. - else
  291. - {
  292. - gpio_lcd_emuspi_write_one_index(0x39);
  293. - gpio_lcd_emuspi_write_one_data(0x34);
  294. -// mdelay(20);
  295. -
  296. - }
  297. - gpio_lcd_emuspi_write_more(num,current_lel);
  298. - if(isOdd) ////ZTE_LCD_LUYA_20100414_001 ZTE_LCD_LUYA_20100517_001
  299. - {
  300. - gpio_lcd_emuspi_write_one_index(0x39);
  301. - gpio_lcd_emuspi_write_one_data(0x34);
  302. - isOdd = false;
  303. - }
  304. - else
  305. - {
  306. - gpio_lcd_emuspi_write_one_index(0x39);
  307. - gpio_lcd_emuspi_write_one_data(0x43);
  308. - isOdd = true;
  309. - }
  310. -}
  311. static int lcdc_panel_on(struct platform_device *pdev)
  312. {
  313.  
  314. spi_init();
  315. -///ZTE_LCD_LUYA_20091221_001,start ZTE_LCD_LUYA_20100513_001
  316. if(!is_firsttime)
  317. {
  318. - lcd_panel_init();
  319. + lcdc_oled_init();
  320.  
  321. }
  322. else
  323. {
  324. is_firsttime = false;
  325. }
  326. -///ZTE_LCD_LUYA_20091221_001,end
  327. return 0;
  328. }
  329.  
  330. -static void gpio_lcd_lead_emuspi_write_one_index(unsigned int addr,unsigned short data)
  331. -{
  332. - unsigned int i;
  333. - int j;
  334. -
  335. - i=0x20;
  336. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  337. - gpio_direction_output(GPIO_SPI_CS, 0);
  338. - for (j = 0; j < 8; j++)
  339. - {
  340. - if (i & 0x80)
  341. - gpio_direction_output(GPIO_SPI_SDO, 1);
  342. - else
  343. - gpio_direction_output(GPIO_SPI_SDO, 0);
  344. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  345. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  346. - i <<= 1;
  347. - }
  348. - i = addr ;
  349. - for (j = 0; j < 8; j++) {
  350. -
  351. - if (i & 0x8000)
  352. - gpio_direction_output(GPIO_SPI_SDO, 1);
  353. - else
  354. - gpio_direction_output(GPIO_SPI_SDO, 0);
  355. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  356. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  357. - i <<= 1;
  358. - }
  359. - gpio_direction_output(GPIO_SPI_CS, 1);
  360. - gpio_direction_output(GPIO_SPI_CS, 0);
  361. -
  362. - i=0x00;
  363. - for (j = 0; j < 8; j++)
  364. - {
  365. -
  366. - if (i & 0x80)
  367. - gpio_direction_output(GPIO_SPI_SDO, 1);
  368. - else
  369. - gpio_direction_output(GPIO_SPI_SDO, 0);
  370. -
  371. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  372. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  373. - //gpio_direction_output(GPIO_SPI_SCLK, 0);
  374. - /*udelay(4);*/
  375. - i <<= 1;
  376. - }
  377. - i = addr ;
  378. - for (j = 0; j < 8; j++) {
  379. -
  380. - if (i & 0x80)
  381. - gpio_direction_output(GPIO_SPI_SDO, 1);
  382. - else
  383. - gpio_direction_output(GPIO_SPI_SDO, 0);
  384. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  385. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  386. - i <<= 1;
  387. - }
  388. -
  389. - gpio_direction_output(GPIO_SPI_CS, 1);
  390. - gpio_direction_output(GPIO_SPI_CS, 0);
  391. - i=0x40;
  392. - for (j = 0; j < 8; j++)
  393. - {
  394. -
  395. - if (i & 0x80)
  396. - gpio_direction_output(GPIO_SPI_SDO, 1);
  397. - else
  398. - gpio_direction_output(GPIO_SPI_SDO, 0);
  399. -
  400. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  401. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  402. - i <<= 1;
  403. - }
  404. - i = data ;
  405. - for (j = 0; j < 8; j++) {
  406. -
  407. - if (i & 0x80)
  408. - gpio_direction_output(GPIO_SPI_SDO, 1);
  409. - else
  410. - gpio_direction_output(GPIO_SPI_SDO, 0);
  411. -
  412. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  413. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  414. - i <<= 1;
  415. - }
  416. - gpio_direction_output(GPIO_SPI_CS, 1);
  417. -}
  418. -static void gpio_lcd_lead_emuspi_write_cmd(unsigned int addr,unsigned short data)
  419. -{
  420. - unsigned int i;
  421. - int j;
  422. -
  423. - i=0x20;
  424. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  425. - gpio_direction_output(GPIO_SPI_CS, 0);
  426. - for (j = 0; j < 8; j++)
  427. - {
  428. - if (i & 0x80)
  429. - gpio_direction_output(GPIO_SPI_SDO, 1);
  430. - else
  431. - gpio_direction_output(GPIO_SPI_SDO, 0);
  432. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  433. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  434. - i <<= 1;
  435. - }
  436. - i = addr ;
  437. - for (j = 0; j < 8; j++) {
  438. -
  439. - if (i & 0x8000)
  440. - gpio_direction_output(GPIO_SPI_SDO, 1);
  441. - else
  442. - gpio_direction_output(GPIO_SPI_SDO, 0);
  443. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  444. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  445. - i <<= 1;
  446. - }
  447. - gpio_direction_output(GPIO_SPI_CS, 1);
  448. - gpio_direction_output(GPIO_SPI_CS, 0);
  449. -
  450. - i=0x00;
  451. - for (j = 0; j < 8; j++)
  452. - {
  453. -
  454. - if (i & 0x80)
  455. - gpio_direction_output(GPIO_SPI_SDO, 1);
  456. - else
  457. - gpio_direction_output(GPIO_SPI_SDO, 0);
  458. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  459. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  460. - i <<= 1;
  461. - }
  462. - i = addr ;
  463. - for (j = 0; j < 8; j++) {
  464. -
  465. - if (i & 0x80)
  466. - gpio_direction_output(GPIO_SPI_SDO, 1);
  467. - else
  468. - gpio_direction_output(GPIO_SPI_SDO, 0);
  469. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  470. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  471. - i <<= 1;
  472. - }
  473. - gpio_direction_output(GPIO_SPI_CS, 1);
  474. -
  475. -}
  476. -static void gpio_lcd_lead_emuspi_read_one_index(unsigned int addr,unsigned int *data)
  477. -{
  478. - unsigned int i;
  479. - int j;
  480. - unsigned int dbit,bits1;
  481. - i=0x20;
  482. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  483. - gpio_direction_output(GPIO_SPI_CS, 0);
  484. - for (j = 0; j < 8; j++)
  485. - {
  486. -
  487. - if (i & 0x80)
  488. - gpio_direction_output(GPIO_SPI_SDO, 1);
  489. - else
  490. - gpio_direction_output(GPIO_SPI_SDO, 0);
  491. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  492. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  493. - i <<= 1;
  494. - }
  495. - i = addr ;
  496. - for (j = 0; j < 8; j++) {
  497. -
  498. - if (i & 0x8000)
  499. - gpio_direction_output(GPIO_SPI_SDO, 1);
  500. - else
  501. - gpio_direction_output(GPIO_SPI_SDO, 0);
  502. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  503. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  504. - i <<= 1;
  505. - }
  506. - gpio_direction_output(GPIO_SPI_CS, 1);
  507. - mdelay(1);
  508. - gpio_direction_output(GPIO_SPI_CS, 0);
  509. - i=0x00;
  510. - for (j = 0; j < 8; j++)
  511. - {
  512. -
  513. - if (i & 0x80)
  514. - gpio_direction_output(GPIO_SPI_SDO, 1);
  515. - else
  516. - gpio_direction_output(GPIO_SPI_SDO, 0);
  517. -
  518. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  519. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  520. - i <<= 1;
  521. - }
  522. - i = addr ;
  523. - for (j = 0; j < 8; j++) {
  524. -
  525. - if (i & 0x80)
  526. - gpio_direction_output(GPIO_SPI_SDO, 1);
  527. - else
  528. - gpio_direction_output(GPIO_SPI_SDO, 0);
  529. -
  530. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  531. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  532. - i <<= 1;
  533. - }
  534. -
  535. - gpio_direction_output(GPIO_SPI_CS, 1);
  536. - mdelay(1);
  537. - gpio_direction_output(GPIO_SPI_CS, 0);
  538. -
  539. - i=0xc0;
  540. - for (j = 0; j < 8; j++)
  541. - {
  542. -
  543. - if (i & 0x80)
  544. - gpio_direction_output(GPIO_SPI_SDO, 1);
  545. - else
  546. - gpio_direction_output(GPIO_SPI_SDO, 0);
  547. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  548. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  549. - i <<= 1;
  550. - }
  551. - bits1=0;
  552. - for (j = 0; j < 8; j++) {
  553. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  554. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  555. - dbit=gpio_get_value(GPIO_SPI_SDI);
  556. - bits1 = 2*bits1+dbit;
  557. - }
  558. - *data = bits1;
  559. - gpio_direction_output(GPIO_SPI_CS, 1);
  560. -}
  561. -static void gpio_lcd_truly_emuspi_write_one_index(unsigned short addr)
  562. -{
  563. - unsigned int i;
  564. - int j;
  565. - i = addr | 0x7000;
  566. - for (j = 0; j < 9; j++) {
  567. -
  568. - if (i & 0x0100)
  569. - gpio_direction_output(spi_sdo, 1);
  570. - else
  571. - gpio_direction_output(spi_sdo, 0);
  572. -
  573. - gpio_direction_output(spi_sclk, 0);
  574. - /*udelay(4);*/
  575. - gpio_direction_output(spi_sclk, 1);
  576. - /*udelay(4);*/
  577. - i <<= 1;
  578. - }
  579. -
  580. -}
  581. -
  582. -static void gpio_lcd_truly_emuspi_write_one_data(unsigned short data)
  583. +static void lcdc_oled_sleep(void)
  584. {
  585. - unsigned int i;
  586. - int j;
  587. -
  588. - i = data | 0x7100;
  589. -
  590. - for (j = 0; j < 9; j++) {
  591. -
  592. - if (i & 0x0100)
  593. - gpio_direction_output(spi_sdo, 1);
  594. - else
  595. - gpio_direction_output(spi_sdo, 0);
  596. -
  597. - gpio_direction_output(spi_sclk, 0);
  598. - /*udelay(4);*/
  599. - gpio_direction_output(spi_sclk, 1);
  600. - /*udelay(4);*/
  601. - i <<= 1;
  602. - }
  603. + gpio_lcd_emuspi_write_one_index(0x14);
  604. + gpio_lcd_emuspi_write_one_data(0x00);
  605.  
  606. -}
  607. -static void gpio_lcd_truly_emuspi_read_one_para(unsigned short addr, unsigned int *data1)
  608. -{
  609. + gpio_lcd_emuspi_write_one_index(0x1D);
  610. + gpio_lcd_emuspi_write_one_data(0xA1);
  611.  
  612. - int j,i;
  613. - unsigned int dbit,bits1;
  614. - i = addr | 0x7000;
  615. -
  616. - for (j = 0; j < 9; j++) {
  617. -
  618. - if (i & 0x0100)
  619. - gpio_direction_output(GPIO_SPI_SDO, 1);
  620. - else
  621. - gpio_direction_output(GPIO_SPI_SDO, 0);
  622. -
  623. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  624. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  625. - i <<= 1;
  626. - }
  627. -
  628. - //ret = gpio_config(GPIO_SPI_SDI,0);
  629. -
  630. - bits1=0;
  631. - for (j = 0; j < 16; j++) {
  632. -
  633. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  634. - dbit=gpio_get_value(GPIO_SPI_SDI);
  635. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  636. - bits1 = 2*bits1+dbit;
  637. -
  638. - }
  639. - *data1 = bits1;
  640. + mdelay(20);
  641.  
  642. }
  643. -static void gpio_lcd_emuspi_write_one_index(unsigned short addr)
  644. -{
  645. - unsigned int i;
  646. - int j;
  647.  
  648. - i = addr | 0x7000;
  649. - gpio_direction_output(spi_cs, 0);
  650. - /*udelay(4);*/
  651. -
  652. - for (j = 0; j < 16; j++) {
  653. -
  654. - if (i & 0x8000)
  655. - gpio_direction_output(spi_sdo, 1);
  656. - else
  657. - gpio_direction_output(spi_sdo, 0);
  658. -
  659. - gpio_direction_output(spi_sclk, 0);
  660. - /*udelay(4);*/
  661. - gpio_direction_output(spi_sclk, 1);
  662. - /*udelay(4);*/
  663. - i <<= 1;
  664. - }
  665. -
  666. - gpio_direction_output(spi_cs, 1);
  667. -}
  668. -static void gpio_lcd_emuspi_write_one_data(unsigned short data)
  669. -{
  670. - unsigned int i;
  671. - int j;
  672. -
  673. - i = data | 0x7200;
  674. - gpio_direction_output(spi_cs, 0);
  675. - /*udelay(4);*/
  676. -
  677. - for (j = 0; j < 16; j++) {
  678. -
  679. - if (i & 0x8000)
  680. - gpio_direction_output(spi_sdo, 1);
  681. - else
  682. - gpio_direction_output(spi_sdo, 0);
  683. -
  684. - gpio_direction_output(spi_sclk, 0);
  685. - /*udelay(4);*/
  686. - gpio_direction_output(spi_sclk, 1);
  687. - /*udelay(4);*/
  688. - i <<= 1;
  689. - }
  690. -
  691. - gpio_direction_output(spi_cs, 1);
  692. -}
  693. -static void gpio_lcd_emuspi_read_one_data(unsigned int *data)
  694. +static void lcdc_oled_init(void)
  695. {
  696. - unsigned int i;
  697. - int j;
  698. - unsigned int dbit,bits1;
  699. - i = 0x7100;
  700. - gpio_direction_output(spi_cs, 0);
  701. - /*udelay(4);*/
  702. -
  703. - for (j = 0; j < 8; j++) {
  704. -
  705. - if (i & 0x8000)
  706. - gpio_direction_output(spi_sdo, 1);
  707. - else
  708. - gpio_direction_output(spi_sdo, 0);
  709. + gpio_direction_output(oled_reset, 1);
  710. + mdelay(10);
  711. + gpio_direction_output(oled_reset, 0);
  712. + mdelay(20);
  713. + gpio_direction_output(oled_reset, 1);
  714. + mdelay(10);
  715.  
  716. - gpio_direction_output(spi_sclk, 0);
  717. - /*udelay(4);*/
  718. - gpio_direction_output(spi_sclk, 1);
  719. - /*udelay(4);*/
  720. - i <<= 1;
  721. - }
  722. - bits1=0;
  723. - for (j = 0; j < 8; j++) {
  724. - gpio_direction_output(GPIO_SPI_SCLK, 0);
  725. - gpio_direction_output(GPIO_SPI_SCLK, 1);
  726. - dbit=gpio_get_value(GPIO_SPI_SDI);
  727. - bits1 = 2*bits1+dbit;
  728. - }
  729. - *data = bits1;
  730. - gpio_direction_output(spi_cs, 1);
  731. -}
  732. -static void gpio_lcd_emuspi_write_more(unsigned int num,unsigned int level)
  733. -{
  734. - unsigned int i;
  735. - for(i = 0; i < num;i++)
  736. - {
  737. - gpio_lcd_emuspi_write_one_index(array[level-1][2*i]);
  738. - gpio_lcd_emuspi_write_one_data(array[level-1][2*i+1]);
  739. - }
  740. -}
  741. -static void lcdc_oled_init(void)
  742. -{
  743. gpio_lcd_emuspi_write_one_index(0x31);
  744. gpio_lcd_emuspi_write_one_data(0x08);
  745.  
  746. @@ -813,720 +196,238 @@ static void lcdc_oled_init(void)
  747.  
  748. gpio_lcd_emuspi_write_one_index(0x23);
  749. gpio_lcd_emuspi_write_one_data(0x00);
  750. -// mdelay(250);
  751.  
  752. gpio_lcd_emuspi_write_one_index(0x26);
  753. gpio_lcd_emuspi_write_one_data(0xa0);
  754.  
  755. gpio_lcd_emuspi_write_one_index(0x1d);
  756. gpio_lcd_emuspi_write_one_data(0xa0);
  757. - msleep(200); ////ZTE_LCD_LUYA_20100629_001
  758. + mdelay(200);
  759.  
  760. gpio_lcd_emuspi_write_one_index(0x14);
  761. gpio_lcd_emuspi_write_one_data(0x03);
  762.  
  763. - printk("lcd module oled init finish phase1\n!");
  764. - msleep(10); ///ZTE_LCD_LUYA_20100529_001
  765. - printk("lcd module oled init finish phase2\n!");
  766. +
  767. + printk("lcd module oled init exit\n!");
  768.  
  769. }
  770. -static void lcdc_lead_init(void)
  771. +
  772. +
  773. +static void lcdc_set_bl(struct msm_fb_data_type *mfd)
  774. {
  775. -
  776. - gpio_lcd_lead_emuspi_write_one_index(0x2e80,0x01);//0x01:Don't reload MTP 0x00:reload MTP
  777. - msleep(20);
  778. - gpio_lcd_lead_emuspi_write_one_index(0x0680,0x21);
  779. - gpio_lcd_lead_emuspi_write_one_index(0xD380,0x04);
  780. - gpio_lcd_lead_emuspi_write_one_index(0xD480,0x5B);
  781. - gpio_lcd_lead_emuspi_write_one_index(0xD580,0x07);
  782. - gpio_lcd_lead_emuspi_write_one_index(0xD680,0x52);
  783. - gpio_lcd_lead_emuspi_write_one_index(0xD080,0x17);
  784. - gpio_lcd_lead_emuspi_write_one_index(0xD180,0x0D);
  785. - gpio_lcd_lead_emuspi_write_one_index(0xD280,0x04);
  786. - gpio_lcd_lead_emuspi_write_one_index(0xDC80,0x04);
  787. - gpio_lcd_lead_emuspi_write_one_index(0xD780,0x01);
  788. - gpio_lcd_lead_emuspi_write_one_index(0x2280,0x0a);
  789. - gpio_lcd_lead_emuspi_write_one_index(0x2480,0x52);
  790. - gpio_lcd_lead_emuspi_write_one_index(0x2580,0x25);
  791. - gpio_lcd_lead_emuspi_write_one_index(0x2780,0x75);
  792. - gpio_lcd_lead_emuspi_write_one_index(0x3A00,0x66);
  793. - gpio_lcd_lead_emuspi_write_one_index(0x3b00,0x28);
  794. - gpio_lcd_lead_emuspi_write_one_index(0x0180,0x02);
  795. - gpio_lcd_lead_emuspi_write_one_index(0x4080,0x00);
  796. - gpio_lcd_lead_emuspi_write_one_index(0x4180,0x05);
  797. - gpio_lcd_lead_emuspi_write_one_index(0x4280,0x15);
  798. - gpio_lcd_lead_emuspi_write_one_index(0x4380,0x27);
  799. - gpio_lcd_lead_emuspi_write_one_index(0x4480,0x19);
  800. - gpio_lcd_lead_emuspi_write_one_index(0x4580,0x2D);
  801. - gpio_lcd_lead_emuspi_write_one_index(0x4680,0x5E);
  802. - gpio_lcd_lead_emuspi_write_one_index(0x4780,0x43);
  803. - gpio_lcd_lead_emuspi_write_one_index(0x4880,0x1F);
  804. - gpio_lcd_lead_emuspi_write_one_index(0x4980,0x26);
  805. - gpio_lcd_lead_emuspi_write_one_index(0x4A80,0x9C);
  806. - gpio_lcd_lead_emuspi_write_one_index(0x4B80,0x1D);
  807. - gpio_lcd_lead_emuspi_write_one_index(0x4C80,0x41);
  808. - gpio_lcd_lead_emuspi_write_one_index(0x4D80,0x5A);
  809. - gpio_lcd_lead_emuspi_write_one_index(0x4E80,0x8B);
  810. - gpio_lcd_lead_emuspi_write_one_index(0x4F80,0x95);
  811. - gpio_lcd_lead_emuspi_write_one_index(0x5080,0x64);
  812. - gpio_lcd_lead_emuspi_write_one_index(0x5180,0x7F);
  813. - gpio_lcd_lead_emuspi_write_one_index(0x5880,0x00);
  814. - gpio_lcd_lead_emuspi_write_one_index(0x5980,0x1A);
  815. - gpio_lcd_lead_emuspi_write_one_index(0x5A80,0x68);
  816. - gpio_lcd_lead_emuspi_write_one_index(0x5B80,0x79);
  817. - gpio_lcd_lead_emuspi_write_one_index(0x5C80,0x2A);
  818. - gpio_lcd_lead_emuspi_write_one_index(0x5D80,0x43);
  819. - gpio_lcd_lead_emuspi_write_one_index(0x5E80,0x67);
  820. - gpio_lcd_lead_emuspi_write_one_index(0x5F80,0x65);
  821. - gpio_lcd_lead_emuspi_write_one_index(0x6080,0x17);
  822. - gpio_lcd_lead_emuspi_write_one_index(0x6180,0x1E);
  823. - gpio_lcd_lead_emuspi_write_one_index(0x6280,0xBF);
  824. - gpio_lcd_lead_emuspi_write_one_index(0x6380,0x20);
  825. - gpio_lcd_lead_emuspi_write_one_index(0x6480,0x51);
  826. - gpio_lcd_lead_emuspi_write_one_index(0x6580,0x66);
  827. - gpio_lcd_lead_emuspi_write_one_index(0x6680,0xD7);
  828. - gpio_lcd_lead_emuspi_write_one_index(0x6780,0xE9);
  829. - gpio_lcd_lead_emuspi_write_one_index(0x6880,0x79);
  830. - gpio_lcd_lead_emuspi_write_one_index(0x6980,0x7F);
  831. - gpio_lcd_lead_emuspi_write_one_index(0x7080,0x00);
  832. - gpio_lcd_lead_emuspi_write_one_index(0x7180,0x07);
  833. - gpio_lcd_lead_emuspi_write_one_index(0x7280,0x1A);
  834. - gpio_lcd_lead_emuspi_write_one_index(0x7380,0x30);
  835. - gpio_lcd_lead_emuspi_write_one_index(0x7480,0x1C);
  836. - gpio_lcd_lead_emuspi_write_one_index(0x7580,0x30);
  837. - gpio_lcd_lead_emuspi_write_one_index(0x7680,0x61);
  838. - gpio_lcd_lead_emuspi_write_one_index(0x7780,0x4F);
  839. - gpio_lcd_lead_emuspi_write_one_index(0x7880,0x20);
  840. - gpio_lcd_lead_emuspi_write_one_index(0x7980,0x27);
  841. - gpio_lcd_lead_emuspi_write_one_index(0x7A80,0xA5);
  842. - gpio_lcd_lead_emuspi_write_one_index(0x7B80,0x1E);
  843. - gpio_lcd_lead_emuspi_write_one_index(0x7C80,0x48);
  844. - gpio_lcd_lead_emuspi_write_one_index(0x7D80,0x5E);
  845. - gpio_lcd_lead_emuspi_write_one_index(0x7E80,0x87);
  846. - gpio_lcd_lead_emuspi_write_one_index(0x7F80,0xAD);
  847. - gpio_lcd_lead_emuspi_write_one_index(0x8080,0x6A);
  848. - gpio_lcd_lead_emuspi_write_one_index(0x8180,0x7F);
  849. - gpio_lcd_lead_emuspi_write_one_index(0x8880,0x00);
  850. - gpio_lcd_lead_emuspi_write_one_index(0x8980,0x15);
  851. - gpio_lcd_lead_emuspi_write_one_index(0x8A80,0x53);
  852. - gpio_lcd_lead_emuspi_write_one_index(0x8B80,0x76);
  853. - gpio_lcd_lead_emuspi_write_one_index(0x8C80,0x2D);
  854. - gpio_lcd_lead_emuspi_write_one_index(0x8D80,0x43);
  855. - gpio_lcd_lead_emuspi_write_one_index(0x8E80,0x66);
  856. - gpio_lcd_lead_emuspi_write_one_index(0x8F80,0x5C);
  857. - gpio_lcd_lead_emuspi_write_one_index(0x9080,0x18);
  858. - gpio_lcd_lead_emuspi_write_one_index(0x9180,0x1F);
  859. - gpio_lcd_lead_emuspi_write_one_index(0x9280,0xB2);
  860. - gpio_lcd_lead_emuspi_write_one_index(0x9380,0x1E);
  861. - gpio_lcd_lead_emuspi_write_one_index(0x9480,0x4E);
  862. - gpio_lcd_lead_emuspi_write_one_index(0x9580,0x64);
  863. - gpio_lcd_lead_emuspi_write_one_index(0x9680,0xCE);
  864. - gpio_lcd_lead_emuspi_write_one_index(0x9780,0xE3);
  865. - gpio_lcd_lead_emuspi_write_one_index(0x9880,0x78);
  866. - gpio_lcd_lead_emuspi_write_one_index(0x9980,0x7F);
  867. - gpio_lcd_lead_emuspi_write_one_index(0xA080,0x00);
  868. - gpio_lcd_lead_emuspi_write_one_index(0xA180,0x09);
  869. - gpio_lcd_lead_emuspi_write_one_index(0xA280,0x25);
  870. - gpio_lcd_lead_emuspi_write_one_index(0xA380,0x41);
  871. - gpio_lcd_lead_emuspi_write_one_index(0xA480,0x20);
  872. - gpio_lcd_lead_emuspi_write_one_index(0xA580,0x35);
  873. - gpio_lcd_lead_emuspi_write_one_index(0xA680,0x63);
  874. - gpio_lcd_lead_emuspi_write_one_index(0xA780,0x5D);
  875. - gpio_lcd_lead_emuspi_write_one_index(0xA880,0x1F);
  876. - gpio_lcd_lead_emuspi_write_one_index(0xA980,0x26);
  877. - gpio_lcd_lead_emuspi_write_one_index(0xAA80,0xAE);
  878. - gpio_lcd_lead_emuspi_write_one_index(0xAB80,0x19);
  879. - gpio_lcd_lead_emuspi_write_one_index(0xAC80,0x3D);
  880. - gpio_lcd_lead_emuspi_write_one_index(0xAD80,0x4B);
  881. - gpio_lcd_lead_emuspi_write_one_index(0xAE80,0xA7);
  882. - gpio_lcd_lead_emuspi_write_one_index(0xAF80,0xF8);
  883. - gpio_lcd_lead_emuspi_write_one_index(0xB080,0x7D);
  884. - gpio_lcd_lead_emuspi_write_one_index(0xB180,0x7F);
  885. - gpio_lcd_lead_emuspi_write_one_index(0xB880,0x00);
  886. - gpio_lcd_lead_emuspi_write_one_index(0xB980,0x02);
  887. - gpio_lcd_lead_emuspi_write_one_index(0xBA80,0x08);
  888. - gpio_lcd_lead_emuspi_write_one_index(0xBB80,0x59);
  889. - gpio_lcd_lead_emuspi_write_one_index(0xBC80,0x34);
  890. - gpio_lcd_lead_emuspi_write_one_index(0xBD80,0x4A);
  891. - gpio_lcd_lead_emuspi_write_one_index(0xBE80,0x6B);
  892. - gpio_lcd_lead_emuspi_write_one_index(0xBF80,0x53);
  893. - gpio_lcd_lead_emuspi_write_one_index(0xC080,0x16);
  894. - gpio_lcd_lead_emuspi_write_one_index(0xC180,0x1E);
  895. - gpio_lcd_lead_emuspi_write_one_index(0xC280,0xA4);
  896. - gpio_lcd_lead_emuspi_write_one_index(0xC380,0x1B);
  897. - gpio_lcd_lead_emuspi_write_one_index(0xC480,0x4B);
  898. - gpio_lcd_lead_emuspi_write_one_index(0xC580,0x62);
  899. - gpio_lcd_lead_emuspi_write_one_index(0xC680,0xBD);
  900. - gpio_lcd_lead_emuspi_write_one_index(0xC780,0xD7);
  901. - gpio_lcd_lead_emuspi_write_one_index(0xC880,0x75);
  902. - gpio_lcd_lead_emuspi_write_one_index(0xC980,0x7F);
  903. - gpio_lcd_lead_emuspi_write_one_index(0x3500,0x00);
  904. - //gpio_lcd_lead_emuspi_write_one_index(0x5300,0x2C);
  905. - gpio_lcd_lead_emuspi_write_one_index(0x3600,0x00);
  906. - gpio_lcd_lead_emuspi_write_cmd(0x1100,0x00);
  907. - msleep(120);
  908. - gpio_lcd_lead_emuspi_write_cmd(0x2900,0x00);
  909. +
  910. + int current_lel = mfd->bl_level;
  911. + unsigned int num = (sizeof(array[current_lel-1])/sizeof(array[current_lel-1][0]))/2;
  912. + pr_info( "[ZYF] lcdc_set_bl level=%d, %d\n", current_lel , mfd->panel_power_on);
  913.  
  914. - msleep(10);
  915. - printk("lcd module TFT LEAD init finish\n!");
  916. + if(!mfd->panel_power_on)
  917. + return;
  918. +
  919. + if(current_lel < 1)
  920. + {
  921. + current_lel = 1;
  922. + }
  923. + if(current_lel > LCD_BL_LEVEL)
  924. + {
  925. + current_lel = LCD_BL_LEVEL;
  926. + }
  927. + if(isOdd)
  928. + {
  929. + gpio_lcd_emuspi_write_one_index(0x39);
  930. + gpio_lcd_emuspi_write_one_data(0x43);
  931. +
  932. + }
  933. + else
  934. + {
  935. + gpio_lcd_emuspi_write_one_index(0x39);
  936. + gpio_lcd_emuspi_write_one_data(0x34);
  937. +
  938. + }
  939. + gpio_lcd_emuspi_write_more(num,current_lel);
  940. + if(isOdd)
  941. + {
  942. + gpio_lcd_emuspi_write_one_index(0x39);
  943. + gpio_lcd_emuspi_write_one_data(0x34);
  944. + isOdd = false;
  945. + }
  946. + else
  947. + {
  948. + gpio_lcd_emuspi_write_one_index(0x39);
  949. + gpio_lcd_emuspi_write_one_data(0x43);
  950. + isOdd = true;
  951. + }
  952.  
  953.  
  954. -}
  955. -void lcdc_truly_init(void)
  956. -{
  957. -#if 1
  958. - SPI_Start();
  959. - gpio_lcd_truly_emuspi_write_one_index(0xB9); // SET password
  960. - gpio_lcd_truly_emuspi_write_one_data(0xFF);
  961. - gpio_lcd_truly_emuspi_write_one_data(0x83);
  962. - gpio_lcd_truly_emuspi_write_one_data(0x69);
  963. - SPI_Stop();
  964. - SPI_Start();
  965. - gpio_lcd_truly_emuspi_write_one_index(0x36);
  966. - gpio_lcd_truly_emuspi_write_one_data(0x00); // GBR MODE
  967. - SPI_Stop();
  968. - SPI_Start();
  969. - gpio_lcd_truly_emuspi_write_one_index(0xB2); // SET Display 480x800
  970. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  971. - gpio_lcd_truly_emuspi_write_one_data(0x23);
  972. - gpio_lcd_truly_emuspi_write_one_data(0x03);
  973. - gpio_lcd_truly_emuspi_write_one_data(0x03);
  974. - gpio_lcd_truly_emuspi_write_one_data(0x70);
  975. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  976. - gpio_lcd_truly_emuspi_write_one_data(0xFF);
  977. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  978. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  979. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  980. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  981. - gpio_lcd_truly_emuspi_write_one_data(0x03);
  982. - gpio_lcd_truly_emuspi_write_one_data(0x03);
  983. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  984. - gpio_lcd_truly_emuspi_write_one_data(0x01);
  985. - SPI_Stop();
  986. - SPI_Start();
  987. - gpio_lcd_truly_emuspi_write_one_index(0xB4); // SET Display waveform cycles
  988. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  989. - gpio_lcd_truly_emuspi_write_one_data(0x18);
  990. - gpio_lcd_truly_emuspi_write_one_data(0x80);
  991. - gpio_lcd_truly_emuspi_write_one_data(0x06);
  992. - gpio_lcd_truly_emuspi_write_one_data(0x02);
  993. - SPI_Stop();
  994. - SPI_Start();
  995. - gpio_lcd_truly_emuspi_write_one_index(0xB6); // SET VCOM
  996. - gpio_lcd_truly_emuspi_write_one_data(0x42);
  997. - gpio_lcd_truly_emuspi_write_one_data(0x42);
  998. - SPI_Stop();
  999. - SPI_Start();
  1000. - gpio_lcd_truly_emuspi_write_one_index(0xD5); // SET GIP
  1001. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1002. - gpio_lcd_truly_emuspi_write_one_data(0x04);
  1003. - gpio_lcd_truly_emuspi_write_one_data(0x03);
  1004. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1005. - gpio_lcd_truly_emuspi_write_one_data(0x01);
  1006. - gpio_lcd_truly_emuspi_write_one_data(0x05);
  1007. - gpio_lcd_truly_emuspi_write_one_data(0x28);
  1008. - gpio_lcd_truly_emuspi_write_one_data(0x70);
  1009. - gpio_lcd_truly_emuspi_write_one_data(0x01);
  1010. - gpio_lcd_truly_emuspi_write_one_data(0x03);
  1011. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1012. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1013. - gpio_lcd_truly_emuspi_write_one_data(0x40);
  1014. - gpio_lcd_truly_emuspi_write_one_data(0x06);
  1015. - gpio_lcd_truly_emuspi_write_one_data(0x51);
  1016. - gpio_lcd_truly_emuspi_write_one_data(0x07);
  1017. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1018. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1019. - gpio_lcd_truly_emuspi_write_one_data(0x41);
  1020. - gpio_lcd_truly_emuspi_write_one_data(0x06);
  1021. - gpio_lcd_truly_emuspi_write_one_data(0x50);
  1022. - gpio_lcd_truly_emuspi_write_one_data(0x07);
  1023. - gpio_lcd_truly_emuspi_write_one_data(0x07);
  1024. - gpio_lcd_truly_emuspi_write_one_data(0x0F);
  1025. - gpio_lcd_truly_emuspi_write_one_data(0x04);
  1026. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1027. - SPI_Stop();
  1028. - SPI_Start();
  1029. - gpio_lcd_truly_emuspi_write_one_index(0xB1); //Set Power
  1030. - gpio_lcd_truly_emuspi_write_one_data(0x85);
  1031. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1032. - gpio_lcd_truly_emuspi_write_one_data(0x34);
  1033. - gpio_lcd_truly_emuspi_write_one_data(0x07);
  1034. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1035. - gpio_lcd_truly_emuspi_write_one_data(0x0F);
  1036. - gpio_lcd_truly_emuspi_write_one_data(0x0F);
  1037. - gpio_lcd_truly_emuspi_write_one_data(0x2A);
  1038. - gpio_lcd_truly_emuspi_write_one_data(0x32);
  1039. - gpio_lcd_truly_emuspi_write_one_data(0x3F);
  1040. - gpio_lcd_truly_emuspi_write_one_data(0x3F);
  1041. - gpio_lcd_truly_emuspi_write_one_data(0x01);
  1042. - gpio_lcd_truly_emuspi_write_one_data(0x3A);
  1043. - gpio_lcd_truly_emuspi_write_one_data(0x01);
  1044. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1045. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1046. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1047. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1048. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1049. - SPI_Stop();
  1050. - SPI_Start();
  1051. - gpio_lcd_truly_emuspi_write_one_index(0xE0); //SET GAMMA 2.2
  1052. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1053. - gpio_lcd_truly_emuspi_write_one_data(0x13);
  1054. - gpio_lcd_truly_emuspi_write_one_data(0x19);
  1055. - gpio_lcd_truly_emuspi_write_one_data(0x38);
  1056. - gpio_lcd_truly_emuspi_write_one_data(0x3D);
  1057. - gpio_lcd_truly_emuspi_write_one_data(0x3F);
  1058. - gpio_lcd_truly_emuspi_write_one_data(0x28);
  1059. - gpio_lcd_truly_emuspi_write_one_data(0x46);
  1060. - gpio_lcd_truly_emuspi_write_one_data(0x07);
  1061. - gpio_lcd_truly_emuspi_write_one_data(0x0D);
  1062. - gpio_lcd_truly_emuspi_write_one_data(0x0E);
  1063. - gpio_lcd_truly_emuspi_write_one_data(0x12);
  1064. - gpio_lcd_truly_emuspi_write_one_data(0x15);
  1065. - gpio_lcd_truly_emuspi_write_one_data(0x12);
  1066. - gpio_lcd_truly_emuspi_write_one_data(0x14);
  1067. - gpio_lcd_truly_emuspi_write_one_data(0x0F);
  1068. - gpio_lcd_truly_emuspi_write_one_data(0x17);
  1069. - gpio_lcd_truly_emuspi_write_one_data(0x00);
  1070. - gpio_lcd_truly_emuspi_write_one_data(0x13);
  1071. - gpio_lcd_truly_emuspi_write_one_data(0x19);
  1072. - gpio_lcd_truly_emuspi_write_one_data(0x38);
  1073. - gpio_lcd_truly_emuspi_write_one_data(0x3D);
  1074. - gpio_lcd_truly_emuspi_write_one_data(0x3F);
  1075. - gpio_lcd_truly_emuspi_write_one_data(0x28);
  1076. - gpio_lcd_truly_emuspi_write_one_data(0x46);
  1077. - gpio_lcd_truly_emuspi_write_one_data(0x07);
  1078. - gpio_lcd_truly_emuspi_write_one_data(0x0D);
  1079. - gpio_lcd_truly_emuspi_write_one_data(0x0E);
  1080. - gpio_lcd_truly_emuspi_write_one_data(0x12);
  1081. - gpio_lcd_truly_emuspi_write_one_data(0x15);
  1082. - gpio_lcd_truly_emuspi_write_one_data(0x12);
  1083. - gpio_lcd_truly_emuspi_write_one_data(0x14);
  1084. - gpio_lcd_truly_emuspi_write_one_data(0x0F);
  1085. - gpio_lcd_truly_emuspi_write_one_data(0x17);
  1086. - SPI_Stop();
  1087. - SPI_Start();
  1088. - gpio_lcd_truly_emuspi_write_one_index(0xC1); //SET DGC
  1089. - gpio_lcd_truly_emuspi_write_one_data(0x01);
  1090. - gpio_lcd_truly_emuspi_write_one_data(0x04);
  1091. - gpio_lcd_truly_emuspi_write_one_data(0x0A);
  1092. - gpio_lcd_truly_emuspi_write_one_data(0x13);
  1093. - gpio_lcd_truly_emuspi_write_one_data(0x1A);
  1094. - gpio_lcd_truly_emuspi_write_one_data(0x21);
  1095. - gpio_lcd_truly_emuspi_write_one_data(0x29);
  1096. - gpio_lcd_truly_emuspi_write_one_data(0x31);
  1097. - gpio_lcd_truly_emuspi_write_one_data(0x37);
  1098. - gpio_lcd_truly_emuspi_write_one_data(0x3E);
  1099. - gpio_lcd_truly_emuspi_write_one_data(0x47);
  1100. - gpio_lcd_truly_emuspi_write_one_data(0x4F);
  1101. - gpio_lcd_truly_emuspi_write_one_data(0x56);
  1102. - gpio_lcd_truly_emuspi_write_one_data(0x5E);
  1103. - gpio_lcd_truly_emuspi_write_one_data(0x65);
  1104. - gpio_lcd_truly_emuspi_write_one_data(0x6E);
  1105. - gpio_lcd_truly_emuspi_write_one_data(0x78);
  1106. - gpio_lcd_truly_emuspi_write_one_data(0x80);
  1107. - gpio_lcd_truly_emuspi_write_one_data(0x88);
  1108. - gpio_lcd_truly_emuspi_write_one_data(0x8F);
  1109. - gpio_lcd_truly_emuspi_write_one_data(0x98);
  1110. - gpio_lcd_truly_emuspi_write_one_data(0xA0);
  1111. - gpio_lcd_truly_emuspi_write_one_data(0xA8);
  1112. - gpio_lcd_truly_emuspi_write_one_data(0xB1);
  1113. - gpio_lcd_truly_emuspi_write_one_data(0xBA);
  1114. - gpio_lcd_truly_emuspi_write_one_data(0xC3);
  1115. - gpio_lcd_truly_emuspi_write_one_data(0xCB);
  1116. - gpio_lcd_truly_emuspi_write_one_data(0xD3);
  1117. - gpio_lcd_truly_emuspi_write_one_data(0xDB);
  1118. - gpio_lcd_truly_emuspi_write_one_data(0xE4);
  1119. - gpio_lcd_truly_emuspi_write_one_data(0xEB);
  1120. - gpio_lcd_truly_emuspi_write_one_data(0xF3);
  1121. - gpio_lcd_truly_emuspi_write_one_data(0xFA);
  1122. - gpio_lcd_truly_emuspi_write_one_data(0xFF);
  1123. - gpio_lcd_truly_emuspi_write_one_data(0x20);
  1124. - gpio_lcd_truly_emuspi_write_one_data(0x35);
  1125. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1126. - gpio_lcd_truly_emuspi_write_one_data(0x2D);
  1127. - gpio_lcd_truly_emuspi_write_one_data(0x8C);
  1128. - gpio_lcd_truly_emuspi_write_one_data(0x29);
  1129. - gpio_lcd_truly_emuspi_write_one_data(0xE3);
  1130. - gpio_lcd_truly_emuspi_write_one_data(0x2F);
  1131. - gpio_lcd_truly_emuspi_write_one_data(0xC0);
  1132. - gpio_lcd_truly_emuspi_write_one_data(0x04);
  1133. - gpio_lcd_truly_emuspi_write_one_data(0x0A);
  1134. - gpio_lcd_truly_emuspi_write_one_data(0x13);
  1135. - gpio_lcd_truly_emuspi_write_one_data(0x1A);
  1136. - gpio_lcd_truly_emuspi_write_one_data(0x21);
  1137. - gpio_lcd_truly_emuspi_write_one_data(0x29);
  1138. - gpio_lcd_truly_emuspi_write_one_data(0x31);
  1139. - gpio_lcd_truly_emuspi_write_one_data(0x37);
  1140. - gpio_lcd_truly_emuspi_write_one_data(0x3E);
  1141. - gpio_lcd_truly_emuspi_write_one_data(0x47);
  1142. - gpio_lcd_truly_emuspi_write_one_data(0x4F);
  1143. - gpio_lcd_truly_emuspi_write_one_data(0x56);
  1144. - gpio_lcd_truly_emuspi_write_one_data(0x5E);
  1145. - gpio_lcd_truly_emuspi_write_one_data(0x65);
  1146. - gpio_lcd_truly_emuspi_write_one_data(0x6E);
  1147. - gpio_lcd_truly_emuspi_write_one_data(0x78);
  1148. - gpio_lcd_truly_emuspi_write_one_data(0x80);
  1149. - gpio_lcd_truly_emuspi_write_one_data(0x88);
  1150. - gpio_lcd_truly_emuspi_write_one_data(0x8F);
  1151. - gpio_lcd_truly_emuspi_write_one_data(0x98);
  1152. - gpio_lcd_truly_emuspi_write_one_data(0xA0);
  1153. - gpio_lcd_truly_emuspi_write_one_data(0xA8);
  1154. - gpio_lcd_truly_emuspi_write_one_data(0xB1);
  1155. - gpio_lcd_truly_emuspi_write_one_data(0xBA);
  1156. - gpio_lcd_truly_emuspi_write_one_data(0xC3);
  1157. - gpio_lcd_truly_emuspi_write_one_data(0xCB);
  1158. - gpio_lcd_truly_emuspi_write_one_data(0xD3);
  1159. - gpio_lcd_truly_emuspi_write_one_data(0xDB);
  1160. - gpio_lcd_truly_emuspi_write_one_data(0xE4);
  1161. - gpio_lcd_truly_emuspi_write_one_data(0xEB);
  1162. - gpio_lcd_truly_emuspi_write_one_data(0xF3);
  1163. - gpio_lcd_truly_emuspi_write_one_data(0xFA);
  1164. - gpio_lcd_truly_emuspi_write_one_data(0xFF);
  1165. - gpio_lcd_truly_emuspi_write_one_data(0x20);
  1166. - gpio_lcd_truly_emuspi_write_one_data(0x35);
  1167. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1168. - gpio_lcd_truly_emuspi_write_one_data(0x2D);
  1169. - gpio_lcd_truly_emuspi_write_one_data(0x8C);
  1170. - gpio_lcd_truly_emuspi_write_one_data(0x29);
  1171. - gpio_lcd_truly_emuspi_write_one_data(0xE3);
  1172. - gpio_lcd_truly_emuspi_write_one_data(0x2F);
  1173. - gpio_lcd_truly_emuspi_write_one_data(0xC0);
  1174. - gpio_lcd_truly_emuspi_write_one_data(0x04);
  1175. - gpio_lcd_truly_emuspi_write_one_data(0x0A);
  1176. - gpio_lcd_truly_emuspi_write_one_data(0x13);
  1177. - gpio_lcd_truly_emuspi_write_one_data(0x1A);
  1178. - gpio_lcd_truly_emuspi_write_one_data(0x21);
  1179. - gpio_lcd_truly_emuspi_write_one_data(0x29);
  1180. - gpio_lcd_truly_emuspi_write_one_data(0x31);
  1181. - gpio_lcd_truly_emuspi_write_one_data(0x37);
  1182. - gpio_lcd_truly_emuspi_write_one_data(0x3E);
  1183. - gpio_lcd_truly_emuspi_write_one_data(0x47);
  1184. - gpio_lcd_truly_emuspi_write_one_data(0x4F);
  1185. - gpio_lcd_truly_emuspi_write_one_data(0x56);
  1186. - gpio_lcd_truly_emuspi_write_one_data(0x5E);
  1187. - gpio_lcd_truly_emuspi_write_one_data(0x65);
  1188. - gpio_lcd_truly_emuspi_write_one_data(0x6E);
  1189. - gpio_lcd_truly_emuspi_write_one_data(0x78);
  1190. - gpio_lcd_truly_emuspi_write_one_data(0x80);
  1191. - gpio_lcd_truly_emuspi_write_one_data(0x88);
  1192. - gpio_lcd_truly_emuspi_write_one_data(0x8F);
  1193. - gpio_lcd_truly_emuspi_write_one_data(0x98);
  1194. - gpio_lcd_truly_emuspi_write_one_data(0xA0);
  1195. - gpio_lcd_truly_emuspi_write_one_data(0xA8);
  1196. - gpio_lcd_truly_emuspi_write_one_data(0xB1);
  1197. - gpio_lcd_truly_emuspi_write_one_data(0xBA);
  1198. - gpio_lcd_truly_emuspi_write_one_data(0xC3);
  1199. - gpio_lcd_truly_emuspi_write_one_data(0xCB);
  1200. - gpio_lcd_truly_emuspi_write_one_data(0xD3);
  1201. - gpio_lcd_truly_emuspi_write_one_data(0xDB);
  1202. - gpio_lcd_truly_emuspi_write_one_data(0xE4);
  1203. - gpio_lcd_truly_emuspi_write_one_data(0xEB);
  1204. - gpio_lcd_truly_emuspi_write_one_data(0xF3);
  1205. - gpio_lcd_truly_emuspi_write_one_data(0xFA);
  1206. - gpio_lcd_truly_emuspi_write_one_data(0xFF);
  1207. - gpio_lcd_truly_emuspi_write_one_data(0x20);
  1208. - gpio_lcd_truly_emuspi_write_one_data(0x35);
  1209. - gpio_lcd_truly_emuspi_write_one_data(0xE6);
  1210. - gpio_lcd_truly_emuspi_write_one_data(0x2D);
  1211. - gpio_lcd_truly_emuspi_write_one_data(0x8C);
  1212. - gpio_lcd_truly_emuspi_write_one_data(0x29);
  1213. - gpio_lcd_truly_emuspi_write_one_data(0xE3);
  1214. - gpio_lcd_truly_emuspi_write_one_data(0x2F);
  1215. - gpio_lcd_truly_emuspi_write_one_data(0xC0);
  1216. - SPI_Stop();
  1217. - SPI_Start();
  1218. - gpio_lcd_truly_emuspi_write_one_index(0xB3); // SET Display 480x800
  1219. - gpio_lcd_truly_emuspi_write_one_data(0x0f);
  1220. - SPI_Stop();
  1221. - SPI_Start();
  1222. - gpio_lcd_truly_emuspi_write_one_index(0x3A); //SET pixel format 24-bit
  1223. - gpio_lcd_truly_emuspi_write_one_data(0x66);
  1224. - SPI_Stop();
  1225. - SPI_Start();
  1226. - gpio_lcd_truly_emuspi_write_one_index(0x11); // sleep out command
  1227. - msleep(120);
  1228. - SPI_Stop();
  1229. - SPI_Start();
  1230. - gpio_lcd_truly_emuspi_write_one_index(0x29); // display on command
  1231. - SPI_Stop();
  1232. - #endif
  1233. -
  1234. -printk("lcd module TFT TRULY init finish\n!");
  1235. +#if 0
  1236. + int current_lel = mfd->bl_level;
  1237. + uint8_t cnt = 0;
  1238. + unsigned long flags;
  1239.  
  1240. +
  1241. + pr_info(HP_TAG "[ZYF] lcdc_set_bl level=%d, %d\n",
  1242. + current_lel , mfd->panel_power_on);
  1243. +
  1244. +
  1245. + if(!mfd->panel_power_on)
  1246. + {
  1247. + gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  1248. + return;
  1249. + }
  1250. +
  1251. + if(current_lel < 1)
  1252. + {
  1253. + current_lel = 0;
  1254. + }
  1255. + if(current_lel > 32)
  1256. + {
  1257. + current_lel = 32;
  1258. + }
  1259. +
  1260. + local_irq_save(flags);
  1261. + if(current_lel==0)
  1262. + gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  1263. + else {
  1264. + for(cnt = 0;cnt < 33-current_lel;cnt++)
  1265. + {
  1266. + gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  1267. + udelay(20);
  1268. + gpio_direction_output(GPIO_LCD_BL_SC_OUT, 0);
  1269. + udelay(5);
  1270. + }
  1271. + gpio_direction_output(GPIO_LCD_BL_SC_OUT, 1);
  1272. + mdelay(8);
  1273. +
  1274. + }
  1275. + local_irq_restore(flags);
  1276. +#endif
  1277. }
  1278.  
  1279. static void spi_init(void)
  1280. {
  1281. - spi_sclk = *(lcdc_tft_pdata->gpio_num);
  1282. - spi_cs = *(lcdc_tft_pdata->gpio_num + 1);
  1283. - spi_sdi = *(lcdc_tft_pdata->gpio_num + 2);
  1284. - spi_sdo = *(lcdc_tft_pdata->gpio_num + 3);
  1285. - panel_reset = *(lcdc_tft_pdata->gpio_num + 4);
  1286. + spi_sclk = *(lcdc_oled_pdata->gpio_num);
  1287. + spi_cs = *(lcdc_oled_pdata->gpio_num + 1);
  1288. + spi_sdi = *(lcdc_oled_pdata->gpio_num + 2);
  1289. + spi_sdo = *(lcdc_oled_pdata->gpio_num + 3);
  1290. + oled_reset = *(lcdc_oled_pdata->gpio_num + 4);
  1291. printk("spi_init\n!");
  1292.  
  1293. gpio_set_value(spi_sclk, 1);
  1294. gpio_set_value(spi_sdo, 1);
  1295. gpio_set_value(spi_cs, 1);
  1296. -// mdelay(10); ////ZTE_LCD_LUYA_20100513_001
  1297.  
  1298. }
  1299. -static void lcdc_oled_sleep(void)
  1300. +static int lcdc_panel_off(struct platform_device *pdev)
  1301. {
  1302. - gpio_lcd_emuspi_write_one_index(0x14);
  1303. - gpio_lcd_emuspi_write_one_data(0x00);
  1304.  
  1305. - gpio_lcd_emuspi_write_one_index(0x1D);
  1306. - gpio_lcd_emuspi_write_one_data(0xA1);
  1307. -
  1308. - msleep(20); ////ZTE_LCD_LUYA_20100629_001
  1309. + lcdc_oled_sleep();
  1310. +
  1311. + gpio_direction_output(oled_reset, 0);
  1312.  
  1313. -}
  1314. -void lcdc_truly_sleep(void)
  1315. -{
  1316. - SPI_Start();
  1317. - gpio_lcd_truly_emuspi_write_one_index(0x28);
  1318. - SPI_Stop();
  1319. - SPI_Start();
  1320. - gpio_lcd_truly_emuspi_write_one_index(0x10);
  1321. - SPI_Stop();
  1322. - mdelay(120);
  1323. -}
  1324. -void lcdc_lead_sleep(void)
  1325. -{
  1326. - gpio_lcd_lead_emuspi_write_cmd(0x2800,0x00);
  1327. - gpio_lcd_lead_emuspi_write_cmd(0x1000,0x00);
  1328. - msleep(200);
  1329. - //gpio_lcd_lead_emuspi_write_cmd(0x2800,0x00);
  1330. -}
  1331. -static int lcdc_panel_off(struct platform_device *pdev)
  1332. -{
  1333. - printk("lcdc_panel_off , g_lcd_panel_type is %d(1 LEAD. 2 TRULY. 3 OLED. )\n",g_lcd_panel_type)
  1334. - switch(g_lcd_panel_type)
  1335. - {
  1336. - case LCD_PANEL_TRULY_WVGA:
  1337. - lcdc_truly_sleep();
  1338. - break;
  1339. - case LCD_PANEL_LEAD_WVGA:
  1340. - lcdc_lead_sleep();
  1341. - break;
  1342. - default:
  1343. - break;
  1344. - }
  1345. -
  1346. - gpio_direction_output(panel_reset, 0);
  1347. - //ZTE_LCD_LHT_20100521_001
  1348. - gpio_direction_output(spi_sclk, 0);
  1349. - gpio_direction_output(spi_sdi, 0);
  1350. - gpio_direction_output(spi_sdo, 0);
  1351. - gpio_direction_output(spi_cs, 0);
  1352. return 0;
  1353. }
  1354. -static int lcdc_panel_oled_off(struct platform_device *pdev)
  1355. +
  1356. +
  1357. +static void gpio_lcd_emuspi_write_one_index(unsigned short addr)
  1358. {
  1359. + unsigned int i;
  1360. + int j;
  1361.  
  1362. - lcdc_oled_sleep();
  1363. + i = addr | 0x7000;
  1364. + gpio_direction_output(spi_cs, 0);
  1365.  
  1366. - gpio_direction_output(panel_reset, 0);
  1367. -// mdelay(100); ////ZTE_LCD_LUYA_20100513_001
  1368. + for (j = 0; j < 16; j++) {
  1369.  
  1370. - return 0;
  1371. + if (i & 0x8000)
  1372. + gpio_direction_output(spi_sdo, 1);
  1373. + else
  1374. + gpio_direction_output(spi_sdo, 0);
  1375. +
  1376. + gpio_direction_output(spi_sclk, 0);
  1377. + gpio_direction_output(spi_sclk, 1);
  1378. + i <<= 1;
  1379. + }
  1380. +
  1381. + gpio_direction_output(spi_cs, 1);
  1382. }
  1383. -static LCD_PANEL_TYPE lcd_panel_detect(void)
  1384. +
  1385. +static void gpio_lcd_emuspi_write_one_data(unsigned short data)
  1386. {
  1387. - unsigned int id_h,id_l,id;
  1388. - LCD_PANEL_TYPE panel_type;
  1389. - boolean read_truly_id=true;
  1390. - spi_init();
  1391. - if(read_truly_id)
  1392. - {
  1393. - SPI_Start();
  1394. - gpio_lcd_truly_emuspi_write_one_index(0xB9); // SET password
  1395. - gpio_lcd_truly_emuspi_write_one_data(0xFF);
  1396. - gpio_lcd_truly_emuspi_write_one_data(0x83);
  1397. - gpio_lcd_truly_emuspi_write_one_data(0x69);
  1398. - SPI_Stop();
  1399. - //Read from RF4H=R69H
  1400. - //mdelay(100);
  1401. - SPI_Start();
  1402. - gpio_lcd_truly_emuspi_write_one_index(0xFE); // read id
  1403. - gpio_lcd_truly_emuspi_write_one_data(0xF4);
  1404. - SPI_Stop();
  1405. -
  1406. - SPI_Start();
  1407. - gpio_lcd_truly_emuspi_read_one_para(0xFF,&id);
  1408. - SPI_Stop();
  1409. - printk("truly id is 0x%x\n",id);
  1410. - }
  1411. - else
  1412. - {
  1413. - gpio_lcd_lead_emuspi_read_one_index(0x1080,&id_h);
  1414. - gpio_lcd_lead_emuspi_read_one_index(0x1180,&id_l);
  1415. - printk("lead id is 0x%x%x\n",id_h,id_l);
  1416. - }
  1417. - /*
  1418. - if((read_truly_id&&(id!=0x6902))||((!read_truly_id)&&((id_h==0x55)&&(id_l==0x80))))
  1419. -
  1420. - {
  1421. - printk("lead is selected\n");
  1422. - return LCD_PANEL_LEAD_WVGA;
  1423. - }
  1424. - else
  1425. - {
  1426. - printk("truly is selected\n");
  1427. - return LCD_PANEL_TRULY_WVGA;
  1428. - }
  1429. - */
  1430. - if(id==0x6902)
  1431. - {
  1432. - panel_type=LCD_PANEL_TRULY_WVGA;
  1433. - return panel_type;
  1434. - }
  1435. - //gpio_lcd_lead_emuspi_read_one_index(0x1080,&id_h);
  1436. - //gpio_lcd_lead_emuspi_read_one_index(0x1180,&id_l);
  1437. - gpio_lcd_emuspi_write_one_index(0x00);
  1438. - gpio_lcd_emuspi_read_one_data(&id_h);
  1439. - gpio_lcd_emuspi_write_one_index(0x01);
  1440. - gpio_lcd_emuspi_read_one_data(&id_l);
  1441. - printk("oled id is 0x%x%x\n",id_h,id_l);
  1442. - if((id_h==0x27)&&(id_l==0x96))
  1443. - {
  1444. - panel_type=LCD_PANEL_OLED_WVGA;
  1445. - return panel_type;
  1446. + unsigned int i;
  1447. + int j;
  1448. +
  1449. + i = data | 0x7200;
  1450. + gpio_direction_output(spi_cs, 0);
  1451. +
  1452. + for (j = 0; j < 16; j++) {
  1453. +
  1454. + if (i & 0x8000)
  1455. + gpio_direction_output(spi_sdo, 1);
  1456. + else
  1457. + gpio_direction_output(spi_sdo, 0);
  1458. +
  1459. + gpio_direction_output(spi_sclk, 0);
  1460. + gpio_direction_output(spi_sclk, 1);
  1461. + i <<= 1;
  1462. }
  1463. - //gpio_lcd_lead_emuspi_write_one_index(0x3b00,0x00);
  1464. - panel_type=LCD_PANEL_LEAD_WVGA;
  1465. - return panel_type;
  1466. +
  1467. + gpio_direction_output(spi_cs, 1);
  1468. }
  1469. -void lcd_panel_init(void)
  1470. +
  1471. +static void gpio_lcd_emuspi_write_more(unsigned int num,unsigned int level)
  1472. {
  1473. - gpio_direction_output(panel_reset, 1);
  1474. - msleep(10); ////ZTE_LCD_LUYA_20100629_001
  1475. - gpio_direction_output(panel_reset, 0);
  1476. - msleep(20); ////ZTE_LCD_LUYA_20100629_001
  1477. - gpio_direction_output(panel_reset, 1);
  1478. - msleep(20);
  1479. - switch(g_lcd_panel_type)
  1480. + unsigned int i;
  1481. + for(i = 0; i < num;i++)
  1482. {
  1483. - case LCD_PANEL_TRULY_WVGA:
  1484. - lcdc_truly_init();
  1485. - break;
  1486. - case LCD_PANEL_LEAD_WVGA:
  1487. - lcdc_lead_init();
  1488. - break;
  1489. - case LCD_PANEL_OLED_WVGA:
  1490. - lcdc_oled_init();
  1491. - break;
  1492. - default:
  1493. - break;
  1494. + gpio_lcd_emuspi_write_one_index(array[level-1][2*i]);
  1495. + gpio_lcd_emuspi_write_one_data(array[level-1][2*i+1]);
  1496. }
  1497. }
  1498. -
  1499. -static struct msm_fb_panel_data lcdc_tft_panel_data = {
  1500. - .panel_info = {.bl_max = 32},
  1501. - .on = lcdc_panel_on,
  1502. - .off = lcdc_panel_off,
  1503. - .set_backlight = lcdc_set_bl,
  1504. -};
  1505. static struct msm_fb_panel_data lcdc_oled_panel_data = {
  1506. .panel_info = {.bl_max = 12},
  1507. .on = lcdc_panel_on,
  1508. - .off = lcdc_panel_oled_off,
  1509. - .set_backlight = lcdc_set_bl_oled,
  1510. + .off = lcdc_panel_off,
  1511. + .set_backlight = lcdc_set_bl,
  1512. };
  1513.  
  1514. static struct platform_device this_device = {
  1515. .name = "lcdc_panel_qvga",
  1516. .id = 1,
  1517. .dev = {
  1518. - .platform_data = &lcdc_tft_panel_data,
  1519. - }
  1520. -};
  1521. -static struct platform_device this_device2 = {
  1522. - .name = "lcdc_panel_qvga",
  1523. - .id = 1,
  1524. - .dev = {
  1525. .platform_data = &lcdc_oled_panel_data,
  1526. }
  1527. };
  1528. +
  1529. static int __init lcdc_panel_probe(struct platform_device *pdev)
  1530. {
  1531. struct msm_panel_info *pinfo;
  1532. int ret;
  1533.  
  1534. - if(pdev->id == 0) {
  1535. - lcdc_tft_pdata = pdev->dev.platform_data;
  1536. - lcdc_tft_pdata->panel_config_gpio(1);
  1537. -
  1538. - g_lcd_panel_type = lcd_panel_detect();
  1539. - if(g_lcd_panel_type==LCD_PANEL_TRULY_WVGA)
  1540. - {
  1541. - pinfo = &lcdc_tft_panel_data.panel_info;
  1542. - pinfo->lcdc.h_back_porch = 5;
  1543. - pinfo->lcdc.h_front_porch = 5;
  1544. - pinfo->lcdc.h_pulse_width = 1;
  1545. - pinfo->lcdc.v_back_porch = 5;
  1546. - pinfo->lcdc.v_front_porch = 5;
  1547. - pinfo->lcdc.v_pulse_width = 1;
  1548. - pinfo->lcdc.border_clr = 0; /* blk */
  1549. - pinfo->lcdc.underflow_clr = 0xffff; /* blue */
  1550. - pinfo->lcdc.hsync_skew = 0;
  1551. - }
  1552. - else if(g_lcd_panel_type==LCD_PANEL_LEAD_WVGA)
  1553. - {
  1554. - pinfo = &lcdc_tft_panel_data.panel_info;
  1555. - pinfo->lcdc.h_back_porch = 3;
  1556. - pinfo->lcdc.h_front_porch = 3;
  1557. - pinfo->lcdc.h_pulse_width = 1;
  1558. - pinfo->lcdc.v_back_porch = 10;
  1559. - pinfo->lcdc.v_front_porch = 3;
  1560. - pinfo->lcdc.v_pulse_width = 1;
  1561. - pinfo->lcdc.border_clr = 0; /* blk */
  1562. - pinfo->lcdc.underflow_clr = 0xffff; /* blue */
  1563. - pinfo->lcdc.hsync_skew = 0;
  1564. - }
  1565. - else
  1566. - {
  1567. - pinfo = &lcdc_oled_panel_data.panel_info;
  1568. - pinfo->lcdc.h_back_porch = 8;
  1569. - pinfo->lcdc.h_front_porch = 8;
  1570. - pinfo->lcdc.h_pulse_width = 1;
  1571. - pinfo->lcdc.v_back_porch = 8;
  1572. - pinfo->lcdc.v_front_porch = 8;
  1573. - pinfo->lcdc.v_pulse_width = 1;
  1574. - pinfo->lcdc.border_clr = 0; /* blk */
  1575. - pinfo->lcdc.underflow_clr = 0xffff; /* blue */
  1576. - pinfo->lcdc.hsync_skew = 0;
  1577. - }
  1578. + if(pdev->id == 0) {
  1579. + lcdc_oled_pdata = pdev->dev.platform_data;
  1580. + lcdc_oled_pdata->panel_config_gpio(1);
  1581. +
  1582. + pinfo = &lcdc_oled_panel_data.panel_info;
  1583. pinfo->xres = 480;
  1584. - pinfo->yres = 800;
  1585. + pinfo->yres = 800;
  1586. pinfo->type = LCDC_PANEL;
  1587. pinfo->pdest = DISPLAY_1;
  1588. pinfo->wait_cycle = 0;
  1589. pinfo->bpp = 18;
  1590. pinfo->fb_num = 2;
  1591. - switch(g_lcd_panel_type)
  1592. - {
  1593. - case LCD_PANEL_TRULY_WVGA:
  1594. - LcdPanleID=(u32)41; //ZTE_LCD_LHT_20100611_001
  1595. - pinfo->clk_rate = 24576000;
  1596. - ret = platform_device_register(&this_device);
  1597. - break;
  1598. - case LCD_PANEL_OLED_WVGA:
  1599. - LcdPanleID=(u32)40; //ZTE_LCD_LHT_20100611_001
  1600. - pinfo->clk_rate = 24576000;
  1601. - ret = platform_device_register(&this_device2);
  1602. - break;
  1603. - case LCD_PANEL_LEAD_WVGA:
  1604. - pinfo->clk_rate = 18432000;
  1605. - LcdPanleID=(u32)42; //ZTE_LCD_LHT_20100611_001
  1606. - ret = platform_device_register(&this_device);
  1607. - break;
  1608. - default:
  1609. - break;
  1610. - }
  1611. -
  1612. -
  1613. - //ret = platform_device_register(&this_device);
  1614. +
  1615. + pinfo->clk_rate = 24576000;
  1616. +
  1617. + pinfo->lcdc.h_back_porch = 8;
  1618. + pinfo->lcdc.h_front_porch = 8;
  1619. + pinfo->lcdc.h_pulse_width = 1;
  1620. + pinfo->lcdc.v_back_porch = 8;
  1621. + pinfo->lcdc.v_front_porch = 8;
  1622. + pinfo->lcdc.v_pulse_width = 1;
  1623. + pinfo->lcdc.border_clr = 0;
  1624. + pinfo->lcdc.underflow_clr = 0xffff;
  1625. + pinfo->lcdc.hsync_skew = 0;
  1626. +
  1627. + ret = platform_device_register(&this_device);
  1628.  
  1629. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement