diff options
author | Marek Szyprowski <m.szyprowski@samsung.com> | 2015-02-26 09:55:32 +0100 |
---|---|---|
committer | Marek Szyprowski <m.szyprowski@samsung.com> | 2015-03-04 04:59:04 -0800 |
commit | 2e74a7b53c3c430da503bf1334dc057f9f03c299 (patch) | |
tree | 322cfbcdba86bf43adfa9e68ed6e0c6032669f14 | |
parent | 00a9c3ed567d2e81316147eef8ad69e249dbedf6 (diff) | |
download | linux-3.10-2e74a7b53c3c430da503bf1334dc057f9f03c299.tar.gz linux-3.10-2e74a7b53c3c430da503bf1334dc057f9f03c299.tar.bz2 linux-3.10-2e74a7b53c3c430da503bf1334dc057f9f03c299.zip |
drm/exynos: gsc: always use hw buffer 0 until queue management get fixed
Buffer sequence selection is broken and must be fixed. For the time being
always queue buffers for hw id 0, because hardware always operates on the
first src and dst buffer. This fixes IOMMU faults and makes the driver
usable from userspace.
Suggested-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I46f43a5ad8b714a78bad7383bc5e532bf5015ecd
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_gsc.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c index 725e6587407..532508ec843 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gsc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c @@ -729,16 +729,16 @@ static int gsc_src_set_addr(struct device *dev, switch (buf_type) { case IPP_BUF_ENQUEUE: gsc_write(buf_info->base[EXYNOS_DRM_PLANAR_Y], - GSC_IN_BASE_ADDR_Y(buf_id)); + GSC_IN_BASE_ADDR_Y(0)); gsc_write(buf_info->base[EXYNOS_DRM_PLANAR_CB], - GSC_IN_BASE_ADDR_CB(buf_id)); + GSC_IN_BASE_ADDR_CB(0)); gsc_write(buf_info->base[EXYNOS_DRM_PLANAR_CR], - GSC_IN_BASE_ADDR_CR(buf_id)); + GSC_IN_BASE_ADDR_CR(0)); break; case IPP_BUF_DEQUEUE: - gsc_write(0x0, GSC_IN_BASE_ADDR_Y(buf_id)); - gsc_write(0x0, GSC_IN_BASE_ADDR_CB(buf_id)); - gsc_write(0x0, GSC_IN_BASE_ADDR_CR(buf_id)); + gsc_write(0x0, GSC_IN_BASE_ADDR_Y(0)); + gsc_write(0x0, GSC_IN_BASE_ADDR_CB(0)); + gsc_write(0x0, GSC_IN_BASE_ADDR_CR(0)); break; default: /* bypass */ @@ -1185,16 +1185,16 @@ static int gsc_dst_set_addr(struct device *dev, switch (buf_type) { case IPP_BUF_ENQUEUE: gsc_write(buf_info->base[EXYNOS_DRM_PLANAR_Y], - GSC_OUT_BASE_ADDR_Y(buf_id)); + GSC_OUT_BASE_ADDR_Y(0)); gsc_write(buf_info->base[EXYNOS_DRM_PLANAR_CB], - GSC_OUT_BASE_ADDR_CB(buf_id)); + GSC_OUT_BASE_ADDR_CB(0)); gsc_write(buf_info->base[EXYNOS_DRM_PLANAR_CR], - GSC_OUT_BASE_ADDR_CR(buf_id)); + GSC_OUT_BASE_ADDR_CR(0)); break; case IPP_BUF_DEQUEUE: - gsc_write(0x0, GSC_OUT_BASE_ADDR_Y(buf_id)); - gsc_write(0x0, GSC_OUT_BASE_ADDR_CB(buf_id)); - gsc_write(0x0, GSC_OUT_BASE_ADDR_CR(buf_id)); + gsc_write(0x0, GSC_OUT_BASE_ADDR_Y(0)); + gsc_write(0x0, GSC_OUT_BASE_ADDR_CB(0)); + gsc_write(0x0, GSC_OUT_BASE_ADDR_CR(0)); break; default: /* bypass */ |