aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/omapfb
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-02 22:40:34 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-02 22:40:34 -0400
commit20a2078ce7705a6e0722ef5184336eb8657a58d8 (patch)
tree5b927c96516380aa0ecd68d8a609f7cd72120ad5 /drivers/video/omap2/omapfb
parent0279b3c0ada1d78882f24acf94ac4595bd657a89 (diff)
parent307b9c022720f9de90d58e51743e01e9a42aec59 (diff)
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie: "This is the main drm pull request for 3.10. Wierd bits: - OMAP drm changes required OMAP dss changes, in drivers/video, so I took them in here. - one more fbcon fix for font handover - VT switch avoidance in pm code - scatterlist helpers for gpu drivers - have acks from akpm Highlights: - qxl kms driver - driver for the spice qxl virtual GPU Nouveau: - fermi/kepler VRAM compression - GK110/nvf0 modesetting support. Tegra: - host1x core merged with 2D engine support i915: - vt switchless resume - more valleyview support - vblank fixes - modesetting pipe config rework radeon: - UVD engine support - SI chip tiling support - GPU registers initialisation from golden values. exynos: - device tree changes - fimc block support Otherwise: - bunches of fixes all over the place." * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (513 commits) qxl: update to new idr interfaces. drm/nouveau: fix build with nv50->nvc0 drm/radeon: fix handling of v6 power tables drm/radeon: clarify family checks in pm table parsing drm/radeon: consolidate UVD clock programming drm/radeon: fix UPLL_REF_DIV_MASK definition radeon: add bo tracking debugfs drm/radeon: add new richland pci ids drm/radeon: add some new SI PCI ids drm/radeon: fix scratch reg handling for UVD fence drm/radeon: allocate SA bo in the requested domain drm/radeon: fix possible segfault when parsing pm tables drm/radeon: fix endian bugs in atom_allocate_fb_scratch() OMAPDSS: TFP410: return EPROBE_DEFER if the i2c adapter not found OMAPDSS: VENC: Add error handling for venc_probe_pdata OMAPDSS: HDMI: Add error handling for hdmi_probe_pdata OMAPDSS: RFBI: Add error handling for rfbi_probe_pdata OMAPDSS: DSI: Add error handling for dsi_probe_pdata OMAPDSS: SDI: Add error handling for sdi_probe_pdata OMAPDSS: DPI: Add error handling for dpi_probe_pdata ...
Diffstat (limited to 'drivers/video/omap2/omapfb')
-rw-r--r--drivers/video/omap2/omapfb/omapfb-main.c32
1 files changed, 5 insertions, 27 deletions
diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
index 717f13a93351..c84bb8a4d0c4 100644
--- a/drivers/video/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/omap2/omapfb/omapfb-main.c
@@ -2372,7 +2372,7 @@ static int omapfb_init_connections(struct omapfb2_device *fbdev,
2372 struct omap_dss_device *dssdev = fbdev->displays[i].dssdev; 2372 struct omap_dss_device *dssdev = fbdev->displays[i].dssdev;
2373 struct omap_dss_output *out = dssdev->output; 2373 struct omap_dss_output *out = dssdev->output;
2374 2374
2375 mgr = omap_dss_get_overlay_manager(dssdev->channel); 2375 mgr = omap_dss_get_overlay_manager(out->dispc_channel);
2376 2376
2377 if (!mgr || !out) 2377 if (!mgr || !out)
2378 continue; 2378 continue;
@@ -2406,7 +2406,7 @@ static int omapfb_init_connections(struct omapfb2_device *fbdev,
2406 return 0; 2406 return 0;
2407} 2407}
2408 2408
2409static int __init omapfb_probe(struct platform_device *pdev) 2409static int omapfb_probe(struct platform_device *pdev)
2410{ 2410{
2411 struct omapfb2_device *fbdev = NULL; 2411 struct omapfb2_device *fbdev = NULL;
2412 int r = 0; 2412 int r = 0;
@@ -2468,7 +2468,7 @@ static int __init omapfb_probe(struct platform_device *pdev)
2468 2468
2469 if (fbdev->num_displays == 0) { 2469 if (fbdev->num_displays == 0) {
2470 dev_err(&pdev->dev, "no displays\n"); 2470 dev_err(&pdev->dev, "no displays\n");
2471 r = -EINVAL; 2471 r = -EPROBE_DEFER;
2472 goto cleanup; 2472 goto cleanup;
2473 } 2473 }
2474 2474
@@ -2579,6 +2579,7 @@ static int __exit omapfb_remove(struct platform_device *pdev)
2579} 2579}
2580 2580
2581static struct platform_driver omapfb_driver = { 2581static struct platform_driver omapfb_driver = {
2582 .probe = omapfb_probe,
2582 .remove = __exit_p(omapfb_remove), 2583 .remove = __exit_p(omapfb_remove),
2583 .driver = { 2584 .driver = {
2584 .name = "omapfb", 2585 .name = "omapfb",
@@ -2586,36 +2587,13 @@ static struct platform_driver omapfb_driver = {
2586 }, 2587 },
2587}; 2588};
2588 2589
2589static int __init omapfb_init(void)
2590{
2591 DBG("omapfb_init\n");
2592
2593 if (platform_driver_probe(&omapfb_driver, omapfb_probe)) {
2594 printk(KERN_ERR "failed to register omapfb driver\n");
2595 return -ENODEV;
2596 }
2597
2598 return 0;
2599}
2600
2601static void __exit omapfb_exit(void)
2602{
2603 DBG("omapfb_exit\n");
2604 platform_driver_unregister(&omapfb_driver);
2605}
2606
2607module_param_named(mode, def_mode, charp, 0); 2590module_param_named(mode, def_mode, charp, 0);
2608module_param_named(vram, def_vram, charp, 0); 2591module_param_named(vram, def_vram, charp, 0);
2609module_param_named(rotate, def_rotate, int, 0); 2592module_param_named(rotate, def_rotate, int, 0);
2610module_param_named(vrfb, def_vrfb, bool, 0); 2593module_param_named(vrfb, def_vrfb, bool, 0);
2611module_param_named(mirror, def_mirror, bool, 0); 2594module_param_named(mirror, def_mirror, bool, 0);
2612 2595
2613/* late_initcall to let panel/ctrl drivers loaded first. 2596module_platform_driver(omapfb_driver);
2614 * I guess better option would be a more dynamic approach,
2615 * so that omapfb reacts to new panels when they are loaded */
2616late_initcall(omapfb_init);
2617/*module_init(omapfb_init);*/
2618module_exit(omapfb_exit);
2619 2597
2620MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>"); 2598MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>");
2621MODULE_DESCRIPTION("OMAP2/3 Framebuffer"); 2599MODULE_DESCRIPTION("OMAP2/3 Framebuffer");