diff options
| -rw-r--r-- | arch/arm/mach-omap2/display.c | 38 | ||||
| -rw-r--r-- | include/video/omapdss.h | 14 |
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 | ||
| 287 | static 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 | |||
| 287 | int __init omap_display_init(struct omap_dss_board_info *board_data) | 316 | int __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); | |||
| 314 | int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel); | 314 | int dsi_enable_video_output(struct omap_dss_device *dssdev, int channel); |
| 315 | void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel); | 315 | void dsi_disable_video_output(struct omap_dss_device *dssdev, int channel); |
| 316 | 316 | ||
| 317 | enum 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 */ |
| 318 | struct omap_dss_board_info { | 331 | struct 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 */ |
