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
412 if (fbi->pix_fmt == PIX_FMT_PSEUDOCOLOR) in pxa168fb_set_par()
422 x = readl(fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
423 writel(x & ~1, fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
429 fbi->reg_base + LCD_SPU_V_H_ACTIVE); in pxa168fb_set_par()
437 set_clock_divider(fbi, &mode); in pxa168fb_set_par()
440 set_dma_control0(fbi); in pxa168fb_set_par()
441 set_dma_control1(fbi, info->var.sync); in pxa168fb_set_par()
446 x = readl(fbi->reg_base + LCD_CFG_GRA_PITCH); in pxa168fb_set_par()
448 writel(x, fbi->reg_base + LCD_CFG_GRA_PITCH); in pxa168fb_set_par()
450 fbi->reg_base + LCD_SPU_GRA_HPXL_VLN); in pxa168fb_set_par()
452 fbi->reg_base + LCD_SPU_GZM_HPXL_VLN); in pxa168fb_set_par()
461 fbi->reg_base + LCD_SPU_H_PORCH); in pxa168fb_set_par()
463 fbi->reg_base + LCD_SPU_V_PORCH); in pxa168fb_set_par()
468 x = readl(fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
469 writel(x | 1, fbi->reg_base + LCD_SPU_DUMB_CTRL); in pxa168fb_set_par()
492 struct pxa168fb_info *fbi = info->par; in pxa168fb_setcolreg() local
503 fbi->pseudo_palette[regno] = val; in pxa168fb_setcolreg()
508 writel(val, fbi->reg_base + LCD_SPU_SRAM_WRDAT); in pxa168fb_setcolreg()
509 writel(0x8300 | regno, fbi->reg_base + LCD_SPU_SRAM_CTRL); in pxa168fb_setcolreg()
517 struct pxa168fb_info *fbi = info->par; in pxa168fb_blank() local
519 fbi->is_blanked = (blank == FB_BLANK_UNBLANK) ? 0 : 1; in pxa168fb_blank()
535 struct pxa168fb_info *fbi = dev_id; in pxa168fb_handle_irq() local
536 u32 isr = readl(fbi->reg_base + SPU_IRQ_ISR); in pxa168fb_handle_irq()
541 fbi->reg_base + SPU_IRQ_ISR); in pxa168fb_handle_irq()
563 struct pxa168fb_info *fbi = info->par; in pxa168fb_init_mode() local
584 dev_dbg(fbi->dev, "pxa168fb: find best mode: res = %dx%d\n", in pxa168fb_init_mode()
604 struct pxa168fb_info *fbi = 0; in pxa168fb_probe() local
639 fbi = info->par; in pxa168fb_probe()
640 fbi->info = info; in pxa168fb_probe()
641 fbi->clk = clk; in pxa168fb_probe()
642 fbi->dev = info->dev = &pdev->dev; in pxa168fb_probe()
643 fbi->panel_rbswap = mi->panel_rbswap; in pxa168fb_probe()
644 fbi->is_blanked = 0; in pxa168fb_probe()
645 fbi->active = mi->active; in pxa168fb_probe()
663 info->pseudo_palette = fbi->pseudo_palette; in pxa168fb_probe()
668 fbi->reg_base = devm_ioremap_nocache(&pdev->dev, res->start, in pxa168fb_probe()
670 if (fbi->reg_base == NULL) { in pxa168fb_probe()
680 info->screen_base = dma_alloc_wc(fbi->dev, info->fix.smem_len, in pxa168fb_probe()
681 &fbi->fb_start_dma, GFP_KERNEL); in pxa168fb_probe()
687 info->fix.smem_start = (unsigned long)fbi->fb_start_dma; in pxa168fb_probe()
693 set_mode(fbi, &info->var, mi->modes, mi->pix_fmt, 1); in pxa168fb_probe()
712 clk_prepare_enable(fbi->clk); in pxa168fb_probe()
719 writel(0, fbi->reg_base + LCD_SPU_BLANKCOLOR); in pxa168fb_probe()
720 writel(mi->io_pin_allocation_mode, fbi->reg_base + SPU_IOPAD_CONTROL); in pxa168fb_probe()
721 writel(0, fbi->reg_base + LCD_CFG_GRA_START_ADDR1); in pxa168fb_probe()
722 writel(0, fbi->reg_base + LCD_SPU_GRA_OVSA_HPXL_VLN); in pxa168fb_probe()
723 writel(0, fbi->reg_base + LCD_SPU_SRAM_PARA0); in pxa168fb_probe()
725 fbi->reg_base + LCD_SPU_SRAM_PARA1); in pxa168fb_probe()
739 IRQF_SHARED, info->fix.id, fbi); in pxa168fb_probe()
749 writel(GRA_FRAME_IRQ0_ENA(0x1), fbi->reg_base + SPU_IRQ_ENA); in pxa168fb_probe()
761 platform_set_drvdata(pdev, fbi); in pxa168fb_probe()
767 clk_disable_unprepare(fbi->clk); in pxa168fb_probe()
769 dma_free_coherent(fbi->dev, info->fix.smem_len, in pxa168fb_probe()
770 info->screen_base, fbi->fb_start_dma); in pxa168fb_probe()
780 struct pxa168fb_info *fbi = platform_get_drvdata(pdev); in pxa168fb_remove() local
785 if (!fbi) in pxa168fb_remove()
789 data = readl(fbi->reg_base + LCD_SPU_DMA_CTRL0); in pxa168fb_remove()
791 writel(data, fbi->reg_base + LCD_SPU_DMA_CTRL0); in pxa168fb_remove()
793 info = fbi->info; in pxa168fb_remove()
797 writel(GRA_FRAME_IRQ0_ENA(0x0), fbi->reg_base + SPU_IRQ_ENA); in pxa168fb_remove()
804 dma_free_wc(fbi->dev, PAGE_ALIGN(info->fix.smem_len), in pxa168fb_remove()
807 clk_disable_unprepare(fbi->clk); in pxa168fb_remove()