Lines Matching refs:info
152 static void ep93xxfb_set_video_attribs(struct fb_info *info) in ep93xxfb_set_video_attribs() argument
154 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_set_video_attribs()
162 static int ep93xxfb_set_pixelmode(struct fb_info *info) in ep93xxfb_set_pixelmode() argument
164 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_set_pixelmode()
167 info->var.transp.offset = 0; in ep93xxfb_set_pixelmode()
168 info->var.transp.length = 0; in ep93xxfb_set_pixelmode()
170 switch (info->var.bits_per_pixel) { in ep93xxfb_set_pixelmode()
175 info->var.red.offset = 0; in ep93xxfb_set_pixelmode()
176 info->var.red.length = 8; in ep93xxfb_set_pixelmode()
177 info->var.green.offset = 0; in ep93xxfb_set_pixelmode()
178 info->var.green.length = 8; in ep93xxfb_set_pixelmode()
179 info->var.blue.offset = 0; in ep93xxfb_set_pixelmode()
180 info->var.blue.length = 8; in ep93xxfb_set_pixelmode()
181 info->fix.visual = FB_VISUAL_PSEUDOCOLOR; in ep93xxfb_set_pixelmode()
188 info->var.red.offset = 11; in ep93xxfb_set_pixelmode()
189 info->var.red.length = 5; in ep93xxfb_set_pixelmode()
190 info->var.green.offset = 5; in ep93xxfb_set_pixelmode()
191 info->var.green.length = 6; in ep93xxfb_set_pixelmode()
192 info->var.blue.offset = 0; in ep93xxfb_set_pixelmode()
193 info->var.blue.length = 5; in ep93xxfb_set_pixelmode()
194 info->fix.visual = FB_VISUAL_TRUECOLOR; in ep93xxfb_set_pixelmode()
201 info->var.red.offset = 16; in ep93xxfb_set_pixelmode()
202 info->var.red.length = 8; in ep93xxfb_set_pixelmode()
203 info->var.green.offset = 8; in ep93xxfb_set_pixelmode()
204 info->var.green.length = 8; in ep93xxfb_set_pixelmode()
205 info->var.blue.offset = 0; in ep93xxfb_set_pixelmode()
206 info->var.blue.length = 8; in ep93xxfb_set_pixelmode()
207 info->fix.visual = FB_VISUAL_TRUECOLOR; in ep93xxfb_set_pixelmode()
214 info->var.red.offset = 16; in ep93xxfb_set_pixelmode()
215 info->var.red.length = 8; in ep93xxfb_set_pixelmode()
216 info->var.green.offset = 8; in ep93xxfb_set_pixelmode()
217 info->var.green.length = 8; in ep93xxfb_set_pixelmode()
218 info->var.blue.offset = 0; in ep93xxfb_set_pixelmode()
219 info->var.blue.length = 8; in ep93xxfb_set_pixelmode()
220 info->fix.visual = FB_VISUAL_TRUECOLOR; in ep93xxfb_set_pixelmode()
231 static void ep93xxfb_set_timing(struct fb_info *info) in ep93xxfb_set_timing() argument
233 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_set_timing()
236 vlines_total = info->var.yres + info->var.upper_margin + in ep93xxfb_set_timing()
237 info->var.lower_margin + info->var.vsync_len - 1; in ep93xxfb_set_timing()
239 hclks_total = info->var.xres + info->var.left_margin + in ep93xxfb_set_timing()
240 info->var.right_margin + info->var.hsync_len - 1; in ep93xxfb_set_timing()
246 stop = vlines_total - info->var.vsync_len; in ep93xxfb_set_timing()
249 start = vlines_total - info->var.vsync_len - info->var.upper_margin; in ep93xxfb_set_timing()
250 stop = info->var.lower_margin - 1; in ep93xxfb_set_timing()
259 stop = hclks_total - info->var.hsync_len; in ep93xxfb_set_timing()
262 start = hclks_total - info->var.hsync_len - info->var.left_margin; in ep93xxfb_set_timing()
263 stop = info->var.right_margin - 1; in ep93xxfb_set_timing()
274 static int ep93xxfb_set_par(struct fb_info *info) in ep93xxfb_set_par() argument
276 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_set_par()
278 clk_set_rate(fbi->clk, 1000 * PICOS2KHZ(info->var.pixclock)); in ep93xxfb_set_par()
280 ep93xxfb_set_timing(info); in ep93xxfb_set_par()
282 info->fix.line_length = info->var.xres_virtual * in ep93xxfb_set_par()
283 info->var.bits_per_pixel / 8; in ep93xxfb_set_par()
285 ep93xxfb_writel(fbi, info->fix.smem_start, EP93XXFB_SCREEN_PAGE); in ep93xxfb_set_par()
286 ep93xxfb_writel(fbi, info->var.yres - 1, EP93XXFB_SCREEN_LINES); in ep93xxfb_set_par()
287 ep93xxfb_writel(fbi, ((info->var.xres * info->var.bits_per_pixel) in ep93xxfb_set_par()
289 ep93xxfb_writel(fbi, info->fix.line_length / 4, EP93XXFB_VLINE_STEP); in ep93xxfb_set_par()
290 ep93xxfb_set_video_attribs(info); in ep93xxfb_set_par()
295 struct fb_info *info) in ep93xxfb_check_var() argument
299 err = ep93xxfb_set_pixelmode(info); in ep93xxfb_check_var()
314 static int ep93xxfb_mmap(struct fb_info *info, struct vm_area_struct *vma) in ep93xxfb_mmap() argument
318 if (offset < info->fix.smem_len) { in ep93xxfb_mmap()
319 return dma_mmap_writecombine(info->dev, vma, info->screen_base, in ep93xxfb_mmap()
320 info->fix.smem_start, in ep93xxfb_mmap()
321 info->fix.smem_len); in ep93xxfb_mmap()
327 static int ep93xxfb_blank(int blank_mode, struct fb_info *info) in ep93xxfb_blank() argument
329 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_blank()
334 fbi->mach_info->blank(blank_mode, info); in ep93xxfb_blank()
343 fbi->mach_info->blank(blank_mode, info); in ep93xxfb_blank()
356 unsigned int transp, struct fb_info *info) in ep93xxfb_setcolreg() argument
358 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_setcolreg()
359 unsigned int *pal = info->pseudo_palette; in ep93xxfb_setcolreg()
362 switch (info->fix.visual) { in ep93xxfb_setcolreg()
391 red = ep93xxfb_convert_color(red, info->var.red.length); in ep93xxfb_setcolreg()
392 green = ep93xxfb_convert_color(green, info->var.green.length); in ep93xxfb_setcolreg()
393 blue = ep93xxfb_convert_color(blue, info->var.blue.length); in ep93xxfb_setcolreg()
395 info->var.transp.length); in ep93xxfb_setcolreg()
397 pal[regno] = (red << info->var.red.offset) | in ep93xxfb_setcolreg()
398 (green << info->var.green.offset) | in ep93xxfb_setcolreg()
399 (blue << info->var.blue.offset) | in ep93xxfb_setcolreg()
400 (transp << info->var.transp.offset); in ep93xxfb_setcolreg()
444 static int ep93xxfb_alloc_videomem(struct fb_info *info) in ep93xxfb_alloc_videomem() argument
446 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_alloc_videomem()
452 virt_addr = dma_alloc_writecombine(info->dev, fb_size, in ep93xxfb_alloc_videomem()
466 dev_err(info->dev, "ep93xx framebuffer bug. phys addr (0x%x) " in ep93xxfb_alloc_videomem()
470 dma_free_coherent(info->dev, fb_size, virt_addr, phys_addr); in ep93xxfb_alloc_videomem()
474 info->fix.smem_start = phys_addr; in ep93xxfb_alloc_videomem()
475 info->fix.smem_len = fb_size; in ep93xxfb_alloc_videomem()
476 info->screen_base = virt_addr; in ep93xxfb_alloc_videomem()
481 static void ep93xxfb_dealloc_videomem(struct fb_info *info) in ep93xxfb_dealloc_videomem() argument
483 if (info->screen_base) in ep93xxfb_dealloc_videomem()
484 dma_free_coherent(info->dev, info->fix.smem_len, in ep93xxfb_dealloc_videomem()
485 info->screen_base, info->fix.smem_start); in ep93xxfb_dealloc_videomem()
491 struct fb_info *info; in ep93xxfb_probe() local
500 info = framebuffer_alloc(sizeof(struct ep93xx_fbi), &pdev->dev); in ep93xxfb_probe()
501 if (!info) in ep93xxfb_probe()
504 info->dev = &pdev->dev; in ep93xxfb_probe()
505 platform_set_drvdata(pdev, info); in ep93xxfb_probe()
506 fbi = info->par; in ep93xxfb_probe()
509 err = fb_alloc_cmap(&info->cmap, 256, 0); in ep93xxfb_probe()
513 err = ep93xxfb_alloc_videomem(info); in ep93xxfb_probe()
540 strcpy(info->fix.id, pdev->name); in ep93xxfb_probe()
541 info->fbops = &ep93xxfb_ops; in ep93xxfb_probe()
542 info->fix.type = FB_TYPE_PACKED_PIXELS; in ep93xxfb_probe()
543 info->fix.accel = FB_ACCEL_NONE; in ep93xxfb_probe()
544 info->var.activate = FB_ACTIVATE_NOW; in ep93xxfb_probe()
545 info->var.vmode = FB_VMODE_NONINTERLACED; in ep93xxfb_probe()
546 info->flags = FBINFO_DEFAULT; in ep93xxfb_probe()
547 info->node = -1; in ep93xxfb_probe()
548 info->state = FBINFO_STATE_RUNNING; in ep93xxfb_probe()
549 info->pseudo_palette = &fbi->pseudo_palette; in ep93xxfb_probe()
552 err = fb_find_mode(&info->var, info, video_mode, in ep93xxfb_probe()
556 dev_err(info->dev, "No suitable video mode found\n"); in ep93xxfb_probe()
567 err = ep93xxfb_check_var(&info->var, info); in ep93xxfb_probe()
578 ep93xxfb_set_par(info); in ep93xxfb_probe()
581 err = register_framebuffer(info); in ep93xxfb_probe()
585 dev_info(info->dev, "registered. Mode = %dx%d-%d\n", in ep93xxfb_probe()
586 info->var.xres, info->var.yres, info->var.bits_per_pixel); in ep93xxfb_probe()
593 ep93xxfb_dealloc_videomem(info); in ep93xxfb_probe()
595 fb_dealloc_cmap(&info->cmap); in ep93xxfb_probe()
597 kfree(info); in ep93xxfb_probe()
604 struct fb_info *info = platform_get_drvdata(pdev); in ep93xxfb_remove() local
605 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_remove()
607 unregister_framebuffer(info); in ep93xxfb_remove()
609 ep93xxfb_dealloc_videomem(info); in ep93xxfb_remove()
610 fb_dealloc_cmap(&info->cmap); in ep93xxfb_remove()
615 kfree(info); in ep93xxfb_remove()