Lines Matching defs:fbdev

108 	struct au1100fb_device *fbdev = to_au1100fb_device(fbi);
116 fbdev->regs->lcd_control |= LCD_CONTROL_GO;
124 fbdev->regs->lcd_control &= ~LCD_CONTROL_GO;
138 int au1100fb_setmode(struct au1100fb_device *fbdev)
140 struct fb_info *info = &fbdev->info;
144 if (!fbdev)
148 if (panel_is_active(fbdev->panel) || panel_is_color(fbdev->panel)) {
172 index = (fbdev->panel->control_base & LCD_CONTROL_SBPPF_MASK) >> LCD_CONTROL_SBPPF_BIT;
188 info->var.rotate = ((fbdev->panel->control_base&LCD_CONTROL_SM_MASK) \
192 fbdev->regs->lcd_control = fbdev->panel->control_base;
193 fbdev->regs->lcd_horztiming = fbdev->panel->horztiming;
194 fbdev->regs->lcd_verttiming = fbdev->panel->verttiming;
195 fbdev->regs->lcd_clkcontrol = fbdev->panel->clkcontrol_base;
196 fbdev->regs->lcd_intenable = 0;
197 fbdev->regs->lcd_intstatus = 0;
198 fbdev->regs->lcd_dmaaddr0 = LCD_DMA_SA_N(fbdev->fb_phys);
200 if (panel_is_dual(fbdev->panel)) {
204 fbdev->regs->lcd_dmaaddr1 = LCD_DMA_SA_N(fbdev->fb_phys +
208 fbdev->regs->lcd_dmaaddr1 = LCD_DMA_SA_N(fbdev->fb_phys);
219 fbdev->regs->lcd_words = LCD_WRD_WRDS_N(words);
221 fbdev->regs->lcd_pwmdiv = 0;
222 fbdev->regs->lcd_pwmhi = 0;
225 fbdev->regs->lcd_control |= LCD_CONTROL_GO;
237 struct au1100fb_device *fbdev;
241 fbdev = to_au1100fb_device(fbi);
242 palette = fbdev->regs->lcd_palettebase;
269 } else if (panel_is_active(fbdev->panel)) {
274 } else if (panel_is_color(fbdev->panel)) {
276 value = (((panel_swap_rgb(fbdev->panel) ? blue : red) >> 12) & 0x000F) |
278 (((panel_swap_rgb(fbdev->panel) ? red : blue) >> 4) & 0x0F00);
296 struct au1100fb_device *fbdev;
299 fbdev = to_au1100fb_device(fbi);
303 if (!var || !fbdev) {
320 dmaaddr = fbdev->regs->lcd_dmaaddr0;
324 fbdev->regs->lcd_dmaaddr0 = LCD_DMA_SA_N(dmaaddr);
326 if (panel_is_dual(fbdev->panel)) {
327 dmaaddr = fbdev->regs->lcd_dmaaddr1;
329 fbdev->regs->lcd_dmaaddr0 = LCD_DMA_SA_N(dmaaddr);
343 struct au1100fb_device *fbdev = to_au1100fb_device(fbi);
347 return dma_mmap_coherent(fbdev->dev, vma, fbdev->fb_mem, fbdev->fb_phys,
348 fbdev->fb_len);
366 static int au1100fb_setup(struct au1100fb_device *fbdev)
389 fbdev->panel = &known_lcd_panels[i];
390 fbdev->panel_idx = i;
404 print_info("Panel=%s", fbdev->panel->name);
411 struct au1100fb_device *fbdev;
416 fbdev = devm_kzalloc(&dev->dev, sizeof(*fbdev), GFP_KERNEL);
417 if (!fbdev)
420 if (au1100fb_setup(fbdev))
423 platform_set_drvdata(dev, (void *)fbdev);
424 fbdev->dev = &dev->dev;
445 fbdev->regs = (struct au1100fb_regs*)KSEG1ADDR(au1100fb_fix.mmio_start);
447 print_dbg("Register memory map at %p", fbdev->regs);
448 print_dbg("phys=0x%08x, size=%d", fbdev->regs_phys, fbdev->regs_len);
452 fbdev->lcdclk = c;
458 fbdev->fb_len = fbdev->panel->xres * fbdev->panel->yres *
459 (fbdev->panel->bpp >> 3) * AU1100FB_NBR_VIDEO_BUFFERS;
461 fbdev->fb_mem = dmam_alloc_coherent(&dev->dev,
462 PAGE_ALIGN(fbdev->fb_len),
463 &fbdev->fb_phys, GFP_KERNEL);
464 if (!fbdev->fb_mem) {
466 fbdev->fb_len / 1024);
470 au1100fb_fix.smem_start = fbdev->fb_phys;
471 au1100fb_fix.smem_len = fbdev->fb_len;
473 print_dbg("Framebuffer memory map at %p", fbdev->fb_mem);
474 print_dbg("phys=0x%08x, size=%dK", fbdev->fb_phys, fbdev->fb_len / 1024);
477 au1100fb_var.bits_per_pixel = fbdev->panel->bpp;
478 au1100fb_var.xres = fbdev->panel->xres;
480 au1100fb_var.yres = fbdev->panel->yres;
483 fbdev->info.screen_base = fbdev->fb_mem;
484 fbdev->info.fbops = &au1100fb_ops;
485 fbdev->info.fix = au1100fb_fix;
487 fbdev->info.pseudo_palette =
489 if (!fbdev->info.pseudo_palette)
492 if (fb_alloc_cmap(&fbdev->info.cmap, AU1100_LCD_NBR_PALETTE_ENTRIES, 0) < 0) {
498 fbdev->info.var = au1100fb_var;
501 au1100fb_setmode(fbdev);
504 if (register_framebuffer(&fbdev->info) < 0) {
512 if (fbdev->lcdclk) {
513 clk_disable_unprepare(fbdev->lcdclk);
514 clk_put(fbdev->lcdclk);
516 if (fbdev->info.cmap.len != 0) {
517 fb_dealloc_cmap(&fbdev->info.cmap);
525 struct au1100fb_device *fbdev = NULL;
527 fbdev = platform_get_drvdata(dev);
530 au1100fb_fb_blank(VESA_POWERDOWN, &fbdev->info);
532 fbdev->regs->lcd_control &= ~LCD_CONTROL_GO;
535 unregister_framebuffer(&fbdev->info);
537 fb_dealloc_cmap(&fbdev->info.cmap);
539 if (fbdev->lcdclk) {
540 clk_disable_unprepare(fbdev->lcdclk);
541 clk_put(fbdev->lcdclk);
550 struct au1100fb_device *fbdev = platform_get_drvdata(dev);
552 if (!fbdev)
556 au1100fb_fb_blank(VESA_POWERDOWN, &fbdev->info);
558 clk_disable(fbdev->lcdclk);
560 memcpy(&fbregs, fbdev->regs, sizeof(struct au1100fb_regs));
567 struct au1100fb_device *fbdev = platform_get_drvdata(dev);
569 if (!fbdev)
572 memcpy(fbdev->regs, &fbregs, sizeof(struct au1100fb_regs));
574 clk_enable(fbdev->lcdclk);
577 au1100fb_fb_blank(VESA_NO_BLANKING, &fbdev->info);