static int rk3188_lcdc_ovl_mgr(struct rk_lcdc_device_driver *dev_drv,int swap,bool set) { struct rk3188_lcdc_device *lcdc_dev = container_of(dev_drv,struct rk3188_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_WIN0_TOP,v_WIN0_TOP(swap)); //lcdc_cfg_done(lcdc_dev); ovl = swap; } else //get overlay { ovl = lcdc_read_bit(lcdc_dev,DSP_CTRL0,m_WIN0_TOP); } } 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 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; }
static int rk30_lcdc_get_layer_state(struct rk_lcdc_device_driver *dev_drv,int layer_id) { struct rk30_lcdc_device *lcdc_dev = container_of(dev_drv,struct rk30_lcdc_device,driver); struct layer_par *par = dev_drv->layer_par[layer_id]; spin_lock(&lcdc_dev->reg_lock); if(lcdc_dev->clk_on) { if(layer_id == 0) { par->state = lcdc_read_bit(lcdc_dev,SYS_CTRL1,m_W0_EN); } else if( layer_id == 1) { par->state = lcdc_read_bit(lcdc_dev,SYS_CTRL1,m_W1_EN); } } spin_unlock(&lcdc_dev->reg_lock); return par->state; }
static ssize_t rk30_lcdc_get_disp_info(struct rk_lcdc_device_driver *dev_drv,char *buf,int layer_id) { struct rk30_lcdc_device *lcdc_dev = container_of(dev_drv,struct rk30_lcdc_device,driver); char format_w0[9]= "NULL"; char format_w1[9]= "NULL"; char format_w2[9]= "NULL"; char status_w0[9]= "NULL"; char status_w1[9]= "NULL"; char status_w2[9]= "NULL"; u32 fmt_id = lcdc_readl(lcdc_dev,SYS_CTRL1); u32 act_info,dsp_info,dsp_st,factor; u16 xvir_w0,x_act_w0,y_act_w0,x_dsp_w0,y_dsp_w0,x_st_w0,y_st_w0; u16 xvir_w1,x_act_w1,y_act_w1,x_dsp_w1,y_dsp_w1,x_st_w1,y_st_w1; u16 xvir_w2,x_dsp_w2,y_dsp_w2,x_st_w2,y_st_w2; u16 x_scale_w0,y_scale_w0,x_scale_w1,y_scale_w1; int ovl = lcdc_read_bit(lcdc_dev,DSP_CTRL0,m_W0W1_POSITION_SWAP); switch((fmt_id&m_W0_FORMAT)>>4) { case 0: strcpy(format_w0,"ARGB888"); break; case 1: strcpy(format_w0,"RGB888"); break; case 2: strcpy(format_w0,"RGB565"); break; case 4: strcpy(format_w0,"YCbCr420"); break; case 5: strcpy(format_w0,"YCbCr422"); break; case 6: strcpy(format_w0,"YCbCr444"); break; default: strcpy(format_w0,"inval\n"); break; } switch((fmt_id&m_W1_FORMAT)>>7) { case 0: strcpy(format_w1,"ARGB888"); break; case 1: strcpy(format_w1,"RGB888"); break; case 2: strcpy(format_w1,"RGB565"); break; case 4: strcpy(format_w1,"YCbCr420"); break; case 5: strcpy(format_w1,"YCbCr422"); break; case 6: strcpy(format_w1,"YCbCr444"); break; default: strcpy(format_w1,"inval\n"); break; } switch((fmt_id&m_W2_FORMAT)>>10) { case 0: strcpy(format_w2,"ARGB888"); break; case 1: strcpy(format_w2,"RGB888"); break; case 2: strcpy(format_w2,"RGB565"); break; case 4: strcpy(format_w2,"8bpp"); break; case 5: strcpy(format_w2,"4bpp"); break; case 6: strcpy(format_w2,"2bpp"); break; case 7: strcpy(format_w2,"1bpp"); break; default: strcpy(format_w2,"inval\n"); break; } if(fmt_id&m_W0_EN) { strcpy(status_w0,"enabled"); } else { strcpy(status_w0,"disabled"); } if((fmt_id&m_W1_EN)>>1) { strcpy(status_w1,"enabled"); } else {