diff options
Diffstat (limited to 'drivers/video/mcde/mcde_dss.c')
-rw-r--r-- | drivers/video/mcde/mcde_dss.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/video/mcde/mcde_dss.c b/drivers/video/mcde/mcde_dss.c index 044e39ad285..a2ef0b652d7 100644 --- a/drivers/video/mcde/mcde_dss.c +++ b/drivers/video/mcde/mcde_dss.c @@ -121,6 +121,10 @@ int mcde_dss_enable_display(struct mcde_display_device *ddev) if (ret < 0) dev_warn(&ddev->dev, "Failed to set sync\n"); + ret = ddev->set_rotation(ddev, ddev->get_rotation(ddev)); + if (ret < 0) + dev_warn(&ddev->dev, "Failed to set rotation\n"); + ret = mcde_chnl_enable_synchronized_update(ddev->chnl_state, ddev->synchronized_update); if (ret < 0) { @@ -301,8 +305,17 @@ EXPORT_SYMBOL(mcde_dss_get_overlay_info); void mcde_dss_get_native_resolution(struct mcde_display_device *ddev, u16 *x_res, u16 *y_res) { + u16 x_tmp, y_tmp; mutex_lock(&ddev->display_lock); - ddev->get_native_resolution(ddev, x_res, y_res); + ddev->get_native_resolution(ddev, &x_tmp, &y_tmp); + if (ddev->orientation == MCDE_DISPLAY_ROT_90_CW || + ddev->orientation == MCDE_DISPLAY_ROT_90_CCW) { + *x_res = y_tmp; + *y_res = x_tmp; + } else { + *x_res = x_tmp; + *y_res = y_tmp; + } mutex_unlock(&ddev->display_lock); } EXPORT_SYMBOL(mcde_dss_get_native_resolution); |