From 3e03c25b284876213156fb6fffcbc98b5538e13f Mon Sep 17 00:00:00 2001 From: hhb Date: Tue, 29 Mar 2011 16:52:21 +0800 Subject: [PATCH] rk29:modify lcd driver --- arch/arm/mach-rk29/board-rk29-phonesdk.c | 58 ++++----- .../video/display/screen/lcd_ls035y8dx02a.c | 119 +++++++++--------- 2 files changed, 80 insertions(+), 97 deletions(-) mode change 100755 => 100644 arch/arm/mach-rk29/board-rk29-phonesdk.c diff --git a/arch/arm/mach-rk29/board-rk29-phonesdk.c b/arch/arm/mach-rk29/board-rk29-phonesdk.c old mode 100755 new mode 100644 index 0726161eaf6e..b3bc8c979cd5 --- a/arch/arm/mach-rk29/board-rk29-phonesdk.c +++ b/arch/arm/mach-rk29/board-rk29-phonesdk.c @@ -133,9 +133,10 @@ struct rk29_nand_platform_data rk29_nand_data = { * author: zyw@rock-chips.com *****************************************************************************************/ //#ifdef CONFIG_LCD_TD043MGEA1 -#define LCD_TXD_PIN INVALID_GPIO -#define LCD_CLK_PIN INVALID_GPIO -#define LCD_CS_PIN INVALID_GPIO +#define LCD_RXD_PIN RK29_PIN2_PC7 +#define LCD_TXD_PIN RK29_PIN2_PC6 +#define LCD_CLK_PIN RK29_PIN2_PC4 +#define LCD_CS_PIN RK29_PIN2_PC5 /***************************************************************************************** * frame buffer devices * author: zyw@rock-chips.com @@ -153,12 +154,30 @@ struct rk29_nand_platform_data rk29_nand_data = { static int rk29_lcd_io_init(void) { int ret = 0; + printk("rk29_lcd_io_init\n"); + ret = gpio_request(LCD_RXD_PIN, NULL); + ret = gpio_request(LCD_TXD_PIN, NULL); + ret = gpio_request(LCD_CLK_PIN, NULL); + ret = gpio_request(LCD_CS_PIN, NULL); + rk29_mux_api_set(GPIO2C7_SPI1RXD_NAME,GPIO2H_GPIO2C7); + rk29_mux_api_set(GPIO2C6_SPI1TXD_NAME,GPIO2H_GPIO2C6); + rk29_mux_api_set(GPIO2C5_SPI1CSN0_NAME,GPIO2H_GPIO2C5); + rk29_mux_api_set(GPIO2C4_SPI1CLK_NAME,GPIO2H_GPIO2C4); return ret; } static int rk29_lcd_io_deinit(void) { int ret = 0; + printk("rk29_lcd_io_deinit\n"); + gpio_free(LCD_CS_PIN); + gpio_free(LCD_CLK_PIN); + gpio_free(LCD_TXD_PIN); + gpio_free(LCD_RXD_PIN); + rk29_mux_api_set(GPIO2C7_SPI1RXD_NAME,GPIO2H_SPI1_RXD); + rk29_mux_api_set(GPIO2C6_SPI1TXD_NAME,GPIO2H_SPI1_TXD); + rk29_mux_api_set(GPIO2C5_SPI1CSN0_NAME,GPIO2H_SPI1_CSN0); + rk29_mux_api_set(GPIO2C4_SPI1CLK_NAME,GPIO2H_SPI1_CLK); return ret; } @@ -417,30 +436,6 @@ static struct eeti_egalax_platform_data eeti_egalax_info = { }; #endif -/* GT801 touch I2C */ -#if defined (CONFIG_GT801) -#include -#define TOUCH_RESET_PIN RK29_PIN6_PC3 -#define TOUCH_INT_PIN RK29_PIN4_PD5 - -static struct gt801_platform_data gt801_info = { - .model = 801, - .swap_xy = 0, - .x_min = 0, - .x_max = 480, - .y_min = 0, - .y_max = 800, - .gpio_reset = TOUCH_RESET_PIN, - .gpio_reset_active_low = 1, - .gpio_pendown = TOUCH_INT_PIN, - .pendown_iomux_name = GPIO4D5_CPUTRACECTL_NAME, - .resetpin_iomux_name = "FFF", - .pendown_iomux_mode = GPIO4H_GPIO4D5, - .resetpin_iomux_mode = 0, - .get_pendown_state = NULL, -}; -#endif - /*MMA8452 gsensor*/ #if defined (CONFIG_GS_MMA8452) #define MMA8452_INT_PIN RK29_PIN6_PC4 @@ -1573,15 +1568,6 @@ static struct i2c_board_info __initdata board_i2c2_devices[] = { .platform_data = >801_info, }, #endif -#if defined (CONFIG_GT801) - { - .type = "gt801_touch", - .addr = 0x55, - .flags = 0, - .irq = RK29_PIN4_PD5, - .platform_data = >801_info, - }, -#endif #if defined (CONFIG_MFD_WM831X_I2C) { .type = "wm8310", diff --git a/drivers/video/display/screen/lcd_ls035y8dx02a.c b/drivers/video/display/screen/lcd_ls035y8dx02a.c index dadb05bb456d..469411e9a4ff 100755 --- a/drivers/video/display/screen/lcd_ls035y8dx02a.c +++ b/drivers/video/display/screen/lcd_ls035y8dx02a.c @@ -27,7 +27,7 @@ /* Base */ #define OUT_TYPE SCREEN_RGB #define OUT_FACE OUT_P888 -#define OUT_CLK 26 //***27 +#define OUT_CLK (26*1000000) //***27 uint Hz #define LCDC_ACLK 150000000 //29 lcdc axi DMA Ƶ�� //rk29 /* Timing */ @@ -57,7 +57,7 @@ int lcd_standby(u8 enable); #define CLK_PORT RK2818_PIN_PB5 //gLcd_info->clk_pin #define CS_PORT RK2818_PIN_PB4 // gLcd_info->cs_pin */ -#define RXD_PORT 1 +#define RXD_PORT RK29_PIN2_PC7 #define TXD_PORT gLcd_info->txd_pin #define CLK_PORT gLcd_info->clk_pin #define CS_PORT gLcd_info->cs_pin @@ -98,16 +98,16 @@ u32 spi_screenreg_get(u32 Addr) 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); + if(Addr &(1<<(8-i))) + TXD_SET(); + else + TXD_CLR(); + + // \u6a21\u62dfCLK + CLK_SET(); + DRVDelayUs(2); + CLK_CLR(); + DRVDelayUs(2); } CS_SET(); @@ -118,18 +118,18 @@ u32 spi_screenreg_get(u32 Addr) CS_CLR(); for(i = 0; i < 9; i++) { - CLK_SET(); - DRVDelayUs(2); - CLK_CLR(); - if(RXD_GET()) - { - data |= 1<<(8-i); - } - else - { - data &= ~(1<<(8-i)); - } - DRVDelayUs(2); + CLK_SET(); + DRVDelayUs(2); + CLK_CLR(); + if(RXD_GET()) + { + data |= 1<<(8-i); + } + else + { + data &= ~(1<<(8-i)); + } + DRVDelayUs(2); } CS_SET(); CLK_CLR(); @@ -163,16 +163,16 @@ void spi_screenreg_set(u32 Addr, u32 Data0, u32 Data1) //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); + if(Addr &(1<<(8-i))) + TXD_SET(); + else + TXD_CLR(); + + // \u6a21\u62dfCLK + CLK_SET(); + DRVDelayUs(2); + CLK_CLR(); + DRVDelayUs(2); } CS_SET(); @@ -190,16 +190,16 @@ void spi_screenreg_set(u32 Addr, u32 Data0, u32 Data1) //printk("data0 is 0x%x \n", Data); for(i = 0; i < 9; i++) //data { - if(Data0 &(1<<(8-i))) - TXD_SET(); - else - TXD_CLR(); - - // \u6a21\u62dfCLK - CLK_SET(); - DRVDelayUs(2); - CLK_CLR(); - DRVDelayUs(2); + if(Data0 &(1<<(8-i))) + TXD_SET(); + else + TXD_CLR(); + + // \u6a21\u62dfCLK + CLK_SET(); + DRVDelayUs(2); + CLK_CLR(); + DRVDelayUs(2); } CS_SET(); @@ -217,16 +217,16 @@ void spi_screenreg_set(u32 Addr, u32 Data0, u32 Data1) //printk("data1 is 0x%x \n", Data); for(i = 0; i < 9; i++) //data { - if(Data1 &(1<<(8-i))) - TXD_SET(); - else - TXD_CLR(); - - // \u6a21\u62dfCLK - CLK_SET(); - DRVDelayUs(2); - CLK_CLR(); - DRVDelayUs(2); + if(Data1 &(1<<(8-i))) + TXD_SET(); + else + TXD_CLR(); + + // \u6a21\u62dfCLK + CLK_SET(); + DRVDelayUs(2); + CLK_CLR(); + DRVDelayUs(2); } CS_SET(); @@ -237,7 +237,6 @@ void spi_screenreg_set(u32 Addr, u32 Data0, u32 Data1) 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; @@ -281,12 +280,10 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info ) int lcd_init(void) { volatile u32 data; - // rk2818_mux_api_set(GPIOB_SPI0_MMC0_NAME,IOMUXA_GPIO0_B567); - // rk2818_mux_api_set(GPIOB4_SPI0CS0_MMC0D4_NAME,IOMUXA_GPIO0_B4); - //gpio_pull_updown(RK2818_PIN_PB7, GPIOPullUp); - if(gLcd_info) - {printk("lcd init11111111111111111111111111...\n"); - gLcd_info->io_init();} + if(gLcd_info){ + printk("lcd init11111111111111111111111111...\n"); + gLcd_info->io_init(); + } printk("lcd init22222222222222222222222222...\n"); printk("lcd init...\n"); spi_screenreg_set(0x29, 0xffff, 0xffff); -- 2.34.1