Lines Matching refs:fbi
49 struct vt8500lcd_info *fbi = to_vt8500lcd_info(info); in vt8500lcd_set_par() local
54 if (!fbi) in vt8500lcd_set_par()
120 control0 = readl(fbi->regbase) & ~0xf; in vt8500lcd_set_par()
121 writel(0, fbi->regbase); in vt8500lcd_set_par()
122 while (readl(fbi->regbase + 0x38) & 0x10) in vt8500lcd_set_par()
127 | (info->var.right_margin & 0xff), fbi->regbase + 0x4); in vt8500lcd_set_par()
131 | (info->var.lower_margin & 0xff), fbi->regbase + 0x8); in vt8500lcd_set_par()
133 | ((info->var.xres - 1) & 0x400), fbi->regbase + 0x10); in vt8500lcd_set_par()
134 writel(0x80000000, fbi->regbase + 0x20); in vt8500lcd_set_par()
135 writel(control0 | (reg_bpp << 1) | 0x100, fbi->regbase); in vt8500lcd_set_par()
150 struct vt8500lcd_info *fbi = to_vt8500lcd_info(info); in vt8500lcd_setcolreg() local
160 switch (fbi->fb.fix.visual) { in vt8500lcd_setcolreg()
163 u32 *pal = fbi->fb.pseudo_palette; in vt8500lcd_setcolreg()
165 val = chan_to_field(red, &fbi->fb.var.red); in vt8500lcd_setcolreg()
166 val |= chan_to_field(green, &fbi->fb.var.green); in vt8500lcd_setcolreg()
167 val |= chan_to_field(blue, &fbi->fb.var.blue); in vt8500lcd_setcolreg()
179 fbi->palette_cpu + sizeof(u16) * regno); in vt8500lcd_setcolreg()
190 struct vt8500lcd_info *fbi = to_vt8500lcd_info(info); in vt8500lcd_ioctl() local
194 writel(0xffffffff ^ (1 << 3), fbi->regbase + 0x3c); in vt8500lcd_ioctl()
195 ret = wait_event_interruptible_timeout(fbi->wait, in vt8500lcd_ioctl()
196 readl(fbi->regbase + 0x38) & (1 << 3), HZ / 10); in vt8500lcd_ioctl()
198 writel(0xffffffff, fbi->regbase + 0x3c); in vt8500lcd_ioctl()
214 struct vt8500lcd_info *fbi = to_vt8500lcd_info(info); in vt8500lcd_pan_display() local
218 | (off >> 2), fbi->regbase + 0x20); in vt8500lcd_pan_display()
264 struct vt8500lcd_info *fbi = dev_id; in vt8500lcd_handle_irq() local
266 if (readl(fbi->regbase + 0x38) & (1 << 3)) in vt8500lcd_handle_irq()
267 wake_up_interruptible(&fbi->wait); in vt8500lcd_handle_irq()
269 writel(0xffffffff, fbi->regbase + 0x38); in vt8500lcd_handle_irq()
275 struct vt8500lcd_info *fbi; in vt8500lcd_probe() local
288 fbi = NULL; in vt8500lcd_probe()
290 fbi = devm_kzalloc(&pdev->dev, sizeof(struct vt8500lcd_info) in vt8500lcd_probe()
292 if (!fbi) { in vt8500lcd_probe()
297 strcpy(fbi->fb.fix.id, "VT8500 LCD"); in vt8500lcd_probe()
299 fbi->fb.fix.type = FB_TYPE_PACKED_PIXELS; in vt8500lcd_probe()
300 fbi->fb.fix.xpanstep = 0; in vt8500lcd_probe()
301 fbi->fb.fix.ypanstep = 1; in vt8500lcd_probe()
302 fbi->fb.fix.ywrapstep = 0; in vt8500lcd_probe()
303 fbi->fb.fix.accel = FB_ACCEL_NONE; in vt8500lcd_probe()
305 fbi->fb.var.nonstd = 0; in vt8500lcd_probe()
306 fbi->fb.var.activate = FB_ACTIVATE_NOW; in vt8500lcd_probe()
307 fbi->fb.var.height = -1; in vt8500lcd_probe()
308 fbi->fb.var.width = -1; in vt8500lcd_probe()
309 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED; in vt8500lcd_probe()
311 fbi->fb.fbops = &vt8500lcd_ops; in vt8500lcd_probe()
312 fbi->fb.flags = FBINFO_DEFAULT in vt8500lcd_probe()
318 fbi->fb.node = -1; in vt8500lcd_probe()
320 addr = fbi; in vt8500lcd_probe()
322 fbi->fb.pseudo_palette = addr; in vt8500lcd_probe()
336 fbi->regbase = ioremap(res->start, resource_size(res)); in vt8500lcd_probe()
337 if (fbi->regbase == NULL) { in vt8500lcd_probe()
368 fbi->fb.fix.smem_start = fb_mem_phys; in vt8500lcd_probe()
369 fbi->fb.fix.smem_len = fb_mem_len; in vt8500lcd_probe()
370 fbi->fb.screen_base = fb_mem_virt; in vt8500lcd_probe()
372 fbi->palette_size = PAGE_ALIGN(512); in vt8500lcd_probe()
373 fbi->palette_cpu = dma_alloc_coherent(&pdev->dev, in vt8500lcd_probe()
374 fbi->palette_size, in vt8500lcd_probe()
375 &fbi->palette_phys, in vt8500lcd_probe()
377 if (fbi->palette_cpu == NULL) { in vt8500lcd_probe()
390 ret = request_irq(irq, vt8500lcd_handle_irq, 0, "LCD", fbi); in vt8500lcd_probe()
397 init_waitqueue_head(&fbi->wait); in vt8500lcd_probe()
399 if (fb_alloc_cmap(&fbi->fb.cmap, 256, 0) < 0) { in vt8500lcd_probe()
405 fb_videomode_to_var(&fbi->fb.var, &of_mode); in vt8500lcd_probe()
407 fbi->fb.var.xres_virtual = of_mode.xres; in vt8500lcd_probe()
408 fbi->fb.var.yres_virtual = of_mode.yres * 2; in vt8500lcd_probe()
409 fbi->fb.var.bits_per_pixel = bpp; in vt8500lcd_probe()
411 ret = vt8500lcd_set_par(&fbi->fb); in vt8500lcd_probe()
417 writel(fbi->fb.fix.smem_start >> 22, fbi->regbase + 0x1c); in vt8500lcd_probe()
418 writel((fbi->palette_phys & 0xfffffe00) | 1, fbi->regbase + 0x18); in vt8500lcd_probe()
420 platform_set_drvdata(pdev, fbi); in vt8500lcd_probe()
422 ret = register_framebuffer(&fbi->fb); in vt8500lcd_probe()
432 writel(readl(fbi->regbase) | 1, fbi->regbase); in vt8500lcd_probe()
437 if (fbi->fb.cmap.len) in vt8500lcd_probe()
438 fb_dealloc_cmap(&fbi->fb.cmap); in vt8500lcd_probe()
440 free_irq(irq, fbi); in vt8500lcd_probe()
442 dma_free_coherent(&pdev->dev, fbi->palette_size, in vt8500lcd_probe()
443 fbi->palette_cpu, fbi->palette_phys); in vt8500lcd_probe()
445 iounmap(fbi->regbase); in vt8500lcd_probe()
453 struct vt8500lcd_info *fbi = platform_get_drvdata(pdev); in vt8500lcd_remove() local
457 unregister_framebuffer(&fbi->fb); in vt8500lcd_remove()
459 writel(0, fbi->regbase); in vt8500lcd_remove()
461 if (fbi->fb.cmap.len) in vt8500lcd_remove()
462 fb_dealloc_cmap(&fbi->fb.cmap); in vt8500lcd_remove()
465 free_irq(irq, fbi); in vt8500lcd_remove()
467 dma_free_coherent(&pdev->dev, fbi->palette_size, in vt8500lcd_remove()
468 fbi->palette_cpu, fbi->palette_phys); in vt8500lcd_remove()
470 iounmap(fbi->regbase); in vt8500lcd_remove()