Lines Matching refs:info

115 	struct sm501fb_info	*info;  member
139 static inline void sm501fb_sync_regs(struct sm501fb_info *info) in sm501fb_sync_regs() argument
141 smc501_readl(info->regs); in sm501fb_sync_regs()
297 struct fb_info *info) in sm501fb_check_var() argument
299 struct sm501fb_par *par = info->par; in sm501fb_check_var()
300 struct sm501fb_info *sm = par->info; in sm501fb_check_var()
407 struct fb_info *info) in sm501fb_check_var_crt() argument
409 return sm501fb_check_var(var, info); in sm501fb_check_var_crt()
419 struct fb_info *info) in sm501fb_check_var_pnl() argument
421 return sm501fb_check_var(var, info); in sm501fb_check_var_pnl()
429 static int sm501fb_set_par_common(struct fb_info *info, in sm501fb_set_par_common() argument
432 struct sm501fb_par *par = info->par; in sm501fb_set_par_common()
433 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_common()
466 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in sm501fb_set_par_common()
470 info->fix.visual = FB_VISUAL_TRUECOLOR; in sm501fb_set_par_common()
474 info->fix.visual = FB_VISUAL_TRUECOLOR; in sm501fb_set_par_common()
479 info->fix.line_length = (var->xres_virtual * var->bits_per_pixel)/8; in sm501fb_set_par_common()
480 smem_len = info->fix.line_length * var->yres_virtual; in sm501fb_set_par_common()
483 info->fix.line_length); in sm501fb_set_par_common()
490 mutex_lock(&info->mm_lock); in sm501fb_set_par_common()
491 info->fix.smem_start = fbi->fbmem_res->start + par->screen.sm_addr; in sm501fb_set_par_common()
492 info->fix.smem_len = smem_len; in sm501fb_set_par_common()
493 mutex_unlock(&info->mm_lock); in sm501fb_set_par_common()
495 info->screen_base = fbi->fbmem + par->screen.sm_addr; in sm501fb_set_par_common()
496 info->screen_size = info->fix.smem_len; in sm501fb_set_par_common()
526 static void sm501fb_set_par_geometry(struct fb_info *info, in sm501fb_set_par_geometry() argument
529 struct sm501fb_par *par = info->par; in sm501fb_set_par_geometry()
530 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_geometry()
541 reg = info->fix.line_length; in sm501fb_set_par_geometry()
581 struct fb_info *info) in sm501fb_pan_crt() argument
583 struct sm501fb_par *par = info->par; in sm501fb_pan_crt()
584 struct sm501fb_info *fbi = par->info; in sm501fb_pan_crt()
585 unsigned int bytes_pixel = info->var.bits_per_pixel / 8; in sm501fb_pan_crt()
598 var->yoffset * info->fix.line_length); in sm501fb_pan_crt()
611 struct fb_info *info) in sm501fb_pan_pnl() argument
613 struct sm501fb_par *par = info->par; in sm501fb_pan_pnl()
614 struct sm501fb_info *fbi = par->info; in sm501fb_pan_pnl()
617 reg = var->xoffset | (info->var.xres_virtual << 16); in sm501fb_pan_pnl()
620 reg = var->yoffset | (info->var.yres_virtual << 16); in sm501fb_pan_pnl()
632 static int sm501fb_set_par_crt(struct fb_info *info) in sm501fb_set_par_crt() argument
634 struct sm501fb_par *par = info->par; in sm501fb_set_par_crt()
635 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_crt()
636 struct fb_var_screeninfo *var = &info->var; in sm501fb_set_par_crt()
642 dev_dbg(fbi->dev, "%s(%p)\n", __func__, info); in sm501fb_set_par_crt()
668 info->fix.smem_len); in sm501fb_set_par_crt()
672 ret = sm501fb_set_par_common(info, var); in sm501fb_set_par_crt()
678 sm501fb_pan_crt(var, info); in sm501fb_set_par_crt()
679 sm501fb_set_par_geometry(info, var); in sm501fb_set_par_crt()
802 static int sm501fb_set_par_pnl(struct fb_info *info) in sm501fb_set_par_pnl() argument
804 struct sm501fb_par *par = info->par; in sm501fb_set_par_pnl()
805 struct sm501fb_info *fbi = par->info; in sm501fb_set_par_pnl()
806 struct fb_var_screeninfo *var = &info->var; in sm501fb_set_par_pnl()
811 dev_dbg(fbi->dev, "%s(%p)\n", __func__, info); in sm501fb_set_par_pnl()
815 ret = sm501fb_set_par_common(info, var); in sm501fb_set_par_pnl()
819 sm501fb_pan_pnl(var, info); in sm501fb_set_par_pnl()
820 sm501fb_set_par_geometry(info, var); in sm501fb_set_par_pnl()
916 unsigned transp, struct fb_info *info) in sm501fb_setcolreg() argument
918 struct sm501fb_par *par = info->par; in sm501fb_setcolreg()
919 struct sm501fb_info *fbi = par->info; in sm501fb_setcolreg()
928 switch (info->fix.visual) { in sm501fb_setcolreg()
935 val = chan_to_field(red, &info->var.red); in sm501fb_setcolreg()
936 val |= chan_to_field(green, &info->var.green); in sm501fb_setcolreg()
937 val |= chan_to_field(blue, &info->var.blue); in sm501fb_setcolreg()
966 static int sm501fb_blank_pnl(int blank_mode, struct fb_info *info) in sm501fb_blank_pnl() argument
968 struct sm501fb_par *par = info->par; in sm501fb_blank_pnl()
969 struct sm501fb_info *fbi = par->info; in sm501fb_blank_pnl()
971 dev_dbg(fbi->dev, "%s(mode=%d, %p)\n", __func__, blank_mode, info); in sm501fb_blank_pnl()
997 static int sm501fb_blank_crt(int blank_mode, struct fb_info *info) in sm501fb_blank_crt() argument
999 struct sm501fb_par *par = info->par; in sm501fb_blank_crt()
1000 struct sm501fb_info *fbi = par->info; in sm501fb_blank_crt()
1003 dev_dbg(fbi->dev, "%s(mode=%d, %p)\n", __func__, blank_mode, info); in sm501fb_blank_crt()
1040 static int sm501fb_cursor(struct fb_info *info, struct fb_cursor *cursor) in sm501fb_cursor() argument
1042 struct sm501fb_par *par = info->par; in sm501fb_cursor()
1043 struct sm501fb_info *fbi = par->info; in sm501fb_cursor()
1048 dev_dbg(fbi->dev, "%s(%p,%p)\n", __func__, info, cursor); in sm501fb_cursor()
1097 bg = ((info->cmap.red[bg_col] & 0xF8) << 8) | in sm501fb_cursor()
1098 ((info->cmap.green[bg_col] & 0xFC) << 3) | in sm501fb_cursor()
1099 ((info->cmap.blue[bg_col] & 0xF8) >> 3); in sm501fb_cursor()
1101 fg = ((info->cmap.red[fg_col] & 0xF8) << 8) | in sm501fb_cursor()
1102 ((info->cmap.green[fg_col] & 0xFC) << 3) | in sm501fb_cursor()
1103 ((info->cmap.blue[fg_col] & 0xF8) >> 3); in sm501fb_cursor()
1165 struct sm501fb_info *info = dev_get_drvdata(dev); in sm501fb_crtsrc_show() local
1168 ctrl = smc501_readl(info->regs + SM501_DC_CRT_CONTROL); in sm501fb_crtsrc_show()
1183 struct sm501fb_info *info = dev_get_drvdata(dev); in sm501fb_crtsrc_store() local
1199 ctrl = smc501_readl(info->regs + SM501_DC_CRT_CONTROL); in sm501fb_crtsrc_store()
1211 smc501_writel(ctrl, info->regs + SM501_DC_CRT_CONTROL); in sm501fb_crtsrc_store()
1212 sm501fb_sync_regs(info); in sm501fb_crtsrc_store()
1224 static int sm501fb_show_regs(struct sm501fb_info *info, char *ptr, in sm501fb_show_regs() argument
1227 void __iomem *mem = info->regs; in sm501fb_show_regs()
1246 struct sm501fb_info *info = dev_get_drvdata(dev); in sm501fb_debug_show_crt() local
1249 ptr += sm501fb_show_regs(info, ptr, SM501_DC_CRT_CONTROL, 0x40); in sm501fb_debug_show_crt()
1250 ptr += sm501fb_show_regs(info, ptr, SM501_DC_CRT_HWC_BASE, 0x10); in sm501fb_debug_show_crt()
1265 struct sm501fb_info *info = dev_get_drvdata(dev); in sm501fb_debug_show_pnl() local
1268 ptr += sm501fb_show_regs(info, ptr, 0x0, 0x40); in sm501fb_debug_show_pnl()
1269 ptr += sm501fb_show_regs(info, ptr, SM501_DC_PANEL_HWC_BASE, 0x10); in sm501fb_debug_show_pnl()
1277 static int sm501fb_sync(struct fb_info *info) in sm501fb_sync() argument
1280 struct sm501fb_par *par = info->par; in sm501fb_sync()
1281 struct sm501fb_info *fbi = par->info; in sm501fb_sync()
1290 dev_err(info->dev, "Timeout waiting for 2d engine sync\n"); in sm501fb_sync()
1296 static void sm501fb_copyarea(struct fb_info *info, const struct fb_copyarea *area) in sm501fb_copyarea() argument
1298 struct sm501fb_par *par = info->par; in sm501fb_copyarea()
1299 struct sm501fb_info *fbi = par->info; in sm501fb_copyarea()
1309 if ((sx >= info->var.xres_virtual) || in sm501fb_copyarea()
1310 (sy >= info->var.yres_virtual)) in sm501fb_copyarea()
1313 if ((sx + width) >= info->var.xres_virtual) in sm501fb_copyarea()
1314 width = info->var.xres_virtual - sx - 1; in sm501fb_copyarea()
1315 if ((sy + height) >= info->var.yres_virtual) in sm501fb_copyarea()
1316 height = info->var.yres_virtual - sy - 1; in sm501fb_copyarea()
1319 if ((dx >= info->var.xres_virtual) || in sm501fb_copyarea()
1320 (dy >= info->var.yres_virtual)) in sm501fb_copyarea()
1323 if ((dx + width) >= info->var.xres_virtual) in sm501fb_copyarea()
1324 width = info->var.xres_virtual - dx - 1; in sm501fb_copyarea()
1325 if ((dy + height) >= info->var.yres_virtual) in sm501fb_copyarea()
1326 height = info->var.yres_virtual - dy - 1; in sm501fb_copyarea()
1336 if (sm501fb_sync(info)) in sm501fb_copyarea()
1345 smc501_writel((info->var.xres << 16) | info->var.xres, in sm501fb_copyarea()
1349 smc501_writel((info->var.xres_virtual << 16) | info->var.xres_virtual, in sm501fb_copyarea()
1353 switch (info->var.bits_per_pixel) { in sm501fb_copyarea()
1382 static void sm501fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) in sm501fb_fillrect() argument
1384 struct sm501fb_par *par = info->par; in sm501fb_fillrect()
1385 struct sm501fb_info *fbi = par->info; in sm501fb_fillrect()
1388 if ((rect->dx >= info->var.xres_virtual) || in sm501fb_fillrect()
1389 (rect->dy >= info->var.yres_virtual)) in sm501fb_fillrect()
1392 if ((rect->dx + width) >= info->var.xres_virtual) in sm501fb_fillrect()
1393 width = info->var.xres_virtual - rect->dx - 1; in sm501fb_fillrect()
1394 if ((rect->dy + height) >= info->var.yres_virtual) in sm501fb_fillrect()
1395 height = info->var.yres_virtual - rect->dy - 1; in sm501fb_fillrect()
1397 if (sm501fb_sync(info)) in sm501fb_fillrect()
1406 smc501_writel((info->var.xres << 16) | info->var.xres, in sm501fb_fillrect()
1410 smc501_writel((info->var.xres_virtual << 16) | info->var.xres_virtual, in sm501fb_fillrect()
1414 switch (info->var.bits_per_pixel) { in sm501fb_fillrect()
1483 struct sm501fb_info *info; in sm501_init_cursor() local
1490 info = par->info; in sm501_init_cursor()
1492 par->cursor_regs = info->regs + reg_base; in sm501_init_cursor()
1494 ret = sm501_alloc_mem(info, &par->cursor, SM501_MEMF_CURSOR, 1024, in sm501_init_cursor()
1507 sm501fb_sync_regs(info); in sm501_init_cursor()
1517 static int sm501fb_start(struct sm501fb_info *info, in sm501fb_start() argument
1525 info->irq = ret = platform_get_irq(pdev, 0); in sm501fb_start()
1540 info->regs_res = request_mem_region(res->start, in sm501fb_start()
1544 if (info->regs_res == NULL) { in sm501fb_start()
1550 info->regs = ioremap(res->start, resource_size(res)); in sm501fb_start()
1551 if (info->regs == NULL) { in sm501fb_start()
1566 info->regs2d_res = request_mem_region(res->start, in sm501fb_start()
1570 if (info->regs2d_res == NULL) { in sm501fb_start()
1576 info->regs2d = ioremap(res->start, resource_size(res)); in sm501fb_start()
1577 if (info->regs2d == NULL) { in sm501fb_start()
1591 info->fbmem_res = request_mem_region(res->start, in sm501fb_start()
1594 if (info->fbmem_res == NULL) { in sm501fb_start()
1600 info->fbmem = ioremap(res->start, resource_size(res)); in sm501fb_start()
1601 if (info->fbmem == NULL) { in sm501fb_start()
1606 info->fbmem_len = resource_size(res); in sm501fb_start()
1609 memset_io(info->fbmem, 0, info->fbmem_len); in sm501fb_start()
1613 smc501_writel(0, info->regs + SM501_DC_PANEL_PALETTE + (k * 4)); in sm501fb_start()
1622 sm501_init_cursor(info->fb[HEAD_CRT], SM501_DC_CRT_HWC_ADDR); in sm501fb_start()
1623 sm501_init_cursor(info->fb[HEAD_PANEL], SM501_DC_PANEL_HWC_ADDR); in sm501fb_start()
1628 release_mem_region(info->fbmem_res->start, in sm501fb_start()
1629 resource_size(info->fbmem_res)); in sm501fb_start()
1632 iounmap(info->regs2d); in sm501fb_start()
1635 release_mem_region(info->regs2d_res->start, in sm501fb_start()
1636 resource_size(info->regs2d_res)); in sm501fb_start()
1639 iounmap(info->regs); in sm501fb_start()
1642 release_mem_region(info->regs_res->start, in sm501fb_start()
1643 resource_size(info->regs_res)); in sm501fb_start()
1649 static void sm501fb_stop(struct sm501fb_info *info) in sm501fb_stop() argument
1652 sm501_unit_power(info->dev->parent, SM501_GATE_DISPLAY, 0); in sm501fb_stop()
1654 iounmap(info->fbmem); in sm501fb_stop()
1655 release_mem_region(info->fbmem_res->start, in sm501fb_stop()
1656 resource_size(info->fbmem_res)); in sm501fb_stop()
1658 iounmap(info->regs2d); in sm501fb_stop()
1659 release_mem_region(info->regs2d_res->start, in sm501fb_stop()
1660 resource_size(info->regs2d_res)); in sm501fb_stop()
1662 iounmap(info->regs); in sm501fb_stop()
1663 release_mem_region(info->regs_res->start, in sm501fb_stop()
1664 resource_size(info->regs_res)); in sm501fb_stop()
1672 struct sm501fb_info *info = par->info; in sm501fb_init_fb() local
1679 pd = info->pdata->fb_crt; in sm501fb_init_fb()
1680 ctrl = smc501_readl(info->regs + SM501_DC_CRT_CONTROL); in sm501fb_init_fb()
1684 if (info->pdata->fb_route != SM501_FB_CRT_PANEL) { in sm501fb_init_fb()
1686 smc501_writel(ctrl, info->regs + SM501_DC_CRT_CONTROL); in sm501fb_init_fb()
1692 pd = info->pdata->fb_pnl; in sm501fb_init_fb()
1693 ctrl = smc501_readl(info->regs + SM501_DC_PANEL_CONTROL); in sm501fb_init_fb()
1704 dev_info(info->dev, "fb %s %sabled at start\n", in sm501fb_init_fb()
1709 if (head == HEAD_CRT && info->pdata->fb_route == SM501_FB_CRT_PANEL) { in sm501fb_init_fb()
1711 smc501_writel(ctrl, info->regs + SM501_DC_CRT_CONTROL); in sm501fb_init_fb()
1733 if (of_get_property(info->dev->parent->of_node, "little-endian", NULL)) in sm501fb_init_fb()
1736 if (of_get_property(info->dev->parent->of_node, "big-endian", NULL)) in sm501fb_init_fb()
1757 if (info->edid_data) { in sm501fb_init_fb()
1759 fb_edid_to_monspecs(info->edid_data, &fb->monspecs); in sm501fb_init_fb()
1769 dev_info(info->dev, "using supplied mode\n"); in sm501fb_init_fb()
1776 if (info->edid_data) { in sm501fb_init_fb()
1782 kfree(info->edid_data); in sm501fb_init_fb()
1790 dev_info(info->dev, "using mode specified in " in sm501fb_init_fb()
1794 dev_info(info->dev, "using mode specified in " in sm501fb_init_fb()
1798 dev_info(info->dev, "using mode default " in sm501fb_init_fb()
1802 dev_info(info->dev, "using mode from list\n"); in sm501fb_init_fb()
1805 dev_info(info->dev, "ret = %d\n", ret); in sm501fb_init_fb()
1806 dev_info(info->dev, "failed to find mode\n"); in sm501fb_init_fb()
1814 dev_err(info->dev, "failed to allocate cmap memory\n"); in sm501fb_init_fb()
1821 dev_err(info->dev, "check_var() failed on initial setup?\n"); in sm501fb_init_fb()
1852 static int sm501fb_probe_one(struct sm501fb_info *info, in sm501fb_probe_one() argument
1860 pd = (head == HEAD_CRT) ? info->pdata->fb_crt : info->pdata->fb_pnl; in sm501fb_probe_one()
1864 dev_info(info->dev, "no data for fb %s (disabled)\n", name); in sm501fb_probe_one()
1868 fbi = framebuffer_alloc(sizeof(struct sm501fb_par), info->dev); in sm501fb_probe_one()
1870 dev_err(info->dev, "cannot allocate %s framebuffer\n", name); in sm501fb_probe_one()
1875 par->info = info; in sm501fb_probe_one()
1879 info->fb[head] = fbi; in sm501fb_probe_one()
1886 static void sm501_free_init_fb(struct sm501fb_info *info, in sm501_free_init_fb() argument
1889 struct fb_info *fbi = info->fb[head]; in sm501_free_init_fb()
1894 static int sm501fb_start_one(struct sm501fb_info *info, in sm501fb_start_one() argument
1897 struct fb_info *fbi = info->fb[head]; in sm501fb_start_one()
1903 mutex_init(&info->fb[head]->mm_lock); in sm501fb_start_one()
1905 ret = sm501fb_init_fb(info->fb[head], head, drvname); in sm501fb_start_one()
1907 dev_err(info->dev, "cannot initialise fb %s\n", drvname); in sm501fb_start_one()
1911 ret = register_framebuffer(info->fb[head]); in sm501fb_start_one()
1913 dev_err(info->dev, "failed to register fb %s\n", drvname); in sm501fb_start_one()
1914 sm501_free_init_fb(info, head); in sm501fb_start_one()
1918 dev_info(info->dev, "fb%d: %s frame buffer\n", fbi->node, fbi->fix.id); in sm501fb_start_one()
1925 struct sm501fb_info *info; in sm501fb_probe() local
1931 info = kzalloc(sizeof(struct sm501fb_info), GFP_KERNEL); in sm501fb_probe()
1932 if (!info) { in sm501fb_probe()
1937 info->dev = dev = &pdev->dev; in sm501fb_probe()
1938 platform_set_drvdata(pdev, info); in sm501fb_probe()
1942 info->pdata = pd->fb; in sm501fb_probe()
1945 if (info->pdata == NULL) { in sm501fb_probe()
1953 info->pdata = &sm501fb_def_pdata; in sm501fb_probe()
1961 info->edid_data = kmemdup(prop, EDID_LENGTH, in sm501fb_probe()
1963 if (info->edid_data) in sm501fb_probe()
1970 info->pdata = &sm501fb_def_pdata; in sm501fb_probe()
1976 ret = sm501fb_probe_one(info, HEAD_CRT); in sm501fb_probe()
1982 ret = sm501fb_probe_one(info, HEAD_PANEL); in sm501fb_probe()
1988 if (info->fb[HEAD_PANEL] == NULL && in sm501fb_probe()
1989 info->fb[HEAD_CRT] == NULL) { in sm501fb_probe()
1997 ret = sm501fb_start(info, pdev); in sm501fb_probe()
2003 ret = sm501fb_start_one(info, HEAD_CRT, driver_name_crt); in sm501fb_probe()
2009 ret = sm501fb_start_one(info, HEAD_PANEL, driver_name_pnl); in sm501fb_probe()
2039 unregister_framebuffer(info->fb[HEAD_PANEL]); in sm501fb_probe()
2040 sm501_free_init_fb(info, HEAD_PANEL); in sm501fb_probe()
2043 unregister_framebuffer(info->fb[HEAD_CRT]); in sm501fb_probe()
2044 sm501_free_init_fb(info, HEAD_CRT); in sm501fb_probe()
2047 sm501fb_stop(info); in sm501fb_probe()
2050 framebuffer_release(info->fb[HEAD_PANEL]); in sm501fb_probe()
2053 framebuffer_release(info->fb[HEAD_CRT]); in sm501fb_probe()
2056 kfree(info); in sm501fb_probe()
2067 struct sm501fb_info *info = platform_get_drvdata(pdev); in sm501fb_remove() local
2068 struct fb_info *fbinfo_crt = info->fb[0]; in sm501fb_remove()
2069 struct fb_info *fbinfo_pnl = info->fb[1]; in sm501fb_remove()
2075 sm501_free_init_fb(info, HEAD_CRT); in sm501fb_remove()
2076 sm501_free_init_fb(info, HEAD_PANEL); in sm501fb_remove()
2081 sm501fb_stop(info); in sm501fb_remove()
2082 kfree(info); in sm501fb_remove()
2092 static int sm501fb_suspend_fb(struct sm501fb_info *info, in sm501fb_suspend_fb() argument
2095 struct fb_info *fbi = info->fb[head]; in sm501fb_suspend_fb()
2114 dev_err(info->dev, "no memory to store screen\n"); in sm501fb_suspend_fb()
2120 dev_err(info->dev, "no memory to store cursor\n"); in sm501fb_suspend_fb()
2124 dev_dbg(info->dev, "suspending screen to %p\n", par->store_fb); in sm501fb_suspend_fb()
2125 dev_dbg(info->dev, "suspending cursor to %p\n", par->store_cursor); in sm501fb_suspend_fb()
2139 static void sm501fb_resume_fb(struct sm501fb_info *info, in sm501fb_resume_fb() argument
2142 struct fb_info *fbi = info->fb[head]; in sm501fb_resume_fb()
2154 dev_dbg(info->dev, "restoring screen from %p\n", par->store_fb); in sm501fb_resume_fb()
2155 dev_dbg(info->dev, "restoring cursor from %p\n", par->store_cursor); in sm501fb_resume_fb()
2178 struct sm501fb_info *info = platform_get_drvdata(pdev); in sm501fb_suspend() local
2181 info->pm_crt_ctrl = smc501_readl(info->regs + SM501_DC_CRT_CONTROL); in sm501fb_suspend()
2183 sm501fb_suspend_fb(info, HEAD_CRT); in sm501fb_suspend()
2184 sm501fb_suspend_fb(info, HEAD_PANEL); in sm501fb_suspend()
2187 sm501_unit_power(info->dev->parent, SM501_GATE_DISPLAY, 0); in sm501fb_suspend()
2198 struct sm501fb_info *info = platform_get_drvdata(pdev); in sm501fb_resume() local
2201 sm501_unit_power(info->dev->parent, SM501_GATE_DISPLAY, 1); in sm501fb_resume()
2205 crt_ctrl = smc501_readl(info->regs + SM501_DC_CRT_CONTROL); in sm501fb_resume()
2207 crt_ctrl |= info->pm_crt_ctrl & SM501_CRT_CTRL_SAVE; in sm501fb_resume()
2208 smc501_writel(crt_ctrl, info->regs + SM501_DC_CRT_CONTROL); in sm501fb_resume()
2210 sm501fb_resume_fb(info, HEAD_CRT); in sm501fb_resume()
2211 sm501fb_resume_fb(info, HEAD_PANEL); in sm501fb_resume()