+/*\r
+ * Copyright (C) 2011 ROCKCHIP, Inc.\r
+ *\r
+ * author: hhb@rock-chips.com\r
+ * creat date: 2011-05-14\r
+ * route:drivers/video/display/screen/lcd_ili9803_cpt4_3.c - driver for rk29 phone sdk or rk29 a22\r
+ * station:haven been tested in a22 hardware platform\r
+ * This software is licensed under the terms of the GNU General Public\r
+ * License version 2, as published by the Free Software Foundation, and\r
+ * may be copied, distributed, and modified under those terms.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ */\r
+\r
+\r
+\r
+\r
#include <linux/fb.h>\r
#include <linux/delay.h>\r
#include "../../rk29_fb.h"\r
#include <mach/board.h>\r
#include "screen.h"\r
\r
+\r
/* Base */\r
#define OUT_TYPE SCREEN_RGB\r
-#define OUT_FACE OUT_P888\r
-#define OUT_CLK 26*1000*1000 //***27\r
-#define LCDC_ACLK 150000000 //29 lcdc axi DMA Ƶ�� //rk29\r
+#define OUT_FACE OUT_P666\r
+#define OUT_CLK 26000000\r
+#define LCDC_ACLK 150000000 //29 lcdc axi DMA\r
\r
/* Timing */\r
-#define H_PW 4 //8ǰÏûÓ°\r
-#define H_BP 8//6\r
-#define H_VD 480//320 //***800 \r
-#define H_FP 8//60\r
+#define H_PW 8\r
+#define H_BP 6\r
+#define H_VD 480\r
+#define H_FP 60\r
+\r
+#define V_PW 2\r
+#define V_BP 12\r
+#define V_VD 800\r
+#define V_FP 4\r
\r
-#define V_PW 4//12\r
-#define V_BP 8// 4\r
-#define V_VD 800//480 //***480\r
-#define V_FP 8//40\r
\r
-#define LCD_WIDTH 800 //need modify //rk29\r
-#define LCD_HEIGHT 480\r
+#define LCD_WIDTH 480 //need modify\r
+#define LCD_HEIGHT 800\r
\r
/* Other */\r
-#define DCLK_POL 1//0 \r
+#define DCLK_POL 1\r
#define SWAP_RB 0\r
\r
-static struct rk29lcd_info *gLcd_info = NULL;\r
-int init(void);\r
-int standby(u8 enable);\r
-\r
-#define TXD_PORT gLcd_info->txd_pin\r
-#define CLK_PORT gLcd_info->clk_pin\r
-#define CS_PORT gLcd_info->cs_pin\r
-\r
-#define CS_OUT() gpio_direction_output(CS_PORT, 1)\r
-#define CS_SET() gpio_set_value(CS_PORT, GPIO_HIGH)\r
-#define CS_CLR() gpio_set_value(CS_PORT, GPIO_LOW)\r
-#define CLK_OUT() gpio_direction_output(CLK_PORT, 0) \r
-#define CLK_SET() gpio_set_value(CLK_PORT, GPIO_HIGH)\r
-#define CLK_CLR() gpio_set_value(CLK_PORT, GPIO_LOW)\r
-#define TXD_OUT() gpio_direction_output(TXD_PORT, 1) \r
-#define TXD_SET() gpio_set_value(TXD_PORT, GPIO_HIGH)\r
-#define TXD_CLR() gpio_set_value(TXD_PORT, GPIO_LOW)\r
-\r
-\r
-#define DRVDelayUs(i) udelay(i*4)\r
-#if 0\r
-void spi_screenreg_cmd(u8 Addr)\r
-{\r
- u32 i;\r
- u32 control_bit;\r
-\r
- TXD_OUT();\r
- CLK_OUT();\r
- CS_OUT();\r
- DRVDelayUs(2);\r
- DRVDelayUs(2);\r
-\r
- CS_SET();\r
- TXD_SET();\r
- CLK_CLR();\r
- DRVDelayUs(30);\r
-\r
- CS_CLR();\r
- control_bit = 0x0000;\r
- Addr = (control_bit | Addr);//spi_screenreg_set(0x36, 0x0000, 0xffff); \r
- //printk("addr is 0x%x \n", Addr); \r
- for(i = 0; i < 9; i++) //reg\r
- {\r
- if(Addr &(1<<(8-i)))\r
- TXD_SET();\r
- else\r
- TXD_CLR();\r
-\r
- // \u6a21\u62dfCLK\r
- CLK_SET();\r
- DRVDelayUs(2);\r
- CLK_CLR();\r
- DRVDelayUs(2);\r
- }\r
-\r
- CS_SET();\r
- TXD_SET();\r
- CLK_CLR(); \r
- DRVDelayUs(10);\r
-}\r
-\r
-\r
-void spi_screenreg_param(u8 Param)\r
-{\r
\r
- u32 i;\r
- u32 control_bit;\r
-\r
- CS_CLR();\r
- \r
- control_bit = 0x0100;\r
- Param = (control_bit | Param);\r
- //printk("data0 is 0x%x \n", Data); \r
- for(i = 0; i < 9; i++) //data\r
- {\r
- if(Param &(1<<(8-i)))\r
- TXD_SET();\r
- else\r
- TXD_CLR();\r
-\r
- // \u6a21\u62dfCLK\r
- CLK_SET();\r
- DRVDelayUs(2);\r
- CLK_CLR();\r
- DRVDelayUs(2);\r
- }\r
+/* define spi write command and data interface function */\r
+\r
+#define SIMULATION_SPI 1\r
+#ifdef SIMULATION_SPI\r
+\r
+ #define TXD_PORT gLcd_info->txd_pin\r
+ #define CLK_PORT gLcd_info->clk_pin\r
+ #define CS_PORT gLcd_info->cs_pin\r
+ #define LCD_RST_PORT RK29_PIN6_PC6\r
+\r
+ #define CS_OUT() gpio_direction_output(CS_PORT, 0)\r
+ #define CS_SET() gpio_set_value(CS_PORT, GPIO_HIGH)\r
+ #define CS_CLR() gpio_set_value(CS_PORT, GPIO_LOW)\r
+ #define CLK_OUT() gpio_direction_output(CLK_PORT, 0)\r
+ #define CLK_SET() gpio_set_value(CLK_PORT, GPIO_HIGH)\r
+ #define CLK_CLR() gpio_set_value(CLK_PORT, GPIO_LOW)\r
+ #define TXD_OUT() gpio_direction_output(TXD_PORT, 0)\r
+ #define TXD_SET() gpio_set_value(TXD_PORT, GPIO_HIGH)\r
+ #define TXD_CLR() gpio_set_value(TXD_PORT, GPIO_LOW)\r
+ #define LCD_RST_OUT() gpio_direction_output(LCD_RST_PORT, 0)\r
+ #define LCD_RST(i) gpio_set_value(LCD_RST_PORT, i)\r
+\r
+ #define bits_9\r
+ #ifdef bits_9 //9bits\r
+\r
+ #define LCD_ILI9803_CMD(cmd) spi_write_9bit(0, cmd)\r
+ #define LCD_ILI9803_Parameter(dat) spi_write_9bit(1, dat)\r
+ #else //16bits\r
+ #define LCD_ILI9803_CMD(cmd) spi_write_16bit(0, cmd)\r
+ #define LCD_ILI9803_Parameter(dat) spi_write_16bit(1, dat)\r
+ #endif\r
+ #define Lcd_EnvidOnOff(i)\r
+\r
+#else\r
+\r
+ #define bits_9 1\r
+ #ifdef bits_9 //9bits\r
+ #define LCD_ILI9803_CMD(cmd)\r
+ #define LCD_ILI9803_Parameter(dat)\r
+ #else //16bits\r
+ #define LCD_ILI9803_CMD(cmd)\r
+ #define LCD_ILI9803_Parameter(dat)\r
+ #endif\r
\r
- CS_SET();\r
- CLK_CLR();\r
- TXD_CLR();\r
- DRVDelayUs(10);\r
-}\r
#endif\r
\r
-void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )\r
-{\r
- //printk("lcd_hx8357 set_lcd_info \n"); \r
- /* screen type & face */\r
- screen->type = OUT_TYPE;\r
- screen->face = OUT_FACE;\r
-\r
- /* Screen size */\r
- screen->x_res = H_VD;\r
- screen->y_res = V_VD;\r
- screen->width = LCD_WIDTH; //rk29\r
- screen->height = LCD_HEIGHT; //rk29\r
-\r
- /* Timing */\r
- screen->lcdc_aclk = LCDC_ACLK; //rk29\r
- screen->pixclock = OUT_CLK;\r
- screen->left_margin = H_BP; /*>2*/ \r
- screen->right_margin = H_FP; /*>2*/ \r
- screen->hsync_len = H_PW; /*>2*/ //***all > 326, 4<PW+BP<15, \r
- screen->upper_margin = V_BP; /*>2*/ \r
- screen->lower_margin = V_FP; /*>2*/ \r
- screen->vsync_len = V_PW; /*>6*/ \r
-\r
- /* Pin polarity */\r
- screen->pin_hsync = 0; \r
- screen->pin_vsync = 0; \r
- screen->pin_den = 0;\r
- screen->pin_dclk = DCLK_POL;\r
-\r
- /* Swap rule */\r
- screen->swap_rb = 0;\r
- screen->swap_rg = 0;\r
- screen->swap_gb = 0;\r
- screen->swap_delta = 0;\r
- screen->swap_dumy = 0;\r
\r
- /* Operation function*/\r
- screen->init = init;\r
- screen->standby = standby;\r
- if(lcd_info)\r
- gLcd_info = lcd_info;\r
-}\r
+/* define lcd command */\r
+#define ENTER_SLEEP_MODE 0x10\r
+#define EXIT_SLEEP_MODE 0x11\r
+#define SET_COLUMN_ADDRESS 0x2a\r
+#define SET_PAGE_ADDRESS 0x2b\r
+#define WRITE_MEMORY_START 0x2c\r
+#define SET_DISPLAY_ON 0x29\r
+#define SET_DISPLAY_OFF 0x28\r
+#define SET_ADDRESS_MODE 0x36\r
+#define SET_PIXEL_FORMAT 0x3a\r
\r
-#define PIN_BL_SET RK29_PIN6_PD2\r
-void set_backlight(int brightness)\r
-{\r
-#if 0\r
- if(gLcd_info)\r
- gLcd_info->io_init();\r
\r
- printk("lcd_ili9803:set_backlight = %d\r\n", brightness);\r
- if (brightness < 0)\r
- {\r
- brightness = 0;\r
- }\r
- if (brightness > 4)\r
- {\r
- brightness = 4;\r
- }\r
- spi_screenreg_cmd(0x51);\r
- spi_screenreg_param(brightness<<5);\r
- \r
- if(gLcd_info)\r
- gLcd_info->io_deinit();\r
+#define DRVDelayUs(i) udelay(i*2)\r
\r
-#endif\r
+static struct rk29lcd_info *gLcd_info = NULL;\r
+int lcd_init(void);\r
+int lcd_standby(u8 enable);\r
\r
- gpio_request(PIN_BL_SET, NULL);\r
- if(brightness > 0)\r
- gpio_direction_output(PIN_BL_SET,GPIO_HIGH);\r
- else\r
- gpio_direction_output(PIN_BL_SET,GPIO_LOW); \r
- printk("%s:brightness=%d\n",__FUNCTION__,brightness);\r
-}\r
\r
-void WriteCommand( int Command)\r
+/* spi write a data frame,type mean command or data */\r
+int spi_write_9bit(u32 type, u32 value)\r
{\r
- unsigned char i,count1, count2,count3,count4;\r
- count1= Command>>8;\r
- count2= Command;\r
- count3=0x20;//00100000 //дÃüÁî¸ßλ\r
- count4=0x00;//00000000 //дÃüÁîµÍλ======¾ßÌåÇë¿´ICµÄDatasheet\r
- CS_CLR();\r
- for(i=0;i<8;i++)\r
- {\r
- CLK_CLR();\r
- if (count3 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
+ u32 i = 0;\r
+\r
+ if(type != 0 && type != 1)\r
+ {\r
+ return -1;\r
+ }\r
+ /*make a data frame of 9 bits,the 8th bit 0:mean command,1:mean data*/\r
+ value &= 0xff;\r
+ value |= (type << 8);\r
+// if(0 == type){\r
+ TXD_OUT();\r
+ CLK_OUT();\r
+ CS_OUT();\r
+ DRVDelayUs(2);\r
+ DRVDelayUs(2);\r
+ CS_SET();\r
+ TXD_SET();\r
CLK_SET();\r
- count3<<=1;\r
- }\r
+ DRVDelayUs(2);\r
+ CS_CLR();\r
+// }\r
\r
- for(i=0;i<8;i++)\r
+ for(i = 0; i < 9; i++) //reg\r
{\r
- CLK_CLR();\r
- if (count1 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
- CLK_SET();\r
- count1<<=1;\r
- }\r
\r
- for(i=0;i<8;i++)\r
- {\r
- CLK_CLR();\r
- if (count4 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
- CLK_SET();\r
- count4<<=1;\r
- }\r
- \r
- for(i=0;i<8;i++)\r
- {\r
CLK_CLR();\r
- if (count2 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
+ DRVDelayUs(2);\r
+ if(value & (1 << (8-i)))\r
+ {\r
+ TXD_SET();\r
+ }\r
+ else\r
+ {\r
+ TXD_CLR();\r
+ }\r
CLK_SET();\r
- count2<<=1;\r
+ DRVDelayUs(2);\r
}\r
\r
- CS_SET();\r
+// if(0 == type){\r
+ CS_SET();\r
+ CLK_CLR();\r
+ TXD_CLR();\r
+// }\r
\r
+ DRVDelayUs(2);\r
+ return 0;\r
}\r
\r
\r
-\r
-void WriteParameter(char DH)\r
+int lcd_init(void)\r
{\r
- unsigned char i, count1, count2,count3,count4;\r
- count1=DH>>8;\r
- count2=DH;\r
- count3=0x60;//дÊý¾Ý¸ßλ\r
- count4=0x40;//дÊý¾ÝµÍλ\r
-\r
- CS_CLR();\r
- /*\r
- TXD_CLR(); CLK_CLR(); CLK_SET(); //WRITE\r
- TXD_SET(); CLK_CLR(); CLK_SET(); //DATA\r
- TXD_SET(); CLK_CLR(); CLK_SET(); //HIGH BYTE\r
- TXD_CLR(); CLK_CLR(); CLK_SET();\r
- TXD_CLR(); CLK_CLR(); CLK_SET();\r
- TXD_CLR(); CLK_CLR(); CLK_SET();\r
- TXD_CLR(); CLK_CLR(); CLK_SET();\r
- TXD_CLR(); CLK_CLR(); CLK_SET();\r
- */\r
- /*\r
- //ÒòΪÊý¾ÝµÄ¸ßλ»ù±¾ÊDz»Óõģ¬¿ÉÒÔ²»´«¸ßλ£¬Ö±½Ó´«µÍλ\r
- for(i=0;i<8;i++)\r
- {\r
- CLK_CLR();\r
- if (count3 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
- CLK_SET();\r
- count3<<=1;\r
- }\r
-\r
- for(i=0;i<8;i++)\r
- {\r
- CLK_CLR();\r
- if (count1 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
- CLK_SET();\r
- count1<<=1;\r
- }\r
- */\r
-\r
+ if(gLcd_info)\r
+ gLcd_info->io_init();\r
+ printk("*****lcd_init...*****\n");\r
+/* reset lcd to start init lcd by software if there is no hardware reset circuit for the lcd */\r
+#ifdef LCD_RST_PORT\r
+ gpio_request(LCD_RST_PORT, NULL);\r
+ LCD_RST_OUT();\r
+ LCD_RST(1);\r
+ msleep(1);\r
+ LCD_RST(0);\r
+ msleep(10);\r
+ LCD_RST(1);\r
+ msleep(120);\r
\r
- for(i=0;i<8;i++)\r
- {\r
- CLK_CLR();\r
- if (count4 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
- CLK_SET();\r
- count4<<=1;\r
- }\r
+#endif\r
\r
- for(i=0;i<8;i++)\r
- {\r
- CLK_CLR();\r
- if (count2 & 0x80) TXD_SET();\r
- else TXD_CLR();\r
- CLK_SET();\r
- count2<<=1;\r
- }\r
+ TXD_OUT();\r
+ CLK_OUT();\r
+ CS_OUT();\r
+ CS_SET();\r
+ TXD_SET();\r
+ CLK_SET();\r
+\r
+ LCD_ILI9803_CMD(0xB1);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_CMD(0xB2);\r
+ LCD_ILI9803_Parameter(0x10);\r
+ LCD_ILI9803_Parameter(0xC7);\r
+ LCD_ILI9803_CMD(0xB3);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_CMD(0xB4);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_CMD(0xB9);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_CMD(0xC3);\r
+ LCD_ILI9803_Parameter(0x07);\r
+ LCD_ILI9803_CMD(0xB2);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_Parameter(0x0B);\r
+ LCD_ILI9803_Parameter(0x0B);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x07);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_CMD(0xC5);\r
+ LCD_ILI9803_Parameter(0x6E);\r
+ LCD_ILI9803_CMD(0xC2);\r
+ LCD_ILI9803_Parameter(0x20);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x10);\r
+ msleep(20);\r
+ LCD_ILI9803_CMD(0xC8);\r
+ LCD_ILI9803_Parameter(0xA3);\r
+ LCD_ILI9803_CMD(0xC9);\r
+ LCD_ILI9803_Parameter(0x32);\r
+ LCD_ILI9803_Parameter(0x06);\r
+ LCD_ILI9803_CMD(0xD7);\r
+ LCD_ILI9803_Parameter(0x03);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x0F);\r
+ LCD_ILI9803_Parameter(0x0F);\r
+ LCD_ILI9803_CMD(0xCF);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x08);\r
+ LCD_ILI9803_CMD(0xB6);\r
+ LCD_ILI9803_Parameter(0x20);\r
+ LCD_ILI9803_Parameter(0xC2);\r
+ LCD_ILI9803_Parameter(0xFF);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_CMD(0xEA);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_CMD(0x2A);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x01);\r
+ LCD_ILI9803_Parameter(0xDF);\r
+ LCD_ILI9803_CMD(0x2B);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x03);\r
+ LCD_ILI9803_Parameter(0xEF);\r
+ LCD_ILI9803_CMD(0xB0);\r
+ LCD_ILI9803_Parameter(0x01);\r
+ LCD_ILI9803_CMD(0x0C);\r
+ LCD_ILI9803_Parameter(0x50);\r
+ LCD_ILI9803_CMD(0x36);\r
+ LCD_ILI9803_Parameter(0x48);\r
+ LCD_ILI9803_CMD(0x3A);\r
+ LCD_ILI9803_Parameter(0x66);\r
+ LCD_ILI9803_CMD(0xE0);\r
+ LCD_ILI9803_Parameter(0x05);\r
+ LCD_ILI9803_Parameter(0x07);\r
+ LCD_ILI9803_Parameter(0x0B);\r
+ LCD_ILI9803_Parameter(0x14);\r
+ LCD_ILI9803_Parameter(0x11);\r
+ LCD_ILI9803_Parameter(0x14);\r
+ LCD_ILI9803_Parameter(0x0A);\r
+ LCD_ILI9803_Parameter(0x07);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_Parameter(0x0B);\r
+ LCD_ILI9803_Parameter(0x02);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_Parameter(0x33);\r
+ LCD_ILI9803_Parameter(0x36);\r
+ LCD_ILI9803_Parameter(0x1F);\r
+ LCD_ILI9803_CMD(0xE1);\r
+ LCD_ILI9803_Parameter(0x1F);\r
+ LCD_ILI9803_Parameter(0x36);\r
+ LCD_ILI9803_Parameter(0x33);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_Parameter(0x00);\r
+ LCD_ILI9803_Parameter(0x02);\r
+ LCD_ILI9803_Parameter(0x0B);\r
+ LCD_ILI9803_Parameter(0x04);\r
+ LCD_ILI9803_Parameter(0x07);\r
+ LCD_ILI9803_Parameter(0x0A);\r
+ LCD_ILI9803_Parameter(0x14);\r
+ LCD_ILI9803_Parameter(0x11);\r
+ LCD_ILI9803_Parameter(0x14);\r
+ LCD_ILI9803_Parameter(0x0B);\r
+ LCD_ILI9803_Parameter(0x07);\r
+ LCD_ILI9803_Parameter(0x05);\r
+ LCD_ILI9803_CMD(EXIT_SLEEP_MODE);\r
+ msleep(70);\r
+ LCD_ILI9803_CMD(SET_DISPLAY_ON);\r
+ msleep(10);\r
+ LCD_ILI9803_CMD(WRITE_MEMORY_START);\r
\r
- CS_SET();\r
+ if(gLcd_info)\r
+ gLcd_info->io_deinit();\r
\r
+ return 0;\r
}\r
\r
-\r
-void init_nt35510(void)\r
+int lcd_standby(u8 enable)\r
{\r
- WriteCommand(0X1100); \r
- mdelay(120);\r
-\r
- WriteCommand(0X1300); \r
-\r
- WriteCommand(0XF000); \r
- WriteParameter(0x55);\r
-\r
- WriteCommand(0XF001); \r
- WriteParameter(0xAA);\r
-\r
- WriteCommand(0XF002); \r
- WriteParameter(0x52);\r
-\r
- WriteCommand(0XF003); \r
- WriteParameter(0x08);\r
-\r
- WriteCommand(0XF004); \r
- WriteParameter(0x01);\r
-\r
- //Gamma setting Red\r
- WriteCommand(0XD100);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD101);\r
- WriteParameter(0x20);\r
-\r
- WriteCommand(0XD102);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD103);\r
- WriteParameter(0x2B);\r
-\r
- WriteCommand(0XD104);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD105);\r
- WriteParameter(0x3C);\r
-\r
- WriteCommand(0XD106);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD107);\r
- WriteParameter(0x56);\r
-\r
- WriteCommand(0XD108);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD109);\r
- WriteParameter(0x68);\r
-\r
- WriteCommand(0XD10a);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD10b);\r
- WriteParameter(0x87);\r
-\r
- WriteCommand(0XD10c);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD10d);\r
- WriteParameter(0x9E);\r
-\r
- WriteCommand(0XD10e);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD10f);\r
- WriteParameter(0xC6);\r
-\r
- WriteCommand(0XD110);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD111);\r
- WriteParameter(0xE4);\r
-\r
- WriteCommand(0XD112);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD113);\r
- WriteParameter(0x12);\r
-\r
- WriteCommand(0XD114);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD115);\r
- WriteParameter(0x37);\r
-\r
- WriteCommand(0XD116);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD117);\r
- WriteParameter(0x75);\r
-\r
- WriteCommand(0XD118);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD119);\r
- WriteParameter(0xA5);\r
-\r
- WriteCommand(0XD11a);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD11b);\r
- WriteParameter(0xA6);\r
-\r
- WriteCommand(0XD11c);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD11d);\r
- WriteParameter(0xD0);\r
-\r
- WriteCommand(0XD11e);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD11f);\r
- WriteParameter(0xF5);\r
-\r
- WriteCommand(0XD120);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD121);\r
- WriteParameter(0x0A);\r
-\r
- WriteCommand(0XD122);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD123);\r
- WriteParameter(0x26);\r
-\r
- WriteCommand(0XD124);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD125);\r
- WriteParameter(0x3B);\r
-\r
- WriteCommand(0XD126);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD127);\r
- WriteParameter(0x6B);\r
-\r
- WriteCommand(0XD128);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD129);\r
- WriteParameter(0x99);\r
-\r
- WriteCommand(0XD12a);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD12b);\r
- WriteParameter(0xDD);\r
-\r
- WriteCommand(0XD12C);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD12D);\r
- WriteParameter(0x10);\r
-\r
- WriteCommand(0XD12E);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD12F);\r
- WriteParameter(0x26);\r
-\r
- WriteCommand(0XD130);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD131);\r
- WriteParameter(0x32);\r
-\r
- WriteCommand(0XD132);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD133);\r
- WriteParameter(0x9A);\r
-\r
- //Gamma setting Green\r
- WriteCommand(0XD200);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD201);\r
- WriteParameter(0xa0);\r
-\r
- WriteCommand(0XD202);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD203);\r
- WriteParameter(0xa9);\r
-\r
- WriteCommand(0XD204);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD205);\r
- WriteParameter(0xb5);\r
-\r
- WriteCommand(0XD206);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD207);\r
- WriteParameter(0xbf);\r
-\r
- WriteCommand(0XD208);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD209);\r
- WriteParameter(0xc9);\r
-\r
- WriteCommand(0XD20a);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD20b);\r
- WriteParameter(0xdc);\r
-\r
- WriteCommand(0XD20c);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD20d);\r
- WriteParameter(0xEE);\r
-\r
- WriteCommand(0XD20e);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD20f);\r
- WriteParameter(0x0A);\r
-\r
- WriteCommand(0XD210);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD211);\r
- WriteParameter(0x21);\r
-\r
- WriteCommand(0XD212);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD213);\r
- WriteParameter(0x48);\r
-\r
- WriteCommand(0XD214);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD215);\r
- WriteParameter(0x67);\r
-\r
- WriteCommand(0XD216);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD217);\r
- WriteParameter(0x97);\r
-\r
- WriteCommand(0XD218);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD219);\r
- WriteParameter(0xBE);\r
-\r
- WriteCommand(0XD21a);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD21b);\r
- WriteParameter(0xC0);\r
-\r
- WriteCommand(0XD21c);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD21d);\r
- WriteParameter(0xE1);\r
-\r
- WriteCommand(0XD21e);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD21f);\r
- WriteParameter(0x04);\r
-\r
- WriteCommand(0XD220);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD221);\r
- WriteParameter(0x17);\r
-\r
- WriteCommand(0XD222);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD223);\r
- WriteParameter(0x36);\r
-\r
- WriteCommand(0XD224);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD225);\r
- WriteParameter(0x50);\r
-\r
- WriteCommand(0XD226);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD227);\r
- WriteParameter(0x7E);\r
-\r
- WriteCommand(0XD228);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD229);\r
- WriteParameter(0xAC);\r
-\r
- WriteCommand(0XD22a);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD22b);\r
- WriteParameter(0xF1);\r
-\r
- WriteCommand(0XD22C);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD22D);\r
- WriteParameter(0x20);\r
-\r
- WriteCommand(0XD22E);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD22F);\r
- WriteParameter(0x38);\r
-\r
- WriteCommand(0XD230);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD231);\r
- WriteParameter(0x43);\r
-\r
- WriteCommand(0XD232);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD233);\r
- WriteParameter(0x9A);\r
-\r
-\r
- //Gamma setting Blue\r
- WriteCommand(0XD300);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD301);\r
- WriteParameter(0x50);\r
-\r
- WriteCommand(0XD302);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD303);\r
- WriteParameter(0x53);\r
-\r
- WriteCommand(0XD304);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD305);\r
- WriteParameter(0x73);\r
-\r
- WriteCommand(0XD306);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD307);\r
- WriteParameter(0x89);\r
-\r
- WriteCommand(0XD308);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD309);\r
- WriteParameter(0x9f);\r
-\r
- WriteCommand(0XD30a);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD30b);\r
- WriteParameter(0xc1);\r
-\r
- WriteCommand(0XD30c);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD30d);\r
- WriteParameter(0xda);\r
-\r
- WriteCommand(0XD30e);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD30f);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD310);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD311);\r
- WriteParameter(0x23);\r
-\r
- WriteCommand(0XD312);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD313);\r
- WriteParameter(0x50);\r
-\r
- WriteCommand(0XD314);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD315);\r
- WriteParameter(0x6f);\r
-\r
- WriteCommand(0XD316);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD317);\r
- WriteParameter(0x9f);\r
-\r
- WriteCommand(0XD318);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD319);\r
- WriteParameter(0xc5);\r
-\r
- WriteCommand(0XD31a);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD31b);\r
- WriteParameter(0xC6);\r
-\r
- WriteCommand(0XD31c);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD31d);\r
- WriteParameter(0xE3);\r
-\r
- WriteCommand(0XD31e);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD31f);\r
- WriteParameter(0x08);\r
+ if(gLcd_info)\r
+ gLcd_info->io_init();\r
\r
- WriteCommand(0XD320);\r
- WriteParameter(0x02);\r
+ if(enable) {\r
+ LCD_ILI9803_CMD(ENTER_SLEEP_MODE);\r
+ msleep(150);\r
+ printk("lcd enter sleep mode\n");\r
+ } else {\r
+ LCD_ILI9803_CMD(EXIT_SLEEP_MODE);\r
+ msleep(150);\r
+ printk("lcd exit sleep mode\n");\r
+ }\r
\r
- WriteCommand(0XD321);\r
- WriteParameter(0x16);\r
+ if(gLcd_info)\r
+ gLcd_info->io_deinit();\r
\r
- WriteCommand(0XD322);\r
- WriteParameter(0x02);\r
+ return 0;\r
+}\r
\r
- WriteCommand(0XD323);\r
- WriteParameter(0x2b);\r
+void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )\r
+{\r
+ /* screen type & face */\r
+ screen->type = OUT_TYPE;\r
+ screen->face = OUT_FACE;\r
+\r
+ /* Screen size */\r
+ screen->x_res = H_VD;\r
+ screen->y_res = V_VD;\r
+\r
+ screen->width = LCD_WIDTH;\r
+ screen->height = LCD_HEIGHT;\r
+\r
+ /* Timing */\r
+ screen->lcdc_aclk = LCDC_ACLK;\r
+ screen->pixclock = OUT_CLK;\r
+ screen->left_margin = H_BP;\r
+ screen->right_margin = H_FP;\r
+ screen->hsync_len = H_PW;\r
+ screen->upper_margin = V_BP;\r
+ screen->lower_margin = V_FP;\r
+ screen->vsync_len = V_PW;\r
\r
- WriteCommand(0XD324);\r
- WriteParameter(0x02);\r
+ /* Pin polarity */\r
+ screen->pin_hsync = 0;\r
+ screen->pin_vsync = 0;\r
+ screen->pin_den = 0;\r
+ screen->pin_dclk = DCLK_POL;\r
\r
- WriteCommand(0XD325);\r
- WriteParameter(0x4d);\r
+ /* Swap rule */\r
+ screen->swap_rb = SWAP_RB;\r
+ screen->swap_rg = 0;\r
+ screen->swap_gb = 0;\r
+ screen->swap_delta = 0;\r
+ screen->swap_dumy = 0;\r
+\r
+ /* Operation function*/\r
+ screen->init = lcd_init;\r
+ screen->standby = lcd_standby;\r
+ if(lcd_info)\r
+ gLcd_info = lcd_info;\r
+}\r
\r
- WriteCommand(0XD326);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD327);\r
- WriteParameter(0x6f);\r
-\r
- WriteCommand(0XD328);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD329);\r
- WriteParameter(0x8C);\r
-\r
- WriteCommand(0XD32a);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD32b);\r
- WriteParameter(0xd6);\r
-\r
- WriteCommand(0XD32C);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD32D);\r
- WriteParameter(0x12);\r
-\r
- WriteCommand(0XD32E);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD32F);\r
- WriteParameter(0x28);\r
-\r
- WriteCommand(0XD330);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD331);\r
- WriteParameter(0x3e);\r
-\r
- WriteCommand(0XD332);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD333);\r
- WriteParameter(0x9A);\r
-\r
- //Gamma setting Red\r
- WriteCommand(0XD400);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD401);\r
- WriteParameter(0x20);\r
-\r
- WriteCommand(0XD402);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD403);\r
- WriteParameter(0x2b);\r
-\r
- WriteCommand(0XD404);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD405);\r
- WriteParameter(0x3c);\r
-\r
- WriteCommand(0XD406);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD407);\r
- WriteParameter(0x56);\r
-\r
- WriteCommand(0XD408);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD409);\r
- WriteParameter(0x68);\r
-\r
- WriteCommand(0XD40a);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD40b);\r
- WriteParameter(0x87);\r
-\r
- WriteCommand(0XD40c);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD40d);\r
- WriteParameter(0x9e);\r
-\r
- WriteCommand(0XD40e);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD40f);\r
- WriteParameter(0xc6);\r
-\r
- WriteCommand(0XD410);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD411);\r
- WriteParameter(0xe4);\r
-\r
- WriteCommand(0XD412);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD413);\r
- WriteParameter(0x12);\r
-\r
- WriteCommand(0XD414);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD415);\r
- WriteParameter(0x37);\r
-\r
- WriteCommand(0XD416);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD417);\r
- WriteParameter(0x75);\r
-\r
- WriteCommand(0XD418);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD419);\r
- WriteParameter(0xa5);\r
-\r
- WriteCommand(0XD41a);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD41b);\r
- WriteParameter(0xa6);\r
-\r
- WriteCommand(0XD41c);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD41d);\r
- WriteParameter(0xd0);\r
-\r
- WriteCommand(0XD41e);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD41f);\r
- WriteParameter(0xf5);\r
-\r
- WriteCommand(0XD420);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD421);\r
- WriteParameter(0x0a);\r
-\r
- WriteCommand(0XD422);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD423);\r
- WriteParameter(0x26);\r
-\r
- WriteCommand(0XD424);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD425);\r
- WriteParameter(0x3b);\r
-\r
- WriteCommand(0XD426);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD427);\r
- WriteParameter(0x6b);\r
-\r
- WriteCommand(0XD428);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD429);\r
- WriteParameter(0x99);\r
-\r
- WriteCommand(0XD42a);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD42b);\r
- WriteParameter(0xdd);\r
-\r
- WriteCommand(0XD42C);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD42D);\r
- WriteParameter(0x10);\r
-\r
- WriteCommand(0XD42E);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD42F);\r
- WriteParameter(0x26);\r
-\r
- WriteCommand(0XD430);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD431);\r
- WriteParameter(0x32);\r
-\r
- WriteCommand(0XD432);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD433);\r
- WriteParameter(0x9A);\r
-\r
- //Gamma setting Green\r
- WriteCommand(0XD500);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD501);\r
- WriteParameter(0xa0);\r
-\r
- WriteCommand(0XD502);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD503);\r
- WriteParameter(0xa9);\r
-\r
- WriteCommand(0XD504);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD505);\r
- WriteParameter(0xb5);\r
-\r
- WriteCommand(0XD506);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD507);\r
- WriteParameter(0xbf);\r
-\r
- WriteCommand(0XD508);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD509);\r
- WriteParameter(0xc9);\r
-\r
- WriteCommand(0XD50a);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD50b);\r
- WriteParameter(0xdc);\r
-\r
- WriteCommand(0XD50c);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD50d);\r
- WriteParameter(0xee);\r
-\r
- WriteCommand(0XD50e);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD50f);\r
- WriteParameter(0x0a);\r
-\r
- WriteCommand(0XD510);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD511);\r
- WriteParameter(0x21);\r
-\r
- WriteCommand(0XD512);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD513);\r
- WriteParameter(0x48);\r
-\r
- WriteCommand(0XD514);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD515);\r
- WriteParameter(0x67);\r
-\r
- WriteCommand(0XD516);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD517);\r
- WriteParameter(0x97);\r
-\r
- WriteCommand(0XD518);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD519);\r
- WriteParameter(0xbe);\r
-\r
- WriteCommand(0XD51a);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD51b);\r
- WriteParameter(0xc0);\r
-\r
- WriteCommand(0XD51c);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD51d);\r
- WriteParameter(0xe1);\r
-\r
- WriteCommand(0XD51e);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD51f);\r
- WriteParameter(0x04);\r
-\r
- WriteCommand(0XD520);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD521);\r
- WriteParameter(0x17);\r
-\r
- WriteCommand(0XD522);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD523);\r
- WriteParameter(0x36);\r
-\r
- WriteCommand(0XD524);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD525);\r
- WriteParameter(0x50);\r
-\r
- WriteCommand(0XD526);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD527);\r
- WriteParameter(0x7e);\r
-\r
- WriteCommand(0XD528);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD529);\r
- WriteParameter(0xac);\r
-\r
- WriteCommand(0XD52a);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD52b);\r
- WriteParameter(0xf1);\r
-\r
- WriteCommand(0XD52C);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD52D);\r
- WriteParameter(0x20);\r
-\r
- WriteCommand(0XD52E);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD52F);\r
- WriteParameter(0x38);\r
-\r
- WriteCommand(0XD530);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD531);\r
- WriteParameter(0x43);\r
-\r
- WriteCommand(0XD532);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD533);\r
- WriteParameter(0x9A);\r
-\r
- //Gamma setting Blue\r
- WriteCommand(0XD600);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD601);\r
- WriteParameter(0x50);\r
-\r
- WriteCommand(0XD602);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD603);\r
- WriteParameter(0x53);\r
-\r
- WriteCommand(0XD604);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD605);\r
- WriteParameter(0x73);\r
-\r
- WriteCommand(0XD606);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD607);\r
- WriteParameter(0x89);\r
-\r
- WriteCommand(0XD608);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD609);\r
- WriteParameter(0x9f);\r
-\r
- WriteCommand(0XD60a);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD60b);\r
- WriteParameter(0xc1);\r
-\r
- WriteCommand(0XD60c);\r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XD60d);\r
- WriteParameter(0xda);\r
-\r
- WriteCommand(0XD60e);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD60f);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD610);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD611);\r
- WriteParameter(0x23);\r
-\r
- WriteCommand(0XD612);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD613);\r
- WriteParameter(0x50);\r
-\r
- WriteCommand(0XD614);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD615);\r
- WriteParameter(0x6f);\r
-\r
- WriteCommand(0XD616);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD617);\r
- WriteParameter(0x9f);\r
-\r
- WriteCommand(0XD618);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD619);\r
- WriteParameter(0xc5);\r
-\r
- WriteCommand(0XD61a);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD61b);\r
- WriteParameter(0xc6);\r
-\r
- WriteCommand(0XD61c);\r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XD61d);\r
- WriteParameter(0xe3);\r
-\r
- WriteCommand(0XD61e);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD61f);\r
- WriteParameter(0x08);\r
-\r
- WriteCommand(0XD620);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD621);\r
- WriteParameter(0x16);\r
-\r
- WriteCommand(0XD622);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD623);\r
- WriteParameter(0x2b);\r
-\r
- WriteCommand(0XD624);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD625);\r
- WriteParameter(0x4d);\r
-\r
- WriteCommand(0XD626);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD627);\r
- WriteParameter(0x6f);\r
-\r
- WriteCommand(0XD628);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD629);\r
- WriteParameter(0x8c);\r
-\r
- WriteCommand(0XD62a);\r
- WriteParameter(0x02);\r
-\r
- WriteCommand(0XD62b);\r
- WriteParameter(0xd6);\r
-\r
- WriteCommand(0XD62C);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD62D);\r
- WriteParameter(0x12);\r
-\r
- WriteCommand(0XD62E);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD62F);\r
- WriteParameter(0x28);\r
-\r
- WriteCommand(0XD630);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD631);\r
- WriteParameter(0x3e);\r
-\r
- WriteCommand(0XD632);\r
- WriteParameter(0x03);\r
-\r
- WriteCommand(0XD633);\r
- WriteParameter(0x9A);\r
-\r
- WriteCommand(0XBA00); \r
- WriteParameter(0x14);\r
-\r
- WriteCommand(0XBA01); \r
- WriteParameter(0x14);\r
-\r
- WriteCommand(0XBA02); \r
- WriteParameter(0x14);\r
-\r
- WriteCommand(0XBF00); \r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XB300); \r
- WriteParameter(0x07);\r
-\r
- WriteCommand(0XB301); \r
- WriteParameter(0x07);\r
-\r
- WriteCommand(0XB302); \r
- WriteParameter(0x07);\r
-\r
- WriteCommand(0XB900); \r
- WriteParameter(0x25);\r
-\r
- WriteCommand(0XB901); \r
- WriteParameter(0x25);\r
-\r
- WriteCommand(0XB902); \r
- WriteParameter(0x25);\r
-\r
-\r
-\r
- WriteCommand(0XBC01); \r
- WriteParameter(0xA0);\r
-\r
- WriteCommand(0XBC02); \r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XBD01); \r
- WriteParameter(0xA0);\r
-\r
- WriteCommand(0XBD02); \r
- WriteParameter(0x00);\r
-\r
-\r
- WriteCommand(0XF000); \r
- WriteParameter(0x55);\r
-\r
- WriteCommand(0XF001); \r
- WriteParameter(0xAA);\r
-\r
- WriteCommand(0XF002); \r
- WriteParameter(0x52);\r
-\r
- WriteCommand(0XF003); \r
- WriteParameter(0x08);\r
-\r
- WriteCommand(0XF004); \r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XB100); \r
- WriteParameter(0xCC);\r
-\r
- WriteCommand(0XBC00); \r
- WriteParameter(0x05);\r
-\r
- WriteCommand(0XBC01); \r
- WriteParameter(0x05);\r
-\r
- WriteCommand(0XBC02); \r
- WriteParameter(0x05);\r
-\r
-\r
- WriteCommand(0XBD02); \r
- WriteParameter(0x07);\r
- WriteCommand(0XBD03); \r
- WriteParameter(0x31);\r
-\r
- WriteCommand(0XBE02); \r
- WriteParameter(0x07);\r
- WriteCommand(0XBE03); \r
- WriteParameter(0x31);\r
-\r
- WriteCommand(0XBF02); \r
- WriteParameter(0x07);\r
- WriteCommand(0XBF03); \r
- WriteParameter(0x31);\r
-\r
- WriteCommand(0XFF00); \r
- WriteParameter(0xAA);\r
- WriteCommand(0XFF01); \r
- WriteParameter(0x55);\r
- WriteCommand(0XFF02); \r
- WriteParameter(0x25);\r
- WriteCommand(0XFF03); \r
- WriteParameter(0x01);\r
-\r
-\r
- WriteCommand(0X3500); \r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0X3a00); \r
- \r
-if(OUT_FACE == OUT_P888)\r
- WriteParameter(0x70); //24bit\r
-else if(OUT_FACE == OUT_P666)\r
- WriteParameter(0x60);//18bit\r
-\r
- WriteCommand(0X3600); \r
- WriteParameter(0x00);//R<->B\r
-\r
- WriteCommand(0X2000); //\r
-\r
- WriteCommand(0X1100); \r
- mdelay(120);\r
-\r
- WriteCommand(0X2900); \r
-\r
- mdelay(100);\r
- WriteCommand(0X2C00); \r
-}\r
-\r
-\r
-void resume_nt35510(void)\r
-{\r
- WriteCommand(0X1100); \r
- mdelay(120);\r
-\r
- WriteCommand(0X1300); \r
-\r
- WriteCommand(0XF000); \r
- WriteParameter(0x55);\r
-\r
- WriteCommand(0XF001); \r
- WriteParameter(0xAA);\r
-\r
- WriteCommand(0XF002); \r
- WriteParameter(0x52);\r
-\r
- WriteCommand(0XF003); \r
- WriteParameter(0x08);\r
-\r
- WriteCommand(0XF004); \r
- WriteParameter(0x01);\r
-\r
-\r
- /**************/\r
- WriteCommand(0XBA00); \r
- WriteParameter(0x14);\r
-\r
- WriteCommand(0XBA01); \r
- WriteParameter(0x14);\r
-\r
- WriteCommand(0XBA02); \r
- WriteParameter(0x14);\r
-\r
- WriteCommand(0XBF00); \r
- WriteParameter(0x01);\r
-\r
- WriteCommand(0XB300); \r
- WriteParameter(0x07);\r
-\r
- WriteCommand(0XB301); \r
- WriteParameter(0x07);\r
-\r
- WriteCommand(0XB302); \r
- WriteParameter(0x07);\r
-\r
- WriteCommand(0XB900); \r
- WriteParameter(0x25);\r
-\r
- WriteCommand(0XB901); \r
- WriteParameter(0x25);\r
-\r
- WriteCommand(0XB902); \r
- WriteParameter(0x25);\r
-\r
-\r
-\r
- WriteCommand(0XBC01); \r
- WriteParameter(0xA0);\r
-\r
- WriteCommand(0XBC02); \r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XBD01); \r
- WriteParameter(0xA0);\r
-\r
- WriteCommand(0XBD02); \r
- WriteParameter(0x00);\r
-\r
-\r
- WriteCommand(0XF000); \r
- WriteParameter(0x55);\r
-\r
- WriteCommand(0XF001); \r
- WriteParameter(0xAA);\r
-\r
- WriteCommand(0XF002); \r
- WriteParameter(0x52);\r
-\r
- WriteCommand(0XF003); \r
- WriteParameter(0x08);\r
-\r
- WriteCommand(0XF004); \r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0XB100); \r
- WriteParameter(0xCC);\r
-\r
- WriteCommand(0XBC00); \r
- WriteParameter(0x05);\r
-\r
- WriteCommand(0XBC01); \r
- WriteParameter(0x05);\r
-\r
- WriteCommand(0XBC02); \r
- WriteParameter(0x05);\r
-\r
-\r
- WriteCommand(0XBD02); \r
- WriteParameter(0x07);\r
- WriteCommand(0XBD03); \r
- WriteParameter(0x31);\r
-\r
- WriteCommand(0XBE02); \r
- WriteParameter(0x07);\r
- WriteCommand(0XBE03); \r
- WriteParameter(0x31);\r
-\r
- WriteCommand(0XBF02); \r
- WriteParameter(0x07);\r
- WriteCommand(0XBF03); \r
- WriteParameter(0x31);\r
-\r
- WriteCommand(0XFF00); \r
- WriteParameter(0xAA);\r
- WriteCommand(0XFF01); \r
- WriteParameter(0x55);\r
- WriteCommand(0XFF02); \r
- WriteParameter(0x25);\r
- WriteCommand(0XFF03); \r
- WriteParameter(0x01);\r
-\r
-\r
- WriteCommand(0X3500); \r
- WriteParameter(0x00);\r
-\r
- WriteCommand(0X3a00); \r
- \r
-if(OUT_FACE == OUT_P888)\r
- WriteParameter(0x70); //24bit\r
-else if(OUT_FACE == OUT_P666)\r
- WriteParameter(0x60);//18bit\r
-\r
- WriteCommand(0X3600); \r
- WriteParameter(0x00);//R<->B\r
-\r
- WriteCommand(0X2000); //\r
-\r
- WriteCommand(0X1100); \r
- mdelay(120);\r
-\r
- WriteCommand(0X2900); \r
-\r
- mdelay(100);\r
- WriteCommand(0X2C00); \r
-}\r
-\r
-int init(void)\r
-{ \r
- volatile u32 data;\r
- printk("lcd init...\n");\r
- /* reset lcd to start init lcd */\r
- gpio_request(RK29_PIN6_PC6, NULL);\r
- gpio_direction_output(RK29_PIN6_PC6, 1);\r
- gpio_direction_output(RK29_PIN6_PC6, 0);\r
- mdelay(5);\r
- gpio_set_value(RK29_PIN6_PC6, 1);\r
- mdelay(50);\r
- gpio_free(RK29_PIN6_PC6);\r
-\r
- if(gLcd_info)\r
- gLcd_info->io_init();\r
- init_nt35510();\r
-\r
- if(gLcd_info)\r
- gLcd_info->io_deinit();\r
-\r
- //set_backlight(255);\r
-\r
- return 0;\r
-}\r
-\r
-int standby(u8 enable) //***enable =1 means suspend, 0 means resume \r
-{\r
- if(gLcd_info)\r
- gLcd_info->io_init();\r
-\r
- if(enable) {\r
- WriteCommand(0X2800); \r
- //set_backlight(0);\r
- mdelay(100);\r
- WriteCommand(0X1000); \r
- } else { \r
- //WriteCommand(0X1100); \r
- //mdelay(120);\r
- //WriteCommand(0X2900); \r
- //mdelay(100);\r
- //set_backlight(255);\r
- resume_nt35510();//may be fail to wake up LCD some time,so change to init lcd again\r
- }\r
-\r
- if(gLcd_info)\r
- gLcd_info->io_deinit();\r
-\r
- return 0;\r
-}\r
\r
\r