Lines Matching refs:info
225 static void picolcd_fb_update(struct fb_info *info)
229 struct picolcd_fb_data *fbdata = info->par;
232 mutex_lock(&info->lock);
258 mutex_unlock(&info->lock);
262 mutex_lock(&info->lock);
277 mutex_unlock(&info->lock);
283 mutex_unlock(&info->lock);
287 static void picolcd_fb_fillrect(struct fb_info *info,
290 if (!info->par)
292 sys_fillrect(info, rect);
294 schedule_delayed_work(&info->deferred_work, 0);
298 static void picolcd_fb_copyarea(struct fb_info *info,
301 if (!info->par)
303 sys_copyarea(info, area);
305 schedule_delayed_work(&info->deferred_work, 0);
309 static void picolcd_fb_imageblit(struct fb_info *info, const struct fb_image *image)
311 if (!info->par)
313 sys_imageblit(info, image);
315 schedule_delayed_work(&info->deferred_work, 0);
322 static ssize_t picolcd_fb_write(struct fb_info *info, const char __user *buf,
326 if (!info->par)
328 ret = fb_sys_write(info, buf, count, ppos);
330 schedule_delayed_work(&info->deferred_work, 0);
334 static int picolcd_fb_blank(int blank, struct fb_info *info)
340 static void picolcd_fb_destroy(struct fb_info *info)
342 struct picolcd_fb_data *fbdata = info->par;
345 fb_deferred_io_cleanup(info);
350 vfree((u8 *)info->fix.smem_start);
351 framebuffer_release(info);
354 static int picolcd_fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
376 static int picolcd_set_par(struct fb_info *info)
378 struct picolcd_fb_data *fbdata = info->par;
380 if (info->var.bits_per_pixel == fbdata->bpp)
383 if (info->var.bits_per_pixel != 1 && info->var.bits_per_pixel != 8)
387 tmp_fb = kmalloc_array(PICOLCDFB_SIZE, info->var.bits_per_pixel,
393 if (info->var.bits_per_pixel == 1) {
404 info->fix.visual = FB_VISUAL_MONO01;
405 info->fix.line_length = PICOLCDFB_WIDTH / 8;
411 info->fix.visual = FB_VISUAL_DIRECTCOLOR;
412 info->fix.line_length = PICOLCDFB_WIDTH;
416 fbdata->bpp = info->var.bits_per_pixel;
435 static void picolcd_fb_deferred_io(struct fb_info *info, struct list_head *pagelist)
437 picolcd_fb_update(info);
501 struct fb_info *info = NULL;
510 info = framebuffer_alloc(256 * sizeof(u32) +
514 if (!info)
517 info->fbdefio = info->par;
518 *info->fbdefio = picolcd_fb_defio;
519 info->par += sizeof(struct fb_deferred_io);
520 palette = info->par;
521 info->par += 256 * sizeof(u32);
524 info->pseudo_palette = palette;
525 info->fbops = &picolcdfb_ops;
526 info->var = picolcdfb_var;
527 info->fix = picolcdfb_fix;
528 info->fix.smem_len = PICOLCDFB_SIZE*8;
529 info->flags = FBINFO_FLAG_DEFAULT;
531 fbdata = info->par;
537 fbdata->vbitmap = info->par + sizeof(struct picolcd_fb_data);
543 info->screen_base = (char __force __iomem *)fbdata->bitmap;
544 info->fix.smem_start = (unsigned long)fbdata->bitmap;
546 data->fb_info = info;
560 fb_deferred_io_init(info);
561 error = register_framebuffer(info);
570 fb_deferred_io_cleanup(info);
577 framebuffer_release(info);
583 struct fb_info *info = data->fb_info;
587 if (!info)
591 fbdata = info->par;
601 flush_delayed_work(&info->deferred_work);
604 unregister_framebuffer(info);