Beispiel #1
0
static int _disp_get_ump_secure_id(struct fb_info *info, struct rk_fb_inf *g_fbi,
				   unsigned long arg, int nbuf)
{
	u32 __user *psecureid = (u32 __user *) arg;
	int buf_len = 1920*1080*4;
//	int buf_len = info->var.xres * info->var.yres * (info->var.bits_per_pixel >> 3);
	ump_secure_id secure_id;
        int layer_id = get_fb_layer_id(&info->fix);

//if(nbuf>0) return -ENOTSUPP;
//printk("\nUMP: ENTER   num_fb:%d  num_buf:%d",layer_id,nbuf);
	if (!(info->var.yres * 2 <= info->var.yres_virtual))//IAM
	    printk("\nUMP: Double-buffering not enabled");
//	else

	if (!g_fbi->ump_wrapped_buffer[layer_id][nbuf]) {
		ump_dd_physical_block ump_memory_description;

		ump_memory_description.addr = info->fix.smem_start;
		ump_memory_description.size = buf_len;
		if (nbuf > 0) {
		    ump_memory_description.addr += (buf_len * nbuf);
//		    ump_memory_description.size = buf_len;
		}
//printk("\nUMP: nbuf:%d, addr:%X, size:%X\n",nbuf, ump_memory_description.addr,ump_memory_description.size);
		g_fbi->ump_wrapped_buffer[layer_id][nbuf] =
			ump_dd_handle_create_from_phys_blocks
			(&ump_memory_description, 1);
	}
	secure_id = ump_dd_secure_id_get(g_fbi->
					 ump_wrapped_buffer[layer_id][nbuf]);
//printk("UMP: secure_id:%X, arg:%X",secure_id,arg);
	return put_user((unsigned int)secure_id, psecureid);
}
Beispiel #2
0
static ssize_t show_fb_state(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct fb_info *fbi = dev_get_drvdata(dev);
	struct rk_lcdc_device_driver * dev_drv = 
		(struct rk_lcdc_device_driver * )fbi->par;
	int layer_id = get_fb_layer_id(&fbi->fix);
	int state = dev_drv->get_layer_state(dev_drv,layer_id);
	return snprintf(buf, PAGE_SIZE, "%s\n",state?"enabled":"disabled");
	
}
Beispiel #3
0
static ssize_t show_disp_info(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct fb_info *fbi = dev_get_drvdata(dev);
	struct rk_lcdc_device_driver * dev_drv = 
		(struct rk_lcdc_device_driver * )fbi->par;
	int layer_id = get_fb_layer_id(&fbi->fix);
	if(dev_drv->get_disp_info)
		dev_drv->get_disp_info(dev_drv,layer_id);

	return 0;
}
Beispiel #4
0
static ssize_t set_fb_state(struct device *dev,struct device_attribute *attr,
	const char *buf, size_t count)
{
	struct fb_info *fbi = dev_get_drvdata(dev);
	struct rk_lcdc_device_driver * dev_drv = 
		(struct rk_lcdc_device_driver * )fbi->par;
	int layer_id = get_fb_layer_id(&fbi->fix);
	int state;
	int ret;
	ret = kstrtoint(buf, 0, &state);
	if(ret)
	{
		return ret;
	}
	dev_drv->open(dev_drv,layer_id,state);
	return count;
}