Lines Matching refs:fbi
1002 static void au1200fb_update_fbinfo(struct fb_info *fbi)
1008 if (fbi->var.bits_per_pixel <= 8) {
1010 fbi->fix.visual = FB_VISUAL_PSEUDOCOLOR;
1011 fbi->fix.line_length = fbi->var.xres_virtual /
1012 (8/fbi->var.bits_per_pixel);
1015 fbi->fix.visual = FB_VISUAL_TRUECOLOR;
1016 fbi->fix.line_length = fbi->var.xres_virtual * (fbi->var.bits_per_pixel / 8);
1020 fbi->fix.visual = FB_VISUAL_MONO10;
1021 fbi->fix.line_length = fbi->var.xres_virtual / 8;
1024 fbi->screen_size = fbi->fix.line_length * fbi->var.yres_virtual;
1025 print_dbg("line length: %d\n", fbi->fix.line_length);
1026 print_dbg("bits_per_pixel: %d\n", fbi->var.bits_per_pixel);
1037 struct fb_info *fbi)
1039 struct au1200fb_device *fbdev = fbi->par;
1070 pixclock = max((u32)(PICOS2KHZ(var->pixclock) * 1000), fbi->monspecs.dclkmin);
1071 pixclock = min3(pixclock, fbi->monspecs.dclkmax, (u32)AU1200_LCD_MAX_CLK/2);
1132 static int au1200fb_fb_set_par(struct fb_info *fbi)
1134 struct au1200fb_device *fbdev = fbi->par;
1136 au1200fb_update_fbinfo(fbi);
1146 unsigned blue, unsigned transp, struct fb_info *fbi)
1154 if (fbi->var.grayscale) {
1160 if (fbi->fix.visual == FB_VISUAL_TRUECOLOR) {
1165 palette = (u32*) fbi->pseudo_palette;
1167 red >>= (16 - fbi->var.red.length);
1168 green >>= (16 - fbi->var.green.length);
1169 blue >>= (16 - fbi->var.blue.length);
1171 value = (red << fbi->var.red.offset) |
1172 (green << fbi->var.green.offset)|
1173 (blue << fbi->var.blue.offset);
1201 static int au1200fb_fb_blank(int blank_mode, struct fb_info *fbi)
1203 struct au1200fb_device *fbdev = fbi->par;
1521 struct fb_info *fbi = fbdev->fb_info;
1524 fbi->fbops = &au1200fb_fb_ops;
1532 memcpy(&fbi->monspecs, &panel->monspecs, sizeof(struct fb_monspecs));
1537 if (!fb_find_mode(&fbi->var,
1538 fbi,
1540 fbi->monspecs.modedb,
1541 fbi->monspecs.modedb_len,
1542 fbi->monspecs.modedb,
1549 fbi->pseudo_palette = kcalloc(16, sizeof(u32), GFP_KERNEL);
1550 if (!fbi->pseudo_palette)
1553 ret = fb_alloc_cmap(&fbi->cmap, AU1200_LCD_NBR_PALETTE_ENTRIES, 0);
1560 strscpy(fbi->fix.id, "AU1200");
1561 fbi->fix.smem_start = fbdev->fb_phys;
1562 fbi->fix.smem_len = fbdev->fb_len;
1563 fbi->fix.type = FB_TYPE_PACKED_PIXELS;
1564 fbi->fix.xpanstep = 0;
1565 fbi->fix.ypanstep = 0;
1566 fbi->fix.mmio_start = 0;
1567 fbi->fix.mmio_len = 0;
1568 fbi->fix.accel = FB_ACCEL_NONE;
1570 fbi->flags |= FBINFO_VIRTFB;
1572 fbi->screen_buffer = fbdev->fb_mem;
1574 au1200fb_update_fbinfo(fbi);
1652 struct fb_info *fbi = NULL;
1679 fbi = framebuffer_alloc(sizeof(struct au1200fb_device),
1681 if (!fbi) {
1686 _au1200fb_infos[plane] = fbi;
1687 fbdev = fbi->par;
1688 fbdev->fb_info = fbi;
1716 ret = register_framebuffer(fbi);
1722 au1200fb_fb_set_par(fbi);
1747 fbi = _au1200fb_infos[plane];
1748 if (!fbi)
1752 unregister_framebuffer(fbi);
1753 if (fbi->cmap.len != 0)
1754 fb_dealloc_cmap(&fbi->cmap);
1755 kfree(fbi->pseudo_palette);
1757 framebuffer_release(fbi);
1766 struct fb_info *fbi;
1773 fbi = _au1200fb_infos[plane];
1776 unregister_framebuffer(fbi);
1777 if (fbi->cmap.len != 0)
1778 fb_dealloc_cmap(&fbi->cmap);
1779 kfree(fbi->pseudo_palette);
1781 framebuffer_release(fbi);
1803 struct fb_info *fbi;
1810 fbi = _au1200fb_infos[i];
1811 au1200fb_fb_set_par(fbi);