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()
422 static int ep93xxfb_alloc_videomem(struct fb_info *info) in ep93xxfb_alloc_videomem() argument
431 virt_addr = dma_alloc_writecombine(info->dev, fb_size, in ep93xxfb_alloc_videomem()
445 dev_err(info->dev, "ep93xx framebuffer bug. phys addr (0x%x) " in ep93xxfb_alloc_videomem()
449 dma_free_coherent(info->dev, fb_size, virt_addr, phys_addr); in ep93xxfb_alloc_videomem()
453 info->fix.smem_start = phys_addr; in ep93xxfb_alloc_videomem()
454 info->fix.smem_len = fb_size; in ep93xxfb_alloc_videomem()
455 info->screen_base = virt_addr; in ep93xxfb_alloc_videomem()
460 static void ep93xxfb_dealloc_videomem(struct fb_info *info) in ep93xxfb_dealloc_videomem() argument
462 if (info->screen_base) in ep93xxfb_dealloc_videomem()
463 dma_free_coherent(info->dev, info->fix.smem_len, in ep93xxfb_dealloc_videomem()
464 info->screen_base, info->fix.smem_start); in ep93xxfb_dealloc_videomem()
470 struct fb_info *info; in ep93xxfb_probe() local
479 info = framebuffer_alloc(sizeof(struct ep93xx_fbi), &pdev->dev); in ep93xxfb_probe()
480 if (!info) in ep93xxfb_probe()
483 info->dev = &pdev->dev; in ep93xxfb_probe()
484 platform_set_drvdata(pdev, info); in ep93xxfb_probe()
485 fbi = info->par; in ep93xxfb_probe()
488 err = fb_alloc_cmap(&info->cmap, 256, 0); in ep93xxfb_probe()
492 err = ep93xxfb_alloc_videomem(info); in ep93xxfb_probe()
519 strcpy(info->fix.id, pdev->name); in ep93xxfb_probe()
520 info->fbops = &ep93xxfb_ops; in ep93xxfb_probe()
521 info->fix.type = FB_TYPE_PACKED_PIXELS; in ep93xxfb_probe()
522 info->fix.accel = FB_ACCEL_NONE; in ep93xxfb_probe()
523 info->var.activate = FB_ACTIVATE_NOW; in ep93xxfb_probe()
524 info->var.vmode = FB_VMODE_NONINTERLACED; in ep93xxfb_probe()
525 info->flags = FBINFO_DEFAULT; in ep93xxfb_probe()
526 info->node = -1; in ep93xxfb_probe()
527 info->state = FBINFO_STATE_RUNNING; in ep93xxfb_probe()
528 info->pseudo_palette = &fbi->pseudo_palette; in ep93xxfb_probe()
531 err = fb_find_mode(&info->var, info, video_mode, in ep93xxfb_probe()
534 dev_err(info->dev, "No suitable video mode found\n"); in ep93xxfb_probe()
545 err = ep93xxfb_check_var(&info->var, info); in ep93xxfb_probe()
556 ep93xxfb_set_par(info); in ep93xxfb_probe()
559 err = register_framebuffer(info); in ep93xxfb_probe()
563 dev_info(info->dev, "registered. Mode = %dx%d-%d\n", in ep93xxfb_probe()
564 info->var.xres, info->var.yres, info->var.bits_per_pixel); in ep93xxfb_probe()
571 ep93xxfb_dealloc_videomem(info); in ep93xxfb_probe()
573 fb_dealloc_cmap(&info->cmap); in ep93xxfb_probe()
575 kfree(info); in ep93xxfb_probe()
582 struct fb_info *info = platform_get_drvdata(pdev); in ep93xxfb_remove() local
583 struct ep93xx_fbi *fbi = info->par; in ep93xxfb_remove()
585 unregister_framebuffer(info); in ep93xxfb_remove()
587 ep93xxfb_dealloc_videomem(info); in ep93xxfb_remove()
588 fb_dealloc_cmap(&info->cmap); in ep93xxfb_remove()
593 kfree(info); in ep93xxfb_remove()