Lines Matching refs:fbdev

108 	struct au1100fb_device *fbdev = to_au1100fb_device(fbi);  in au1100fb_fb_blank()  local
116 fbdev->regs->lcd_control |= LCD_CONTROL_GO; in au1100fb_fb_blank()
124 fbdev->regs->lcd_control &= ~LCD_CONTROL_GO; in au1100fb_fb_blank()
138 int au1100fb_setmode(struct au1100fb_device *fbdev) in au1100fb_setmode() argument
144 if (!fbdev) in au1100fb_setmode()
147 info = &fbdev->info; in au1100fb_setmode()
150 if (panel_is_active(fbdev->panel) || panel_is_color(fbdev->panel)) { in au1100fb_setmode()
174 index = (fbdev->panel->control_base & LCD_CONTROL_SBPPF_MASK) >> LCD_CONTROL_SBPPF_BIT; in au1100fb_setmode()
190 info->var.rotate = ((fbdev->panel->control_base&LCD_CONTROL_SM_MASK) \ in au1100fb_setmode()
194 fbdev->regs->lcd_control = fbdev->panel->control_base; in au1100fb_setmode()
195 fbdev->regs->lcd_horztiming = fbdev->panel->horztiming; in au1100fb_setmode()
196 fbdev->regs->lcd_verttiming = fbdev->panel->verttiming; in au1100fb_setmode()
197 fbdev->regs->lcd_clkcontrol = fbdev->panel->clkcontrol_base; in au1100fb_setmode()
198 fbdev->regs->lcd_intenable = 0; in au1100fb_setmode()
199 fbdev->regs->lcd_intstatus = 0; in au1100fb_setmode()
200 fbdev->regs->lcd_dmaaddr0 = LCD_DMA_SA_N(fbdev->fb_phys); in au1100fb_setmode()
202 if (panel_is_dual(fbdev->panel)) { in au1100fb_setmode()
206 fbdev->regs->lcd_dmaaddr1 = LCD_DMA_SA_N(fbdev->fb_phys + in au1100fb_setmode()
210 fbdev->regs->lcd_dmaaddr1 = LCD_DMA_SA_N(fbdev->fb_phys); in au1100fb_setmode()
221 fbdev->regs->lcd_words = LCD_WRD_WRDS_N(words); in au1100fb_setmode()
223 fbdev->regs->lcd_pwmdiv = 0; in au1100fb_setmode()
224 fbdev->regs->lcd_pwmhi = 0; in au1100fb_setmode()
227 fbdev->regs->lcd_control |= LCD_CONTROL_GO; in au1100fb_setmode()
239 struct au1100fb_device *fbdev; in au1100fb_fb_setcolreg() local
243 fbdev = to_au1100fb_device(fbi); in au1100fb_fb_setcolreg()
244 palette = fbdev->regs->lcd_palettebase; in au1100fb_fb_setcolreg()
271 } else if (panel_is_active(fbdev->panel)) { in au1100fb_fb_setcolreg()
276 } else if (panel_is_color(fbdev->panel)) { in au1100fb_fb_setcolreg()
278 value = (((panel_swap_rgb(fbdev->panel) ? blue : red) >> 12) & 0x000F) | in au1100fb_fb_setcolreg()
280 (((panel_swap_rgb(fbdev->panel) ? red : blue) >> 4) & 0x0F00); in au1100fb_fb_setcolreg()
298 struct au1100fb_device *fbdev; in au1100fb_fb_pan_display() local
301 fbdev = to_au1100fb_device(fbi); in au1100fb_fb_pan_display()
305 if (!var || !fbdev) { in au1100fb_fb_pan_display()
322 dmaaddr = fbdev->regs->lcd_dmaaddr0; in au1100fb_fb_pan_display()
326 fbdev->regs->lcd_dmaaddr0 = LCD_DMA_SA_N(dmaaddr); in au1100fb_fb_pan_display()
328 if (panel_is_dual(fbdev->panel)) { in au1100fb_fb_pan_display()
329 dmaaddr = fbdev->regs->lcd_dmaaddr1; in au1100fb_fb_pan_display()
331 fbdev->regs->lcd_dmaaddr0 = LCD_DMA_SA_N(dmaaddr); in au1100fb_fb_pan_display()
345 struct au1100fb_device *fbdev = to_au1100fb_device(fbi); in au1100fb_fb_mmap() local
351 return dma_mmap_coherent(fbdev->dev, vma, fbdev->fb_mem, fbdev->fb_phys, in au1100fb_fb_mmap()
352 fbdev->fb_len); in au1100fb_fb_mmap()
368 static int au1100fb_setup(struct au1100fb_device *fbdev) in au1100fb_setup() argument
391 fbdev->panel = &known_lcd_panels[i]; in au1100fb_setup()
392 fbdev->panel_idx = i; in au1100fb_setup()
406 print_info("Panel=%s", fbdev->panel->name); in au1100fb_setup()
413 struct au1100fb_device *fbdev; in au1100fb_drv_probe() local
418 fbdev = devm_kzalloc(&dev->dev, sizeof(*fbdev), GFP_KERNEL); in au1100fb_drv_probe()
419 if (!fbdev) in au1100fb_drv_probe()
422 if (au1100fb_setup(fbdev)) in au1100fb_drv_probe()
425 platform_set_drvdata(dev, (void *)fbdev); in au1100fb_drv_probe()
426 fbdev->dev = &dev->dev; in au1100fb_drv_probe()
447 fbdev->regs = (struct au1100fb_regs*)KSEG1ADDR(au1100fb_fix.mmio_start); in au1100fb_drv_probe()
449 print_dbg("Register memory map at %p", fbdev->regs); in au1100fb_drv_probe()
450 print_dbg("phys=0x%08x, size=%d", fbdev->regs_phys, fbdev->regs_len); in au1100fb_drv_probe()
454 fbdev->lcdclk = c; in au1100fb_drv_probe()
460 fbdev->fb_len = fbdev->panel->xres * fbdev->panel->yres * in au1100fb_drv_probe()
461 (fbdev->panel->bpp >> 3) * AU1100FB_NBR_VIDEO_BUFFERS; in au1100fb_drv_probe()
463 fbdev->fb_mem = dmam_alloc_coherent(&dev->dev, in au1100fb_drv_probe()
464 PAGE_ALIGN(fbdev->fb_len), in au1100fb_drv_probe()
465 &fbdev->fb_phys, GFP_KERNEL); in au1100fb_drv_probe()
466 if (!fbdev->fb_mem) { in au1100fb_drv_probe()
468 fbdev->fb_len / 1024); in au1100fb_drv_probe()
472 au1100fb_fix.smem_start = fbdev->fb_phys; in au1100fb_drv_probe()
473 au1100fb_fix.smem_len = fbdev->fb_len; in au1100fb_drv_probe()
475 print_dbg("Framebuffer memory map at %p", fbdev->fb_mem); in au1100fb_drv_probe()
476 print_dbg("phys=0x%08x, size=%dK", fbdev->fb_phys, fbdev->fb_len / 1024); in au1100fb_drv_probe()
479 au1100fb_var.bits_per_pixel = fbdev->panel->bpp; in au1100fb_drv_probe()
480 au1100fb_var.xres = fbdev->panel->xres; in au1100fb_drv_probe()
482 au1100fb_var.yres = fbdev->panel->yres; in au1100fb_drv_probe()
485 fbdev->info.screen_base = fbdev->fb_mem; in au1100fb_drv_probe()
486 fbdev->info.fbops = &au1100fb_ops; in au1100fb_drv_probe()
487 fbdev->info.fix = au1100fb_fix; in au1100fb_drv_probe()
489 fbdev->info.pseudo_palette = in au1100fb_drv_probe()
491 if (!fbdev->info.pseudo_palette) in au1100fb_drv_probe()
494 if (fb_alloc_cmap(&fbdev->info.cmap, AU1100_LCD_NBR_PALETTE_ENTRIES, 0) < 0) { in au1100fb_drv_probe()
500 fbdev->info.var = au1100fb_var; in au1100fb_drv_probe()
503 au1100fb_setmode(fbdev); in au1100fb_drv_probe()
506 if (register_framebuffer(&fbdev->info) < 0) { in au1100fb_drv_probe()
514 if (fbdev->lcdclk) { in au1100fb_drv_probe()
515 clk_disable_unprepare(fbdev->lcdclk); in au1100fb_drv_probe()
516 clk_put(fbdev->lcdclk); in au1100fb_drv_probe()
518 if (fbdev->info.cmap.len != 0) { in au1100fb_drv_probe()
519 fb_dealloc_cmap(&fbdev->info.cmap); in au1100fb_drv_probe()
527 struct au1100fb_device *fbdev = NULL; in au1100fb_drv_remove() local
529 fbdev = platform_get_drvdata(dev); in au1100fb_drv_remove()
532 au1100fb_fb_blank(VESA_POWERDOWN, &fbdev->info); in au1100fb_drv_remove()
534 fbdev->regs->lcd_control &= ~LCD_CONTROL_GO; in au1100fb_drv_remove()
537 unregister_framebuffer(&fbdev->info); in au1100fb_drv_remove()
539 fb_dealloc_cmap(&fbdev->info.cmap); in au1100fb_drv_remove()
541 if (fbdev->lcdclk) { in au1100fb_drv_remove()
542 clk_disable_unprepare(fbdev->lcdclk); in au1100fb_drv_remove()
543 clk_put(fbdev->lcdclk); in au1100fb_drv_remove()
552 struct au1100fb_device *fbdev = platform_get_drvdata(dev); in au1100fb_drv_suspend() local
554 if (!fbdev) in au1100fb_drv_suspend()
558 au1100fb_fb_blank(VESA_POWERDOWN, &fbdev->info); in au1100fb_drv_suspend()
560 clk_disable(fbdev->lcdclk); in au1100fb_drv_suspend()
562 memcpy(&fbregs, fbdev->regs, sizeof(struct au1100fb_regs)); in au1100fb_drv_suspend()
569 struct au1100fb_device *fbdev = platform_get_drvdata(dev); in au1100fb_drv_resume() local
571 if (!fbdev) in au1100fb_drv_resume()
574 memcpy(fbdev->regs, &fbregs, sizeof(struct au1100fb_regs)); in au1100fb_drv_resume()
576 clk_enable(fbdev->lcdclk); in au1100fb_drv_resume()
579 au1100fb_fb_blank(VESA_NO_BLANKING, &fbdev->info); in au1100fb_drv_resume()