From 45166c7028855564883df23e617220730c85e6d0 Mon Sep 17 00:00:00 2001 From: hjc Date: Fri, 31 Oct 2014 16:48:32 +0800 Subject: [PATCH] rk312x lcdc: kernel bcsh selete depend on uboot config --- drivers/video/rockchip/lcdc/rk312x_lcdc.c | 13 ++++++++++--- include/linux/rk_fb.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/video/rockchip/lcdc/rk312x_lcdc.c b/drivers/video/rockchip/lcdc/rk312x_lcdc.c index 6b4b6cefe922..d8ffc64d8105 100755 --- a/drivers/video/rockchip/lcdc/rk312x_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk312x_lcdc.c @@ -727,8 +727,12 @@ static int rk312x_lcdc_pre_init(struct rk_lcdc_driver *dev_drv) lcdc_cfg_done(lcdc_dev); while(lcdc_readl(lcdc_dev, SYS_CTRL) & (m_WIN0_EN | m_WIN1_EN)); }*/ - if ((dev_drv->ops->open_bcsh) && (dev_drv->output_color == COLOR_YCBCR)) - dev_drv->ops->open_bcsh(dev_drv, 1); + if ((dev_drv->ops->open_bcsh) && (dev_drv->output_color == COLOR_YCBCR)) { + if(support_uboot_display()) + dev_drv->bcsh_init_status = 1; + else + dev_drv->ops->open_bcsh(dev_drv, 1); + } lcdc_dev->pre_init = true; return 0; @@ -1998,7 +2002,10 @@ static int rk312x_lcdc_open_bcsh(struct rk_lcdc_driver *dev_drv, bool open) struct lcdc_device *lcdc_dev = container_of(dev_drv, struct lcdc_device, driver); u32 mask, val; - + if(dev_drv->bcsh_init_status && open) { + dev_drv->bcsh_init_status = 0; + return 0; + } spin_lock(&lcdc_dev->reg_lock); if (lcdc_dev->clk_on) { rk312x_lcdc_select_bcsh(dev_drv, lcdc_dev); diff --git a/include/linux/rk_fb.h b/include/linux/rk_fb.h index 85959bace47d..bf9b6205d68f 100755 --- a/include/linux/rk_fb.h +++ b/include/linux/rk_fb.h @@ -593,6 +593,7 @@ struct rk_lcdc_driver { struct rk_lcdc_bcsh bcsh; int *hwc_lut; int uboot_logo; + int bcsh_init_status; }; struct rk_fb_par { -- 2.34.1