Merge branch 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6

* 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6:
fsl-diu-fb: drop dead ioctl define
MAINTAINERS: Add an fbdev git tree entry.
OMAP: DSS: Fix documentation regarding 'vram' kernel parameter
OMAP: VRAM: Fix boot-time memory allocation
OMAP: VRAM: improve VRAM error prints
sisfb: limit POST memory test according to PCI resource length
fbdev: sh_mobile_lcdc: use correct number of modes, when using the default
fbdev: sh_mobile_lcdc: use the standard CEA-861 720p timing
fbdev: sh_mobile_hdmi: properly clean up modedb on monitor unplug

+40 -20
+4 -3
Documentation/arm/OMAP/DSS
··· 255 Kernel boot arguments 256 --------------------- 257 258 - vram=<size> 259 - - Amount of total VRAM to preallocate. For example, "10M". omapfb 260 - allocates memory for framebuffers from VRAM. 261 262 omapfb.mode=<display>:<mode>[,...] 263 - Default video mode for specified displays. For example,
··· 255 Kernel boot arguments 256 --------------------- 257 258 + vram=<size>[,<physaddr>] 259 + - Amount of total VRAM to preallocate and optionally a physical start 260 + memory address. For example, "10M". omapfb allocates memory for 261 + framebuffers from VRAM. 262 263 omapfb.mode=<display>:<mode>[,...] 264 - Default video mode for specified displays. For example,
+1
MAINTAINERS
··· 2435 FRAMEBUFFER LAYER 2436 L: linux-fbdev@vger.kernel.org 2437 W: http://linux-fbdev.sourceforge.net/ 2438 S: Orphan 2439 F: Documentation/fb/ 2440 F: drivers/video/fb*
··· 2435 FRAMEBUFFER LAYER 2436 L: linux-fbdev@vger.kernel.org 2437 W: http://linux-fbdev.sourceforge.net/ 2438 + T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git 2439 S: Orphan 2440 F: Documentation/fb/ 2441 F: drivers/video/fb*
+13 -4
drivers/video/omap2/vram.c
··· 554 size = PAGE_ALIGN(size); 555 556 if (paddr) { 557 - if ((paddr & ~PAGE_MASK) || 558 - !memblock_is_region_memory(paddr, size)) { 559 - pr_err("Illegal SDRAM region for VRAM\n"); 560 return; 561 } 562 ··· 576 return; 577 } 578 } else { 579 - paddr = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_REAL_LIMIT); 580 } 581 582 omap_vram_add_region(paddr, size); 583
··· 554 size = PAGE_ALIGN(size); 555 556 if (paddr) { 557 + if (paddr & ~PAGE_MASK) { 558 + pr_err("VRAM start address 0x%08x not page aligned\n", 559 + paddr); 560 + return; 561 + } 562 + 563 + if (!memblock_is_region_memory(paddr, size)) { 564 + pr_err("Illegal SDRAM region 0x%08x..0x%08x for VRAM\n", 565 + paddr, paddr + size - 1); 566 return; 567 } 568 ··· 570 return; 571 } 572 } else { 573 + paddr = memblock_alloc(size, PAGE_SIZE); 574 } 575 + 576 + memblock_free(paddr, size); 577 + memblock_remove(paddr, size); 578 579 omap_vram_add_region(paddr, size); 580
+4 -1
drivers/video/sh_mobile_hdmi.c
··· 1071 if (!hdmi->info) 1072 goto out; 1073 1074 acquire_console_sem(); 1075 1076 /* HDMI disconnect */ ··· 1082 1083 release_console_sem(); 1084 pm_runtime_put(hdmi->dev); 1085 - fb_destroy_modedb(hdmi->monspec.modedb); 1086 } 1087 1088 out:
··· 1071 if (!hdmi->info) 1072 goto out; 1073 1074 + hdmi->monspec.modedb_len = 0; 1075 + fb_destroy_modedb(hdmi->monspec.modedb); 1076 + hdmi->monspec.modedb = NULL; 1077 + 1078 acquire_console_sem(); 1079 1080 /* HDMI disconnect */ ··· 1078 1079 release_console_sem(); 1080 pm_runtime_put(hdmi->dev); 1081 } 1082 1083 out:
+12 -9
drivers/video/sh_mobile_lcdcfb.c
··· 115 .xres = 1280, 116 .yres = 720, 117 118 - .left_margin = 200, 119 - .right_margin = 88, 120 - .hsync_len = 48, 121 122 .upper_margin = 20, 123 .lower_margin = 5, 124 .vsync_len = 5, 125 126 .pixclock = 13468, 127 .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT, 128 }; 129 ··· 1198 const struct fb_videomode *mode = cfg->lcd_cfg; 1199 unsigned long max_size = 0; 1200 int k; 1201 1202 ch->info = framebuffer_alloc(0, &pdev->dev); 1203 if (!ch->info) { ··· 1234 info->fix = sh_mobile_lcdc_fix; 1235 info->fix.smem_len = max_size * (cfg->bpp / 8) * 2; 1236 1237 - if (!mode) 1238 mode = &default_720p; 1239 1240 fb_videomode_to_var(var, mode); 1241 /* Default Y virtual resolution is 2x panel size */ ··· 1289 1290 for (i = 0; i < j; i++) { 1291 struct sh_mobile_lcdc_chan *ch = priv->ch + i; 1292 - const struct fb_videomode *mode = ch->cfg.lcd_cfg; 1293 - 1294 - if (!mode) 1295 - mode = &default_720p; 1296 1297 info = ch->info; 1298 ··· 1301 } 1302 } 1303 1304 - fb_videomode_to_modelist(mode, ch->cfg.num_cfg, &info->modelist); 1305 error = register_framebuffer(info); 1306 if (error < 0) 1307 goto err1;
··· 115 .xres = 1280, 116 .yres = 720, 117 118 + .left_margin = 220, 119 + .right_margin = 110, 120 + .hsync_len = 40, 121 122 .upper_margin = 20, 123 .lower_margin = 5, 124 .vsync_len = 5, 125 126 .pixclock = 13468, 127 + .refresh = 60, 128 .sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT, 129 }; 130 ··· 1197 const struct fb_videomode *mode = cfg->lcd_cfg; 1198 unsigned long max_size = 0; 1199 int k; 1200 + int num_cfg; 1201 1202 ch->info = framebuffer_alloc(0, &pdev->dev); 1203 if (!ch->info) { ··· 1232 info->fix = sh_mobile_lcdc_fix; 1233 info->fix.smem_len = max_size * (cfg->bpp / 8) * 2; 1234 1235 + if (!mode) { 1236 mode = &default_720p; 1237 + num_cfg = 1; 1238 + } else { 1239 + num_cfg = ch->cfg.num_cfg; 1240 + } 1241 + 1242 + fb_videomode_to_modelist(mode, num_cfg, &info->modelist); 1243 1244 fb_videomode_to_var(var, mode); 1245 /* Default Y virtual resolution is 2x panel size */ ··· 1281 1282 for (i = 0; i < j; i++) { 1283 struct sh_mobile_lcdc_chan *ch = priv->ch + i; 1284 1285 info = ch->info; 1286 ··· 1297 } 1298 } 1299 1300 error = register_framebuffer(info); 1301 if (error < 0) 1302 goto err1;
+6 -2
drivers/video/sis/sis_main.c
··· 4181 sisfb_post_map_vram(struct sis_video_info *ivideo, unsigned int *mapsize, 4182 unsigned int min) 4183 { 4184 ivideo->video_vbase = ioremap(ivideo->video_base, (*mapsize)); 4185 4186 if(!ivideo->video_vbase) { ··· 4517 } else { 4518 #endif 4519 /* Need to map max FB size for finding out about RAM size */ 4520 - mapsize = 64 << 20; 4521 sisfb_post_map_vram(ivideo, &mapsize, 4); 4522 4523 if(ivideo->video_vbase) { ··· 4683 orSISIDXREG(SISSR, 0x20, (0x80 | 0x04)); 4684 4685 /* Need to map max FB size for finding out about RAM size */ 4686 - mapsize = 256 << 20; 4687 sisfb_post_map_vram(ivideo, &mapsize, 32); 4688 4689 if(!ivideo->video_vbase) { ··· 5939 } 5940 5941 ivideo->video_base = pci_resource_start(pdev, 0); 5942 ivideo->mmio_base = pci_resource_start(pdev, 1); 5943 ivideo->mmio_size = pci_resource_len(pdev, 1); 5944 ivideo->SiS_Pr.RelIO = pci_resource_start(pdev, 2) + 0x30;
··· 4181 sisfb_post_map_vram(struct sis_video_info *ivideo, unsigned int *mapsize, 4182 unsigned int min) 4183 { 4184 + if (*mapsize < (min << 20)) 4185 + return; 4186 + 4187 ivideo->video_vbase = ioremap(ivideo->video_base, (*mapsize)); 4188 4189 if(!ivideo->video_vbase) { ··· 4514 } else { 4515 #endif 4516 /* Need to map max FB size for finding out about RAM size */ 4517 + mapsize = ivideo->video_size; 4518 sisfb_post_map_vram(ivideo, &mapsize, 4); 4519 4520 if(ivideo->video_vbase) { ··· 4680 orSISIDXREG(SISSR, 0x20, (0x80 | 0x04)); 4681 4682 /* Need to map max FB size for finding out about RAM size */ 4683 + mapsize = ivideo->video_size; 4684 sisfb_post_map_vram(ivideo, &mapsize, 32); 4685 4686 if(!ivideo->video_vbase) { ··· 5936 } 5937 5938 ivideo->video_base = pci_resource_start(pdev, 0); 5939 + ivideo->video_size = pci_resource_len(pdev, 0); 5940 ivideo->mmio_base = pci_resource_start(pdev, 1); 5941 ivideo->mmio_size = pci_resource_len(pdev, 1); 5942 ivideo->SiS_Pr.RelIO = pci_resource_start(pdev, 2) + 0x30;
-1
include/linux/fsl-diu-fb.h
··· 54 }; 55 56 #define MFB_SET_CHROMA_KEY _IOW('M', 1, struct mfb_chroma_key) 57 - #define MFB_WAIT_FOR_VSYNC _IOW('F', 0x20, u_int32_t) 58 #define MFB_SET_BRIGHTNESS _IOW('M', 3, __u8) 59 60 #define MFB_SET_ALPHA 0x80014d00
··· 54 }; 55 56 #define MFB_SET_CHROMA_KEY _IOW('M', 1, struct mfb_chroma_key) 57 #define MFB_SET_BRIGHTNESS _IOW('M', 3, __u8) 58 59 #define MFB_SET_ALPHA 0x80014d00