Commit 66591457 authored by Tomi Valkeinen's avatar Tomi Valkeinen

Merge branch 'fbdev-for-linus' of git://github.com/schandinat/linux-2.6

Merge omapfb and OMAP SDI fixes:

* OMAPFB: fix framebuffer console colors
* OMAPDSS: Fix SDI PLL locking

Conflicts:
	drivers/video/omap2/dss/sdi.c
parents 6cd05430 c1c52848
...@@ -987,7 +987,6 @@ int __devinit auok190x_common_probe(struct platform_device *pdev, ...@@ -987,7 +987,6 @@ int __devinit auok190x_common_probe(struct platform_device *pdev,
fb_dealloc_cmap(&info->cmap); fb_dealloc_cmap(&info->cmap);
err_cmap: err_cmap:
fb_deferred_io_cleanup(info); fb_deferred_io_cleanup(info);
kfree(info->fbdefio);
err_defio: err_defio:
vfree((void *)info->screen_base); vfree((void *)info->screen_base);
err_irq: err_irq:
...@@ -1022,7 +1021,6 @@ int __devexit auok190x_common_remove(struct platform_device *pdev) ...@@ -1022,7 +1021,6 @@ int __devexit auok190x_common_remove(struct platform_device *pdev)
fb_dealloc_cmap(&info->cmap); fb_dealloc_cmap(&info->cmap);
fb_deferred_io_cleanup(info); fb_deferred_io_cleanup(info);
kfree(info->fbdefio);
vfree((void *)info->screen_base); vfree((void *)info->screen_base);
......
...@@ -162,7 +162,7 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info, ...@@ -162,7 +162,7 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info,
image.depth = 1; image.depth = 1;
if (attribute) { if (attribute) {
buf = kmalloc(cellsize, GFP_KERNEL); buf = kmalloc(cellsize, GFP_ATOMIC);
if (!buf) if (!buf)
return; return;
} }
......
...@@ -449,7 +449,7 @@ static int __init fb_console_setup(char *this_opt) ...@@ -449,7 +449,7 @@ static int __init fb_console_setup(char *this_opt)
while ((options = strsep(&this_opt, ",")) != NULL) { while ((options = strsep(&this_opt, ",")) != NULL) {
if (!strncmp(options, "font:", 5)) if (!strncmp(options, "font:", 5))
strcpy(fontname, options + 5); strlcpy(fontname, options + 5, sizeof(fontname));
if (!strncmp(options, "scrollback:", 11)) { if (!strncmp(options, "scrollback:", 11)) {
options += 11; options += 11;
......
...@@ -328,6 +328,8 @@ static int mb862xxfb_ioctl(struct fb_info *fbi, unsigned int cmd, ...@@ -328,6 +328,8 @@ static int mb862xxfb_ioctl(struct fb_info *fbi, unsigned int cmd,
case MB862XX_L1_SET_CFG: case MB862XX_L1_SET_CFG:
if (copy_from_user(l1_cfg, argp, sizeof(*l1_cfg))) if (copy_from_user(l1_cfg, argp, sizeof(*l1_cfg)))
return -EFAULT; return -EFAULT;
if (l1_cfg->dh == 0 || l1_cfg->dw == 0)
return -EINVAL;
if ((l1_cfg->sw >= l1_cfg->dw) && (l1_cfg->sh >= l1_cfg->dh)) { if ((l1_cfg->sw >= l1_cfg->dw) && (l1_cfg->sh >= l1_cfg->dh)) {
/* downscaling */ /* downscaling */
outreg(cap, GC_CAP_CSC, outreg(cap, GC_CAP_CSC,
......
...@@ -107,8 +107,21 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev) ...@@ -107,8 +107,21 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev)
sdi_config_lcd_manager(dssdev); sdi_config_lcd_manager(dssdev);
dss_sdi_init(sdi.datapairs); /*
* LCLK and PCLK divisors are located in shadow registers, and we
* normally write them to DISPC registers when enabling the output.
* However, SDI uses pck-free as source clock for its PLL, and pck-free
* is affected by the divisors. And as we need the PLL before enabling
* the output, we need to write the divisors early.
*
* It seems just writing to the DISPC register is enough, and we don't
* need to care about the shadow register mechanism for pck-free. The
* exact reason for this is unknown.
*/
dispc_mgr_set_clock_div(dssdev->manager->id,
&sdi.mgr_config.clock_info);
dss_sdi_init(sdi.datapairs);
r = dss_sdi_enable(); r = dss_sdi_enable();
if (r) if (r)
goto err_sdi_enable; goto err_sdi_enable;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment