rk29:modify lcd driver
authorhhb <hhb@rock-chips.com>
Tue, 29 Mar 2011 08:52:21 +0000 (16:52 +0800)
committerhhb <hhb@rock-chips.com>
Tue, 29 Mar 2011 09:13:28 +0000 (17:13 +0800)
arch/arm/mach-rk29/board-rk29-phonesdk.c [changed mode: 0755->0644]
drivers/video/display/screen/lcd_ls035y8dx02a.c

old mode 100755 (executable)
new mode 100644 (file)
index 0726161..b3bc8c9
@@ -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 <drivers/input/touchscreen/gt801.h> 
-#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 = &gt801_info,
 },     
 #endif
-#if defined (CONFIG_GT801)
-    {
-      .type           = "gt801_touch",
-      .addr           = 0x55,
-      .flags          = 0,
-      .irq            = RK29_PIN4_PD5,
-      .platform_data  = &gt801_info,
-    },
-#endif
 #if defined (CONFIG_MFD_WM831X_I2C)
 {
        .type           = "wm8310",
index dadb05bb456d3e8e858ef5e2e2c5c4fb74e88fd6..469411e9a4ff59a8c6f7248fdb3a41fbe5983fda 100755 (executable)
@@ -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);