Commit 59fb2f0e authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'fbdev-fixes-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux

Pull minor fbdev fixes from Tomi Valkeinen.

* tag 'fbdev-fixes-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux:
  video: vt8500: fix error handling in probe()
  atmel_lcdfb: fix module autoload
  fbdev: sh_mobile_meram: Fix defined but not used compiler warnings
  video: kyro: fix incorrect sizes when copying to userspace
  ARM: OMAPFB: panel-sony-acx565akm: fix bad unlock balance
parents 09759d1e 46ac2956
...@@ -131,6 +131,7 @@ static const struct platform_device_id atmel_lcdfb_devtypes[] = { ...@@ -131,6 +131,7 @@ static const struct platform_device_id atmel_lcdfb_devtypes[] = {
/* terminator */ /* terminator */
} }
}; };
MODULE_DEVICE_TABLE(platform, atmel_lcdfb_devtypes);
static struct atmel_lcdfb_config * static struct atmel_lcdfb_config *
atmel_lcdfb_get_config(struct platform_device *pdev) atmel_lcdfb_get_config(struct platform_device *pdev)
......
...@@ -624,15 +624,15 @@ static int kyrofb_ioctl(struct fb_info *info, ...@@ -624,15 +624,15 @@ static int kyrofb_ioctl(struct fb_info *info,
return -EINVAL; return -EINVAL;
} }
case KYRO_IOCTL_UVSTRIDE: case KYRO_IOCTL_UVSTRIDE:
if (copy_to_user(argp, &deviceInfo.ulOverlayUVStride, sizeof(unsigned long))) if (copy_to_user(argp, &deviceInfo.ulOverlayUVStride, sizeof(deviceInfo.ulOverlayUVStride)))
return -EFAULT; return -EFAULT;
break; break;
case KYRO_IOCTL_STRIDE: case KYRO_IOCTL_STRIDE:
if (copy_to_user(argp, &deviceInfo.ulOverlayStride, sizeof(unsigned long))) if (copy_to_user(argp, &deviceInfo.ulOverlayStride, sizeof(deviceInfo.ulOverlayStride)))
return -EFAULT; return -EFAULT;
break; break;
case KYRO_IOCTL_OVERLAY_OFFSET: case KYRO_IOCTL_OVERLAY_OFFSET:
if (copy_to_user(argp, &deviceInfo.ulOverlayOffset, sizeof(unsigned long))) if (copy_to_user(argp, &deviceInfo.ulOverlayOffset, sizeof(deviceInfo.ulOverlayOffset)))
return -EFAULT; return -EFAULT;
break; break;
} }
......
...@@ -526,6 +526,8 @@ static int acx565akm_panel_power_on(struct omap_dss_device *dssdev) ...@@ -526,6 +526,8 @@ static int acx565akm_panel_power_on(struct omap_dss_device *dssdev)
struct omap_dss_device *in = ddata->in; struct omap_dss_device *in = ddata->in;
int r; int r;
mutex_lock(&ddata->mutex);
dev_dbg(&ddata->spi->dev, "%s\n", __func__); dev_dbg(&ddata->spi->dev, "%s\n", __func__);
in->ops.sdi->set_timings(in, &ddata->videomode); in->ops.sdi->set_timings(in, &ddata->videomode);
...@@ -614,10 +616,7 @@ static int acx565akm_enable(struct omap_dss_device *dssdev) ...@@ -614,10 +616,7 @@ static int acx565akm_enable(struct omap_dss_device *dssdev)
if (omapdss_device_is_enabled(dssdev)) if (omapdss_device_is_enabled(dssdev))
return 0; return 0;
mutex_lock(&ddata->mutex);
r = acx565akm_panel_power_on(dssdev); r = acx565akm_panel_power_on(dssdev);
mutex_unlock(&ddata->mutex);
if (r) if (r)
return r; return r;
......
...@@ -569,6 +569,7 @@ EXPORT_SYMBOL_GPL(sh_mobile_meram_cache_update); ...@@ -569,6 +569,7 @@ EXPORT_SYMBOL_GPL(sh_mobile_meram_cache_update);
* Power management * Power management
*/ */
#if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM_RUNTIME)
static int sh_mobile_meram_suspend(struct device *dev) static int sh_mobile_meram_suspend(struct device *dev)
{ {
struct platform_device *pdev = to_platform_device(dev); struct platform_device *pdev = to_platform_device(dev);
...@@ -611,6 +612,7 @@ static int sh_mobile_meram_resume(struct device *dev) ...@@ -611,6 +612,7 @@ static int sh_mobile_meram_resume(struct device *dev)
meram_write_reg(priv->base, common_regs[i], priv->regs[i]); meram_write_reg(priv->base, common_regs[i], priv->regs[i]);
return 0; return 0;
} }
#endif /* CONFIG_PM_SLEEP || CONFIG_PM_RUNTIME */
static UNIVERSAL_DEV_PM_OPS(sh_mobile_meram_dev_pm_ops, static UNIVERSAL_DEV_PM_OPS(sh_mobile_meram_dev_pm_ops,
sh_mobile_meram_suspend, sh_mobile_meram_suspend,
......
...@@ -293,8 +293,7 @@ static int vt8500lcd_probe(struct platform_device *pdev) ...@@ -293,8 +293,7 @@ static int vt8500lcd_probe(struct platform_device *pdev)
+ sizeof(u32) * 16, GFP_KERNEL); + sizeof(u32) * 16, GFP_KERNEL);
if (!fbi) { if (!fbi) {
dev_err(&pdev->dev, "Failed to initialize framebuffer device\n"); dev_err(&pdev->dev, "Failed to initialize framebuffer device\n");
ret = -ENOMEM; return -ENOMEM;
goto failed;
} }
strcpy(fbi->fb.fix.id, "VT8500 LCD"); strcpy(fbi->fb.fix.id, "VT8500 LCD");
...@@ -327,15 +326,13 @@ static int vt8500lcd_probe(struct platform_device *pdev) ...@@ -327,15 +326,13 @@ static int vt8500lcd_probe(struct platform_device *pdev)
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res == NULL) { if (res == NULL) {
dev_err(&pdev->dev, "no I/O memory resource defined\n"); dev_err(&pdev->dev, "no I/O memory resource defined\n");
ret = -ENODEV; return -ENODEV;
goto failed_fbi;
} }
res = request_mem_region(res->start, resource_size(res), "vt8500lcd"); res = request_mem_region(res->start, resource_size(res), "vt8500lcd");
if (res == NULL) { if (res == NULL) {
dev_err(&pdev->dev, "failed to request I/O memory\n"); dev_err(&pdev->dev, "failed to request I/O memory\n");
ret = -EBUSY; return -EBUSY;
goto failed_fbi;
} }
fbi->regbase = ioremap(res->start, resource_size(res)); fbi->regbase = ioremap(res->start, resource_size(res));
...@@ -346,17 +343,19 @@ static int vt8500lcd_probe(struct platform_device *pdev) ...@@ -346,17 +343,19 @@ static int vt8500lcd_probe(struct platform_device *pdev)
} }
disp_timing = of_get_display_timings(pdev->dev.of_node); disp_timing = of_get_display_timings(pdev->dev.of_node);
if (!disp_timing) if (!disp_timing) {
return -EINVAL; ret = -EINVAL;
goto failed_free_io;
}
ret = of_get_fb_videomode(pdev->dev.of_node, &of_mode, ret = of_get_fb_videomode(pdev->dev.of_node, &of_mode,
OF_USE_NATIVE_MODE); OF_USE_NATIVE_MODE);
if (ret) if (ret)
return ret; goto failed_free_io;
ret = of_property_read_u32(pdev->dev.of_node, "bits-per-pixel", &bpp); ret = of_property_read_u32(pdev->dev.of_node, "bits-per-pixel", &bpp);
if (ret) if (ret)
return ret; goto failed_free_io;
/* try allocating the framebuffer */ /* try allocating the framebuffer */
fb_mem_len = of_mode.xres * of_mode.yres * 2 * (bpp / 8); fb_mem_len = of_mode.xres * of_mode.yres * 2 * (bpp / 8);
...@@ -364,7 +363,8 @@ static int vt8500lcd_probe(struct platform_device *pdev) ...@@ -364,7 +363,8 @@ static int vt8500lcd_probe(struct platform_device *pdev)
GFP_KERNEL); GFP_KERNEL);
if (!fb_mem_virt) { if (!fb_mem_virt) {
pr_err("%s: Failed to allocate framebuffer\n", __func__); pr_err("%s: Failed to allocate framebuffer\n", __func__);
return -ENOMEM; ret = -ENOMEM;
goto failed_free_io;
} }
fbi->fb.fix.smem_start = fb_mem_phys; fbi->fb.fix.smem_start = fb_mem_phys;
...@@ -447,9 +447,6 @@ static int vt8500lcd_probe(struct platform_device *pdev) ...@@ -447,9 +447,6 @@ static int vt8500lcd_probe(struct platform_device *pdev)
iounmap(fbi->regbase); iounmap(fbi->regbase);
failed_free_res: failed_free_res:
release_mem_region(res->start, resource_size(res)); release_mem_region(res->start, resource_size(res));
failed_fbi:
kfree(fbi);
failed:
return ret; return ret;
} }
......
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