Lines Matching refs:fbi
171 struct fb_info *fbi; in sm501_alloc_mem() local
186 fbi = inf->fb[HEAD_CRT]; in sm501_alloc_mem()
195 if (fbi && ptr < smem_len) in sm501_alloc_mem()
206 fbi = inf->fb[HEAD_PANEL]; in sm501_alloc_mem()
207 if (fbi) { in sm501_alloc_mem()
208 par = fbi->par; in sm501_alloc_mem()
219 fbi = inf->fb[HEAD_CRT]; in sm501_alloc_mem()
220 ptr = fbi ? smem_len : 0; in sm501_alloc_mem()
222 fbi = inf->fb[HEAD_PANEL]; in sm501_alloc_mem()
223 if (fbi) { in sm501_alloc_mem()
224 par = fbi->par; in sm501_alloc_mem()
275 static void sm501fb_setup_gamma(struct sm501fb_info *fbi, in sm501fb_setup_gamma() argument
283 smc501_writel(value, fbi->regs + palette + offset); in sm501fb_setup_gamma()
430 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_common() local
438 dev_dbg(fbi->dev, "%s: %dx%d, bpp = %d, virtual %dx%d\n", in sm501fb_set_par_common()
479 dev_dbg(fbi->dev, "%s: line length = %u\n", __func__, in sm501fb_set_par_common()
482 if (sm501_alloc_mem(fbi, &par->screen, mem_type, smem_len, smem_len)) { in sm501fb_set_par_common()
483 dev_err(fbi->dev, "no memory available\n"); in sm501fb_set_par_common()
488 info->fix.smem_start = fbi->fbmem_res->start + par->screen.sm_addr; in sm501fb_set_par_common()
492 info->screen_base = fbi->fbmem + par->screen.sm_addr; in sm501fb_set_par_common()
498 fbi->regs + head_addr); in sm501fb_set_par_common()
504 sm501pixclock = sm501_set_clock(fbi->dev->parent, clock_type, in sm501fb_set_par_common()
510 dev_dbg(fbi->dev, "%s: pixclock(ps) = %u, pixclock(Hz) = %lu, " in sm501fb_set_par_common()
527 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_geometry() local
528 void __iomem *base = fbi->regs; in sm501fb_set_par_geometry()
541 smc501_writel(reg, fbi->regs + (par->head == HEAD_CRT ? in sm501fb_set_par_geometry()
581 struct sm501fb_info *fbi = par->info; in sm501fb_pan_crt() local
588 reg = smc501_readl(fbi->regs + SM501_DC_CRT_CONTROL); in sm501fb_pan_crt()
592 smc501_writel(reg, fbi->regs + SM501_DC_CRT_CONTROL); in sm501fb_pan_crt()
596 smc501_writel(reg | SM501_ADDR_FLIP, fbi->regs + SM501_DC_CRT_FB_ADDR); in sm501fb_pan_crt()
598 sm501fb_sync_regs(fbi); in sm501fb_pan_crt()
611 struct sm501fb_info *fbi = par->info; in sm501fb_pan_pnl() local
615 smc501_writel(reg, fbi->regs + SM501_DC_PANEL_FB_WIDTH); in sm501fb_pan_pnl()
618 smc501_writel(reg, fbi->regs + SM501_DC_PANEL_FB_HEIGHT); in sm501fb_pan_pnl()
620 sm501fb_sync_regs(fbi); in sm501fb_pan_pnl()
632 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_crt() local
639 dev_dbg(fbi->dev, "%s(%p)\n", __func__, info); in sm501fb_set_par_crt()
642 sm501_misc_control(fbi->dev->parent, 0, SM501_MISC_DAC_POWER); in sm501fb_set_par_crt()
644 control = smc501_readl(fbi->regs + SM501_DC_CRT_CONTROL); in sm501fb_set_par_crt()
664 sm501_alloc_mem(fbi, &par->screen, SM501_MEMF_CRT, 0, in sm501fb_set_par_crt()
671 dev_err(fbi->dev, "failed to set common parameters\n"); in sm501fb_set_par_crt()
687 sm501fb_setup_gamma(fbi, SM501_DC_CRT_PALETTE); in sm501fb_set_par_crt()
692 sm501fb_setup_gamma(fbi, SM501_DC_CRT_PALETTE); in sm501fb_set_par_crt()
704 dev_dbg(fbi->dev, "new control is %08lx\n", control); in sm501fb_set_par_crt()
706 smc501_writel(control, fbi->regs + SM501_DC_CRT_CONTROL); in sm501fb_set_par_crt()
707 sm501fb_sync_regs(fbi); in sm501fb_set_par_crt()
712 static void sm501fb_panel_power(struct sm501fb_info *fbi, int to) in sm501fb_panel_power() argument
715 void __iomem *ctrl_reg = fbi->regs + SM501_DC_PANEL_CONTROL; in sm501fb_panel_power()
716 struct sm501_platdata_fbsub *pd = fbi->pdata->fb_pnl; in sm501fb_panel_power()
725 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
730 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
742 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
753 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
765 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
776 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
782 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
787 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
791 sm501fb_sync_regs(fbi); in sm501fb_panel_power()
802 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_pnl() local
808 dev_dbg(fbi->dev, "%s(%p)\n", __func__, info); in sm501fb_set_par_pnl()
821 control = smc501_readl(fbi->regs + SM501_DC_PANEL_CONTROL); in sm501fb_set_par_pnl()
843 sm501fb_setup_gamma(fbi, SM501_DC_PANEL_PALETTE); in sm501fb_set_par_pnl()
848 sm501fb_setup_gamma(fbi, SM501_DC_PANEL_PALETTE); in sm501fb_set_par_pnl()
855 smc501_writel(0x0, fbi->regs + SM501_DC_PANEL_PANNING_CONTROL); in sm501fb_set_par_pnl()
859 smc501_writel(0x00, fbi->regs + SM501_DC_PANEL_TL_LOC); in sm501fb_set_par_pnl()
864 smc501_writel(reg, fbi->regs + SM501_DC_PANEL_BR_LOC); in sm501fb_set_par_pnl()
877 smc501_writel(control, fbi->regs + SM501_DC_PANEL_CONTROL); in sm501fb_set_par_pnl()
878 sm501fb_sync_regs(fbi); in sm501fb_set_par_pnl()
882 sm501_modify_reg(fbi->dev->parent, SM501_SYSTEM_CONTROL, in sm501fb_set_par_pnl()
886 sm501fb_panel_power(fbi, 1); in sm501fb_set_par_pnl()
916 struct sm501fb_info *fbi = par->info; in sm501fb_setcolreg() local
917 void __iomem *base = fbi->regs; in sm501fb_setcolreg()
966 struct sm501fb_info *fbi = par->info; in sm501fb_blank_pnl() local
968 dev_dbg(fbi->dev, "%s(mode=%d, %p)\n", __func__, blank_mode, info); in sm501fb_blank_pnl()
972 sm501fb_panel_power(fbi, 0); in sm501fb_blank_pnl()
976 sm501fb_panel_power(fbi, 1); in sm501fb_blank_pnl()
997 struct sm501fb_info *fbi = par->info; in sm501fb_blank_crt() local
1000 dev_dbg(fbi->dev, "%s(mode=%d, %p)\n", __func__, blank_mode, info); in sm501fb_blank_crt()
1002 ctrl = smc501_readl(fbi->regs + SM501_DC_CRT_CONTROL); in sm501fb_blank_crt()
1007 sm501_misc_control(fbi->dev->parent, SM501_MISC_DAC_POWER, 0); in sm501fb_blank_crt()
1017 sm501_misc_control(fbi->dev->parent, 0, SM501_MISC_DAC_POWER); in sm501fb_blank_crt()
1027 smc501_writel(ctrl, fbi->regs + SM501_DC_CRT_CONTROL); in sm501fb_blank_crt()
1028 sm501fb_sync_regs(fbi); in sm501fb_blank_crt()
1041 struct sm501fb_info *fbi = par->info; in sm501fb_cursor() local
1042 void __iomem *base = fbi->regs; in sm501fb_cursor()
1046 dev_dbg(fbi->dev, "%s(%p,%p)\n", __func__, info, cursor); in sm501fb_cursor()
1081 dev_dbg(fbi->dev, "set position %d,%d\n", x, y); in sm501fb_cursor()
1092 dev_dbg(fbi->dev, "%s: update cmap (%08x,%08x)\n", in sm501fb_cursor()
1103 dev_dbg(fbi->dev, "fgcol %08lx, bgcol %08lx\n", fg, bg); in sm501fb_cursor()
1123 dev_dbg(fbi->dev, "%s: setting shape (%d,%d)\n", in sm501fb_cursor()
1151 sm501fb_sync_regs(fbi); /* ensure cursor data flushed */ in sm501fb_cursor()
1287 struct sm501fb_info *fbi = par->info; in sm501fb_sync() local
1291 (smc501_readl(fbi->regs + SM501_SYSTEM_CONTROL) & in sm501fb_sync()
1305 struct sm501fb_info *fbi = par->info; in sm501fb_copyarea() local
1346 smc501_writel(par->screen.sm_addr, fbi->regs2d + SM501_2D_SOURCE_BASE); in sm501fb_copyarea()
1348 fbi->regs2d + SM501_2D_DESTINATION_BASE); in sm501fb_copyarea()
1352 fbi->regs2d + SM501_2D_WINDOW_WIDTH); in sm501fb_copyarea()
1356 fbi->regs2d + SM501_2D_PITCH); in sm501fb_copyarea()
1361 smc501_writel(0, fbi->regs2d + SM501_2D_STRETCH); in sm501fb_copyarea()
1364 smc501_writel(0x00100000, fbi->regs2d + SM501_2D_STRETCH); in sm501fb_copyarea()
1367 smc501_writel(0x00200000, fbi->regs2d + SM501_2D_STRETCH); in sm501fb_copyarea()
1372 smc501_writel(0xffffffff, fbi->regs2d + SM501_2D_COLOR_COMPARE_MASK); in sm501fb_copyarea()
1375 smc501_writel(0xffffffff, fbi->regs2d + SM501_2D_MASK); in sm501fb_copyarea()
1378 smc501_writel((sx << 16) | sy, fbi->regs2d + SM501_2D_SOURCE); in sm501fb_copyarea()
1379 smc501_writel((dx << 16) | dy, fbi->regs2d + SM501_2D_DESTINATION); in sm501fb_copyarea()
1382 smc501_writel((width << 16) | height, fbi->regs2d + SM501_2D_DIMENSION); in sm501fb_copyarea()
1385 smc501_writel(0x800000cc | rtl, fbi->regs2d + SM501_2D_CONTROL); in sm501fb_copyarea()
1391 struct sm501fb_info *fbi = par->info; in sm501fb_fillrect() local
1407 smc501_writel(par->screen.sm_addr, fbi->regs2d + SM501_2D_SOURCE_BASE); in sm501fb_fillrect()
1409 fbi->regs2d + SM501_2D_DESTINATION_BASE); in sm501fb_fillrect()
1413 fbi->regs2d + SM501_2D_WINDOW_WIDTH); in sm501fb_fillrect()
1417 fbi->regs2d + SM501_2D_PITCH); in sm501fb_fillrect()
1422 smc501_writel(0, fbi->regs2d + SM501_2D_STRETCH); in sm501fb_fillrect()
1425 smc501_writel(0x00100000, fbi->regs2d + SM501_2D_STRETCH); in sm501fb_fillrect()
1428 smc501_writel(0x00200000, fbi->regs2d + SM501_2D_STRETCH); in sm501fb_fillrect()
1433 smc501_writel(0xffffffff, fbi->regs2d + SM501_2D_COLOR_COMPARE_MASK); in sm501fb_fillrect()
1436 smc501_writel(0xffffffff, fbi->regs2d + SM501_2D_MASK); in sm501fb_fillrect()
1439 smc501_writel(rect->color, fbi->regs2d + SM501_2D_FOREGROUND); in sm501fb_fillrect()
1443 fbi->regs2d + SM501_2D_DESTINATION); in sm501fb_fillrect()
1446 smc501_writel((width << 16) | height, fbi->regs2d + SM501_2D_DIMENSION); in sm501fb_fillrect()
1449 smc501_writel(0x800100cc, fbi->regs2d + SM501_2D_CONTROL); in sm501fb_fillrect()
1486 static int sm501_init_cursor(struct fb_info *fbi, unsigned int reg_base) in sm501_init_cursor() argument
1492 if (fbi == NULL) in sm501_init_cursor()
1495 par = fbi->par; in sm501_init_cursor()
1501 fbi->fix.smem_len); in sm501_init_cursor()
1865 struct fb_info *fbi; in sm501fb_probe_one() local
1875 fbi = framebuffer_alloc(sizeof(struct sm501fb_par), info->dev); in sm501fb_probe_one()
1876 if (!fbi) in sm501fb_probe_one()
1879 par = fbi->par; in sm501fb_probe_one()
1882 fbi->pseudo_palette = &par->pseudo_palette; in sm501fb_probe_one()
1884 info->fb[head] = fbi; in sm501fb_probe_one()
1894 struct fb_info *fbi = info->fb[head]; in sm501_free_init_fb() local
1896 if (!fbi) in sm501_free_init_fb()
1899 fb_dealloc_cmap(&fbi->cmap); in sm501_free_init_fb()
1905 struct fb_info *fbi = info->fb[head]; in sm501fb_start_one() local
1908 if (!fbi) in sm501fb_start_one()
1926 dev_info(info->dev, "fb%d: %s frame buffer\n", fbi->node, fbi->fix.id); in sm501fb_start_one()
2076 struct fb_info *fbi = info->fb[head]; in sm501fb_suspend_fb() local
2079 if (!fbi) in sm501fb_suspend_fb()
2082 par = fbi->par; in sm501fb_suspend_fb()
2087 (par->ops.fb_blank)(FB_BLANK_POWERDOWN, fbi); in sm501fb_suspend_fb()
2092 fb_set_suspend(fbi, 1); in sm501fb_suspend_fb()
2127 struct fb_info *fbi = info->fb[head]; in sm501fb_resume_fb() local
2130 if (!fbi) in sm501fb_resume_fb()
2133 par = fbi->par; in sm501fb_resume_fb()
2139 (par->ops.fb_set_par)(fbi); in sm501fb_resume_fb()
2155 fb_set_suspend(fbi, 0); in sm501fb_resume_fb()