Lines Matching refs:info
42 struct fb_info *info; member
153 struct fb_info *info) in atmel_lcdfb_update_dma2d() argument
165 struct fb_info *info) in atmel_lcdfb_update_dma2d() argument
170 pixeloff = (var->xoffset * info->var.bits_per_pixel) & 0x1f; in atmel_lcdfb_update_dma2d()
172 dma2dcfg = (info->var.xres_virtual - info->var.xres) in atmel_lcdfb_update_dma2d()
173 * info->var.bits_per_pixel / 8; in atmel_lcdfb_update_dma2d()
395 static void atmel_lcdfb_update_dma(struct fb_info *info, in atmel_lcdfb_update_dma() argument
398 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_update_dma()
399 struct fb_fix_screeninfo *fix = &info->fix; in atmel_lcdfb_update_dma()
403 + var->xoffset * info->var.bits_per_pixel / 8); in atmel_lcdfb_update_dma()
410 atmel_lcdfb_update_dma2d(sinfo, var, info); in atmel_lcdfb_update_dma()
415 struct fb_info *info = sinfo->info; in atmel_lcdfb_free_video_memory() local
417 dma_free_writecombine(info->device, info->fix.smem_len, in atmel_lcdfb_free_video_memory()
418 info->screen_base, info->fix.smem_start); in atmel_lcdfb_free_video_memory()
430 struct fb_info *info = sinfo->info; in atmel_lcdfb_alloc_video_memory() local
431 struct fb_var_screeninfo *var = &info->var; in atmel_lcdfb_alloc_video_memory()
436 info->fix.smem_len = max(smem_len, sinfo->smem_len); in atmel_lcdfb_alloc_video_memory()
438 info->screen_base = dma_alloc_writecombine(info->device, info->fix.smem_len, in atmel_lcdfb_alloc_video_memory()
439 (dma_addr_t *)&info->fix.smem_start, GFP_KERNEL); in atmel_lcdfb_alloc_video_memory()
441 if (!info->screen_base) { in atmel_lcdfb_alloc_video_memory()
445 memset(info->screen_base, 0, info->fix.smem_len); in atmel_lcdfb_alloc_video_memory()
451 struct fb_info *info) in atmel_lcdfb_choose_mode() argument
457 fbmode = fb_find_nearest_mode(&varfbmode, &info->modelist); in atmel_lcdfb_choose_mode()
488 struct fb_info *info) in atmel_lcdfb_check_var() argument
490 struct device *dev = info->device; in atmel_lcdfb_check_var()
491 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_check_var()
501 if (!atmel_lcdfb_choose_mode(var, info)) { in atmel_lcdfb_check_var()
533 if (info->fix.smem_len) { in atmel_lcdfb_check_var()
536 if (smem_len > info->fix.smem_len) { in atmel_lcdfb_check_var()
538 info->fix.smem_len, smem_len); in atmel_lcdfb_check_var()
642 static int atmel_lcdfb_set_par(struct fb_info *info) in atmel_lcdfb_set_par() argument
644 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_set_par()
654 dev_dbg(info->device, "%s:\n", __func__); in atmel_lcdfb_set_par()
655 dev_dbg(info->device, " * resolution: %ux%u (%ux%u virtual)\n", in atmel_lcdfb_set_par()
656 info->var.xres, info->var.yres, in atmel_lcdfb_set_par()
657 info->var.xres_virtual, info->var.yres_virtual); in atmel_lcdfb_set_par()
661 if (info->var.bits_per_pixel == 1) in atmel_lcdfb_set_par()
662 info->fix.visual = FB_VISUAL_MONO01; in atmel_lcdfb_set_par()
663 else if (info->var.bits_per_pixel <= 8) in atmel_lcdfb_set_par()
664 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in atmel_lcdfb_set_par()
666 info->fix.visual = FB_VISUAL_TRUECOLOR; in atmel_lcdfb_set_par()
668 bits_per_line = info->var.xres_virtual * info->var.bits_per_pixel; in atmel_lcdfb_set_par()
669 info->fix.line_length = DIV_ROUND_UP(bits_per_line, 8); in atmel_lcdfb_set_par()
672 dev_dbg(info->device, " * update DMA engine\n"); in atmel_lcdfb_set_par()
673 atmel_lcdfb_update_dma(info, &info->var); in atmel_lcdfb_set_par()
676 value = (info->var.yres * info->var.xres * info->var.bits_per_pixel) / 32; in atmel_lcdfb_set_par()
688 value = DIV_ROUND_UP(clk_value_khz, PICOS2KHZ(info->var.pixclock)); in atmel_lcdfb_set_par()
691 dev_notice(info->device, "Bypassing pixel clock divider\n"); in atmel_lcdfb_set_par()
695 dev_dbg(info->device, " * programming CLKVAL = 0x%08lx\n", in atmel_lcdfb_set_par()
699 info->var.pixclock = in atmel_lcdfb_set_par()
701 dev_dbg(info->device, " updated pixclk: %lu KHz\n", in atmel_lcdfb_set_par()
702 PICOS2KHZ(info->var.pixclock)); in atmel_lcdfb_set_par()
709 if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT)) in atmel_lcdfb_set_par()
711 if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT)) in atmel_lcdfb_set_par()
714 switch (info->var.bits_per_pixel) { in atmel_lcdfb_set_par()
725 dev_dbg(info->device, " * LCDCON2 = %08lx\n", value); in atmel_lcdfb_set_par()
729 value = (info->var.vsync_len - 1) << ATMEL_LCDC_VPW_OFFSET; in atmel_lcdfb_set_par()
730 value |= info->var.upper_margin << ATMEL_LCDC_VBP_OFFSET; in atmel_lcdfb_set_par()
731 value |= info->var.lower_margin; in atmel_lcdfb_set_par()
732 dev_dbg(info->device, " * LCDTIM1 = %08lx\n", value); in atmel_lcdfb_set_par()
736 value = (info->var.right_margin - 1) << ATMEL_LCDC_HFP_OFFSET; in atmel_lcdfb_set_par()
737 value |= (info->var.hsync_len - 1) << ATMEL_LCDC_HPW_OFFSET; in atmel_lcdfb_set_par()
738 value |= (info->var.left_margin - 1); in atmel_lcdfb_set_par()
739 dev_dbg(info->device, " * LCDTIM2 = %08lx\n", value); in atmel_lcdfb_set_par()
743 hozval_linesz = compute_hozval(sinfo, info->var.xres); in atmel_lcdfb_set_par()
747 value |= info->var.yres - 1; in atmel_lcdfb_set_par()
748 dev_dbg(info->device, " * LCDFRMCFG = %08lx\n", value); in atmel_lcdfb_set_par()
769 dev_dbg(info->device, " * DONE\n"); in atmel_lcdfb_set_par()
808 unsigned int transp, struct fb_info *info) in atmel_lcdfb_setcolreg() argument
810 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_setcolreg()
816 if (info->var.grayscale) in atmel_lcdfb_setcolreg()
820 switch (info->fix.visual) { in atmel_lcdfb_setcolreg()
823 pal = info->pseudo_palette; in atmel_lcdfb_setcolreg()
825 val = chan_to_field(red, &info->var.red); in atmel_lcdfb_setcolreg()
826 val |= chan_to_field(green, &info->var.green); in atmel_lcdfb_setcolreg()
827 val |= chan_to_field(blue, &info->var.blue); in atmel_lcdfb_setcolreg()
878 struct fb_info *info) in atmel_lcdfb_pan_display() argument
880 dev_dbg(info->device, "%s\n", __func__); in atmel_lcdfb_pan_display()
882 atmel_lcdfb_update_dma(info, var); in atmel_lcdfb_pan_display()
887 static int atmel_lcdfb_blank(int blank_mode, struct fb_info *info) in atmel_lcdfb_blank() argument
889 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_blank()
924 struct fb_info *info = dev_id; in atmel_lcdfb_interrupt() local
925 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_interrupt()
930 dev_warn(info->device, "FIFO underflow %#x\n", status); in atmel_lcdfb_interrupt()
951 struct fb_info *info = sinfo->info; in atmel_lcdfb_init_fbinfo() local
954 info->var.activate |= FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW; in atmel_lcdfb_init_fbinfo()
956 dev_info(info->device, in atmel_lcdfb_init_fbinfo()
958 (unsigned long)info->fix.smem_len / 1024, in atmel_lcdfb_init_fbinfo()
959 (unsigned long)info->fix.smem_start, in atmel_lcdfb_init_fbinfo()
960 info->screen_base); in atmel_lcdfb_init_fbinfo()
963 ret = fb_alloc_cmap(&info->cmap, 256, 0); in atmel_lcdfb_init_fbinfo()
965 dev_err(info->device, "Alloc color map failed\n"); in atmel_lcdfb_init_fbinfo()
1027 struct fb_info *info = sinfo->info; in atmel_lcdfb_of_init() local
1029 struct fb_var_screeninfo *var = &info->var; in atmel_lcdfb_of_init()
1141 fb_add_videomode(&fb_vm, &info->modelist); in atmel_lcdfb_of_init()
1162 struct fb_info *info; in atmel_lcdfb_probe() local
1173 info = framebuffer_alloc(sizeof(struct atmel_lcdfb_info), dev); in atmel_lcdfb_probe()
1174 if (!info) { in atmel_lcdfb_probe()
1179 sinfo = info->par; in atmel_lcdfb_probe()
1181 sinfo->info = info; in atmel_lcdfb_probe()
1183 INIT_LIST_HEAD(&info->modelist); in atmel_lcdfb_probe()
1198 fb_add_videomode(&monspecs->modedb[i], &info->modelist); in atmel_lcdfb_probe()
1202 info->var.bits_per_pixel = pdata->default_bpp ? pdata->default_bpp : 16; in atmel_lcdfb_probe()
1203 memcpy(&info->monspecs, pdata->default_monspecs, sizeof(info->monspecs)); in atmel_lcdfb_probe()
1216 info->flags = ATMEL_LCDFB_FBINFO_DEFAULT; in atmel_lcdfb_probe()
1217 info->pseudo_palette = sinfo->pseudo_palette; in atmel_lcdfb_probe()
1218 info->fbops = &atmel_lcdfb_ops; in atmel_lcdfb_probe()
1220 info->fix = atmel_lcdfb_fix; in atmel_lcdfb_probe()
1221 strcpy(info->fix.id, sinfo->pdev->name); in atmel_lcdfb_probe()
1236 modelist = list_first_entry(&info->modelist, in atmel_lcdfb_probe()
1238 fb_videomode_to_var(&info->var, &modelist->mode); in atmel_lcdfb_probe()
1240 atmel_lcdfb_check_var(&info->var, info); in atmel_lcdfb_probe()
1260 info->fix.smem_start = map->start; in atmel_lcdfb_probe()
1261 info->fix.smem_len = resource_size(map); in atmel_lcdfb_probe()
1262 if (!request_mem_region(info->fix.smem_start, in atmel_lcdfb_probe()
1263 info->fix.smem_len, pdev->name)) { in atmel_lcdfb_probe()
1268 info->screen_base = ioremap_wc(info->fix.smem_start, in atmel_lcdfb_probe()
1269 info->fix.smem_len); in atmel_lcdfb_probe()
1270 if (!info->screen_base) { in atmel_lcdfb_probe()
1289 info->fix.mmio_start = regs->start; in atmel_lcdfb_probe()
1290 info->fix.mmio_len = resource_size(regs); in atmel_lcdfb_probe()
1292 if (!request_mem_region(info->fix.mmio_start, in atmel_lcdfb_probe()
1293 info->fix.mmio_len, pdev->name)) { in atmel_lcdfb_probe()
1298 sinfo->mmio = ioremap(info->fix.mmio_start, info->fix.mmio_len); in atmel_lcdfb_probe()
1309 ret = request_irq(sinfo->irq_base, atmel_lcdfb_interrupt, 0, pdev->name, info); in atmel_lcdfb_probe()
1325 ret = atmel_lcdfb_set_par(info); in atmel_lcdfb_probe()
1331 dev_set_drvdata(dev, info); in atmel_lcdfb_probe()
1336 ret = register_framebuffer(info); in atmel_lcdfb_probe()
1346 info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base); in atmel_lcdfb_probe()
1352 fb_dealloc_cmap(&info->cmap); in atmel_lcdfb_probe()
1355 free_irq(sinfo->irq_base, info); in atmel_lcdfb_probe()
1360 release_mem_region(info->fix.mmio_start, info->fix.mmio_len); in atmel_lcdfb_probe()
1363 iounmap(info->screen_base); in atmel_lcdfb_probe()
1369 release_mem_region(info->fix.smem_start, info->fix.smem_len); in atmel_lcdfb_probe()
1376 framebuffer_release(info); in atmel_lcdfb_probe()
1385 struct fb_info *info = dev_get_drvdata(dev); in atmel_lcdfb_remove() local
1389 if (!info || !info->par) in atmel_lcdfb_remove()
1391 sinfo = info->par; in atmel_lcdfb_remove()
1397 unregister_framebuffer(info); in atmel_lcdfb_remove()
1401 fb_dealloc_cmap(&info->cmap); in atmel_lcdfb_remove()
1402 free_irq(sinfo->irq_base, info); in atmel_lcdfb_remove()
1404 release_mem_region(info->fix.mmio_start, info->fix.mmio_len); in atmel_lcdfb_remove()
1406 iounmap(info->screen_base); in atmel_lcdfb_remove()
1407 release_mem_region(info->fix.smem_start, info->fix.smem_len); in atmel_lcdfb_remove()
1412 framebuffer_release(info); in atmel_lcdfb_remove()
1421 struct fb_info *info = platform_get_drvdata(pdev); in atmel_lcdfb_suspend() local
1422 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_suspend()
1441 struct fb_info *info = platform_get_drvdata(pdev); in atmel_lcdfb_resume() local
1442 struct atmel_lcdfb_info *sinfo = info->par; in atmel_lcdfb_resume()