/*********************************** overlay manager swap:1 win0 on the top of win1 0 win1 on the top of win0 set : 1 set overlay 0 get overlay state ************************************/ static int rk30_lcdc_ovl_mgr(struct rk_lcdc_device_driver *dev_drv,int swap,bool set) { struct rk30_lcdc_device *lcdc_dev = container_of(dev_drv,struct rk30_lcdc_device,driver); int ovl; spin_lock(&lcdc_dev->reg_lock); if(lcdc_dev->clk_on) { if(set) //set overlay { lcdc_msk_reg(lcdc_dev,DSP_CTRL0,m_W0W1_POSITION_SWAP,v_W0W1_POSITION_SWAP(swap)); lcdc_writel(lcdc_dev, REG_CFG_DONE, 0x01); lcdc_cfg_done(lcdc_dev); ovl = swap; } else //get overlay { ovl = lcdc_read_bit(lcdc_dev,DSP_CTRL0,m_W0W1_POSITION_SWAP); } } else { ovl = -EPERM; } spin_unlock(&lcdc_dev->reg_lock); return ovl; }
/*********************************** overlay manager swap:1 win0 on the top of win1 0 win1 on the top of win0 set : 1 set overlay 0 get overlay state ************************************/ static int rk3066b_lcdc_ovl_mgr(struct rk_lcdc_device_driver *dev_drv,int swap,bool set) { struct rk3066b_lcdc_device *lcdc_dev = container_of(dev_drv,struct rk3066b_lcdc_device,driver); int ovl; spin_lock(&lcdc_dev->reg_lock); if(lcdc_dev->clk_on) { if(set) //set overlay { LcdMskReg(lcdc_dev,DSP_CTRL0,m_W0W1_POSITION_SWAP,v_W0W1_POSITION_SWAP(swap)); LcdWrReg(lcdc_dev, REG_CFG_DONE, 0x01); LCDC_REG_CFG_DONE(); ovl = swap; } else //get overlay { ovl = LcdReadBit(lcdc_dev,DSP_CTRL0,m_W0W1_POSITION_SWAP); } } else { ovl = -EPERM; } spin_unlock(&lcdc_dev->reg_lock); return ovl; }