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); }
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"); }
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; }
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; }