aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/display.c38
-rw-r--r--include/video/omapdss.h14
2 files changed, 52 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 1011995f150a..28f508724a56 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -284,6 +284,35 @@ err:
284 return ERR_PTR(r); 284 return ERR_PTR(r);
285} 285}
286 286
287static enum omapdss_version __init omap_display_get_version(void)
288{
289 if (cpu_is_omap24xx())
290 return OMAPDSS_VER_OMAP24xx;
291 else if (cpu_is_omap3630())
292 return OMAPDSS_VER_OMAP3630;
293 else if (cpu_is_omap34xx()) {
294 if (soc_is_am35xx()) {
295 return OMAPDSS_VER_AM35xx;
296 } else {
297 if (omap_rev() < OMAP3430_REV_ES3_0)
298 return OMAPDSS_VER_OMAP34xx_ES1;
299 else
300 return OMAPDSS_VER_OMAP34xx_ES3;
301 }
302 } else if (omap_rev() == OMAP4430_REV_ES1_0)
303 return OMAPDSS_VER_OMAP4430_ES1;
304 else if (omap_rev() == OMAP4430_REV_ES2_0 ||
305 omap_rev() == OMAP4430_REV_ES2_1 ||
306 omap_rev() == OMAP4430_REV_ES2_2)
307 return OMAPDSS_VER_OMAP4430_ES2;
308 else if (cpu_is_omap44xx())
309 return OMAPDSS_VER_OMAP4;
310 else if (soc_is_omap54xx())
311 return OMAPDSS_VER_OMAP5;
312 else
313 return OMAPDSS_VER_UNKNOWN;
314}
315
287int __init omap_display_init(struct omap_dss_board_info *board_data) 316int __init omap_display_init(struct omap_dss_board_info *board_data)
288{ 317{
289 int r = 0; 318 int r = 0;
@@ -291,9 +320,18 @@ int __init omap_display_init(struct omap_dss_board_info *board_data)
291 int i, oh_count; 320 int i, oh_count;
292 const struct omap_dss_hwmod_data *curr_dss_hwmod; 321 const struct omap_dss_hwmod_data *curr_dss_hwmod;
293 struct platform_device *dss_pdev; 322 struct platform_device *dss_pdev;
323 enum omapdss_version ver;
294 324
295 /* create omapdss device */ 325 /* create omapdss device */
296 326
327 ver = omap_display_get_version();
328
329 if (ver == OMAPDSS_VER_UNKNOWN) {
330 pr_err("DSS not supported on this SoC\n");
331 return -ENODEV;
332 }
333
334 board_data->version = ver;
297 board_data->dsi_enable_pads = omap_dsi_enable_pads; 335 board_data->dsi_enable_pads = omap_dsi_enable_pads;
298 board_data->dsi_disable_pads = omap_dsi_disable_pads; 336 board_data->dsi_disable_pads = omap_dsi_disable_pads;
299 board_data->get_context_loss_count = omap_pm_get_dev_context_loss_count; 337 board_data->get_context_loss_count = omap_pm_get_dev_context_loss_count;
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 3729173b7fbc..88c829466fc1 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -314,6 +314,19 @@ int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel);
314int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel); 314int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel);
315void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel); 315void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel);
316 316
317enum omapdss_version {
318 OMAPDSS_VER_UNKNOWN = 0,
319 OMAPDSS_VER_OMAP24xx,
320 OMAPDSS_VER_OMAP34xx_ES1, /* OMAP3430 ES1.0, 2.0 */
321 OMAPDSS_VER_OMAP34xx_ES3, /* OMAP3430 ES3.0+ */
322 OMAPDSS_VER_OMAP3630,
323 OMAPDSS_VER_AM35xx,
324 OMAPDSS_VER_OMAP4430_ES1, /* OMAP4430 ES1.0 */
325 OMAPDSS_VER_OMAP4430_ES2, /* OMAP4430 ES2.0, 2.1, 2.2 */
326 OMAPDSS_VER_OMAP4, /* All other OMAP4s */
327 OMAPDSS_VER_OMAP5,
328};
329
317/* Board specific data */ 330/* Board specific data */
318struct omap_dss_board_info { 331struct omap_dss_board_info {
319 int (*get_context_loss_count)(struct device *dev); 332 int (*get_context_loss_count)(struct device *dev);
@@ -323,6 +336,7 @@ struct omap_dss_board_info {
323 int (*dsi_enable_pads)(int dsi_id, unsigned lane_mask); 336 int (*dsi_enable_pads)(int dsi_id, unsigned lane_mask);
324 void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask); 337 void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask);
325 int (*set_min_bus_tput)(struct device *dev, unsigned long r); 338 int (*set_min_bus_tput)(struct device *dev, unsigned long r);
339 enum omapdss_version version;
326}; 340};
327 341
328/* Init with the board info */ 342/* Init with the board info */