diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-16 22:50:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-16 22:50:13 -0400 |
commit | 517d08699b250021303f9a7cf0d758b6dc0748ed (patch) | |
tree | 5e5b0134c3fffb78fe9d8b1641a64ff28fdd7bbc /drivers/video/vesafb.c | |
parent | 8eeee4e2f04fc551f50c9d9847da2d73d7d33728 (diff) | |
parent | a34601c5d84134055782ee031d58d82f5440e918 (diff) |
Merge branch 'akpm'
* akpm: (182 commits)
fbdev: bf54x-lq043fb: use kzalloc over kmalloc/memset
fbdev: *bfin*: fix __dev{init,exit} markings
fbdev: *bfin*: drop unnecessary calls to memset
fbdev: bfin-t350mcqb-fb: drop unused local variables
fbdev: blackfin has __raw I/O accessors, so use them in fb.h
fbdev: s1d13xxxfb: add accelerated bitblt functions
tcx: use standard fields for framebuffer physical address and length
fbdev: add support for handoff from firmware to hw framebuffers
intelfb: fix a bug when changing video timing
fbdev: use framebuffer_release() for freeing fb_info structures
radeon: P2G2CLK_ALWAYS_ONb tested twice, should 2nd be P2G2CLK_DAC_ALWAYS_ONb?
s3c-fb: CPUFREQ frequency scaling support
s3c-fb: fix resource releasing on error during probing
carminefb: fix possible access beyond end of carmine_modedb[]
acornfb: remove fb_mmap function
mb862xxfb: use CONFIG_OF instead of CONFIG_PPC_OF
mb862xxfb: restrict compliation of platform driver to PPC
Samsung SoC Framebuffer driver: add Alpha Channel support
atmel-lcdc: fix pixclock upper bound detection
offb: use framebuffer_alloc() to allocate fb_info struct
...
Manually fix up conflicts due to kmemcheck in mm/slab.c
Diffstat (limited to 'drivers/video/vesafb.c')
-rw-r--r-- | drivers/video/vesafb.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index d6856f43d241..bd37ee1f6a25 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c | |||
@@ -174,8 +174,17 @@ static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green, | |||
174 | return err; | 174 | return err; |
175 | } | 175 | } |
176 | 176 | ||
177 | static void vesafb_destroy(struct fb_info *info) | ||
178 | { | ||
179 | if (info->screen_base) | ||
180 | iounmap(info->screen_base); | ||
181 | release_mem_region(info->aperture_base, info->aperture_size); | ||
182 | framebuffer_release(info); | ||
183 | } | ||
184 | |||
177 | static struct fb_ops vesafb_ops = { | 185 | static struct fb_ops vesafb_ops = { |
178 | .owner = THIS_MODULE, | 186 | .owner = THIS_MODULE, |
187 | .fb_destroy = vesafb_destroy, | ||
179 | .fb_setcolreg = vesafb_setcolreg, | 188 | .fb_setcolreg = vesafb_setcolreg, |
180 | .fb_pan_display = vesafb_pan_display, | 189 | .fb_pan_display = vesafb_pan_display, |
181 | .fb_fillrect = cfb_fillrect, | 190 | .fb_fillrect = cfb_fillrect, |
@@ -286,6 +295,10 @@ static int __init vesafb_probe(struct platform_device *dev) | |||
286 | info->pseudo_palette = info->par; | 295 | info->pseudo_palette = info->par; |
287 | info->par = NULL; | 296 | info->par = NULL; |
288 | 297 | ||
298 | /* set vesafb aperture size for generic probing */ | ||
299 | info->aperture_base = screen_info.lfb_base; | ||
300 | info->aperture_size = size_total; | ||
301 | |||
289 | info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len); | 302 | info->screen_base = ioremap(vesafb_fix.smem_start, vesafb_fix.smem_len); |
290 | if (!info->screen_base) { | 303 | if (!info->screen_base) { |
291 | printk(KERN_ERR | 304 | printk(KERN_ERR |
@@ -437,7 +450,7 @@ static int __init vesafb_probe(struct platform_device *dev) | |||
437 | info->fbops = &vesafb_ops; | 450 | info->fbops = &vesafb_ops; |
438 | info->var = vesafb_defined; | 451 | info->var = vesafb_defined; |
439 | info->fix = vesafb_fix; | 452 | info->fix = vesafb_fix; |
440 | info->flags = FBINFO_FLAG_DEFAULT | | 453 | info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE | |
441 | (ypan ? FBINFO_HWACCEL_YPAN : 0); | 454 | (ypan ? FBINFO_HWACCEL_YPAN : 0); |
442 | 455 | ||
443 | if (!ypan) | 456 | if (!ypan) |