aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorHyungwon Hwang <human.hwang@samsung.com>2015-07-01 06:09:25 -0400
committerInki Dae <inki.dae@samsung.com>2015-08-15 21:23:32 -0400
commit5149705dacfb24406634d2060880cd5605772540 (patch)
tree716738755d2d98767d822c1a3b6a4a704114cb28 /drivers/gpu
parent7b5102da0a9f008a5d59fa4e3cd9e6006848f3bd (diff)
drm/exynos: gsc: Handles the combination of rotation and flip
The unique results of all the combination of rotation and flip can be represented by just 8 states. This patch handles all the combination correctly. Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_gsc.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c
index f1c6b76c127f..808a0a013780 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gsc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c
@@ -582,9 +582,17 @@ static int gsc_src_set_transf(struct device *dev,
582 break; 582 break;
583 case EXYNOS_DRM_DEGREE_180: 583 case EXYNOS_DRM_DEGREE_180:
584 cfg |= GSC_IN_ROT_180; 584 cfg |= GSC_IN_ROT_180;
585 if (flip & EXYNOS_DRM_FLIP_VERTICAL)
586 cfg &= ~GSC_IN_ROT_XFLIP;
587 if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
588 cfg &= ~GSC_IN_ROT_YFLIP;
585 break; 589 break;
586 case EXYNOS_DRM_DEGREE_270: 590 case EXYNOS_DRM_DEGREE_270:
587 cfg |= GSC_IN_ROT_270; 591 cfg |= GSC_IN_ROT_270;
592 if (flip & EXYNOS_DRM_FLIP_VERTICAL)
593 cfg &= ~GSC_IN_ROT_XFLIP;
594 if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
595 cfg &= ~GSC_IN_ROT_YFLIP;
588 break; 596 break;
589 default: 597 default:
590 dev_err(ippdrv->dev, "inavlid degree value %d.\n", degree); 598 dev_err(ippdrv->dev, "inavlid degree value %d.\n", degree);
@@ -845,9 +853,17 @@ static int gsc_dst_set_transf(struct device *dev,
845 break; 853 break;
846 case EXYNOS_DRM_DEGREE_180: 854 case EXYNOS_DRM_DEGREE_180:
847 cfg |= GSC_IN_ROT_180; 855 cfg |= GSC_IN_ROT_180;
856 if (flip & EXYNOS_DRM_FLIP_VERTICAL)
857 cfg &= ~GSC_IN_ROT_XFLIP;
858 if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
859 cfg &= ~GSC_IN_ROT_YFLIP;
848 break; 860 break;
849 case EXYNOS_DRM_DEGREE_270: 861 case EXYNOS_DRM_DEGREE_270:
850 cfg |= GSC_IN_ROT_270; 862 cfg |= GSC_IN_ROT_270;
863 if (flip & EXYNOS_DRM_FLIP_VERTICAL)
864 cfg &= ~GSC_IN_ROT_XFLIP;
865 if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
866 cfg &= ~GSC_IN_ROT_YFLIP;
851 break; 867 break;
852 default: 868 default:
853 dev_err(ippdrv->dev, "inavlid degree value %d.\n", degree); 869 dev_err(ippdrv->dev, "inavlid degree value %d.\n", degree);