Lines Matching refs:fbi
275 struct mmpfb_info *fbi = info->par;
291 (var->bits_per_pixel >> 3) > fbi->fb_size)
315 struct mmpfb_info *fbi = info->par;
322 fbi->pseudo_palette[regno] = val;
336 struct mmpfb_info *fbi = info->par;
341 * var->bits_per_pixel / 8 + fbi->fb_start_dma;
342 mmp_overlay_set_addr(fbi->overlay, &addr);
349 struct mmpfb_info *fbi = info->par;
359 fbi->pix_fmt = pix_fmt;
364 dev_err(fbi->dev, "set par: no match mode, use best mode\n");
369 memcpy(&fbi->mode, m, sizeof(struct fb_videomode));
382 struct mmpfb_info *fbi = info->par;
388 win.xsrc = win.xdst = fbi->mode.xres;
389 win.ysrc = win.ydst = fbi->mode.yres;
390 win.pix_fmt = fbi->pix_fmt;
395 mmp_overlay_set_win(fbi->overlay, &win);
400 struct mmpfb_info *fbi = info->par;
411 fbmode_to_mmpmode(&mode, &fbi->mode, fbi->output_fmt);
412 mmp_path_set_mode(fbi->path, &mode);
420 * var->bits_per_pixel / 8 + fbi->fb_start_dma;
421 mmp_overlay_set_addr(fbi->overlay, &addr);
426 static void mmpfb_power(struct mmpfb_info *fbi, int power)
429 struct fb_var_screeninfo *var = &fbi->fb_info->var;
434 mmpfb_set_win(fbi->fb_info);
438 addr.phys[0] = fbi->fb_start_dma +
441 mmp_overlay_set_addr(fbi->overlay, &addr);
443 mmp_overlay_set_onoff(fbi->overlay, power);
448 struct mmpfb_info *fbi = info->par;
450 mmpfb_power(fbi, (blank == FB_BLANK_UNBLANK));
465 static int modes_setup(struct mmpfb_info *fbi)
469 struct fb_info *info = fbi->fb_info;
473 videomode_num = mmp_path_get_modelist(fbi->path, &mmp_modes);
475 dev_warn(fbi->dev, "can't get videomode num\n");
489 memcpy(&fbi->mode, &videomodes[0], sizeof(struct fb_videomode));
490 fbi->output_fmt = mmp_modes[0].pix_fmt_out;
491 fb_videomode_to_var(&info->var, &fbi->mode);
492 mmp_path_set_mode(fbi->path, &mmp_modes[0]);
499 struct mmpfb_info *fbi)
506 strcpy(info->fix.id, fbi->name);
513 info->fix.smem_start = fbi->fb_start_dma;
514 info->fix.smem_len = fbi->fb_size;
515 info->fix.visual = (fbi->pix_fmt == PIXFMT_PSEUDOCOLOR) ?
520 info->pseudo_palette = fbi->pseudo_palette;
521 info->screen_buffer = fbi->fb_start;
522 info->screen_size = fbi->fb_size;
540 struct mmpfb_info *fbi;
553 fbi = info->par;
556 fbi->fb_info = info;
557 platform_set_drvdata(pdev, fbi);
558 fbi->dev = &pdev->dev;
559 fbi->name = mi->name;
560 fbi->pix_fmt = mi->default_pixfmt;
561 pixfmt_to_var(&info->var, fbi->pix_fmt);
562 mutex_init(&fbi->access_ok);
565 fbi->path = mmp_get_path(mi->path_name);
566 if (!fbi->path) {
572 dev_info(fbi->dev, "path %s get\n", fbi->path->name);
575 fbi->overlay = mmp_path_get_overlay(fbi->path, mi->overlay_id);
576 if (!fbi->overlay) {
581 mmp_overlay_set_fetch(fbi->overlay, mi->dmafetch_id);
583 modes_num = modes_setup(fbi);
598 fbi->fb_size = info->var.xres_virtual * info->var.yres_virtual
601 fbi->fb_size = MMPFB_DEFAULT_SIZE;
604 fbi->fb_start = dma_alloc_coherent(&pdev->dev, PAGE_ALIGN(fbi->fb_size),
605 &fbi->fb_start_dma, GFP_KERNEL);
606 if (fbi->fb_start == NULL) {
611 dev_info(fbi->dev, "fb %dk allocated\n", fbi->fb_size/1024);
615 mmpfb_power(fbi, 1);
617 ret = fb_info_setup(info, fbi);
628 dev_info(fbi->dev, "loaded to /dev/fb%d <%s>.\n",
636 dma_free_coherent(&pdev->dev, PAGE_ALIGN(fbi->fb_size), fbi->fb_start,
637 fbi->fb_start_dma);
639 mutex_destroy(&fbi->access_ok);
640 dev_err(fbi->dev, "mmp-fb: frame buffer device init failed\n");