diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/omap2/dss/display.c | 12 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dpi.c | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 10 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.h | 1 | ||||
-rw-r--r-- | drivers/video/omap2/dss/hdmi.c | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/output.c | 33 | ||||
-rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/sdi.c | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/venc.c | 9 |
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); | |||
79 | int dss_init_device(struct platform_device *pdev, | 79 | int 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 | ||
111 | static int dss_suspend_device(struct device *dev, void *data) | 99 | static 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 | ||
5147 | static void __init dsi_probe_pdata(struct platform_device *dsidev) | 5147 | static 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 */ |
213 | void dss_register_output(struct omap_dss_output *out); | 213 | void dss_register_output(struct omap_dss_output *out); |
214 | void dss_unregister_output(struct omap_dss_output *out); | 214 | void dss_unregister_output(struct omap_dss_output *out); |
215 | struct omap_dss_output *omapdss_get_output_from_dssdev(struct omap_dss_device *dssdev); | ||
216 | 215 | ||
217 | /* display */ | 216 | /* display */ |
218 | int dss_suspend_all_devices(void); | 217 | int 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 | |||
117 | struct 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 | } |