aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/plat-omap/include/plat/display.h3
-rw-r--r--drivers/video/omap2/displays/panel-taal.c9
-rw-r--r--drivers/video/omap2/dss/display.c8
-rw-r--r--drivers/video/omap2/dss/dsi.c33
4 files changed, 11 insertions, 42 deletions
diff --git a/arch/arm/plat-omap/include/plat/display.h b/arch/arm/plat-omap/include/plat/display.h
index aefd0676cd81..9291aa133e71 100644
--- a/arch/arm/plat-omap/include/plat/display.h
+++ b/arch/arm/plat-omap/include/plat/display.h
@@ -489,9 +489,6 @@ struct omap_dss_device {
489 int (*enable_te)(struct omap_dss_device *dssdev, bool enable); 489 int (*enable_te)(struct omap_dss_device *dssdev, bool enable);
490 int (*get_te)(struct omap_dss_device *dssdev); 490 int (*get_te)(struct omap_dss_device *dssdev);
491 491
492 u8 (*get_rotate)(struct omap_dss_device *dssdev);
493 int (*set_rotate)(struct omap_dss_device *dssdev, u8 rotate);
494
495 int (*set_wss)(struct omap_dss_device *dssdev, u32 wss); 492 int (*set_wss)(struct omap_dss_device *dssdev, u32 wss);
496 u32 (*get_wss)(struct omap_dss_device *dssdev); 493 u32 (*get_wss)(struct omap_dss_device *dssdev);
497 494
diff --git a/drivers/video/omap2/displays/panel-taal.c b/drivers/video/omap2/displays/panel-taal.c
index 4d644497431d..8f90de0d2b4b 100644
--- a/drivers/video/omap2/displays/panel-taal.c
+++ b/drivers/video/omap2/displays/panel-taal.c
@@ -772,16 +772,21 @@ static int taal_rotate(struct omap_dss_device *dssdev, u8 rotate)
772 772
773 dev_dbg(&dssdev->dev, "rotate %d\n", rotate); 773 dev_dbg(&dssdev->dev, "rotate %d\n", rotate);
774 774
775 dsi_bus_lock();
776
775 if (td->enabled) { 777 if (td->enabled) {
776 r = taal_set_addr_mode(rotate, td->mirror); 778 r = taal_set_addr_mode(rotate, td->mirror);
777
778 if (r) 779 if (r)
779 return r; 780 goto err;
780 } 781 }
781 782
782 td->rotate = rotate; 783 td->rotate = rotate;
783 784
785 dsi_bus_unlock();
784 return 0; 786 return 0;
787err:
788 dsi_bus_unlock();
789 return r;
785} 790}
786 791
787static u8 taal_get_rotate(struct omap_dss_device *dssdev) 792static u8 taal_get_rotate(struct omap_dss_device *dssdev)
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c
index 8b9179668f48..263d2fd93bac 100644
--- a/drivers/video/omap2/dss/display.c
+++ b/drivers/video/omap2/dss/display.c
@@ -185,9 +185,9 @@ static ssize_t display_rotate_show(struct device *dev,
185{ 185{
186 struct omap_dss_device *dssdev = to_dss_device(dev); 186 struct omap_dss_device *dssdev = to_dss_device(dev);
187 int rotate; 187 int rotate;
188 if (!dssdev->get_rotate) 188 if (!dssdev->driver->get_rotate)
189 return -ENOENT; 189 return -ENOENT;
190 rotate = dssdev->get_rotate(dssdev); 190 rotate = dssdev->driver->get_rotate(dssdev);
191 return snprintf(buf, PAGE_SIZE, "%u\n", rotate); 191 return snprintf(buf, PAGE_SIZE, "%u\n", rotate);
192} 192}
193 193
@@ -198,12 +198,12 @@ static ssize_t display_rotate_store(struct device *dev,
198 unsigned long rot; 198 unsigned long rot;
199 int r; 199 int r;
200 200
201 if (!dssdev->set_rotate || !dssdev->get_rotate) 201 if (!dssdev->driver->set_rotate || !dssdev->driver->get_rotate)
202 return -ENOENT; 202 return -ENOENT;
203 203
204 rot = simple_strtoul(buf, NULL, 0); 204 rot = simple_strtoul(buf, NULL, 0);
205 205
206 r = dssdev->set_rotate(dssdev, rot); 206 r = dssdev->driver->set_rotate(dssdev, rot);
207 if (r) 207 if (r)
208 return r; 208 return r;
209 209
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index 2f356d471b0e..82733d18c0ac 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -3532,36 +3532,6 @@ static int dsi_display_get_te(struct omap_dss_device *dssdev)
3532 return dsi.te_enabled; 3532 return dsi.te_enabled;
3533} 3533}
3534 3534
3535static int dsi_display_set_rotate(struct omap_dss_device *dssdev, u8 rotate)
3536{
3537
3538 DSSDBGF("%d", rotate);
3539
3540 if (!dssdev->driver->set_rotate || !dssdev->driver->get_rotate)
3541 return -EINVAL;
3542
3543 dsi_bus_lock();
3544 dssdev->driver->set_rotate(dssdev, rotate);
3545 if (dsi.update_mode == OMAP_DSS_UPDATE_AUTO) {
3546 u16 w, h;
3547 /* the display dimensions may have changed, so set a new
3548 * update region */
3549 dssdev->get_resolution(dssdev, &w, &h);
3550 dsi_set_update_region(dssdev, 0, 0, w, h);
3551 }
3552 dsi_bus_unlock();
3553
3554 return 0;
3555}
3556
3557static u8 dsi_display_get_rotate(struct omap_dss_device *dssdev)
3558{
3559 if (!dssdev->driver->set_rotate || !dssdev->driver->get_rotate)
3560 return 0;
3561
3562 return dssdev->driver->get_rotate(dssdev);
3563}
3564
3565void dsi_get_overlay_fifo_thresholds(enum omap_plane plane, 3535void dsi_get_overlay_fifo_thresholds(enum omap_plane plane,
3566 u32 fifo_size, enum omap_burst_size *burst_size, 3536 u32 fifo_size, enum omap_burst_size *burst_size,
3567 u32 *fifo_low, u32 *fifo_high) 3537 u32 *fifo_low, u32 *fifo_high)
@@ -3590,9 +3560,6 @@ int dsi_init_display(struct omap_dss_device *dssdev)
3590 dssdev->enable_te = dsi_display_enable_te; 3560 dssdev->enable_te = dsi_display_enable_te;
3591 dssdev->get_te = dsi_display_get_te; 3561 dssdev->get_te = dsi_display_get_te;
3592 3562
3593 dssdev->get_rotate = dsi_display_get_rotate;
3594 dssdev->set_rotate = dsi_display_set_rotate;
3595
3596 /* XXX these should be figured out dynamically */ 3563 /* XXX these should be figured out dynamically */
3597 dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE | 3564 dssdev->caps = OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE |
3598 OMAP_DSS_DISPLAY_CAP_TEAR_ELIM; 3565 OMAP_DSS_DISPLAY_CAP_TEAR_ELIM;