Пример #1
0
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;
}
Пример #2
0
/***********************************
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;
}
Пример #3
0
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;
	
}
Пример #4
0
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
	{