obj-$(CONFIG_LCD_TD043MGEA1) += lcd_td043mgea1.o
obj-$(CONFIG_LCD_HSD070IDW1) += lcd_hsd800x480.o
obj-$(CONFIG_LCD_HL070VM4AU) += lcd_hl070vm4.o
-ifeq ($(CONFIG_MACH_RK2808SDK),y)
-obj-$(CONFIG_LCD_TJ048NC01CA) += lcd_tj048nc01ca.o
-endif
-ifeq ($(CONFIG_MACH_PWS700AA),y)
+
obj-$(CONFIG_LCD_TJ048NC01CA) += lcd_tj048nc01ca.o
-endif
-ifeq ($(CONFIG_MACH_LANMO_W7),y)
-obj-$(CONFIG_LCD_TJ048NC01CA) += lanmow7_lcd048.o
-endif
obj-$(CONFIG_LCD_A060SE02) += lcd_a060se02.o
obj-$(CONFIG_LCD_S1D13521) += lcd_s1d13521.o
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
#define OUT_TYPE SCREEN_RGB
#define OUT_FACE OUT_P888
#define DCLK_POL 0
-#define SWAP_RB 1
+#define SWAP_RB 0
/* 576p Timing */
#define OUT_CLK 27
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
/* Base */
/* Other */
#define DCLK_POL 0
-#define SWAP_RB 1
+#define SWAP_RB 0
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
/* Base */
/* Other */
#define DCLK_POL 1 ///0
-#define SWAP_RB 1
+#define SWAP_RB 0
+
+#define CS_OUT() gpio_direction_output(RK2818_PIN_PA4, 0)
+#define CS_SET() gpio_set_value(RK2818_PIN_PA4, GPIO_HIGH)
+#define CS_CLR() gpio_set_value(RK2818_PIN_PA4, GPIO_LOW)
+#define CLK_OUT() gpio_direction_output(RK2818_PIN_PE7, 0) //I2C0_SCL
+#define CLK_SET() gpio_set_value(RK2818_PIN_PE7, GPIO_HIGH)
+#define CLK_CLR() gpio_set_value(RK2818_PIN_PE7, GPIO_LOW)
+#define TXD_OUT() gpio_direction_output(RK2818_PIN_PE6, 0) //I2C0_SDA
+#define TXD_SET() gpio_set_value(RK2818_PIN_PE6, GPIO_HIGH)
+#define TXD_CLR() gpio_set_value(RK2818_PIN_PE6, GPIO_LOW)
+
+#define DRVDelayUs(i) udelay(i*2)
int init(void);
int standby(u8 enable);
+void screen_set_iomux(u8 enable)
+{
+ int ret=-1;
+ if(enable)
+ {
+ rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 0);
+ ret = gpio_request(RK2818_PIN_PA4, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PA4);
+ printk(">>>>>> lcd cs gpio_request err \n ");
+ goto pin_err;
+ }
+
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 0);
+
+ ret = gpio_request(RK2818_PIN_PE7, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PE7);
+ printk(">>>>>> lcd clk gpio_request err \n ");
+ goto pin_err;
+ }
+
+ ret = gpio_request(RK2818_PIN_PE6, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PE6);
+ printk(">>>>>> lcd txd gpio_request err \n ");
+ goto pin_err;
+ }
+ }
+ else
+ {
+ gpio_free(RK2818_PIN_PA4);
+ rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1);
+
+ gpio_free(RK2818_PIN_PE7);
+ gpio_free(RK2818_PIN_PE6);
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2);
+ }
+ return ;
+pin_err:
+ return ;
+
+}
+
void set_lcd_info(struct rk28fb_screen *screen)
{
/* screen type & face */
//void spi_screenreg_set(uint32 Addr, uint32 Data)
-void spi_screenreg_set(uint32 Data)
+void spi_screenreg_set(u32 Data)
{
-//#define CS_OUT() GPIOSetPinDirection(GPIOPortB_Pin3, GPIO_OUT) //CS
-#define CS_OUT() GPIOSetPinDirection(GPIOPortB_Pin2, GPIO_OUT)
-#define CS_SET() GPIOSetPinLevel(GPIOPortB_Pin2, GPIO_HIGH)
-#define CS_CLR() GPIOSetPinLevel(GPIOPortB_Pin2, GPIO_LOW)
-//#define CLK_OUT() GPIOSetPinDirection(GPIOPortE_Pin7, GPIO_OUT) //I2C0_SCL
-#define CLK_OUT() GPIOSetPinDirection(GPIOPortE_Pin5, GPIO_OUT)
-#define CLK_SET() GPIOSetPinLevel(GPIOPortE_Pin5, GPIO_HIGH)
-#define CLK_CLR() GPIOSetPinLevel(GPIOPortE_Pin5, GPIO_LOW)
-//#define TXD_OUT() GPIOSetPinDirection(GPIOPortE_Pin6, GPIO_OUT) //I2C0_SDA
-#define TXD_OUT() GPIOSetPinDirection(GPIOPortE_Pin4, GPIO_OUT)
-#define TXD_SET() GPIOSetPinLevel(GPIOPortE_Pin4, GPIO_HIGH)
-#define TXD_CLR() GPIOSetPinLevel(GPIOPortE_Pin4, GPIO_LOW)
-
-#define DRVDelayUs(i) udelay(i*2)
- uint32 i;
+ u32 i;
TXD_OUT();
CLK_OUT();
CS_OUT();
int init(void)
{
- rockchip_mux_api_set(GPIOB2_U0CTSN_SEL_NAME, IOMUXB_GPIO0_B2);
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_GPIO1_A45);
+ screen_set_iomux(1);
/*
r0 00000010 11011011
r1 00010001 01101111
spi_screenreg_set(0x3008);
spi_screenreg_set(0x419f);
spi_screenreg_set(0x61ce);
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+ screen_set_iomux(0);
return 0;
}
int standby(u8 enable)
{
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_GPIO1_A45);
+ screen_set_iomux(1);
if(!enable) {
init();
} //else {
// spi_screenreg_set(0x03, 0x5f);
// }
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+ screen_set_iomux(0);
return 0;
}
/* This Lcd Driver is HSD070IDW1 write by cst 2009.10.27 */
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
+
/* Base */
#define OUT_TYPE SCREEN_RGB
#define OUT_FACE OUT_P888
/* Other */
#define DCLK_POL 1
-#define SWAP_RB 1
+#define SWAP_RB 0
+
+#define CS_OUT() gpio_direction_output(RK2818_PIN_PA4, 0)
+#define CS_SET() gpio_set_value(RK2818_PIN_PA4, GPIO_HIGH)
+#define CS_CLR() gpio_set_value(RK2818_PIN_PA4, GPIO_LOW)
+#define CLK_OUT() gpio_direction_output(RK2818_PIN_PE7, 0) //I2C0_SCL
+#define CLK_SET() gpio_set_value(RK2818_PIN_PE7, GPIO_HIGH)
+#define CLK_CLR() gpio_set_value(RK2818_PIN_PE7, GPIO_LOW)
+#define TXD_OUT() gpio_direction_output(RK2818_PIN_PE6, 0) //I2C0_SDA
+#define TXD_SET() gpio_set_value(RK2818_PIN_PE6, GPIO_HIGH)
+#define TXD_CLR() gpio_set_value(RK2818_PIN_PE6, GPIO_LOW)
+
+#define DRVDelayUs(i) udelay(i*2)
int init(void);
int standby(u8 enable);
+void screen_set_iomux(u8 enable)
+{
+ int ret=-1;
+ if(enable)
+ {
+ rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 0);
+ ret = gpio_request(RK2818_PIN_PA4, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PA4);
+ printk(">>>>>> lcd cs gpio_request err \n ");
+ goto pin_err;
+ }
+
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 0);
+
+ ret = gpio_request(RK2818_PIN_PE7, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PE7);
+ printk(">>>>>> lcd clk gpio_request err \n ");
+ goto pin_err;
+ }
+
+ ret = gpio_request(RK2818_PIN_PE6, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PE6);
+ printk(">>>>>> lcd txd gpio_request err \n ");
+ goto pin_err;
+ }
+ }
+ else
+ {
+ gpio_free(RK2818_PIN_PA4);
+ rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1);
+
+ gpio_free(RK2818_PIN_PE7);
+ gpio_free(RK2818_PIN_PE6);
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2);
+ }
+ return ;
+pin_err:
+ return ;
+
+}
+
void set_lcd_info(struct rk28fb_screen *screen)
{
/* screen type & face */
}
//cannot need init,so set screen->init = null at rk28_fb.c file
-void spi_screenreg_set(uint32 Addr, uint32 Data)
+void spi_screenreg_set(u32 Addr, u32 Data)
{
-#define CS_OUT() GPIOSetPinDirection(GPIOPortB_Pin3, GPIO_OUT)
-#define CS_SET() GPIOSetPinLevel(GPIOPortB_Pin3, GPIO_HIGH)
-#define CS_CLR() GPIOSetPinLevel(GPIOPortB_Pin3, GPIO_LOW)
-#define CLK_OUT() GPIOSetPinDirection(GPIOPortE_Pin7, GPIO_OUT) //I2C0_SCL
-#define CLK_SET() GPIOSetPinLevel(GPIOPortE_Pin7, GPIO_HIGH)
-#define CLK_CLR() GPIOSetPinLevel(GPIOPortE_Pin7, GPIO_LOW)
-#define TXD_OUT() GPIOSetPinDirection(GPIOPortE_Pin6, GPIO_OUT) //I2C0_SDA
-#define TXD_SET() GPIOSetPinLevel(GPIOPortE_Pin6, GPIO_HIGH)
-#define TXD_CLR() GPIOSetPinLevel(GPIOPortE_Pin6, GPIO_LOW)
-
-#define DRVDelayUs(i) udelay(i*2)
-
- uint32 i;
+ u32 i;
TXD_OUT();
CLK_OUT();
int init(void)
{
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_GPIO1_A45);
+ screen_set_iomux(1);
spi_screenreg_set(0x02, 0x07);
spi_screenreg_set(0x03, 0x5f);
spi_screenreg_set(0x21, 0xF0);
spi_screenreg_set(0x22, 0x09);
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+ screen_set_iomux(0);
return 0;
}
int standby(u8 enable)
{
-#if 0
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_GPIO1_A45);
+#if 1
+ screen_set_iomux(1);
if(enable) {
spi_screenreg_set(0x03, 0xde);
} else {
spi_screenreg_set(0x03, 0x5f);
}
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+ screen_set_iomux(0);
#else
GPIOSetPinDirection(GPIOPortB_Pin3, GPIO_OUT);
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
+
/* Base */
#define OUT_TYPE SCREEN_RGB
#define OUT_FACE OUT_P888
/* Other */
#define DCLK_POL 0
-#define SWAP_RB 1
-
+#define SWAP_RB 0
-#define CS_OUT() GPIOSetPinDirection(GPIOPortB_Pin3, GPIO_OUT)
-#define CS_SET() GPIOSetPinLevel(GPIOPortB_Pin3, GPIO_HIGH)
-#define CS_CLR() GPIOSetPinLevel(GPIOPortB_Pin3, GPIO_LOW)
-#define CLK_OUT() GPIOSetPinDirection(GPIOPortE_Pin7, GPIO_OUT) //I2C0_SCL
-#define CLK_SET() GPIOSetPinLevel(GPIOPortE_Pin7, GPIO_HIGH)
-#define CLK_CLR() GPIOSetPinLevel(GPIOPortE_Pin7, GPIO_LOW)
-#define TXD_OUT() GPIOSetPinDirection(GPIOPortE_Pin6, GPIO_OUT) //I2C0_SDA
-#define TXD_SET() GPIOSetPinLevel(GPIOPortE_Pin6, GPIO_HIGH)
-#define TXD_CLR() GPIOSetPinLevel(GPIOPortE_Pin6, GPIO_LOW)
-#define TXD_IN() GPIOSetPinDirection(GPIOPortE_Pin6, GPIO_IN)
-#define TXD_GET() GPIOGetPinLevel(GPIOPortE_Pin6)
+#define CS_OUT() gpio_direction_output(RK2818_PIN_PA4, 0)
+#define CS_SET() gpio_set_value(RK2818_PIN_PA4, GPIO_HIGH)
+#define CS_CLR() gpio_set_value(RK2818_PIN_PA4, GPIO_LOW)
+#define CLK_OUT() gpio_direction_output(RK2818_PIN_PE7, 0) //I2C0_SCL
+#define CLK_SET() gpio_set_value(RK2818_PIN_PE7, GPIO_HIGH)
+#define CLK_CLR() gpio_set_value(RK2818_PIN_PE7, GPIO_LOW)
+#define TXD_OUT() gpio_direction_output(RK2818_PIN_PE6, 0) //I2C0_SDA
+#define TXD_SET() gpio_set_value(RK2818_PIN_PE6, GPIO_HIGH)
+#define TXD_CLR() gpio_set_value(RK2818_PIN_PE6, GPIO_LOW)
+#define TXD_IN() gpio_direction_input(RK2818_PIN_PE6)
+#define TXD_GET() gpio_get_value(RK2818_PIN_PE6)
#define delay_us(i) udelay(i)
-uint32 spi_screenreg_get(uint32 Addr)
+u32 spi_screenreg_get(u32 Addr)
{
- uint32 i;
+ u32 i;
u8 addr_h = (Addr>>8) & 0x000000ff;
u8 addr_l = Addr & 0x000000ff;
u8 cmd1 = 0x20; //0010 0000
}
-void spi_screenreg_set(uint32 Addr, uint32 Data)
+void spi_screenreg_set(u32 Addr, u32 Data)
{
- uint32 i;
+ u32 i;
u8 addr_h = (Addr>>8) & 0x000000ff;
u8 addr_l = Addr & 0x000000ff;
u8 data_l = Data & 0x000000ff;
GPIO_SetPinLevel(reset_pin,GPIO_HIGH);
#endif
- rockchip_mux_api_set(GPIOE_U1IR_I2C1_NAME, IOMUXA_GPIO1_A67);
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, IOMUXA_GPIO1_A67);
spi_screenreg_set(0x2E80, 0x0001);
spi_screenreg_set(0x0680, 0x002D);
}
#endif
- rockchip_mux_api_set(GPIOE_U1IR_I2C1_NAME, IOMUXA_I2C1);
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, IOMUXA_I2C1);
return 0;
}
}
-
-
-
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
/* Base */
/* Other */
#define DCLK_POL 0
-#define SWAP_RB 1
+#define SWAP_RB 0
-void Set_LCD_8B_REG(unsigned char regh,unsigned char regl, uint32 data)
+void Set_LCD_8B_REG(unsigned char regh,unsigned char regl, u32 data)
{
- uint32 cmd;
+ u32 cmd;
cmd = (regh<<8) + regl;
if(-1==data) {
mcu_ioctl(MCU_WRCMD,cmd);
Set_LCD_8B_REG(0x2b,0X03,0X1f);
msleep(100);
{
- uint32 fte = 0;
+ u32 fte = 0;
Set_LCD_8B_REG(0x44,0x00,(fte>>8)&0xff);
Set_LCD_8B_REG(0x44,0x01,(fte)&0xff);
}
int lcd_disparea(u8 area)
{
- uint32 x0, y0, x1, y1, fte;
+ u32 x0, y0, x1, y1, fte;
mcu_ioctl(MCU_SETBYPASS, 1);
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
-
void set_lcd_info(struct rk28fb_screen *screen)
{
memset(screen, 0, sizeof(struct rk28fb_screen));
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
#include "s1d13521.h"
/* Other */
#define DCLK_POL 0
-#define SWAP_RB 1
+#define SWAP_RB 0
int s1d13521if_refresh(u8 arg);
-#define GPIO_RESET_L GPIOPortC_Pin0 //reset pin
-#define GPIO_HIRQ GPIOPortC_Pin1 //IRQ
-#define GPIO_HDC GPIOPortC_Pin2 //Data(HIHG) or Command(LOW)
-#define GPIO_HCS_L GPIOPortC_Pin3 //Chip select
-#define GPIO_HRD_L GPIOPortC_Pin4 //Read mode, low active
-#define GPIO_HWE_L GPIOPortC_Pin5 //Write mode, low active
-#define GPIO_HRDY GPIOPortC_Pin6 //Bus ready
-#define GPIO_RMODE GPIOPortC_Pin7 //rmode ->CNF1
+#define GPIO_RESET_L RK2818_PIN_PC0//reset pin
+#define GPIO_HIRQ RK2818_PIN_PC1 //IRQ
+#define GPIO_HDC RK2818_PIN_PC2 //Data(HIHG) or Command(LOW)
+#define GPIO_HCS_L RK2818_PIN_PC3 //Chip select
+#define GPIO_HRD_L RK2818_PIN_PC4 //Read mode, low active
+#define GPIO_HWE_L RK2818_PIN_PC5 //Write mode, low active
+#define GPIO_HRDY RK2818_PIN_PC6 //Bus ready
+#define GPIO_RMODE RK2818_PIN_PC7 //rmode ->CNF1
//----------------------------------------------------------------------------
int s1d13521if_wait_for_ready(void)
{
int cnt = 1000;
- int d = GPIOGetPinLevel(GPIO_HRDY);
+ int d = 0;
+ gpio_request(GPIO_HRDY, 0);
+ d = gpio_get_value(GPIO_HRDY);
while (d == 0)
{
return -1;
}
- d = GPIOGetPinLevel(GPIO_HRDY);
+ d = gpio_get_value(GPIO_HRDY);
}
-
+ gpio_free(GPIO_HRDY);
return 0;
}
void s1d13521if_init_gpio(void)
{
int i;
- rockchip_mux_api_set(GPIOC_LCDC18BIT_SEL_NAME, IOMUXB_GPIO0_C01);
- rockchip_mux_api_set(GPIOC_LCDC24BIT_SEL_NAME, IOMUXB_GPIO0_C2_7);
- for(i = 0; i < 8; i++){
- if(i == 1 || i == 6){//HIRQ, HRDY
- GPIOSetPinDirection(GPIOPortC_Pin0+i, GPIO_IN);
- } else {//RESET_L, HD/C, HCS_L, HRD_L, HWE_L, RMODE
- GPIOSetPinDirection(GPIOPortC_Pin0+i, GPIO_OUT);
- GPIOPullUpDown(GPIOPortC_Pin0+i, GPIOPullUp);
- GPIOSetPinLevel(GPIOPortC_Pin0+i, GPIO_HIGH);
+ int ret=0;
+
+ rk2818_mux_api_set(GPIOC_LCDC18BIT_SEL_NAME, IOMUXB_GPIO0_C01);
+ rk2818_mux_api_set(GPIOC_LCDC24BIT_SEL_NAME, IOMUXB_GPIO0_C2_7);
+
+ for(i = 0; i < 8; i++)
+ {
+ if(i == 1 || i == 6)//HIRQ, HRDY
+ {
+ ret = gpio_request(GPIO_RESET_L+i, NULL);
+ if(ret != 0)
+ {
+ gpio_free(GPIO_RESET_L+i);
+ printk(">>>>>> lcd cs gpio_request err \n ");
+ }
+ gpio_direction_input(GPIO_RESET_L+i);
+ gpio_free(GPIO_RESET_L+i);
+ }
+ else //RESET_L, HD/C, HCS_L, HRD_L, HWE_L, RMODE
+ {
+ ret = gpio_request(GPIO_RESET_L+i, NULL);
+ if(ret != 0)
+ {
+ gpio_free(GPIO_RESET_L+i);
+ printk(">>>>>> lcd cs gpio_request err \n ");
+ }
+ gpio_direction_output(GPIO_RESET_L+i, 0);
+ gpio_set_value(GPIO_RESET_L+i, GPIO_HIGH);
+ gpio_free(GPIO_RESET_L+i);
}
}
}
void s1d13521if_set_reset(void)
{
- GPIOSetPinLevel(GPIO_RMODE, GPIO_HIGH);
+ gpio_request(GPIO_RMODE, 0);
+ gpio_set_value(GPIO_RMODE, GPIO_HIGH);
+ gpio_request(GPIO_RESET_L, 0);
// reset pulse
mdelay(10);
- GPIOSetPinLevel(GPIO_RESET_L, GPIO_LOW);
+ gpio_set_value(GPIO_RESET_L, GPIO_LOW);
mdelay(10);
- GPIOSetPinLevel(GPIO_RESET_L, GPIO_HIGH);
+ gpio_set_value(GPIO_RESET_L, GPIO_HIGH);
mdelay(10);
+ gpio_free(GPIO_RMODE);
+ gpio_free(GPIO_RESET_L);
//s1d13521if_WaitForHRDY();
}
#define DCLK_POL 0
#define SWAP_RB 0
-
#define CS_OUT() gpio_direction_output(RK2818_PIN_PA4, 0)
#define CS_SET() gpio_set_value(RK2818_PIN_PA4, GPIO_HIGH)
#define CS_CLR() gpio_set_value(RK2818_PIN_PA4, GPIO_LOW)
#define TXD_SET() gpio_set_value(RK2818_PIN_PE6, GPIO_HIGH)
#define TXD_CLR() gpio_set_value(RK2818_PIN_PE6, GPIO_LOW)
-
int init(void);
int standby(u8 enable);
#include <linux/fb.h>
#include <linux/delay.h>
-#include <asm/arch/lcdcon.h>
-#include <asm/arch/rk28_i2c.h>
-#include <asm/arch/rk28_fb.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/iomux.h>
+#include "../../rk2818_fb.h"
+#include <mach/gpio.h>
+#include <mach/iomux.h>
#include "screen.h"
+
/* Base */
#define OUT_TYPE SCREEN_RGB
#define OUT_FACE OUT_P888
/* Other */
#define DCLK_POL 1
-#define SWAP_RB 1
+#define SWAP_RB 0
+
+#define CS_OUT() gpio_direction_output(RK2818_PIN_PA4, 0)
+#define CS_SET() gpio_set_value(RK2818_PIN_PA4, GPIO_HIGH)
+#define CS_CLR() gpio_set_value(RK2818_PIN_PA4, GPIO_LOW)
+#define CLK_OUT() gpio_direction_output(RK2818_PIN_PE7, 0) //I2C0_SCL
+#define CLK_SET() gpio_set_value(RK2818_PIN_PE7, GPIO_HIGH)
+#define CLK_CLR() gpio_set_value(RK2818_PIN_PE7, GPIO_LOW)
+#define TXD_OUT() gpio_direction_output(RK2818_PIN_PE6, 0) //I2C0_SDA
+#define TXD_SET() gpio_set_value(RK2818_PIN_PE6, GPIO_HIGH)
+#define TXD_CLR() gpio_set_value(RK2818_PIN_PE6, GPIO_LOW)
+
+#define DRVDelayUs(i) udelay(i*2)
int lcd_init(void);
int lcd_standby(u8 enable);
+void screen_set_iomux(u8 enable)
+{
+ int ret=-1;
+ if(enable)
+ {
+ rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 0);
+ ret = gpio_request(RK2818_PIN_PA4, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PA4);
+ printk(">>>>>> lcd cs gpio_request err \n ");
+ goto pin_err;
+ }
+
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 0);
+
+ ret = gpio_request(RK2818_PIN_PE7, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PE7);
+ printk(">>>>>> lcd clk gpio_request err \n ");
+ goto pin_err;
+ }
+
+ ret = gpio_request(RK2818_PIN_PE6, NULL);
+ if(0)//(ret != 0)
+ {
+ gpio_free(RK2818_PIN_PE6);
+ printk(">>>>>> lcd txd gpio_request err \n ");
+ goto pin_err;
+ }
+ }
+ else
+ {
+ gpio_free(RK2818_PIN_PA4);
+ rk2818_mux_api_set(CXGPIO_HSADC_SEL_NAME, 1);
+
+ gpio_free(RK2818_PIN_PE7);
+ gpio_free(RK2818_PIN_PE6);
+ rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, 2);
+ }
+ return ;
+pin_err:
+ return ;
+
+}
+
void set_lcd_info(struct rk28fb_screen *screen)
{
/* screen type & face */
}
-void spi_screenreg_set(uint32 Addr, uint32 Data)
+void spi_screenreg_set(u32 Addr, u32 Data)
{
-#define CS_OUT() GPIOSetPinDirection(GPIOPortB_Pin3, GPIO_OUT)
-#define CS_SET() GPIOSetPinLevel(GPIOPortB_Pin3, GPIO_HIGH)
-#define CS_CLR() GPIOSetPinLevel(GPIOPortB_Pin3, GPIO_LOW)
-#define CLK_OUT() GPIOSetPinDirection(GPIOPortE_Pin5, GPIO_OUT) //I2C0_SCL
-#define CLK_SET() GPIOSetPinLevel(GPIOPortE_Pin5, GPIO_HIGH)
-#define CLK_CLR() GPIOSetPinLevel(GPIOPortE_Pin5, GPIO_LOW)
-#define TXD_OUT() GPIOSetPinDirection(GPIOPortE_Pin4, GPIO_OUT) //I2C0_SDA
-#define TXD_SET() GPIOSetPinLevel(GPIOPortE_Pin4, GPIO_HIGH)
-#define TXD_CLR() GPIOSetPinLevel(GPIOPortE_Pin4, GPIO_LOW)
-
-#define DRVDelayUs(i) udelay(i*2)
-
- uint32 i;
+ u32 i;
TXD_OUT();
CLK_OUT();
int lcd_init(void)
{
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_GPIO1_A45);
-
+ screen_set_iomux(1);
//R(0xess (A5~A0) Data(D7~D0)
#if 0
spi_screenreg_set(0x03, 0x86);
spi_screenreg_set(0x26, 0xFF);
#endif
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+ screen_set_iomux(0);
return 0;
}
int lcd_standby(u8 enable)
{
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_GPIO1_A45);
+ screen_set_iomux(1);
if(enable) {
spi_screenreg_set(0x43, 0x20);
} else {
spi_screenreg_set(0x43, 0xE0);
}
- rockchip_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+ screen_set_iomux(0);
return 0;
}