These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpu / drm / exynos / exynos_drm_gsc.c
index 8040ed2..11b87d2 100644 (file)
@@ -543,7 +543,7 @@ static int gsc_src_set_fmt(struct device *dev, u32 fmt)
                        GSC_IN_YUV420_2P);
                break;
        default:
-               dev_err(ippdrv->dev, "inavlid target yuv order 0x%x.\n", fmt);
+               dev_err(ippdrv->dev, "invalid target yuv order 0x%x.\n", fmt);
                return -EINVAL;
        }
 
@@ -582,19 +582,26 @@ static int gsc_src_set_transf(struct device *dev,
                break;
        case EXYNOS_DRM_DEGREE_180:
                cfg |= GSC_IN_ROT_180;
+               if (flip & EXYNOS_DRM_FLIP_VERTICAL)
+                       cfg &= ~GSC_IN_ROT_XFLIP;
+               if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
+                       cfg &= ~GSC_IN_ROT_YFLIP;
                break;
        case EXYNOS_DRM_DEGREE_270:
                cfg |= GSC_IN_ROT_270;
+               if (flip & EXYNOS_DRM_FLIP_VERTICAL)
+                       cfg &= ~GSC_IN_ROT_XFLIP;
+               if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
+                       cfg &= ~GSC_IN_ROT_YFLIP;
                break;
        default:
-               dev_err(ippdrv->dev, "inavlid degree value %d.\n", degree);
+               dev_err(ippdrv->dev, "invalid degree value %d.\n", degree);
                return -EINVAL;
        }
 
        gsc_write(cfg, GSC_IN_CON);
 
-       ctx->rotation = cfg &
-               (GSC_IN_ROT_90 | GSC_IN_ROT_270) ? 1 : 0;
+       ctx->rotation = (cfg & GSC_IN_ROT_90) ? 1 : 0;
        *swap = ctx->rotation;
 
        return 0;
@@ -714,7 +721,7 @@ static int gsc_src_set_addr(struct device *dev,
                property->prop_id, buf_id, buf_type);
 
        if (buf_id > GSC_MAX_SRC) {
-               dev_info(ippdrv->dev, "inavlid buf_id %d.\n", buf_id);
+               dev_info(ippdrv->dev, "invalid buf_id %d.\n", buf_id);
                return -EINVAL;
        }
 
@@ -807,7 +814,7 @@ static int gsc_dst_set_fmt(struct device *dev, u32 fmt)
                        GSC_OUT_YUV420_2P);
                break;
        default:
-               dev_err(ippdrv->dev, "inavlid target yuv order 0x%x.\n", fmt);
+               dev_err(ippdrv->dev, "invalid target yuv order 0x%x.\n", fmt);
                return -EINVAL;
        }
 
@@ -846,19 +853,26 @@ static int gsc_dst_set_transf(struct device *dev,
                break;
        case EXYNOS_DRM_DEGREE_180:
                cfg |= GSC_IN_ROT_180;
+               if (flip & EXYNOS_DRM_FLIP_VERTICAL)
+                       cfg &= ~GSC_IN_ROT_XFLIP;
+               if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
+                       cfg &= ~GSC_IN_ROT_YFLIP;
                break;
        case EXYNOS_DRM_DEGREE_270:
                cfg |= GSC_IN_ROT_270;
+               if (flip & EXYNOS_DRM_FLIP_VERTICAL)
+                       cfg &= ~GSC_IN_ROT_XFLIP;
+               if (flip & EXYNOS_DRM_FLIP_HORIZONTAL)
+                       cfg &= ~GSC_IN_ROT_YFLIP;
                break;
        default:
-               dev_err(ippdrv->dev, "inavlid degree value %d.\n", degree);
+               dev_err(ippdrv->dev, "invalid degree value %d.\n", degree);
                return -EINVAL;
        }
 
        gsc_write(cfg, GSC_IN_CON);
 
-       ctx->rotation = cfg &
-               (GSC_IN_ROT_90 | GSC_IN_ROT_270) ? 1 : 0;
+       ctx->rotation = (cfg & GSC_IN_ROT_90) ? 1 : 0;
        *swap = ctx->rotation;
 
        return 0;
@@ -1162,7 +1176,7 @@ static int gsc_dst_set_addr(struct device *dev,
                property->prop_id, buf_id, buf_type);
 
        if (buf_id > GSC_MAX_DST) {
-               dev_info(ippdrv->dev, "inavlid buf_id %d.\n", buf_id);
+               dev_info(ippdrv->dev, "invalid buf_id %d.\n", buf_id);
                return -EINVAL;
        }