aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/video/omap2/dss/display.c12
-rw-r--r--drivers/video/omap2/dss/dpi.c9
-rw-r--r--drivers/video/omap2/dss/dsi.c10
-rw-r--r--drivers/video/omap2/dss/dss.h1
-rw-r--r--drivers/video/omap2/dss/hdmi.c9
-rw-r--r--drivers/video/omap2/dss/output.c33
-rw-r--r--drivers/video/omap2/dss/rfbi.c9
-rw-r--r--drivers/video/omap2/dss/sdi.c9
-rw-r--r--drivers/video/omap2/dss/venc.c9
9 files changed, 55 insertions, 46 deletions
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c
index 008e9eecaf7..05f21b6231b 100644
--- a/drivers/video/omap2/dss/display.c
+++ b/drivers/video/omap2/dss/display.c
@@ -79,17 +79,8 @@ EXPORT_SYMBOL(omapdss_default_get_timings);
79int dss_init_device(struct platform_device *pdev, 79int dss_init_device(struct platform_device *pdev,
80 struct omap_dss_device *dssdev) 80 struct omap_dss_device *dssdev)
81{ 81{
82 struct omap_dss_output *out;
83 int r; 82 int r;
84 83
85 out = omapdss_get_output_from_dssdev(dssdev);
86
87 r = omapdss_output_set_device(out, dssdev);
88 if (r) {
89 DSSERR("failed to connect output to new device\n");
90 return r;
91 }
92
93 r = display_init_sysfs(pdev, dssdev); 84 r = display_init_sysfs(pdev, dssdev);
94 if (r) { 85 if (r) {
95 omapdss_output_unset_device(dssdev->output); 86 omapdss_output_unset_device(dssdev->output);
@@ -103,9 +94,6 @@ void dss_uninit_device(struct platform_device *pdev,
103 struct omap_dss_device *dssdev) 94 struct omap_dss_device *dssdev)
104{ 95{
105 display_uninit_sysfs(pdev, dssdev); 96 display_uninit_sysfs(pdev, dssdev);
106
107 if (dssdev->output)
108 omapdss_output_unset_device(dssdev->output);
109} 97}
110 98
111static int dss_suspend_device(struct device *dev, void *data) 99static int dss_suspend_device(struct device *dev, void *data)
diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c
index c109fa68c01..d5bc47a4f3e 100644
--- a/drivers/video/omap2/dss/dpi.c
+++ b/drivers/video/omap2/dss/dpi.c
@@ -477,9 +477,18 @@ static void __init dpi_probe_pdata(struct platform_device *dpidev)
477 return; 477 return;
478 } 478 }
479 479
480 r = omapdss_output_set_device(&dpi.output, dssdev);
481 if (r) {
482 DSSERR("failed to connect output to new device: %s\n",
483 dssdev->name);
484 dss_put_device(dssdev);
485 return;
486 }
487
480 r = dss_add_device(dssdev); 488 r = dss_add_device(dssdev);
481 if (r) { 489 if (r) {
482 DSSERR("device %s register failed: %d\n", dssdev->name, r); 490 DSSERR("device %s register failed: %d\n", dssdev->name, r);
491 omapdss_output_unset_device(&dpi.output);
483 dss_put_device(dssdev); 492 dss_put_device(dssdev);
484 return; 493 return;
485 } 494 }
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index cf32dc7e70f..db9663dcfbd 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -5146,6 +5146,7 @@ static struct omap_dss_device * __init dsi_find_dssdev(struct platform_device *p
5146 5146
5147static void __init dsi_probe_pdata(struct platform_device *dsidev) 5147static void __init dsi_probe_pdata(struct platform_device *dsidev)
5148{ 5148{
5149 struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
5149 struct omap_dss_device *plat_dssdev; 5150 struct omap_dss_device *plat_dssdev;
5150 struct omap_dss_device *dssdev; 5151 struct omap_dss_device *dssdev;
5151 int r; 5152 int r;
@@ -5168,9 +5169,18 @@ static void __init dsi_probe_pdata(struct platform_device *dsidev)
5168 return; 5169 return;
5169 } 5170 }
5170 5171
5172 r = omapdss_output_set_device(&dsi->output, dssdev);
5173 if (r) {
5174 DSSERR("failed to connect output to new device: %s\n",
5175 dssdev->name);
5176 dss_put_device(dssdev);
5177 return;
5178 }
5179
5171 r = dss_add_device(dssdev); 5180 r = dss_add_device(dssdev);
5172 if (r) { 5181 if (r) {
5173 DSSERR("device %s register failed: %d\n", dssdev->name, r); 5182 DSSERR("device %s register failed: %d\n", dssdev->name, r);
5183 omapdss_output_unset_device(&dsi->output);
5174 dss_put_device(dssdev); 5184 dss_put_device(dssdev);
5175 return; 5185 return;
5176 } 5186 }
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index 4d6f325cee8..bdf84313566 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -212,7 +212,6 @@ int dss_ovl_unset_manager(struct omap_overlay *ovl);
212/* output */ 212/* output */
213void dss_register_output(struct omap_dss_output *out); 213void dss_register_output(struct omap_dss_output *out);
214void dss_unregister_output(struct omap_dss_output *out); 214void dss_unregister_output(struct omap_dss_output *out);
215struct omap_dss_output *omapdss_get_output_from_dssdev(struct omap_dss_device *dssdev);
216 215
217/* display */ 216/* display */
218int dss_suspend_all_devices(void); 217int dss_suspend_all_devices(void);
diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c
index 24a2eefb7e8..769d0828581 100644
--- a/drivers/video/omap2/dss/hdmi.c
+++ b/drivers/video/omap2/dss/hdmi.c
@@ -1026,9 +1026,18 @@ static void __init hdmi_probe_pdata(struct platform_device *pdev)
1026 return; 1026 return;
1027 } 1027 }
1028 1028
1029 r = omapdss_output_set_device(&hdmi.output, dssdev);
1030 if (r) {
1031 DSSERR("failed to connect output to new device: %s\n",
1032 dssdev->name);
1033 dss_put_device(dssdev);
1034 return;
1035 }
1036
1029 r = dss_add_device(dssdev); 1037 r = dss_add_device(dssdev);
1030 if (r) { 1038 if (r) {
1031 DSSERR("device %s register failed: %d\n", dssdev->name, r); 1039 DSSERR("device %s register failed: %d\n", dssdev->name, r);
1040 omapdss_output_unset_device(&hdmi.output);
1032 hdmi_uninit_display(dssdev); 1041 hdmi_uninit_display(dssdev);
1033 dss_put_device(dssdev); 1042 dss_put_device(dssdev);
1034 return; 1043 return;
diff --git a/drivers/video/omap2/dss/output.c b/drivers/video/omap2/dss/output.c
index 813f26682b7..1a84b79d558 100644
--- a/drivers/video/omap2/dss/output.c
+++ b/drivers/video/omap2/dss/output.c
@@ -113,36 +113,3 @@ struct omap_dss_output *omap_dss_get_output(enum omap_dss_output_id id)
113 113
114 return NULL; 114 return NULL;
115} 115}
116
117struct omap_dss_output *omapdss_get_output_from_dssdev(struct omap_dss_device *dssdev)
118{
119 struct omap_dss_output *out = NULL;
120 enum omap_dss_output_id id;
121
122 switch (dssdev->type) {
123 case OMAP_DISPLAY_TYPE_DPI:
124 out = omap_dss_get_output(OMAP_DSS_OUTPUT_DPI);
125 break;
126 case OMAP_DISPLAY_TYPE_DBI:
127 out = omap_dss_get_output(OMAP_DSS_OUTPUT_DBI);
128 break;
129 case OMAP_DISPLAY_TYPE_SDI:
130 out = omap_dss_get_output(OMAP_DSS_OUTPUT_SDI);
131 break;
132 case OMAP_DISPLAY_TYPE_VENC:
133 out = omap_dss_get_output(OMAP_DSS_OUTPUT_VENC);
134 break;
135 case OMAP_DISPLAY_TYPE_HDMI:
136 out = omap_dss_get_output(OMAP_DSS_OUTPUT_HDMI);
137 break;
138 case OMAP_DISPLAY_TYPE_DSI:
139 id = dssdev->phy.dsi.module == 0 ? OMAP_DSS_OUTPUT_DSI1 :
140 OMAP_DSS_OUTPUT_DSI2;
141 out = omap_dss_get_output(id);
142 break;
143 default:
144 break;
145 }
146
147 return out;
148}
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c
index 7bfeb13cf3d..ec9fde52716 100644
--- a/drivers/video/omap2/dss/rfbi.c
+++ b/drivers/video/omap2/dss/rfbi.c
@@ -999,9 +999,18 @@ static void __init rfbi_probe_pdata(struct platform_device *rfbidev)
999 return; 999 return;
1000 } 1000 }
1001 1001
1002 r = omapdss_output_set_device(&rfbi.output, dssdev);
1003 if (r) {
1004 DSSERR("failed to connect output to new device: %s\n",
1005 dssdev->name);
1006 dss_put_device(dssdev);
1007 return;
1008 }
1009
1002 r = dss_add_device(dssdev); 1010 r = dss_add_device(dssdev);
1003 if (r) { 1011 if (r) {
1004 DSSERR("device %s register failed: %d\n", dssdev->name, r); 1012 DSSERR("device %s register failed: %d\n", dssdev->name, r);
1013 omapdss_output_unset_device(&rfbi.output);
1005 dss_put_device(dssdev); 1014 dss_put_device(dssdev);
1006 return; 1015 return;
1007 } 1016 }
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c
index 882ce89765e..62b5374ce43 100644
--- a/drivers/video/omap2/dss/sdi.c
+++ b/drivers/video/omap2/dss/sdi.c
@@ -254,9 +254,18 @@ static void __init sdi_probe_pdata(struct platform_device *sdidev)
254 return; 254 return;
255 } 255 }
256 256
257 r = omapdss_output_set_device(&sdi.output, dssdev);
258 if (r) {
259 DSSERR("failed to connect output to new device: %s\n",
260 dssdev->name);
261 dss_put_device(dssdev);
262 return;
263 }
264
257 r = dss_add_device(dssdev); 265 r = dss_add_device(dssdev);
258 if (r) { 266 if (r) {
259 DSSERR("device %s register failed: %d\n", dssdev->name, r); 267 DSSERR("device %s register failed: %d\n", dssdev->name, r);
268 omapdss_output_unset_device(&sdi.output);
260 dss_put_device(dssdev); 269 dss_put_device(dssdev);
261 return; 270 return;
262 } 271 }
diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
index e8fddc9012c..006caf3cb50 100644
--- a/drivers/video/omap2/dss/venc.c
+++ b/drivers/video/omap2/dss/venc.c
@@ -795,9 +795,18 @@ static void __init venc_probe_pdata(struct platform_device *vencdev)
795 return; 795 return;
796 } 796 }
797 797
798 r = omapdss_output_set_device(&venc.output, dssdev);
799 if (r) {
800 DSSERR("failed to connect output to new device: %s\n",
801 dssdev->name);
802 dss_put_device(dssdev);
803 return;
804 }
805
798 r = dss_add_device(dssdev); 806 r = dss_add_device(dssdev);
799 if (r) { 807 if (r) {
800 DSSERR("device %s register failed: %d\n", dssdev->name, r); 808 DSSERR("device %s register failed: %d\n", dssdev->name, r);
809 omapdss_output_unset_device(&venc.output);
801 dss_put_device(dssdev); 810 dss_put_device(dssdev);
802 return; 811 return;
803 } 812 }