summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/auo_k190x.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/drivers/video/auo_k190x.c b/drivers/video/auo_k190x.c
index c2a945183a5d..baf213cdbe3d 100644
--- a/drivers/video/auo_k190x.c
+++ b/drivers/video/auo_k190x.c
@@ -487,12 +487,20 @@ static int auok190xfb_check_var(struct fb_var_screeninfo *var,
* Dimensions
*/
- if (par->rotation & 1) {
- var->xres = panel->h;
- var->yres = panel->w;
- } else {
+ switch (var->rotate) {
+ case FB_ROTATE_UR:
+ case FB_ROTATE_UD:
var->xres = panel->w;
var->yres = panel->h;
+ break;
+ case FB_ROTATE_CW:
+ case FB_ROTATE_CCW:
+ var->xres = panel->h;
+ var->yres = panel->w;
+ break;
+ default:
+ dev_dbg(dev, "Invalid rotation request\n");
+ return -EINVAL;
}
var->xres_virtual = var->xres;
@@ -534,8 +542,15 @@ static int auok190xfb_set_par(struct fb_info *info)
{
struct auok190xfb_par *par = info->par;
+ par->rotation = info->var.rotate;
auok190xfb_set_fix(info);
+ /* reinit the controller to honor the rotation */
+ par->init(par);
+
+ /* wait for init to complete */
+ par->board->wait_for_rdy(par);
+
return 0;
}
@@ -1030,7 +1045,7 @@ int auok190x_common_probe(struct platform_device *pdev,
panel = &panel_table[board->resolution];
par->resolution = board->resolution;
- par->rotation = board->rotation;
+ par->rotation = 0;
/* videomemory handling */