aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/rfbi.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2012-03-01 08:45:53 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-05-11 07:52:23 -0400
commit35deca3de6190b6bc03e34ed45de079047f834ab (patch)
tree6e778144d508dc5550cb105b39d06a522459069a /drivers/video/omap2/dss/rfbi.c
parentc018c6738bdae8c9f49766fd3d8b3770be2572f9 (diff)
OMAPDSS: interface drivers register their panel devices
Currently the higher level omapdss platform driver gets the list of displays in its platform data, and uses that list to create the omap_dss_device for each display. With DT, the logical way to do the above is to list the displays under each individual output, i.e. we'd have "dpi" node, under which we would have the display that uses DPI. In other words, each output driver handles the displays that use that particular output. To make the current code ready for DT, this patch modifies the output drivers so that each of them creates the display devices which use that output. However, instead of changing the platform data to suit this method, each output driver is passed the full list of displays, and the drivers pick the displays that are meant for them. This allows us to keep the old platform data, and thus we avoid the need to change the board files. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/rfbi.c')
-rw-r--r--drivers/video/omap2/dss/rfbi.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c
index 58da146254e..4c0a6c97d62 100644
--- a/drivers/video/omap2/dss/rfbi.c
+++ b/drivers/video/omap2/dss/rfbi.c
@@ -930,10 +930,11 @@ int rfbi_init_display(struct omap_dss_device *dssdev)
930/* RFBI HW IP initialisation */ 930/* RFBI HW IP initialisation */
931static int __init omap_rfbihw_probe(struct platform_device *pdev) 931static int __init omap_rfbihw_probe(struct platform_device *pdev)
932{ 932{
933 struct omap_dss_board_info *pdata = pdev->dev.platform_data;
933 u32 rev; 934 u32 rev;
934 struct resource *rfbi_mem; 935 struct resource *rfbi_mem;
935 struct clk *clk; 936 struct clk *clk;
936 int r; 937 int r, i;
937 938
938 rfbi.pdev = pdev; 939 rfbi.pdev = pdev;
939 940
@@ -978,6 +979,18 @@ static int __init omap_rfbihw_probe(struct platform_device *pdev)
978 979
979 dss_debugfs_create_file("rfbi", rfbi_dump_regs); 980 dss_debugfs_create_file("rfbi", rfbi_dump_regs);
980 981
982 for (i = 0; i < pdata->num_devices; ++i) {
983 struct omap_dss_device *dssdev = pdata->devices[i];
984
985 if (dssdev->type != OMAP_DISPLAY_TYPE_DBI)
986 continue;
987
988 r = omap_dss_register_device(dssdev, &pdev->dev, i);
989 if (r)
990 DSSERR("device %s register failed: %d\n",
991 dssdev->name, r);
992 }
993
981 return 0; 994 return 0;
982 995
983err_runtime_get: 996err_runtime_get:
@@ -987,6 +1000,7 @@ err_runtime_get:
987 1000
988static int __exit omap_rfbihw_remove(struct platform_device *pdev) 1001static int __exit omap_rfbihw_remove(struct platform_device *pdev)
989{ 1002{
1003 omap_dss_unregister_child_devices(&pdev->dev);
990 pm_runtime_disable(&pdev->dev); 1004 pm_runtime_disable(&pdev->dev);
991 return 0; 1005 return 0;
992} 1006}