From 224ab030ce561ce12e018516f8cf7969d590e0b1 Mon Sep 17 00:00:00 2001 From: Shaik Ameer Basha Date: Wed, 7 Nov 2012 03:37:07 -0300 Subject: [PATCH] --- yaml --- r: 357022 b: refs/heads/master c: aecede4c45ae32944e822ef98d4837733837887d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/platform/exynos-gsc/gsc-core.c | 9 +++++++++ trunk/drivers/media/platform/exynos-gsc/gsc-core.h | 5 +++++ trunk/drivers/media/platform/exynos-gsc/gsc-regs.c | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4e97648cb8c5..f908ab71c0bd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4bb891ebf60eb43ebd04e09bbcad24013067873f +refs/heads/master: aecede4c45ae32944e822ef98d4837733837887d diff --git a/trunk/drivers/media/platform/exynos-gsc/gsc-core.c b/trunk/drivers/media/platform/exynos-gsc/gsc-core.c index cc7b218d047c..6d6f65d8c1e5 100644 --- a/trunk/drivers/media/platform/exynos-gsc/gsc-core.c +++ b/trunk/drivers/media/platform/exynos-gsc/gsc-core.c @@ -185,6 +185,15 @@ static const struct gsc_fmt gsc_formats[] = { .corder = GSC_CRCB, .num_planes = 3, .num_comp = 3, + }, { + .name = "YUV 4:2:0 n.c. 2p, Y/CbCr tiled", + .pixelformat = V4L2_PIX_FMT_NV12MT_16X16, + .depth = { 8, 4 }, + .color = GSC_YUV420, + .yorder = GSC_LSB_Y, + .corder = GSC_CBCR, + .num_planes = 2, + .num_comp = 2, } }; diff --git a/trunk/drivers/media/platform/exynos-gsc/gsc-core.h b/trunk/drivers/media/platform/exynos-gsc/gsc-core.h index 5f157efd24f0..cc19bba09bd1 100644 --- a/trunk/drivers/media/platform/exynos-gsc/gsc-core.h +++ b/trunk/drivers/media/platform/exynos-gsc/gsc-core.h @@ -427,6 +427,11 @@ static inline void gsc_ctx_state_lock_clear(u32 state, struct gsc_ctx *ctx) spin_unlock_irqrestore(&ctx->gsc_dev->slock, flags); } +static inline int is_tiled(const struct gsc_fmt *fmt) +{ + return fmt->pixelformat == V4L2_PIX_FMT_NV12MT_16X16; +} + static inline void gsc_hw_enable_control(struct gsc_dev *dev, bool on) { u32 cfg = readl(dev->regs + GSC_ENABLE); diff --git a/trunk/drivers/media/platform/exynos-gsc/gsc-regs.c b/trunk/drivers/media/platform/exynos-gsc/gsc-regs.c index 0146b354dc22..6f5b5a486cf3 100644 --- a/trunk/drivers/media/platform/exynos-gsc/gsc-regs.c +++ b/trunk/drivers/media/platform/exynos-gsc/gsc-regs.c @@ -214,6 +214,9 @@ void gsc_hw_set_in_image_format(struct gsc_ctx *ctx) break; } + if (is_tiled(frame->fmt)) + cfg |= GSC_IN_TILE_C_16x8 | GSC_IN_TILE_MODE; + writel(cfg, dev->regs + GSC_IN_CON); } @@ -334,6 +337,9 @@ void gsc_hw_set_out_image_format(struct gsc_ctx *ctx) break; } + if (is_tiled(frame->fmt)) + cfg |= GSC_OUT_TILE_C_16x8 | GSC_OUT_TILE_MODE; + end_set: writel(cfg, dev->regs + GSC_OUT_CON); }