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