diff options
author | Tomi Valkeinen | 2017-05-16 03:05:09 -0500 |
---|---|---|
committer | Tomi Valkeinen | 2017-05-30 01:17:24 -0500 |
commit | a9f673b250acbeb1cea94fa068127fb52182cef6 (patch) | |
tree | b148847c6626b230be0cde1b8bca275cdd29f3d0 | |
parent | 45f0f3176cef01ea99aa377d6bd415f8d8d99819 (diff) | |
download | kernel-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.c | 60 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/omapdss.h | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_plane.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_wb_cap.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_wb_m2m.c | 4 |
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 */ | ||
154 | enum 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 | |||
161 | enum omap_overlay_caps { | 153 | enum 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", |