int wisky_charger_logo_display(int index) { if(NULL == g_fb0_inf){ pr_info("NULL framebuffer information, show logo fail!\n"); return -EINVAL; } switch(index) { case LOGO_BLANK: { memset(blank_clut224_data, 0x20, WISKY_LCD_WIDTH*WISKY_LCD_HEIGHT); if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&blank_clut224)) return 0; } break; case LOGO_NUM1: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge0_clut224)) return 0; break; case LOGO_NUM2: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge1_clut224)) return 0; break; case LOGO_NUM3: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge2_clut224)) return 0; break; case LOGO_NUM4: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge3_clut224)) return 0; break; case LOGO_NUM5: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge4_clut224)) return 0; break; // case LOGO_NUM6: // set_logo(&logo_charge6_clut224); // fb_show_logo(inf->fb0, 0); // break; case LOGO_POOR: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge_poor_clut224)) return 0; break; case LOGO_FULL: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&logo_charge_full_clut224)) return 0; break; case LOGO_BOOTUP: if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,NULL)) return 0; break; default: memset(blank_clut224_data, 0x20, WISKY_LCD_WIDTH*WISKY_LCD_HEIGHT); if(!fb_prepare_logo(g_fb0_inf, FB_ROTATE_UR,&blank_clut224)) return 0; break; } fb_set_cmap(&g_fb0_inf->cmap, g_fb0_inf); fb_show_logo(g_fb0_inf, FB_ROTATE_UR); g_fb0_inf->fbops->fb_pan_display(&(g_fb0_inf->var), g_fb0_inf); return 0; }
static int __devinit s3cfb_probe(struct platform_device *pdev) { struct s3c_platform_fb *pdata; struct s3cfb_global *fbdev; struct resource *res; int i, j, ret = 0; printk("%s\n",__func__); fbdev = kzalloc(sizeof(struct s3cfb_global), GFP_KERNEL); if (!fbdev) { dev_err(&pdev->dev, "failed to allocate for " "global fb structure\n"); ret = -ENOMEM; goto err_global; } fbdev->dev = &pdev->dev; #ifdef CONFIG_FB_S3C_LTE480WV s3cfb_set_lcd_info(fbdev); #endif fbdev->regulator = regulator_get(&pdev->dev, "pd"); if (!fbdev->regulator) { dev_err(fbdev->dev, "failed to get regulator\n"); ret = -EINVAL; goto err_regulator; } ret = regulator_enable(fbdev->regulator); if (ret < 0) { dev_err(fbdev->dev, "failed to enable regulator\n"); ret = -EINVAL; goto err_regulator; } pdata = to_fb_plat(&pdev->dev); if (!pdata) { dev_err(fbdev->dev, "failed to get platform data\n"); ret = -EINVAL; goto err_pdata; } //fbdev->lcd = (struct s3cfb_lcd *)pdata->lcd; if (pdata->cfg_gpio) pdata->cfg_gpio(pdev); if (pdata->clk_on) pdata->clk_on(pdev, &fbdev->clock); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(fbdev->dev, "failed to get io memory region\n"); ret = -EINVAL; goto err_io; } res = request_mem_region(res->start, res->end - res->start + 1, pdev->name); if (!res) { dev_err(fbdev->dev, "failed to request io memory region\n"); ret = -EINVAL; goto err_io; } fbdev->regs = ioremap(res->start, res->end - res->start + 1); if (!fbdev->regs) { dev_err(fbdev->dev, "failed to remap io region\n"); ret = -EINVAL; goto err_mem; } /*set gamma LUT*/ //SSCR xuhui 110130 s3cfb_set_gamma(fbdev); s3cfb_set_vsync_interrupt(fbdev, 1); s3cfb_set_global_interrupt(fbdev, 1); s3cfb_init_global(fbdev); if (s3cfb_alloc_framebuffer(fbdev)) { ret = -ENOMEM; goto err_alloc; } if (s3cfb_register_framebuffer(fbdev)) { ret = -EINVAL; goto err_register; } s3cfb_set_clock(fbdev); s3cfb_set_window(fbdev, pdata->default_win, 1); s3cfb_display_on(fbdev); fbdev->irq = platform_get_irq(pdev, 0); if (request_irq(fbdev->irq, s3cfb_irq_frame, IRQF_SHARED, pdev->name, fbdev)) { dev_err(fbdev->dev, "request_irq failed\n"); ret = -EINVAL; goto err_irq; } #ifdef CONFIG_FB_S3C_LCD_INIT if (pdata->backlight_on) pdata->backlight_on(pdev); if (!bootloaderfb && pdata->reset_lcd) pdata->reset_lcd(pdev); if (pdata->lcd_on) pdata->lcd_on(pdev); #endif #ifdef CONFIG_HAS_EARLYSUSPEND fbdev->early_suspend.suspend = s3cfb_early_suspend; fbdev->early_suspend.resume = s3cfb_late_resume; fbdev->early_suspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB; register_early_suspend(&fbdev->early_suspend); #endif ret = device_create_file(&(pdev->dev), &dev_attr_win_power); if (ret < 0) dev_err(fbdev->dev, "failed to add sysfs entries\n"); dev_info(fbdev->dev, "registered successfully\n"); #if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO) if (fb_prepare_logo( fbdev->fb[pdata->default_win], FB_ROTATE_UR)) { printk("Start display and show logo\n"); /* Start display and show logo on boot */ fb_set_cmap(&fbdev->fb[pdata->default_win]->cmap, fbdev->fb[pdata->default_win]); fb_show_logo(fbdev->fb[pdata->default_win], FB_ROTATE_UR); } #endif return 0; err_irq: s3cfb_display_off(fbdev); s3cfb_set_window(fbdev, pdata->default_win, 0); for (i = pdata->default_win; i < pdata->nr_wins + pdata->default_win; i++) { j = i % pdata->nr_wins; unregister_framebuffer(fbdev->fb[j]); } err_register: for (i = 0; i < pdata->nr_wins; i++) { if (i == pdata->default_win) s3cfb_unmap_default_video_memory(fbdev->fb[i]); framebuffer_release(fbdev->fb[i]); } kfree(fbdev->fb); err_alloc: iounmap(fbdev->regs); err_mem: release_mem_region(res->start, res->end - res->start + 1); err_io: pdata->clk_off(pdev, &fbdev->clock); err_pdata: regulator_disable(fbdev->regulator); err_regulator: kfree(fbdev); err_global: return ret; }