From e109d315f333f8c10232c2e609cdb5312a3de0e0 Mon Sep 17 00:00:00 2001 From: kfx Date: Tue, 7 Aug 2012 11:23:32 +0800 Subject: [PATCH] rk2928: lvds support, lcd support --- drivers/video/display/screen/lcd_hsd100pxn.c | 1 + drivers/video/rockchip/lvds/rk_lvds.c | 11 ++++++++++- drivers/video/rockchip/lvds/rk_lvds.h | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/video/display/screen/lcd_hsd100pxn.c b/drivers/video/display/screen/lcd_hsd100pxn.c index c11fa732613c..b840a51382e8 100755 --- a/drivers/video/display/screen/lcd_hsd100pxn.c +++ b/drivers/video/display/screen/lcd_hsd100pxn.c @@ -36,6 +36,7 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info ) /* screen type & face */ screen->type = OUT_TYPE; screen->face = OUT_FACE; + screen->hw_format = 1; /* Screen size */ screen->x_res = H_VD; diff --git a/drivers/video/rockchip/lvds/rk_lvds.c b/drivers/video/rockchip/lvds/rk_lvds.c index 0fd1656120cb..72885dfde55b 100644 --- a/drivers/video/rockchip/lvds/rk_lvds.c +++ b/drivers/video/rockchip/lvds/rk_lvds.c @@ -7,10 +7,16 @@ static void rk_output_lvds(rk_screen *screen) { - LVDSWrReg(m_PD_PLL(1)|m_PD_PLL(0)|m_PDN(1)|m_OEN(0) \ + printk("%s: %x\n", __func__, m_PDN_CBG(1)|m_PD_PLL(0)|m_PDN(1)|m_OEN(0) \ |m_DS(DS_10PF)|m_MSBSEL(DATA_D0_MSB) \ |m_OUT_FORMAT(screen->hw_format) \ |m_LCDC_SEL(FROM_LCDC0)); + LVDSWrReg(m_PDN_CBG(1)|m_PD_PLL(0)|m_PDN(1)|m_OEN(0) \ + |m_DS(DS_10PF)|m_MSBSEL(DATA_D0_MSB) \ + |m_OUT_FORMAT(screen->hw_format) \ + |m_LCDC_SEL(FROM_LCDC0)); + + printk("%s: reg = 0x%x\n", __func__, LVDSRdReg()); } static void rk_output_lvttl(rk_screen *screen) @@ -19,11 +25,13 @@ static void rk_output_lvttl(rk_screen *screen) |m_DS(DS_10PF)|m_MSBSEL(DATA_D0_MSB) \ |m_OUT_FORMAT(screen->hw_format) \ |m_LCDC_SEL(FROM_LCDC0)); + printk("%s: reg = 0x%x\n", __func__, LVDSRdReg()); } static void rk_output_disable(void) { LVDSWrReg(m_PD_PLL(0)|m_PD_PLL(0)|m_PDN(0)|m_OEN(0)); + printk("%s: reg = 0x%x\n", __func__, LVDSRdReg()); } static int rk_lvds_set_param(rk_screen *screen,bool enable ) @@ -32,6 +40,7 @@ static int rk_lvds_set_param(rk_screen *screen,bool enable ) switch(screen->type){ case SCREEN_LVDS: rk_output_lvds(screen); + break; case SCREEN_RGB: rk_output_lvttl(screen); diff --git a/drivers/video/rockchip/lvds/rk_lvds.h b/drivers/video/rockchip/lvds/rk_lvds.h index f5289344d885..4298433cb9da 100644 --- a/drivers/video/rockchip/lvds/rk_lvds.h +++ b/drivers/video/rockchip/lvds/rk_lvds.h @@ -8,7 +8,7 @@ #define LVDSWrReg(val) __raw_writel( val ,LVDS_CON0_REG) #define m_value(x,offset,mask) \ - ((mask<<(offset+8)) | (x&mask)<