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
This commit is contained in:
commit
7023166959
|
@ -255,9 +255,10 @@ framebuffer parameters.
|
||||||
Kernel boot arguments
|
Kernel boot arguments
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
vram=<size>
|
vram=<size>[,<physaddr>]
|
||||||
- Amount of total VRAM to preallocate. For example, "10M". omapfb
|
- Amount of total VRAM to preallocate and optionally a physical start
|
||||||
allocates memory for framebuffers from VRAM.
|
memory address. For example, "10M". omapfb allocates memory for
|
||||||
|
framebuffers from VRAM.
|
||||||
|
|
||||||
omapfb.mode=<display>:<mode>[,...]
|
omapfb.mode=<display>:<mode>[,...]
|
||||||
- Default video mode for specified displays. For example,
|
- Default video mode for specified displays. For example,
|
||||||
|
|
|
@ -2435,6 +2435,7 @@ F: drivers/net/wan/sdla.c
|
||||||
FRAMEBUFFER LAYER
|
FRAMEBUFFER LAYER
|
||||||
L: linux-fbdev@vger.kernel.org
|
L: linux-fbdev@vger.kernel.org
|
||||||
W: http://linux-fbdev.sourceforge.net/
|
W: http://linux-fbdev.sourceforge.net/
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: Documentation/fb/
|
F: Documentation/fb/
|
||||||
F: drivers/video/fb*
|
F: drivers/video/fb*
|
||||||
|
|
|
@ -554,9 +554,15 @@ void __init omap_vram_reserve_sdram_memblock(void)
|
||||||
size = PAGE_ALIGN(size);
|
size = PAGE_ALIGN(size);
|
||||||
|
|
||||||
if (paddr) {
|
if (paddr) {
|
||||||
if ((paddr & ~PAGE_MASK) ||
|
if (paddr & ~PAGE_MASK) {
|
||||||
!memblock_is_region_memory(paddr, size)) {
|
pr_err("VRAM start address 0x%08x not page aligned\n",
|
||||||
pr_err("Illegal SDRAM region for VRAM\n");
|
paddr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!memblock_is_region_memory(paddr, size)) {
|
||||||
|
pr_err("Illegal SDRAM region 0x%08x..0x%08x for VRAM\n",
|
||||||
|
paddr, paddr + size - 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -570,9 +576,12 @@ void __init omap_vram_reserve_sdram_memblock(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
paddr = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_REAL_LIMIT);
|
paddr = memblock_alloc(size, PAGE_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memblock_free(paddr, size);
|
||||||
|
memblock_remove(paddr, size);
|
||||||
|
|
||||||
omap_vram_add_region(paddr, size);
|
omap_vram_add_region(paddr, size);
|
||||||
|
|
||||||
pr_info("Reserving %u bytes SDRAM for VRAM\n", size);
|
pr_info("Reserving %u bytes SDRAM for VRAM\n", size);
|
||||||
|
|
|
@ -1071,6 +1071,10 @@ static void sh_hdmi_edid_work_fn(struct work_struct *work)
|
||||||
if (!hdmi->info)
|
if (!hdmi->info)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
hdmi->monspec.modedb_len = 0;
|
||||||
|
fb_destroy_modedb(hdmi->monspec.modedb);
|
||||||
|
hdmi->monspec.modedb = NULL;
|
||||||
|
|
||||||
acquire_console_sem();
|
acquire_console_sem();
|
||||||
|
|
||||||
/* HDMI disconnect */
|
/* HDMI disconnect */
|
||||||
|
@ -1078,7 +1082,6 @@ static void sh_hdmi_edid_work_fn(struct work_struct *work)
|
||||||
|
|
||||||
release_console_sem();
|
release_console_sem();
|
||||||
pm_runtime_put(hdmi->dev);
|
pm_runtime_put(hdmi->dev);
|
||||||
fb_destroy_modedb(hdmi->monspec.modedb);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
|
@ -115,15 +115,16 @@ static const struct fb_videomode default_720p = {
|
||||||
.xres = 1280,
|
.xres = 1280,
|
||||||
.yres = 720,
|
.yres = 720,
|
||||||
|
|
||||||
.left_margin = 200,
|
.left_margin = 220,
|
||||||
.right_margin = 88,
|
.right_margin = 110,
|
||||||
.hsync_len = 48,
|
.hsync_len = 40,
|
||||||
|
|
||||||
.upper_margin = 20,
|
.upper_margin = 20,
|
||||||
.lower_margin = 5,
|
.lower_margin = 5,
|
||||||
.vsync_len = 5,
|
.vsync_len = 5,
|
||||||
|
|
||||||
.pixclock = 13468,
|
.pixclock = 13468,
|
||||||
|
.refresh = 60,
|
||||||
.sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT,
|
.sync = FB_SYNC_VERT_HIGH_ACT | FB_SYNC_HOR_HIGH_ACT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1197,6 +1198,7 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
|
||||||
const struct fb_videomode *mode = cfg->lcd_cfg;
|
const struct fb_videomode *mode = cfg->lcd_cfg;
|
||||||
unsigned long max_size = 0;
|
unsigned long max_size = 0;
|
||||||
int k;
|
int k;
|
||||||
|
int num_cfg;
|
||||||
|
|
||||||
ch->info = framebuffer_alloc(0, &pdev->dev);
|
ch->info = framebuffer_alloc(0, &pdev->dev);
|
||||||
if (!ch->info) {
|
if (!ch->info) {
|
||||||
|
@ -1232,8 +1234,14 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
|
||||||
info->fix = sh_mobile_lcdc_fix;
|
info->fix = sh_mobile_lcdc_fix;
|
||||||
info->fix.smem_len = max_size * (cfg->bpp / 8) * 2;
|
info->fix.smem_len = max_size * (cfg->bpp / 8) * 2;
|
||||||
|
|
||||||
if (!mode)
|
if (!mode) {
|
||||||
mode = &default_720p;
|
mode = &default_720p;
|
||||||
|
num_cfg = 1;
|
||||||
|
} else {
|
||||||
|
num_cfg = ch->cfg.num_cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
fb_videomode_to_modelist(mode, num_cfg, &info->modelist);
|
||||||
|
|
||||||
fb_videomode_to_var(var, mode);
|
fb_videomode_to_var(var, mode);
|
||||||
/* Default Y virtual resolution is 2x panel size */
|
/* Default Y virtual resolution is 2x panel size */
|
||||||
|
@ -1281,10 +1289,6 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
for (i = 0; i < j; i++) {
|
for (i = 0; i < j; i++) {
|
||||||
struct sh_mobile_lcdc_chan *ch = priv->ch + i;
|
struct sh_mobile_lcdc_chan *ch = priv->ch + i;
|
||||||
const struct fb_videomode *mode = ch->cfg.lcd_cfg;
|
|
||||||
|
|
||||||
if (!mode)
|
|
||||||
mode = &default_720p;
|
|
||||||
|
|
||||||
info = ch->info;
|
info = ch->info;
|
||||||
|
|
||||||
|
@ -1297,7 +1301,6 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fb_videomode_to_modelist(mode, ch->cfg.num_cfg, &info->modelist);
|
|
||||||
error = register_framebuffer(info);
|
error = register_framebuffer(info);
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
goto err1;
|
goto err1;
|
||||||
|
|
|
@ -4181,6 +4181,9 @@ static void __devinit
|
||||||
sisfb_post_map_vram(struct sis_video_info *ivideo, unsigned int *mapsize,
|
sisfb_post_map_vram(struct sis_video_info *ivideo, unsigned int *mapsize,
|
||||||
unsigned int min)
|
unsigned int min)
|
||||||
{
|
{
|
||||||
|
if (*mapsize < (min << 20))
|
||||||
|
return;
|
||||||
|
|
||||||
ivideo->video_vbase = ioremap(ivideo->video_base, (*mapsize));
|
ivideo->video_vbase = ioremap(ivideo->video_base, (*mapsize));
|
||||||
|
|
||||||
if(!ivideo->video_vbase) {
|
if(!ivideo->video_vbase) {
|
||||||
|
@ -4514,7 +4517,7 @@ sisfb_post_sis300(struct pci_dev *pdev)
|
||||||
} else {
|
} else {
|
||||||
#endif
|
#endif
|
||||||
/* Need to map max FB size for finding out about RAM size */
|
/* Need to map max FB size for finding out about RAM size */
|
||||||
mapsize = 64 << 20;
|
mapsize = ivideo->video_size;
|
||||||
sisfb_post_map_vram(ivideo, &mapsize, 4);
|
sisfb_post_map_vram(ivideo, &mapsize, 4);
|
||||||
|
|
||||||
if(ivideo->video_vbase) {
|
if(ivideo->video_vbase) {
|
||||||
|
@ -4680,7 +4683,7 @@ sisfb_post_xgi_ramsize(struct sis_video_info *ivideo)
|
||||||
orSISIDXREG(SISSR, 0x20, (0x80 | 0x04));
|
orSISIDXREG(SISSR, 0x20, (0x80 | 0x04));
|
||||||
|
|
||||||
/* Need to map max FB size for finding out about RAM size */
|
/* Need to map max FB size for finding out about RAM size */
|
||||||
mapsize = 256 << 20;
|
mapsize = ivideo->video_size;
|
||||||
sisfb_post_map_vram(ivideo, &mapsize, 32);
|
sisfb_post_map_vram(ivideo, &mapsize, 32);
|
||||||
|
|
||||||
if(!ivideo->video_vbase) {
|
if(!ivideo->video_vbase) {
|
||||||
|
@ -5936,6 +5939,7 @@ sisfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
}
|
}
|
||||||
|
|
||||||
ivideo->video_base = pci_resource_start(pdev, 0);
|
ivideo->video_base = pci_resource_start(pdev, 0);
|
||||||
|
ivideo->video_size = pci_resource_len(pdev, 0);
|
||||||
ivideo->mmio_base = pci_resource_start(pdev, 1);
|
ivideo->mmio_base = pci_resource_start(pdev, 1);
|
||||||
ivideo->mmio_size = pci_resource_len(pdev, 1);
|
ivideo->mmio_size = pci_resource_len(pdev, 1);
|
||||||
ivideo->SiS_Pr.RelIO = pci_resource_start(pdev, 2) + 0x30;
|
ivideo->SiS_Pr.RelIO = pci_resource_start(pdev, 2) + 0x30;
|
||||||
|
|
|
@ -54,7 +54,6 @@ struct aoi_display_offset {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MFB_SET_CHROMA_KEY _IOW('M', 1, struct mfb_chroma_key)
|
#define MFB_SET_CHROMA_KEY _IOW('M', 1, struct mfb_chroma_key)
|
||||||
#define MFB_WAIT_FOR_VSYNC _IOW('F', 0x20, u_int32_t)
|
|
||||||
#define MFB_SET_BRIGHTNESS _IOW('M', 3, __u8)
|
#define MFB_SET_BRIGHTNESS _IOW('M', 3, __u8)
|
||||||
|
|
||||||
#define MFB_SET_ALPHA 0x80014d00
|
#define MFB_SET_ALPHA 0x80014d00
|
||||||
|
|
Loading…
Reference in New Issue