mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
rk29:modify lcd driver
This commit is contained in:
58
arch/arm/mach-rk29/board-rk29-phonesdk.c
Executable file → Normal file
58
arch/arm/mach-rk29/board-rk29-phonesdk.c
Executable file → Normal file
@@ -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 = >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",
|
||||
|
||||
@@ -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 Ƶ<><C6B5> //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();
|
||||
if(Addr &(1<<(8-i)))
|
||||
TXD_SET();
|
||||
else
|
||||
TXD_CLR();
|
||||
|
||||
// \u6a21\u62dfCLK
|
||||
CLK_SET();
|
||||
DRVDelayUs(2);
|
||||
CLK_CLR();
|
||||
DRVDelayUs(2);
|
||||
// \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();
|
||||
if(Addr &(1<<(8-i)))
|
||||
TXD_SET();
|
||||
else
|
||||
TXD_CLR();
|
||||
|
||||
// \u6a21\u62dfCLK
|
||||
CLK_SET();
|
||||
DRVDelayUs(2);
|
||||
CLK_CLR();
|
||||
DRVDelayUs(2);
|
||||
// \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();
|
||||
if(Data0 &(1<<(8-i)))
|
||||
TXD_SET();
|
||||
else
|
||||
TXD_CLR();
|
||||
|
||||
// \u6a21\u62dfCLK
|
||||
CLK_SET();
|
||||
DRVDelayUs(2);
|
||||
CLK_CLR();
|
||||
DRVDelayUs(2);
|
||||
// \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();
|
||||
if(Data1 &(1<<(8-i)))
|
||||
TXD_SET();
|
||||
else
|
||||
TXD_CLR();
|
||||
|
||||
// \u6a21\u62dfCLK
|
||||
CLK_SET();
|
||||
DRVDelayUs(2);
|
||||
CLK_CLR();
|
||||
DRVDelayUs(2);
|
||||
// \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);
|
||||
|
||||
Reference in New Issue
Block a user