Lines Matching refs:lcdc
67 } lcdc; variable
71 lcdc.irq_mask |= mask; in enable_irqs()
76 lcdc.irq_mask &= ~mask; in disable_irqs()
107 l |= lcdc.irq_mask | OMAP_LCDC_IRQ_DONE; /* enabled IRQs */ in enable_controller()
129 init_completion(&lcdc.last_frame_complete); in disable_controller()
131 if (!wait_for_completion_timeout(&lcdc.last_frame_complete, in disable_controller()
133 dev_err(lcdc.fbdev->dev, "timeout waiting for FRAME DONE\n"); in disable_controller()
144 dev_err(lcdc.fbdev->dev, in reset_controller()
153 dev_err(lcdc.fbdev->dev, in reset_controller()
171 struct omapfb_plane_struct *plane = lcdc.fbdev->fb_info[0]->par; in setup_lcd_dma()
172 struct fb_var_screeninfo *var = &lcdc.fbdev->fb_info[0]->var; in setup_lcd_dma()
176 src = lcdc.vram_phys + lcdc.frame_offset; in setup_lcd_dma()
181 lcdc.color_mode == OMAPFB_COLOR_YUV420 || in setup_lcd_dma()
182 (lcdc.xres & 1)) in setup_lcd_dma()
186 xelem = lcdc.xres * lcdc.bpp / 8 / esize; in setup_lcd_dma()
187 yelem = lcdc.yres; in setup_lcd_dma()
196 xelem = lcdc.yres * lcdc.bpp / 16; in setup_lcd_dma()
197 yelem = lcdc.xres; in setup_lcd_dma()
204 dev_dbg(lcdc.fbdev->dev, in setup_lcd_dma()
210 int bpp = lcdc.bpp; in setup_lcd_dma()
216 if (lcdc.color_mode == OMAPFB_COLOR_YUV420) in setup_lcd_dma()
220 lcdc.screen_width * bpp / 8 / esize); in setup_lcd_dma()
248 complete(&lcdc.last_frame_complete); in lcdc_irq_handler()
252 complete(&lcdc.palette_load_complete); in lcdc_irq_handler()
283 struct fb_var_screeninfo *var = &lcdc.fbdev->fb_info[0]->var; in omap_lcdc_setup_plane()
284 struct lcd_panel *panel = lcdc.fbdev->panel; in omap_lcdc_setup_plane()
297 dev_dbg(lcdc.fbdev->dev, in omap_lcdc_setup_plane()
304 lcdc.frame_offset = offset; in omap_lcdc_setup_plane()
305 lcdc.xres = width; in omap_lcdc_setup_plane()
306 lcdc.yres = height; in omap_lcdc_setup_plane()
307 lcdc.screen_width = screen_width; in omap_lcdc_setup_plane()
308 lcdc.color_mode = color_mode; in omap_lcdc_setup_plane()
312 lcdc.bpp = 8; in omap_lcdc_setup_plane()
313 lcdc.palette_code = 0x3000; in omap_lcdc_setup_plane()
314 lcdc.palette_size = 512; in omap_lcdc_setup_plane()
317 lcdc.bpp = 16; in omap_lcdc_setup_plane()
318 lcdc.palette_code = 0x4000; in omap_lcdc_setup_plane()
319 lcdc.palette_size = 32; in omap_lcdc_setup_plane()
322 lcdc.bpp = 16; in omap_lcdc_setup_plane()
323 lcdc.palette_code = 0x4000; in omap_lcdc_setup_plane()
324 lcdc.palette_size = 32; in omap_lcdc_setup_plane()
327 if (lcdc.ext_mode) { in omap_lcdc_setup_plane()
328 lcdc.bpp = 12; in omap_lcdc_setup_plane()
333 if (lcdc.ext_mode) { in omap_lcdc_setup_plane()
334 lcdc.bpp = 16; in omap_lcdc_setup_plane()
345 dev_dbg(lcdc.fbdev->dev, "invalid color mode %d\n", color_mode); in omap_lcdc_setup_plane()
350 if (lcdc.ext_mode) { in omap_lcdc_setup_plane()
355 if (lcdc.update_mode == OMAPFB_AUTO_UPDATE) { in omap_lcdc_setup_plane()
367 dev_dbg(lcdc.fbdev->dev, in omap_lcdc_enable_plane()
369 plane, enable, lcdc.update_mode, lcdc.ext_mode); in omap_lcdc_enable_plane()
385 palette = (u16 *)lcdc.palette_virt; in load_palette()
388 *(u16 *)palette |= lcdc.palette_code; in load_palette()
390 omap_set_lcd_dma_b1(lcdc.palette_phys, in load_palette()
391 lcdc.palette_size / 4 + 1, 1, OMAP_DMA_DATA_TYPE_S32); in load_palette()
396 init_completion(&lcdc.palette_load_complete); in load_palette()
400 if (!wait_for_completion_timeout(&lcdc.palette_load_complete, in load_palette()
402 dev_err(lcdc.fbdev->dev, "timeout waiting for FRAME DONE\n"); in load_palette()
407 omap_set_lcd_dma_single_transfer(lcdc.ext_mode); in load_palette()
416 if (lcdc.color_mode != OMAPFB_COLOR_CLUT_8BPP || regno > 255) in omap_lcdc_setcolreg()
419 palette = (u16 *)lcdc.palette_virt; in omap_lcdc_setcolreg()
442 lck = clk_get_rate(lcdc.lcd_ck); in calc_ck_div()
451 dev_warn(lcdc.fbdev->dev, "pixclock %d kHz too low.\n", in calc_ck_div()
459 struct lcd_panel *panel = lcdc.fbdev->panel; in setup_regs()
495 lck = clk_get_rate(lcdc.lcd_ck); in setup_regs()
500 dev_warn(lcdc.fbdev->dev, in setup_regs()
525 if (mode != lcdc.update_mode) { in omap_lcdc_set_update_mode()
538 lcdc.update_mode = mode; in omap_lcdc_set_update_mode()
543 lcdc.update_mode = mode; in omap_lcdc_set_update_mode()
555 return lcdc.update_mode; in omap_lcdc_get_update_mode()
578 if (lcdc.dma_callback) in omap_lcdc_set_dma_callback()
581 lcdc.dma_callback = callback; in omap_lcdc_set_dma_callback()
582 lcdc.dma_callback_data = data; in omap_lcdc_set_dma_callback()
590 lcdc.dma_callback = NULL; in omap_lcdc_free_dma_callback()
596 if (lcdc.dma_callback) in lcdc_dma_handler()
597 lcdc.dma_callback(lcdc.dma_callback_data); in lcdc_dma_handler()
602 lcdc.palette_virt = dma_alloc_wc(lcdc.fbdev->dev, MAX_PALETTE_SIZE, in alloc_palette_ram()
603 &lcdc.palette_phys, GFP_KERNEL); in alloc_palette_ram()
604 if (lcdc.palette_virt == NULL) { in alloc_palette_ram()
605 dev_err(lcdc.fbdev->dev, "failed to alloc palette memory\n"); in alloc_palette_ram()
608 memset(lcdc.palette_virt, 0, MAX_PALETTE_SIZE); in alloc_palette_ram()
615 dma_free_wc(lcdc.fbdev->dev, MAX_PALETTE_SIZE, lcdc.palette_virt, in free_palette_ram()
616 lcdc.palette_phys); in free_palette_ram()
623 struct lcd_panel *panel = lcdc.fbdev->panel; in alloc_fbmem()
631 lcdc.vram_size = frame_size; in alloc_fbmem()
632 lcdc.vram_virt = dma_alloc_wc(lcdc.fbdev->dev, lcdc.vram_size, in alloc_fbmem()
633 &lcdc.vram_phys, GFP_KERNEL); in alloc_fbmem()
634 if (lcdc.vram_virt == NULL) { in alloc_fbmem()
635 dev_err(lcdc.fbdev->dev, "unable to allocate FB DMA memory\n"); in alloc_fbmem()
639 region->paddr = lcdc.vram_phys; in alloc_fbmem()
640 region->vaddr = lcdc.vram_virt; in alloc_fbmem()
643 memset(lcdc.vram_virt, 0, lcdc.vram_size); in alloc_fbmem()
650 dma_free_wc(lcdc.fbdev->dev, lcdc.vram_size, lcdc.vram_virt, in free_fbmem()
651 lcdc.vram_phys); in free_fbmem()
657 dev_err(lcdc.fbdev->dev, "no memory regions defined\n"); in setup_fbmem()
662 dev_err(lcdc.fbdev->dev, "only one plane is supported\n"); in setup_fbmem()
677 lcdc.irq_mask = 0; in omap_lcdc_init()
679 lcdc.fbdev = fbdev; in omap_lcdc_init()
680 lcdc.ext_mode = ext_mode; in omap_lcdc_init()
688 lcdc.lcd_ck = clk_get(fbdev->dev, "lcd_ck"); in omap_lcdc_init()
689 if (IS_ERR(lcdc.lcd_ck)) { in omap_lcdc_init()
691 r = PTR_ERR(lcdc.lcd_ck); in omap_lcdc_init()
709 r = clk_set_rate(lcdc.lcd_ck, rate); in omap_lcdc_init()
714 clk_enable(lcdc.lcd_ck); in omap_lcdc_init()
747 free_irq(OMAP_LCDC_IRQ, lcdc.fbdev); in omap_lcdc_init()
749 clk_disable(lcdc.lcd_ck); in omap_lcdc_init()
751 clk_put(lcdc.lcd_ck); in omap_lcdc_init()
758 if (!lcdc.ext_mode) in omap_lcdc_cleanup()
762 free_irq(OMAP_LCDC_IRQ, lcdc.fbdev); in omap_lcdc_cleanup()
763 clk_disable(lcdc.lcd_ck); in omap_lcdc_cleanup()
764 clk_put(lcdc.lcd_ck); in omap_lcdc_cleanup()