aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Valkeinen2017-05-16 03:05:09 -0500
committerTomi Valkeinen2017-05-30 01:17:24 -0500
commita9f673b250acbeb1cea94fa068127fb52182cef6 (patch)
treeb148847c6626b230be0cde1b8bca275cdd29f3d0
parent45f0f3176cef01ea99aa377d6bd415f8d8d99819 (diff)
downloadkernel-audio-a9f673b250acbeb1cea94fa068127fb52182cef6.tar.gz
kernel-audio-a9f673b250acbeb1cea94fa068127fb52182cef6.tar.xz
kernel-audio-a9f673b250acbeb1cea94fa068127fb52182cef6.zip
drm/omap: use DRM_ROTATE_* instead of OMAP_DSS_ROT_*
At the moment the dispc driver uses a custom enum for rotation. Change it to use the DRM's DRM_ROTATE_*. Note that mirroring is at the moment handled as a separate boolean in the dispc driver, so we only use the DRM_ROTATE_* values. Note, DSS HW uses clockwise rotation, DRM counter-clockwise. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dispc.c60
-rw-r--r--drivers/gpu/drm/omapdrm/dss/omapdss.h8
-rw-r--r--drivers/gpu/drm/omapdrm/omap_plane.c2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_wb_cap.c2
-rw-r--r--drivers/gpu/drm/omapdrm/omap_wb_m2m.c4
5 files changed, 34 insertions, 42 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 8106079b63ea..348fa6247dd6 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -41,6 +41,7 @@
41#include <linux/of.h> 41#include <linux/of.h>
42#include <linux/component.h> 42#include <linux/component.h>
43#include <drm/drm_fourcc.h> 43#include <drm/drm_fourcc.h>
44#include <drm/drm_blend.h>
44 45
45#include "omapdss.h" 46#include "omapdss.h"
46#include "dss.h" 47#include "dss.h"
@@ -1593,22 +1594,21 @@ static void dispc_ovl_set_accu_uv(enum omap_plane_id plane,
1593 { 0, 1, 0, 1, -1, 1, 0, 1 }, 1594 { 0, 1, 0, 1, -1, 1, 0, 1 },
1594 }; 1595 };
1595 1596
1596 switch (rotation) { 1597 /* Note: DSS HW rotates clockwise, DRM_ROTATE_* counter-clockwise */
1597 case OMAP_DSS_ROT_0: 1598 switch (rotation & DRM_ROTATE_MASK) {
1599 default:
1600 case DRM_ROTATE_0:
1598 idx = 0; 1601 idx = 0;
1599 break; 1602 break;
1600 case OMAP_DSS_ROT_90: 1603 case DRM_ROTATE_90:
1601 idx = 1; 1604 idx = 3;
1602 break; 1605 break;
1603 case OMAP_DSS_ROT_180: 1606 case DRM_ROTATE_180:
1604 idx = 2; 1607 idx = 2;
1605 break; 1608 break;
1606 case OMAP_DSS_ROT_270: 1609 case DRM_ROTATE_270:
1607 idx = 3; 1610 idx = 1;
1608 break; 1611 break;
1609 default:
1610 BUG();
1611 return;
1612 } 1612 }
1613 1613
1614 switch (fourcc) { 1614 switch (fourcc) {
@@ -1735,8 +1735,7 @@ static void dispc_ovl_set_scaling_uv(enum omap_plane_id plane,
1735 case DRM_FORMAT_YUYV: 1735 case DRM_FORMAT_YUYV:
1736 case DRM_FORMAT_UYVY: 1736 case DRM_FORMAT_UYVY:
1737 /* For YUV422 with 90/270 rotation, we don't upsample chroma */ 1737 /* For YUV422 with 90/270 rotation, we don't upsample chroma */
1738 if (rotation == OMAP_DSS_ROT_0 || 1738 if (!drm_rotation_90_or_270(rotation)) {
1739 rotation == OMAP_DSS_ROT_180) {
1740 if (chroma_upscale) 1739 if (chroma_upscale)
1741 /* UV is subsampled by 2 horizontally */ 1740 /* UV is subsampled by 2 horizontally */
1742 orig_width >>= 1; 1741 orig_width >>= 1;
@@ -1746,7 +1745,7 @@ static void dispc_ovl_set_scaling_uv(enum omap_plane_id plane,
1746 } 1745 }
1747 1746
1748 /* must use FIR for YUV422 if rotated */ 1747 /* must use FIR for YUV422 if rotated */
1749 if (rotation != OMAP_DSS_ROT_0) 1748 if ((rotation & DRM_ROTATE_MASK) != DRM_ROTATE_0)
1750 scale_x = scale_y = true; 1749 scale_x = scale_y = true;
1751 1750
1752 break; 1751 break;
@@ -1805,41 +1804,42 @@ static void dispc_ovl_set_rotation_attrs(enum omap_plane_id plane, u8 rotation,
1805 bool row_repeat = false; 1804 bool row_repeat = false;
1806 int vidrot = 0; 1805 int vidrot = 0;
1807 1806
1807 /* Note: DSS HW rotates clockwise, DRM_ROTATE_* counter-clockwise */
1808 if (fourcc == DRM_FORMAT_YUYV || fourcc == DRM_FORMAT_UYVY) { 1808 if (fourcc == DRM_FORMAT_YUYV || fourcc == DRM_FORMAT_UYVY) {
1809 1809
1810 if (mirroring) { 1810 if (mirroring) {
1811 switch (rotation) { 1811 switch (rotation & DRM_ROTATE_MASK) {
1812 case OMAP_DSS_ROT_0: 1812 case DRM_ROTATE_0:
1813 vidrot = 2; 1813 vidrot = 2;
1814 break; 1814 break;
1815 case OMAP_DSS_ROT_90: 1815 case DRM_ROTATE_90:
1816 vidrot = 1; 1816 vidrot = 3;
1817 break; 1817 break;
1818 case OMAP_DSS_ROT_180: 1818 case DRM_ROTATE_180:
1819 vidrot = 0; 1819 vidrot = 0;
1820 break; 1820 break;
1821 case OMAP_DSS_ROT_270: 1821 case DRM_ROTATE_270:
1822 vidrot = 3; 1822 vidrot = 1;
1823 break; 1823 break;
1824 } 1824 }
1825 } else { 1825 } else {
1826 switch (rotation) { 1826 switch (rotation & DRM_ROTATE_MASK) {
1827 case OMAP_DSS_ROT_0: 1827 case DRM_ROTATE_0:
1828 vidrot = 0; 1828 vidrot = 0;
1829 break; 1829 break;
1830 case OMAP_DSS_ROT_90: 1830 case DRM_ROTATE_90:
1831 vidrot = 1; 1831 vidrot = 3;
1832 break; 1832 break;
1833 case OMAP_DSS_ROT_180: 1833 case DRM_ROTATE_180:
1834 vidrot = 2; 1834 vidrot = 2;
1835 break; 1835 break;
1836 case OMAP_DSS_ROT_270: 1836 case DRM_ROTATE_270:
1837 vidrot = 3; 1837 vidrot = 1;
1838 break; 1838 break;
1839 } 1839 }
1840 } 1840 }
1841 1841
1842 if (rotation == OMAP_DSS_ROT_90 || rotation == OMAP_DSS_ROT_270) 1842 if (drm_rotation_90_or_270(rotation))
1843 row_repeat = true; 1843 row_repeat = true;
1844 else 1844 else
1845 row_repeat = false; 1845 row_repeat = false;
@@ -1862,7 +1862,7 @@ static void dispc_ovl_set_rotation_attrs(enum omap_plane_id plane, u8 rotation,
1862 bool doublestride = 1862 bool doublestride =
1863 fourcc == DRM_FORMAT_NV12 && 1863 fourcc == DRM_FORMAT_NV12 &&
1864 rotation_type == OMAP_DSS_ROT_TILER && 1864 rotation_type == OMAP_DSS_ROT_TILER &&
1865 (rotation == OMAP_DSS_ROT_0 || rotation == OMAP_DSS_ROT_180); 1865 !drm_rotation_90_or_270(rotation);
1866 1866
1867 /* DOUBLESTRIDE */ 1867 /* DOUBLESTRIDE */
1868 REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), doublestride, 22, 22); 1868 REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), doublestride, 22, 22);
@@ -3950,7 +3950,7 @@ static const struct dispc_errata_i734_data {
3950 .screen_width = 1, 3950 .screen_width = 1,
3951 .width = 1, .height = 1, 3951 .width = 1, .height = 1,
3952 .fourcc = DRM_FORMAT_XRGB8888, 3952 .fourcc = DRM_FORMAT_XRGB8888,
3953 .rotation = OMAP_DSS_ROT_0, 3953 .rotation = DRM_ROTATE_0,
3954 .rotation_type = OMAP_DSS_ROT_NONE, 3954 .rotation_type = OMAP_DSS_ROT_NONE,
3955 .mirror = 0, 3955 .mirror = 0,
3956 .pos_x = 0, .pos_y = 0, 3956 .pos_x = 0, .pos_y = 0,
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index ac716289cf69..fe707b11a0cd 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -150,14 +150,6 @@ enum omap_dss_rotation_type {
150 OMAP_DSS_ROT_TILER = 1 << 0, 150 OMAP_DSS_ROT_TILER = 1 << 0,
151}; 151};
152 152
153/* clockwise rotation angle */
154enum omap_dss_rotation_angle {
155 OMAP_DSS_ROT_0 = 0,
156 OMAP_DSS_ROT_90 = 1,
157 OMAP_DSS_ROT_180 = 2,
158 OMAP_DSS_ROT_270 = 3,
159};
160
161enum omap_overlay_caps { 153enum omap_overlay_caps {
162 OMAP_DSS_OVL_CAP_SCALE = 1 << 0, 154 OMAP_DSS_OVL_CAP_SCALE = 1 << 0,
163 OMAP_DSS_OVL_CAP_GLOBAL_ALPHA = 1 << 1, 155 OMAP_DSS_OVL_CAP_GLOBAL_ALPHA = 1 << 1,
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index 71df72e181ba..f912ae54a200 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -87,7 +87,7 @@ static void omap_plane_atomic_update(struct drm_plane *plane,
87 87
88 memset(&info, 0, sizeof(info)); 88 memset(&info, 0, sizeof(info));
89 info.rotation_type = OMAP_DSS_ROT_NONE; 89 info.rotation_type = OMAP_DSS_ROT_NONE;
90 info.rotation = OMAP_DSS_ROT_0; 90 info.rotation = DRM_ROTATE_0;
91 info.mirror = 0; 91 info.mirror = 0;
92 info.zorder = omap_state->zorder; 92 info.zorder = omap_state->zorder;
93 info.global_alpha = omap_state->global_alpha; 93 info.global_alpha = omap_state->global_alpha;
diff --git a/drivers/gpu/drm/omapdrm/omap_wb_cap.c b/drivers/gpu/drm/omapdrm/omap_wb_cap.c
index 8a8f05e8320a..a89e1351456e 100644
--- a/drivers/gpu/drm/omapdrm/omap_wb_cap.c
+++ b/drivers/gpu/drm/omapdrm/omap_wb_cap.c
@@ -208,7 +208,7 @@ static int wbcap_schedule_next_buffer(struct wbcap_dev *dev)
208 wb_info.fourcc = pix->pixelformat; 208 wb_info.fourcc = pix->pixelformat;
209 wb_info.pre_mult_alpha = 1; 209 wb_info.pre_mult_alpha = 1;
210 210
211 wb_info.rotation = OMAP_DSS_ROT_0; 211 wb_info.rotation = DRM_ROTATE_0;
212 wb_info.rotation_type = OMAP_DSS_ROT_NONE; 212 wb_info.rotation_type = OMAP_DSS_ROT_NONE;
213 213
214 ok = wb_cap_setup(dev, 214 ok = wb_cap_setup(dev,
diff --git a/drivers/gpu/drm/omapdrm/omap_wb_m2m.c b/drivers/gpu/drm/omapdrm/omap_wb_m2m.c
index 11641352dd7d..f1adfd5d52c1 100644
--- a/drivers/gpu/drm/omapdrm/omap_wb_m2m.c
+++ b/drivers/gpu/drm/omapdrm/omap_wb_m2m.c
@@ -205,7 +205,7 @@ static void device_run(void *priv)
205 src_info.fourcc = spix->pixelformat; 205 src_info.fourcc = spix->pixelformat;
206 src_info.global_alpha = 0xff; 206 src_info.global_alpha = 0xff;
207 207
208 src_info.rotation = OMAP_DSS_ROT_0; 208 src_info.rotation = DRM_ROTATE_0;
209 src_info.rotation_type = OMAP_DSS_ROT_NONE; 209 src_info.rotation_type = OMAP_DSS_ROT_NONE;
210 210
211 log_dbg(dev, "SRC: ctx %pa buf_index %d %dx%d, sw %d\n", 211 log_dbg(dev, "SRC: ctx %pa buf_index %d %dx%d, sw %d\n",
@@ -224,7 +224,7 @@ static void device_run(void *priv)
224 wb_info.fourcc = dpix->pixelformat; 224 wb_info.fourcc = dpix->pixelformat;
225 wb_info.pre_mult_alpha = 1; 225 wb_info.pre_mult_alpha = 1;
226 226
227 wb_info.rotation = OMAP_DSS_ROT_0; 227 wb_info.rotation = DRM_ROTATE_0;
228 wb_info.rotation_type = OMAP_DSS_ROT_NONE; 228 wb_info.rotation_type = OMAP_DSS_ROT_NONE;
229 229
230 log_dbg(dev, "DST: ctx %pa buf_index %d %dx%d, sw %d\n", 230 log_dbg(dev, "DST: ctx %pa buf_index %d %dx%d, sw %d\n",