Lines Matching refs:fbi

166 static void set_mode(struct pxa168fb_info *fbi, struct fb_var_screeninfo *var,  in set_mode()  argument
169 struct fb_info *info = fbi->info; in set_mode()
198 struct pxa168fb_info *fbi = info->par; in pxa168fb_check_var() local
208 fbi->pix_fmt = pix_fmt; in pxa168fb_check_var()
244 static void set_clock_divider(struct pxa168fb_info *fbi, in set_clock_divider() argument
262 dev_err(fbi->dev, "Input refresh or pixclock is wrong.\n"); in set_clock_divider()
278 divider_int = clk_get_rate(fbi->clk) / needed_pixclk; in set_clock_divider()
282 dev_warn(fbi->dev, "Warning: clock source is too slow." in set_clock_divider()
291 writel(x, fbi->reg_base + LCD_CFG_SCLK_DIV); in set_clock_divider()
294 static void set_dma_control0(struct pxa168fb_info *fbi) in set_dma_control0() argument
301 x = readl(fbi->reg_base + LCD_SPU_DMA_CTRL0); in set_dma_control0()
303 x |= fbi->active ? CFG_GRA_ENA(1) : CFG_GRA_ENA(0); in set_dma_control0()
309 if (fbi->pix_fmt == PIX_FMT_PSEUDOCOLOR) in set_dma_control0()
316 x |= (fbi->pix_fmt >> 1) << 16; in set_dma_control0()
324 x |= ((fbi->pix_fmt & 1) ^ (fbi->panel_rbswap)) << 12; in set_dma_control0()
326 writel(x, fbi->reg_base + LCD_SPU_DMA_CTRL0); in set_dma_control0()
329 static void set_dma_control1(struct pxa168fb_info *fbi, int sync) in set_dma_control1() argument
338 x = readl(fbi->reg_base + LCD_SPU_DMA_CTRL1); in set_dma_control1()
348 writel(x, fbi->reg_base + LCD_SPU_DMA_CTRL1); in set_dma_control1()
353 struct pxa168fb_info *fbi = info->par; in set_graphics_start() local
360 addr = fbi->fb_start_dma + (pixel_offset * (var->bits_per_pixel >> 3)); in set_graphics_start()
361 writel(addr, fbi->reg_base + LCD_CFG_GRA_START_ADDR0); in set_graphics_start()
366 struct pxa168fb_info *fbi = info->par; in set_dumb_panel_control() local
367 struct pxa168fb_mach_info *mi = dev_get_platdata(fbi->dev); in set_dumb_panel_control()
373 x = readl(fbi->reg_base + LCD_SPU_DUMB_CTRL) & 0x00000001; in set_dumb_panel_control()
375 x |= (fbi->is_blanked ? 0x7 : mi->dumb_mode) << 28; in set_dumb_panel_control()
386 writel(x, fbi->reg_base + LCD_SPU_DUMB_CTRL); in set_dumb_panel_control()
391 struct pxa168fb_info *fbi = info->par; in set_dumb_screen_dimensions() local
399 writel((y << 16) | x, fbi->reg_base + LCD_SPUT_V_H_TOTAL); in set_dumb_screen_dimensions()
404 struct pxa168fb_info *fbi = info->par; in pxa168fb_set_par() local
410 mi = dev_get_platdata(fbi->dev); in pxa168fb_set_par()
415 if (fbi->pix_fmt == PIX_FMT_PSEUDOCOLOR) in pxa168fb_set_par()
425 x = readl(fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
426 writel(x & ~1, fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
432 fbi->reg_base + LCD_SPU_V_H_ACTIVE); in pxa168fb_set_par()
440 set_clock_divider(fbi, &mode); in pxa168fb_set_par()
443 set_dma_control0(fbi); in pxa168fb_set_par()
444 set_dma_control1(fbi, info->var.sync); in pxa168fb_set_par()
449 x = readl(fbi->reg_base + LCD_CFG_GRA_PITCH); in pxa168fb_set_par()
451 writel(x, fbi->reg_base + LCD_CFG_GRA_PITCH); in pxa168fb_set_par()
453 fbi->reg_base + LCD_SPU_GRA_HPXL_VLN); in pxa168fb_set_par()
455 fbi->reg_base + LCD_SPU_GZM_HPXL_VLN); in pxa168fb_set_par()
464 fbi->reg_base + LCD_SPU_H_PORCH); in pxa168fb_set_par()
466 fbi->reg_base + LCD_SPU_V_PORCH); in pxa168fb_set_par()
471 x = readl(fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
472 writel(x | 1, fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
495 struct pxa168fb_info *fbi = info->par; in pxa168fb_setcolreg() local
506 fbi->pseudo_palette[regno] = val; in pxa168fb_setcolreg()
511 writel(val, fbi->reg_base + LCD_SPU_SRAM_WRDAT); in pxa168fb_setcolreg()
512 writel(0x8300 | regno, fbi->reg_base + LCD_SPU_SRAM_CTRL); in pxa168fb_setcolreg()
520 struct pxa168fb_info *fbi = info->par; in pxa168fb_blank() local
522 fbi->is_blanked = (blank == FB_BLANK_UNBLANK) ? 0 : 1; in pxa168fb_blank()
538 struct pxa168fb_info *fbi = dev_id; in pxa168fb_handle_irq() local
539 u32 isr = readl(fbi->reg_base + SPU_IRQ_ISR); in pxa168fb_handle_irq()
544 fbi->reg_base + SPU_IRQ_ISR); in pxa168fb_handle_irq()
566 struct pxa168fb_info *fbi = info->par; in pxa168fb_init_mode() local
587 dev_dbg(fbi->dev, "pxa168fb: find best mode: res = %dx%d\n", in pxa168fb_init_mode()
607 struct pxa168fb_info *fbi = 0; in pxa168fb_probe() local
645 fbi = info->par; in pxa168fb_probe()
646 fbi->info = info; in pxa168fb_probe()
647 fbi->clk = clk; in pxa168fb_probe()
648 fbi->dev = info->dev = &pdev->dev; in pxa168fb_probe()
649 fbi->panel_rbswap = mi->panel_rbswap; in pxa168fb_probe()
650 fbi->is_blanked = 0; in pxa168fb_probe()
651 fbi->active = mi->active; in pxa168fb_probe()
669 info->pseudo_palette = fbi->pseudo_palette; in pxa168fb_probe()
674 fbi->reg_base = devm_ioremap_nocache(&pdev->dev, res->start, in pxa168fb_probe()
676 if (fbi->reg_base == NULL) { in pxa168fb_probe()
686 info->screen_base = dma_alloc_writecombine(fbi->dev, info->fix.smem_len, in pxa168fb_probe()
687 &fbi->fb_start_dma, GFP_KERNEL); in pxa168fb_probe()
693 info->fix.smem_start = (unsigned long)fbi->fb_start_dma; in pxa168fb_probe()
699 set_mode(fbi, &info->var, mi->modes, mi->pix_fmt, 1); in pxa168fb_probe()
718 clk_enable(fbi->clk); in pxa168fb_probe()
725 writel(0, fbi->reg_base + LCD_SPU_BLANKCOLOR); in pxa168fb_probe()
726 writel(mi->io_pin_allocation_mode, fbi->reg_base + SPU_IOPAD_CONTROL); in pxa168fb_probe()
727 writel(0, fbi->reg_base + LCD_CFG_GRA_START_ADDR1); in pxa168fb_probe()
728 writel(0, fbi->reg_base + LCD_SPU_GRA_OVSA_HPXL_VLN); in pxa168fb_probe()
729 writel(0, fbi->reg_base + LCD_SPU_SRAM_PARA0); in pxa168fb_probe()
731 fbi->reg_base + LCD_SPU_SRAM_PARA1); in pxa168fb_probe()
745 IRQF_SHARED, info->fix.id, fbi); in pxa168fb_probe()
755 writel(GRA_FRAME_IRQ0_ENA(0x1), fbi->reg_base + SPU_IRQ_ENA); in pxa168fb_probe()
767 platform_set_drvdata(pdev, fbi); in pxa168fb_probe()
773 clk_disable(fbi->clk); in pxa168fb_probe()
775 dma_free_coherent(fbi->dev, info->fix.smem_len, in pxa168fb_probe()
776 info->screen_base, fbi->fb_start_dma); in pxa168fb_probe()
788 struct pxa168fb_info *fbi = platform_get_drvdata(pdev); in pxa168fb_remove() local
793 if (!fbi) in pxa168fb_remove()
797 data = readl(fbi->reg_base + LCD_SPU_DMA_CTRL0); in pxa168fb_remove()
799 writel(data, fbi->reg_base + LCD_SPU_DMA_CTRL0); in pxa168fb_remove()
801 info = fbi->info; in pxa168fb_remove()
805 writel(GRA_FRAME_IRQ0_ENA(0x0), fbi->reg_base + SPU_IRQ_ENA); in pxa168fb_remove()
812 dma_free_writecombine(fbi->dev, PAGE_ALIGN(info->fix.smem_len), in pxa168fb_remove()
815 clk_disable(fbi->clk); in pxa168fb_remove()
816 clk_put(fbi->clk); in pxa168fb_remove()