* 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
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;
}
};
#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
.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",
/* 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 */
#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
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();
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();
//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();
//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();
//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();
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;
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);