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