Lines Matching refs:fb_info
172 struct fb_info fb_info; member
211 #define to_imxfb_host(x) (container_of(x, struct mxsfb_info, fb_info))
270 struct fb_info *fb_info) in mxsfb_check_var() argument
272 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_check_var()
331 static void mxsfb_enable_controller(struct fb_info *fb_info) in mxsfb_enable_controller() argument
333 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_enable_controller()
351 clk_set_rate(host->clk, PICOS2KHZ(fb_info->var.pixclock) * 1000U); in mxsfb_enable_controller()
368 static void mxsfb_disable_controller(struct fb_info *fb_info) in mxsfb_disable_controller() argument
370 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_disable_controller()
410 static int mxsfb_set_par(struct fb_info *fb_info) in mxsfb_set_par() argument
412 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_set_par()
417 line_size = fb_info->var.xres * (fb_info->var.bits_per_pixel >> 3); in mxsfb_set_par()
418 fb_size = fb_info->var.yres_virtual * line_size; in mxsfb_set_par()
420 if (fb_size > fb_info->fix.smem_len) in mxsfb_set_par()
423 fb_info->fix.line_length = line_size; in mxsfb_set_par()
432 mxsfb_disable_controller(fb_info); in mxsfb_set_par()
443 switch (fb_info->var.bits_per_pixel) { in mxsfb_set_par()
470 fb_info->var.bits_per_pixel); in mxsfb_set_par()
476 writel(TRANSFER_COUNT_SET_VCOUNT(fb_info->var.yres) | in mxsfb_set_par()
477 TRANSFER_COUNT_SET_HCOUNT(fb_info->var.xres), in mxsfb_set_par()
483 VDCTRL0_SET_VSYNC_PULSE_WIDTH(fb_info->var.vsync_len); in mxsfb_set_par()
484 if (fb_info->var.sync & FB_SYNC_HOR_HIGH_ACT) in mxsfb_set_par()
486 if (fb_info->var.sync & FB_SYNC_VERT_HIGH_ACT) in mxsfb_set_par()
496 writel(fb_info->var.upper_margin + fb_info->var.vsync_len + in mxsfb_set_par()
497 fb_info->var.lower_margin + fb_info->var.yres, in mxsfb_set_par()
501 writel(set_hsync_pulse_width(host, fb_info->var.hsync_len) | in mxsfb_set_par()
502 VDCTRL2_SET_HSYNC_PERIOD(fb_info->var.left_margin + in mxsfb_set_par()
503 fb_info->var.hsync_len + fb_info->var.right_margin + in mxsfb_set_par()
504 fb_info->var.xres), in mxsfb_set_par()
507 writel(SET_HOR_WAIT_CNT(fb_info->var.left_margin + in mxsfb_set_par()
508 fb_info->var.hsync_len) | in mxsfb_set_par()
509 SET_VERT_WAIT_CNT(fb_info->var.upper_margin + in mxsfb_set_par()
510 fb_info->var.vsync_len), in mxsfb_set_par()
513 vdctrl4 = SET_DOTCLK_H_VALID_DATA_CNT(fb_info->var.xres); in mxsfb_set_par()
518 writel(fb_info->fix.smem_start + in mxsfb_set_par()
519 fb_info->fix.line_length * fb_info->var.yoffset, in mxsfb_set_par()
525 mxsfb_enable_controller(fb_info); in mxsfb_set_par()
531 u_int transp, struct fb_info *fb_info) in mxsfb_setcolreg() argument
540 if (fb_info->var.grayscale) in mxsfb_setcolreg()
544 switch (fb_info->fix.visual) { in mxsfb_setcolreg()
551 u32 *pal = fb_info->pseudo_palette; in mxsfb_setcolreg()
553 val = chan_to_field(red, &fb_info->var.red); in mxsfb_setcolreg()
554 val |= chan_to_field(green, &fb_info->var.green); in mxsfb_setcolreg()
555 val |= chan_to_field(blue, &fb_info->var.blue); in mxsfb_setcolreg()
570 static int mxsfb_blank(int blank, struct fb_info *fb_info) in mxsfb_blank() argument
572 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_blank()
580 mxsfb_disable_controller(fb_info); in mxsfb_blank()
585 mxsfb_enable_controller(fb_info); in mxsfb_blank()
592 struct fb_info *fb_info) in mxsfb_pan_display() argument
594 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_pan_display()
600 offset = fb_info->fix.line_length * var->yoffset; in mxsfb_pan_display()
605 writel(fb_info->fix.smem_start + offset, in mxsfb_pan_display()
628 struct fb_info *fb_info = &host->fb_info; in mxsfb_restore_mode() local
667 fb_info->var.bits_per_pixel = bits_per_pixel; in mxsfb_restore_mode()
698 fb_info->fix.line_length = vmode->xres * (bits_per_pixel >> 3); in mxsfb_restore_mode()
701 fbsize = fb_info->fix.line_length * vmode->yres; in mxsfb_restore_mode()
702 if (pa < fb_info->fix.smem_start) { in mxsfb_restore_mode()
706 if (pa + fbsize > fb_info->fix.smem_start + fb_info->fix.smem_len) { in mxsfb_restore_mode()
710 ofs = pa - fb_info->fix.smem_start; in mxsfb_restore_mode()
712 memmove(fb_info->screen_base, fb_info->screen_base + ofs, fbsize); in mxsfb_restore_mode()
713 writel(fb_info->fix.smem_start, host->base + host->devdata->next_buf); in mxsfb_restore_mode()
716 line_count = fb_info->fix.smem_len / fb_info->fix.line_length; in mxsfb_restore_mode()
717 fb_info->fix.ypanstep = 1; in mxsfb_restore_mode()
732 struct fb_info *fb_info = &host->fb_info; in mxsfb_init_fbinfo_dt() local
733 struct fb_var_screeninfo *var = &fb_info->var; in mxsfb_init_fbinfo_dt()
803 struct fb_info *fb_info = &host->fb_info; in mxsfb_init_fbinfo() local
804 struct fb_var_screeninfo *var = &fb_info->var; in mxsfb_init_fbinfo()
809 fb_info->fbops = &mxsfb_ops; in mxsfb_init_fbinfo()
810 fb_info->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST; in mxsfb_init_fbinfo()
811 strlcpy(fb_info->fix.id, "mxs", sizeof(fb_info->fix.id)); in mxsfb_init_fbinfo()
812 fb_info->fix.type = FB_TYPE_PACKED_PIXELS; in mxsfb_init_fbinfo()
813 fb_info->fix.ypanstep = 1; in mxsfb_init_fbinfo()
814 fb_info->fix.visual = FB_VISUAL_TRUECOLOR, in mxsfb_init_fbinfo()
815 fb_info->fix.accel = FB_ACCEL_NONE; in mxsfb_init_fbinfo()
834 fb_info->fix.smem_start = fb_phys; in mxsfb_init_fbinfo()
835 fb_info->screen_base = fb_virt; in mxsfb_init_fbinfo()
836 fb_info->screen_size = fb_info->fix.smem_len = fb_size; in mxsfb_init_fbinfo()
846 struct fb_info *fb_info = &host->fb_info; in mxsfb_free_videomem() local
848 free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len); in mxsfb_free_videomem()
877 struct fb_info *fb_info; in mxsfb_probe() local
884 fb_info = framebuffer_alloc(sizeof(struct mxsfb_info), &pdev->dev); in mxsfb_probe()
885 if (!fb_info) { in mxsfb_probe()
895 host = to_imxfb_host(fb_info); in mxsfb_probe()
927 fb_info->pseudo_palette = devm_kzalloc(&pdev->dev, sizeof(u32) * 16, in mxsfb_probe()
929 if (!fb_info->pseudo_palette) { in mxsfb_probe()
938 fb_videomode_to_var(&fb_info->var, mode); in mxsfb_probe()
941 mxsfb_check_var(&fb_info->var, fb_info); in mxsfb_probe()
943 platform_set_drvdata(pdev, fb_info); in mxsfb_probe()
945 ret = register_framebuffer(fb_info); in mxsfb_probe()
955 mxsfb_set_par(fb_info); in mxsfb_probe()
956 mxsfb_enable_controller(fb_info); in mxsfb_probe()
967 framebuffer_release(fb_info); in mxsfb_probe()
974 struct fb_info *fb_info = platform_get_drvdata(pdev); in mxsfb_remove() local
975 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_remove()
978 mxsfb_disable_controller(fb_info); in mxsfb_remove()
980 unregister_framebuffer(fb_info); in mxsfb_remove()
983 framebuffer_release(fb_info); in mxsfb_remove()
990 struct fb_info *fb_info = platform_get_drvdata(pdev); in mxsfb_shutdown() local
991 struct mxsfb_info *host = to_imxfb_host(fb_info); in mxsfb_shutdown()