From 601de0bf0549e2e517c813cc3883a59afdc43c1b Mon Sep 17 00:00:00 2001 From: yxj Date: Sun, 21 Apr 2013 10:50:19 +0800 Subject: [PATCH] mfd:rk616:support lcd1 as RGB output port --- .../video/display/transmitter/rk616_lvds.c | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/drivers/video/display/transmitter/rk616_lvds.c b/drivers/video/display/transmitter/rk616_lvds.c index 5b823eb2b393..ac7bfec9766a 100644 --- a/drivers/video/display/transmitter/rk616_lvds.c +++ b/drivers/video/display/transmitter/rk616_lvds.c @@ -310,27 +310,20 @@ static int rk616_set_router(struct mfd_rk616 *rk616,rk_screen *screen) } else if((pdata->lcd0_func == INPUT) && (pdata->lcd1_func == OUTPUT)) { - if(screen->type == SCREEN_RGB) - { - route->vif0_bypass = 1; - route->vif0_en = 0; - route->vif1_bypass = 1; - route->vif1_en = 0; - route->sclin_sel = 0; // scl from vif0 - route->scl_en = 1; - route->dither_sel = 1; - route->hdmi_sel = 2; //hdmi from lcd0 - route->lcd1_input = 0; //lcd1 as out put - route->lvds_en = 0; - dev_info(rk616->dev, - "rk616 use lcd0 as input and lcd1 as" - "output for dual display\n"); - } - else - { - dev_err(rk616->dev,"rk616 lcd1 only support RGB port in output mode\n"); - return -EINVAL; - } + route->vif0_bypass = 1; + route->vif0_en = 0; + route->vif1_bypass = 1; + route->vif1_en = 0; + route->sclin_sel = 0; // scl from vif0 + route->scl_en = 1; + route->dither_sel = 0; + route->hdmi_sel = 2; //hdmi from lcd0 + route->lcd1_input = 0; //lcd1 as out put + route->lvds_en = 0; + dev_info(rk616->dev, + "rk616 use lcd0 as input and lcd1 as" + "output for dual display\n"); + } else if((pdata->lcd0_func == UNUSED) && (pdata->lcd1_func == INPUT)) { @@ -400,8 +393,7 @@ static int rk616_display_router_cfg(struct mfd_rk616 *rk616,rk_screen *screen) if(!route->lcd1_input) //set lcd1 port for output as RGB interface { - val &= ~(LCD1_INPUT_EN); - val |= (LCD1_INPUT_EN << 16); + val = (LCD1_INPUT_EN << 16); ret = rk616->write_dev(rk616,CRU_IO_CON0,&val); } } @@ -434,11 +426,6 @@ static int rk616_display_router_cfg(struct mfd_rk616 *rk616,rk_screen *screen) dev_info(rk616->dev,"rk616 use single lvds channel.......\n"); } - val = FRC_DCLK_INV | (FRC_DCLK_INV << 16); - ret = rk616->write_dev(rk616,FRC_REG,&val); - - - } else //mux lvds port to RGB mode { @@ -457,6 +444,8 @@ static int rk616_display_router_cfg(struct mfd_rk616 *rk616,rk_screen *screen) } + val = FRC_DCLK_INV | (FRC_DCLK_INV << 16); + ret = rk616->write_dev(rk616,FRC_REG,&val); ret = rk616_vif_cfg(rk616,screen,0); ret = rk616_vif_cfg(rk616,screen,1); -- 2.34.1