diff options
| author | Dave Airlie <airlied@redhat.com> | 2013-05-02 20:10:23 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2013-05-02 20:10:23 -0400 |
| commit | 7e17fc0b69fbec2c25398adfb18a18fa6b210a53 (patch) | |
| tree | 3fab05a131aff7aa4e69923af0d390e17aefc0d3 | |
| parent | 6110948846e9440a60e491a9be67a8a13c646b7e (diff) | |
| parent | bca3913034ef99c9cc028d054273a3b271ed62b9 (diff) | |
Merge tag 'omapdss-for-3.10-fixes' of git://gitorious.org/linux-omap-dss2/linux into drm-next
OMAPDSS fixes for 3.10:
* Compilation fix when DSI is disabled in Kconfig
* Basic deferred probe support to fix DT boot
* tag 'omapdss-for-3.10-fixes' of git://gitorious.org/linux-omap-dss2/linux:
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
OMAPDSS: VENC: use platform_driver_register()
OMAPDSS: HDMI: use platform_driver_register()
OMAPDSS: RFBI: use platform_driver_register()
OMAPDSS: DSI: use platform_driver_register()
OMAPDSS: SDI: use platform_driver_register()
OMAPDSS: DPI: use platform_driver_register()
OMAPFB: defer probe if no displays
OMAPFB: use module_platform_driver()
OMAPDSS: Makefile: move omapfb after panels
OMAPDSS: DPI: fix compilation if DSI not compiled in
| -rw-r--r-- | drivers/video/omap2/Makefile | 2 | ||||
| -rw-r--r-- | drivers/video/omap2/displays/panel-tfp410.c | 2 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/dpi.c | 35 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/dsi.c | 35 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/dss.h | 31 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/hdmi.c | 33 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 32 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/sdi.c | 33 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/venc.c | 33 | ||||
| -rw-r--r-- | drivers/video/omap2/omapfb/omapfb-main.c | 30 |
10 files changed, 160 insertions, 106 deletions
diff --git a/drivers/video/omap2/Makefile b/drivers/video/omap2/Makefile index 5ea7cb9aed17..296e5c5281c5 100644 --- a/drivers/video/omap2/Makefile +++ b/drivers/video/omap2/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | obj-$(CONFIG_OMAP2_VRFB) += vrfb.o | 1 | obj-$(CONFIG_OMAP2_VRFB) += vrfb.o |
| 2 | 2 | ||
| 3 | obj-$(CONFIG_OMAP2_DSS) += dss/ | 3 | obj-$(CONFIG_OMAP2_DSS) += dss/ |
| 4 | obj-$(CONFIG_FB_OMAP2) += omapfb/ | ||
| 5 | obj-y += displays/ | 4 | obj-y += displays/ |
| 5 | obj-$(CONFIG_FB_OMAP2) += omapfb/ | ||
diff --git a/drivers/video/omap2/displays/panel-tfp410.c b/drivers/video/omap2/displays/panel-tfp410.c index a1dba868cef1..46039c4bf1ed 100644 --- a/drivers/video/omap2/displays/panel-tfp410.c +++ b/drivers/video/omap2/displays/panel-tfp410.c | |||
| @@ -135,7 +135,7 @@ static int tfp410_probe(struct omap_dss_device *dssdev) | |||
| 135 | if (!adapter) { | 135 | if (!adapter) { |
| 136 | dev_err(&dssdev->dev, "Failed to get I2C adapter, bus %d\n", | 136 | dev_err(&dssdev->dev, "Failed to get I2C adapter, bus %d\n", |
| 137 | i2c_bus_num); | 137 | i2c_bus_num); |
| 138 | return -EINVAL; | 138 | return -EPROBE_DEFER; |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | ddata->i2c_adapter = adapter; | 141 | ddata->i2c_adapter = adapter; |
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index e93c4debea7f..757b57f7275a 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c | |||
| @@ -520,7 +520,7 @@ void omapdss_dpi_set_data_lines(struct omap_dss_device *dssdev, int data_lines) | |||
| 520 | } | 520 | } |
| 521 | EXPORT_SYMBOL(omapdss_dpi_set_data_lines); | 521 | EXPORT_SYMBOL(omapdss_dpi_set_data_lines); |
| 522 | 522 | ||
| 523 | static int __init dpi_verify_dsi_pll(struct platform_device *dsidev) | 523 | static int dpi_verify_dsi_pll(struct platform_device *dsidev) |
| 524 | { | 524 | { |
| 525 | int r; | 525 | int r; |
| 526 | 526 | ||
| @@ -572,7 +572,7 @@ static enum omap_channel dpi_get_channel(void) | |||
| 572 | } | 572 | } |
| 573 | } | 573 | } |
| 574 | 574 | ||
| 575 | static int __init dpi_init_display(struct omap_dss_device *dssdev) | 575 | static int dpi_init_display(struct omap_dss_device *dssdev) |
| 576 | { | 576 | { |
| 577 | struct platform_device *dsidev; | 577 | struct platform_device *dsidev; |
| 578 | 578 | ||
| @@ -607,7 +607,7 @@ static int __init dpi_init_display(struct omap_dss_device *dssdev) | |||
| 607 | return 0; | 607 | return 0; |
| 608 | } | 608 | } |
| 609 | 609 | ||
| 610 | static struct omap_dss_device * __init dpi_find_dssdev(struct platform_device *pdev) | 610 | static struct omap_dss_device *dpi_find_dssdev(struct platform_device *pdev) |
| 611 | { | 611 | { |
| 612 | struct omap_dss_board_info *pdata = pdev->dev.platform_data; | 612 | struct omap_dss_board_info *pdata = pdev->dev.platform_data; |
| 613 | const char *def_disp_name = omapdss_get_default_display_name(); | 613 | const char *def_disp_name = omapdss_get_default_display_name(); |
| @@ -635,7 +635,7 @@ static struct omap_dss_device * __init dpi_find_dssdev(struct platform_device *p | |||
| 635 | return def_dssdev; | 635 | return def_dssdev; |
| 636 | } | 636 | } |
| 637 | 637 | ||
| 638 | static void __init dpi_probe_pdata(struct platform_device *dpidev) | 638 | static int dpi_probe_pdata(struct platform_device *dpidev) |
| 639 | { | 639 | { |
| 640 | struct omap_dss_device *plat_dssdev; | 640 | struct omap_dss_device *plat_dssdev; |
| 641 | struct omap_dss_device *dssdev; | 641 | struct omap_dss_device *dssdev; |
| @@ -644,11 +644,11 @@ static void __init dpi_probe_pdata(struct platform_device *dpidev) | |||
| 644 | plat_dssdev = dpi_find_dssdev(dpidev); | 644 | plat_dssdev = dpi_find_dssdev(dpidev); |
| 645 | 645 | ||
| 646 | if (!plat_dssdev) | 646 | if (!plat_dssdev) |
| 647 | return; | 647 | return 0; |
| 648 | 648 | ||
| 649 | dssdev = dss_alloc_and_init_device(&dpidev->dev); | 649 | dssdev = dss_alloc_and_init_device(&dpidev->dev); |
| 650 | if (!dssdev) | 650 | if (!dssdev) |
| 651 | return; | 651 | return -ENOMEM; |
| 652 | 652 | ||
| 653 | dss_copy_device_pdata(dssdev, plat_dssdev); | 653 | dss_copy_device_pdata(dssdev, plat_dssdev); |
| 654 | 654 | ||
| @@ -656,7 +656,7 @@ static void __init dpi_probe_pdata(struct platform_device *dpidev) | |||
| 656 | if (r) { | 656 | if (r) { |
| 657 | DSSERR("device %s init failed: %d\n", dssdev->name, r); | 657 | DSSERR("device %s init failed: %d\n", dssdev->name, r); |
| 658 | dss_put_device(dssdev); | 658 | dss_put_device(dssdev); |
| 659 | return; | 659 | return r; |
| 660 | } | 660 | } |
| 661 | 661 | ||
| 662 | r = omapdss_output_set_device(&dpi.output, dssdev); | 662 | r = omapdss_output_set_device(&dpi.output, dssdev); |
| @@ -664,7 +664,7 @@ static void __init dpi_probe_pdata(struct platform_device *dpidev) | |||
| 664 | DSSERR("failed to connect output to new device: %s\n", | 664 | DSSERR("failed to connect output to new device: %s\n", |
| 665 | dssdev->name); | 665 | dssdev->name); |
| 666 | dss_put_device(dssdev); | 666 | dss_put_device(dssdev); |
| 667 | return; | 667 | return r; |
| 668 | } | 668 | } |
| 669 | 669 | ||
| 670 | r = dss_add_device(dssdev); | 670 | r = dss_add_device(dssdev); |
| @@ -672,11 +672,13 @@ static void __init dpi_probe_pdata(struct platform_device *dpidev) | |||
| 672 | DSSERR("device %s register failed: %d\n", dssdev->name, r); | 672 | DSSERR("device %s register failed: %d\n", dssdev->name, r); |
| 673 | omapdss_output_unset_device(&dpi.output); | 673 | omapdss_output_unset_device(&dpi.output); |
| 674 | dss_put_device(dssdev); | 674 | dss_put_device(dssdev); |
| 675 | return; | 675 | return r; |
| 676 | } | 676 | } |
| 677 | |||
| 678 | return 0; | ||
| 677 | } | 679 | } |
| 678 | 680 | ||
| 679 | static void __init dpi_init_output(struct platform_device *pdev) | 681 | static void dpi_init_output(struct platform_device *pdev) |
| 680 | { | 682 | { |
| 681 | struct omap_dss_output *out = &dpi.output; | 683 | struct omap_dss_output *out = &dpi.output; |
| 682 | 684 | ||
| @@ -696,13 +698,19 @@ static void __exit dpi_uninit_output(struct platform_device *pdev) | |||
| 696 | dss_unregister_output(out); | 698 | dss_unregister_output(out); |
| 697 | } | 699 | } |
| 698 | 700 | ||
| 699 | static int __init omap_dpi_probe(struct platform_device *pdev) | 701 | static int omap_dpi_probe(struct platform_device *pdev) |
| 700 | { | 702 | { |
| 703 | int r; | ||
| 704 | |||
| 701 | mutex_init(&dpi.lock); | 705 | mutex_init(&dpi.lock); |
| 702 | 706 | ||
| 703 | dpi_init_output(pdev); | 707 | dpi_init_output(pdev); |
| 704 | 708 | ||
| 705 | dpi_probe_pdata(pdev); | 709 | r = dpi_probe_pdata(pdev); |
| 710 | if (r) { | ||
| 711 | dpi_uninit_output(pdev); | ||
| 712 | return r; | ||
| 713 | } | ||
| 706 | 714 | ||
| 707 | return 0; | 715 | return 0; |
| 708 | } | 716 | } |
| @@ -717,6 +725,7 @@ static int __exit omap_dpi_remove(struct platform_device *pdev) | |||
| 717 | } | 725 | } |
| 718 | 726 | ||
| 719 | static struct platform_driver omap_dpi_driver = { | 727 | static struct platform_driver omap_dpi_driver = { |
| 728 | .probe = omap_dpi_probe, | ||
| 720 | .remove = __exit_p(omap_dpi_remove), | 729 | .remove = __exit_p(omap_dpi_remove), |
| 721 | .driver = { | 730 | .driver = { |
| 722 | .name = "omapdss_dpi", | 731 | .name = "omapdss_dpi", |
| @@ -726,7 +735,7 @@ static struct platform_driver omap_dpi_driver = { | |||
| 726 | 735 | ||
| 727 | int __init dpi_init_platform_driver(void) | 736 | int __init dpi_init_platform_driver(void) |
| 728 | { | 737 | { |
| 729 | return platform_driver_probe(&omap_dpi_driver, omap_dpi_probe); | 738 | return platform_driver_register(&omap_dpi_driver); |
| 730 | } | 739 | } |
