HHB add LCD ili9803 driver support
authorroot <root@lw.(none)>
Tue, 17 May 2011 14:30:11 +0000 (22:30 +0800)
committerroot <root@lw.(none)>
Tue, 17 May 2011 14:30:11 +0000 (22:30 +0800)
arch/arm/configs/rk29_a22_defconfig
drivers/video/display/screen/Kconfig
drivers/video/display/screen/Makefile
drivers/video/display/screen/lcd_ili9803_cpt4_3.c

index ca3747917609dbff55b413b7ef7378a10a141fba..8d0db39c2b34d5772efcde075ae2694b4b5a58aa 100644 (file)
@@ -1318,7 +1318,8 @@ CONFIG_DISPLAY_SUPPORT=y
 # CONFIG_LCD_NT35580 is not set
 # CONFIG_LCD_IPS1P5680_V1_E is not set
 # CONFIG_LCD_MCU_TFT480800_25_E is not set
-CONFIG_LCD_ILI9803_CPT4_3=y
+CONFIG_LCD_NT35510=y
+# CONFIG_LCD_ILI9803_CPT4_3 is not set
 # CONFIG_DEFAULT_OUT_HDMI is not set
 # CONFIG_LCD_AT070TNA2 is not set
 
index f66de43eff00dab62668354b06b29b02a75c643a..cc508268fe47d68d8577b420e0695760fee41960 100755 (executable)
@@ -37,8 +37,8 @@ config LCD_IPS1P5680_V1_E
        bool "MCU IPS1P5680_V1_E"
 config LCD_MCU_TFT480800_25_E
        bool "MCU TFT480800_25_E"
-config LCD_ILI9803_CPT4_3
-       bool "RGB lcd_ILI9803_CPT4_3"   
+config LCD_NT35510
+       bool "RGB lcd_nt35510"  
 config LCD_ILI9803_CPT4_3
        bool "RGB lcd_ILI9803_CPT4_3"   
 config LCD_IPS1P5680_V1_E
index 7de6f48dd45223f8af9a8ffbe9a397cc22a3a664..2909467dec2640868b9a5f2428fe30574adb410d 100755 (executable)
@@ -21,6 +21,7 @@ obj-$(CONFIG_LCD_CPTCLAA038LA31XE) += lcd_CPTclaa038la31xe.o
 obj-$(CONFIG_LCD_HX8357) += lcd_hx8357.o
 obj-$(CONFIG_LCD_HSD100PXN) += lcd_hsd100pxn.o
 obj-$(CONFIG_LCD_B101AW06) += lcd_B101AW06.o
+obj-$(CONFIG_LCD_NT35510) += lcd_nt35510.o
 obj-$(CONFIG_LCD_ILI9803_CPT4_3) += lcd_ili9803_cpt4_3.o
 obj-$(CONFIG_LCD_RGB_TFT480800_25_E) += lcd_rgb_tft480800_25_e.o
 obj-$(CONFIG_LCD_LS035Y8DX02A) += lcd_ls035y8dx02a.o
index c905911e7200723c6e4efea3991beb1f66f0e324..7b281a318af0001805501e9d177f04977aa19886 100755 (executable)
@@ -1,3 +1,23 @@
+/*\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