diff options
| author | Hyungwon Hwang <human.hwang@samsung.com> | 2015-07-01 06:09:25 -0400 |
|---|---|---|
| committer | Inki Dae <inki.dae@samsung.com> | 2015-08-15 21:23:32 -0400 |
| commit | 5149705dacfb24406634d2060880cd5605772540 (patch) | |
| tree | 716738755d2d98767d822c1a3b6a4a704114cb28 /drivers/gpu | |
| parent | 7b5102da0a9f008a5d59fa4e3cd9e6006848f3bd (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.c | 16 |
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); |
