Lines Matching refs:fbi
290 struct mmpfb_info *fbi = info->par; in mmpfb_check_var() local
306 (var->bits_per_pixel >> 3) > fbi->fb_size) in mmpfb_check_var()
330 struct mmpfb_info *fbi = info->par; in mmpfb_setcolreg() local
337 fbi->pseudo_palette[regno] = val; in mmpfb_setcolreg()
351 struct mmpfb_info *fbi = info->par; in mmpfb_pan_display() local
356 * var->bits_per_pixel / 8 + fbi->fb_start_dma; in mmpfb_pan_display()
357 mmp_overlay_set_addr(fbi->overlay, &addr); in mmpfb_pan_display()
364 struct mmpfb_info *fbi = info->par; in var_update() local
374 fbi->pix_fmt = pix_fmt; in var_update()
379 dev_err(fbi->dev, "set par: no match mode, use best mode\n"); in var_update()
384 memcpy(&fbi->mode, m, sizeof(struct fb_videomode)); in var_update()
397 struct mmpfb_info *fbi = info->par; in mmpfb_set_win() local
403 win.xsrc = win.xdst = fbi->mode.xres; in mmpfb_set_win()
404 win.ysrc = win.ydst = fbi->mode.yres; in mmpfb_set_win()
405 win.pix_fmt = fbi->pix_fmt; in mmpfb_set_win()
410 mmp_overlay_set_win(fbi->overlay, &win); in mmpfb_set_win()
415 struct mmpfb_info *fbi = info->par; in mmpfb_set_par() local
426 fbmode_to_mmpmode(&mode, &fbi->mode, fbi->output_fmt); in mmpfb_set_par()
427 mmp_path_set_mode(fbi->path, &mode); in mmpfb_set_par()
435 * var->bits_per_pixel / 8 + fbi->fb_start_dma; in mmpfb_set_par()
436 mmp_overlay_set_addr(fbi->overlay, &addr); in mmpfb_set_par()
441 static void mmpfb_power(struct mmpfb_info *fbi, int power) in mmpfb_power() argument
444 struct fb_var_screeninfo *var = &fbi->fb_info->var; in mmpfb_power()
449 mmpfb_set_win(fbi->fb_info); in mmpfb_power()
453 addr.phys[0] = fbi->fb_start_dma + in mmpfb_power()
456 mmp_overlay_set_addr(fbi->overlay, &addr); in mmpfb_power()
458 mmp_overlay_set_onoff(fbi->overlay, power); in mmpfb_power()
463 struct mmpfb_info *fbi = info->par; in mmpfb_blank() local
465 mmpfb_power(fbi, (blank == FB_BLANK_UNBLANK)); in mmpfb_blank()
482 static int modes_setup(struct mmpfb_info *fbi) in modes_setup() argument
486 struct fb_info *info = fbi->fb_info; in modes_setup()
490 videomode_num = mmp_path_get_modelist(fbi->path, &mmp_modes); in modes_setup()
492 dev_warn(fbi->dev, "can't get videomode num\n"); in modes_setup()
499 dev_err(fbi->dev, "can't malloc video modes\n"); in modes_setup()
507 memcpy(&fbi->mode, &videomodes[0], sizeof(struct fb_videomode)); in modes_setup()
508 fbi->output_fmt = mmp_modes[0].pix_fmt_out; in modes_setup()
509 fb_videomode_to_var(&info->var, &fbi->mode); in modes_setup()
510 mmp_path_set_mode(fbi->path, &mmp_modes[0]); in modes_setup()
517 struct mmpfb_info *fbi) in fb_info_setup() argument
524 strcpy(info->fix.id, fbi->name); in fb_info_setup()
531 info->fix.smem_start = fbi->fb_start_dma; in fb_info_setup()
532 info->fix.smem_len = fbi->fb_size; in fb_info_setup()
533 info->fix.visual = (fbi->pix_fmt == PIXFMT_PSEUDOCOLOR) ? in fb_info_setup()
538 info->pseudo_palette = fbi->pseudo_palette; in fb_info_setup()
539 info->screen_base = fbi->fb_start; in fb_info_setup()
540 info->screen_size = fbi->fb_size; in fb_info_setup()
558 struct mmpfb_info *fbi; in mmpfb_probe() local
571 fbi = info->par; in mmpfb_probe()
574 fbi->fb_info = info; in mmpfb_probe()
575 platform_set_drvdata(pdev, fbi); in mmpfb_probe()
576 fbi->dev = &pdev->dev; in mmpfb_probe()
577 fbi->name = mi->name; in mmpfb_probe()
578 fbi->pix_fmt = mi->default_pixfmt; in mmpfb_probe()
579 pixfmt_to_var(&info->var, fbi->pix_fmt); in mmpfb_probe()
580 mutex_init(&fbi->access_ok); in mmpfb_probe()
583 fbi->path = mmp_get_path(mi->path_name); in mmpfb_probe()
584 if (!fbi->path) { in mmpfb_probe()
590 dev_info(fbi->dev, "path %s get\n", fbi->path->name); in mmpfb_probe()
593 fbi->overlay = mmp_path_get_overlay(fbi->path, mi->overlay_id); in mmpfb_probe()
594 if (!fbi->overlay) { in mmpfb_probe()
599 mmp_overlay_set_fetch(fbi->overlay, mi->dmafetch_id); in mmpfb_probe()
601 modes_num = modes_setup(fbi); in mmpfb_probe()
616 fbi->fb_size = info->var.xres_virtual * info->var.yres_virtual in mmpfb_probe()
619 fbi->fb_size = MMPFB_DEFAULT_SIZE; in mmpfb_probe()
622 fbi->fb_start = dma_alloc_coherent(&pdev->dev, PAGE_ALIGN(fbi->fb_size), in mmpfb_probe()
623 &fbi->fb_start_dma, GFP_KERNEL); in mmpfb_probe()
624 if (fbi->fb_start == NULL) { in mmpfb_probe()
629 memset(fbi->fb_start, 0, fbi->fb_size); in mmpfb_probe()
630 dev_info(fbi->dev, "fb %dk allocated\n", fbi->fb_size/1024); in mmpfb_probe()
634 mmpfb_power(fbi, 1); in mmpfb_probe()
636 ret = fb_info_setup(info, fbi); in mmpfb_probe()
647 dev_info(fbi->dev, "loaded to /dev/fb%d <%s>.\n", in mmpfb_probe()
651 if (fbi->fb_start) { in mmpfb_probe()
662 dma_free_coherent(&pdev->dev, PAGE_ALIGN(fbi->fb_size), fbi->fb_start, in mmpfb_probe()
663 fbi->fb_start_dma); in mmpfb_probe()
665 mutex_destroy(&fbi->access_ok); in mmpfb_probe()
666 dev_err(fbi->dev, "mmp-fb: frame buffer device init failed\n"); in mmpfb_probe()