All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stu Hsieh <stu.hsieh@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>, Philipp Zabel <p.zabel@pengutronix.de>
Cc: David Airlie <airlied@linux.ie>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	<dri-devel@lists.freedesktop.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <srv_heupstream@mediatek.com>,
	Stu Hsieh <stu.hsieh@mediatek.com>
Subject: [PATCH v2 08/15] drm/mediatek: add RGB color format support for RDMA
Date: Fri, 3 Aug 2018 11:11:01 +0800	[thread overview]
Message-ID: <1533265868-28110-9-git-send-email-stu.hsieh@mediatek.com> (raw)
In-Reply-To: <1533265868-28110-1-git-send-email-stu.hsieh@mediatek.com>

This patch add RGB color format support for RDMA,
including RGB565, RGB888, RGBA8888 and ARGB8888.

Signed-off-by: Stu Hsieh <stu.hsieh@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 41 ++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
index 51ee5f0734df..b6a01438ac76 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
@@ -35,6 +35,8 @@
 #define DISP_REG_RDMA_SIZE_CON_0		0x0014
 #define DISP_REG_RDMA_SIZE_CON_1		0x0018
 #define DISP_REG_RDMA_TARGET_LINE		0x001c
+#define DISP_RDMA_MEM_CON			0x0024
+#define MEM_MODE_INPUT_SWAP				BIT(8)
 #define DISP_RDMA_MEM_SRC_PITCH			0x002c
 #define DISP_RDMA_MEM_GMC_SETTING_0		0x0030
 #define DISP_REG_RDMA_FIFO_CON			0x0040
@@ -46,6 +48,11 @@
 
 #define RDMA_MEM_GMC				0x40402020
 
+#define MEM_MODE_INPUT_FORMAT_RGB565		0x0
+#define MEM_MODE_INPUT_FORMAT_RGB888		(0x001 << 4)
+#define MEM_MODE_INPUT_FORMAT_RGBA8888		(0x002 << 4)
+#define MEM_MODE_INPUT_FORMAT_ARGB8888		(0x003 << 4)
+
 struct mtk_disp_rdma_data {
 	unsigned int fifo_size;
 };
@@ -150,16 +157,50 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width,
 	writel(reg, comp->regs + DISP_REG_RDMA_FIFO_CON);
 }
 
+static unsigned int rdma_fmt_convert(struct mtk_disp_rdma *rdma,
+				     unsigned int fmt)
+{
+	switch (fmt) {
+	default:
+	case DRM_FORMAT_RGB565:
+		return MEM_MODE_INPUT_FORMAT_RGB565;
+	case DRM_FORMAT_BGR565:
+		return MEM_MODE_INPUT_FORMAT_RGB565 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_RGB888:
+		return MEM_MODE_INPUT_FORMAT_RGB888;
+	case DRM_FORMAT_BGR888:
+		return MEM_MODE_INPUT_FORMAT_RGB888 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_RGBX8888:
+	case DRM_FORMAT_RGBA8888:
+		return MEM_MODE_INPUT_FORMAT_ARGB8888;
+	case DRM_FORMAT_BGRX8888:
+	case DRM_FORMAT_BGRA8888:
+		return MEM_MODE_INPUT_FORMAT_ARGB8888 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_XRGB8888:
+	case DRM_FORMAT_ARGB8888:
+		return MEM_MODE_INPUT_FORMAT_RGBA8888;
+	case DRM_FORMAT_XBGR8888:
+	case DRM_FORMAT_ABGR8888:
+		return MEM_MODE_INPUT_FORMAT_RGBA8888 | MEM_MODE_INPUT_SWAP;
+	}
+}
+
 static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx,
 				  struct mtk_plane_state *state)
 {
+	struct mtk_disp_rdma *rdma = comp_to_rdma(comp);
 	struct mtk_plane_pending_state *pending = &state->pending;
 	unsigned int addr = pending->addr;
 	unsigned int pitch = pending->pitch & 0xffff;
+	unsigned int fmt = pending->format;
+	unsigned int con;
 
 	if (pending->height == 0u || pending->width == 0u)
 		return;
 
+	con = rdma_fmt_convert(rdma, fmt);
+	writel_relaxed(con, comp->regs + DISP_RDMA_MEM_CON);
+
 	writel_relaxed(addr, comp->regs + DISP_RDMA_MEM_START_ADDR);
 	writel_relaxed(pitch, comp->regs + DISP_RDMA_MEM_SRC_PITCH);
 	writel(RDMA_MEM_GMC, comp->regs + DISP_RDMA_MEM_GMC_SETTING_0);
-- 
2.12.5.2.gbdf23ab


WARNING: multiple messages have this Message-ID (diff)
From: Stu Hsieh <stu.hsieh@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>, Philipp Zabel <p.zabel@pengutronix.de>
Cc: srv_heupstream@mediatek.com, David Airlie <airlied@linux.ie>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	Stu Hsieh <stu.hsieh@mediatek.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 08/15] drm/mediatek: add RGB color format support for RDMA
Date: Fri, 3 Aug 2018 11:11:01 +0800	[thread overview]
Message-ID: <1533265868-28110-9-git-send-email-stu.hsieh@mediatek.com> (raw)
In-Reply-To: <1533265868-28110-1-git-send-email-stu.hsieh@mediatek.com>

This patch add RGB color format support for RDMA,
including RGB565, RGB888, RGBA8888 and ARGB8888.

Signed-off-by: Stu Hsieh <stu.hsieh@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 41 ++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
index 51ee5f0734df..b6a01438ac76 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
@@ -35,6 +35,8 @@
 #define DISP_REG_RDMA_SIZE_CON_0		0x0014
 #define DISP_REG_RDMA_SIZE_CON_1		0x0018
 #define DISP_REG_RDMA_TARGET_LINE		0x001c
+#define DISP_RDMA_MEM_CON			0x0024
+#define MEM_MODE_INPUT_SWAP				BIT(8)
 #define DISP_RDMA_MEM_SRC_PITCH			0x002c
 #define DISP_RDMA_MEM_GMC_SETTING_0		0x0030
 #define DISP_REG_RDMA_FIFO_CON			0x0040
@@ -46,6 +48,11 @@
 
 #define RDMA_MEM_GMC				0x40402020
 
+#define MEM_MODE_INPUT_FORMAT_RGB565		0x0
+#define MEM_MODE_INPUT_FORMAT_RGB888		(0x001 << 4)
+#define MEM_MODE_INPUT_FORMAT_RGBA8888		(0x002 << 4)
+#define MEM_MODE_INPUT_FORMAT_ARGB8888		(0x003 << 4)
+
 struct mtk_disp_rdma_data {
 	unsigned int fifo_size;
 };
@@ -150,16 +157,50 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width,
 	writel(reg, comp->regs + DISP_REG_RDMA_FIFO_CON);
 }
 
+static unsigned int rdma_fmt_convert(struct mtk_disp_rdma *rdma,
+				     unsigned int fmt)
+{
+	switch (fmt) {
+	default:
+	case DRM_FORMAT_RGB565:
+		return MEM_MODE_INPUT_FORMAT_RGB565;
+	case DRM_FORMAT_BGR565:
+		return MEM_MODE_INPUT_FORMAT_RGB565 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_RGB888:
+		return MEM_MODE_INPUT_FORMAT_RGB888;
+	case DRM_FORMAT_BGR888:
+		return MEM_MODE_INPUT_FORMAT_RGB888 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_RGBX8888:
+	case DRM_FORMAT_RGBA8888:
+		return MEM_MODE_INPUT_FORMAT_ARGB8888;
+	case DRM_FORMAT_BGRX8888:
+	case DRM_FORMAT_BGRA8888:
+		return MEM_MODE_INPUT_FORMAT_ARGB8888 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_XRGB8888:
+	case DRM_FORMAT_ARGB8888:
+		return MEM_MODE_INPUT_FORMAT_RGBA8888;
+	case DRM_FORMAT_XBGR8888:
+	case DRM_FORMAT_ABGR8888:
+		return MEM_MODE_INPUT_FORMAT_RGBA8888 | MEM_MODE_INPUT_SWAP;
+	}
+}
+
 static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx,
 				  struct mtk_plane_state *state)
 {
+	struct mtk_disp_rdma *rdma = comp_to_rdma(comp);
 	struct mtk_plane_pending_state *pending = &state->pending;
 	unsigned int addr = pending->addr;
 	unsigned int pitch = pending->pitch & 0xffff;
+	unsigned int fmt = pending->format;
+	unsigned int con;
 
 	if (pending->height == 0u || pending->width == 0u)
 		return;
 
+	con = rdma_fmt_convert(rdma, fmt);
+	writel_relaxed(con, comp->regs + DISP_RDMA_MEM_CON);
+
 	writel_relaxed(addr, comp->regs + DISP_RDMA_MEM_START_ADDR);
 	writel_relaxed(pitch, comp->regs + DISP_RDMA_MEM_SRC_PITCH);
 	writel(RDMA_MEM_GMC, comp->regs + DISP_RDMA_MEM_GMC_SETTING_0);
-- 
2.12.5.2.gbdf23ab

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: stu.hsieh@mediatek.com (Stu Hsieh)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 08/15] drm/mediatek: add RGB color format support for RDMA
Date: Fri, 3 Aug 2018 11:11:01 +0800	[thread overview]
Message-ID: <1533265868-28110-9-git-send-email-stu.hsieh@mediatek.com> (raw)
In-Reply-To: <1533265868-28110-1-git-send-email-stu.hsieh@mediatek.com>

This patch add RGB color format support for RDMA,
including RGB565, RGB888, RGBA8888 and ARGB8888.

Signed-off-by: Stu Hsieh <stu.hsieh@mediatek.com>
---
 drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 41 ++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
index 51ee5f0734df..b6a01438ac76 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c
@@ -35,6 +35,8 @@
 #define DISP_REG_RDMA_SIZE_CON_0		0x0014
 #define DISP_REG_RDMA_SIZE_CON_1		0x0018
 #define DISP_REG_RDMA_TARGET_LINE		0x001c
+#define DISP_RDMA_MEM_CON			0x0024
+#define MEM_MODE_INPUT_SWAP				BIT(8)
 #define DISP_RDMA_MEM_SRC_PITCH			0x002c
 #define DISP_RDMA_MEM_GMC_SETTING_0		0x0030
 #define DISP_REG_RDMA_FIFO_CON			0x0040
@@ -46,6 +48,11 @@
 
 #define RDMA_MEM_GMC				0x40402020
 
+#define MEM_MODE_INPUT_FORMAT_RGB565		0x0
+#define MEM_MODE_INPUT_FORMAT_RGB888		(0x001 << 4)
+#define MEM_MODE_INPUT_FORMAT_RGBA8888		(0x002 << 4)
+#define MEM_MODE_INPUT_FORMAT_ARGB8888		(0x003 << 4)
+
 struct mtk_disp_rdma_data {
 	unsigned int fifo_size;
 };
@@ -150,16 +157,50 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width,
 	writel(reg, comp->regs + DISP_REG_RDMA_FIFO_CON);
 }
 
+static unsigned int rdma_fmt_convert(struct mtk_disp_rdma *rdma,
+				     unsigned int fmt)
+{
+	switch (fmt) {
+	default:
+	case DRM_FORMAT_RGB565:
+		return MEM_MODE_INPUT_FORMAT_RGB565;
+	case DRM_FORMAT_BGR565:
+		return MEM_MODE_INPUT_FORMAT_RGB565 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_RGB888:
+		return MEM_MODE_INPUT_FORMAT_RGB888;
+	case DRM_FORMAT_BGR888:
+		return MEM_MODE_INPUT_FORMAT_RGB888 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_RGBX8888:
+	case DRM_FORMAT_RGBA8888:
+		return MEM_MODE_INPUT_FORMAT_ARGB8888;
+	case DRM_FORMAT_BGRX8888:
+	case DRM_FORMAT_BGRA8888:
+		return MEM_MODE_INPUT_FORMAT_ARGB8888 | MEM_MODE_INPUT_SWAP;
+	case DRM_FORMAT_XRGB8888:
+	case DRM_FORMAT_ARGB8888:
+		return MEM_MODE_INPUT_FORMAT_RGBA8888;
+	case DRM_FORMAT_XBGR8888:
+	case DRM_FORMAT_ABGR8888:
+		return MEM_MODE_INPUT_FORMAT_RGBA8888 | MEM_MODE_INPUT_SWAP;
+	}
+}
+
 static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx,
 				  struct mtk_plane_state *state)
 {
+	struct mtk_disp_rdma *rdma = comp_to_rdma(comp);
 	struct mtk_plane_pending_state *pending = &state->pending;
 	unsigned int addr = pending->addr;
 	unsigned int pitch = pending->pitch & 0xffff;
+	unsigned int fmt = pending->format;
+	unsigned int con;
 
 	if (pending->height == 0u || pending->width == 0u)
 		return;
 
+	con = rdma_fmt_convert(rdma, fmt);
+	writel_relaxed(con, comp->regs + DISP_RDMA_MEM_CON);
+
 	writel_relaxed(addr, comp->regs + DISP_RDMA_MEM_START_ADDR);
 	writel_relaxed(pitch, comp->regs + DISP_RDMA_MEM_SRC_PITCH);
 	writel(RDMA_MEM_GMC, comp->regs + DISP_RDMA_MEM_GMC_SETTING_0);
-- 
2.12.5.2.gbdf23ab

  parent reply	other threads:[~2018-08-03  3:11 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-03  3:10 [PATCH v2 00/15] Add RDMA memory mode support for mediatek SOC MT2712 Stu Hsieh
2018-08-03  3:10 ` Stu Hsieh
2018-08-03  3:10 ` Stu Hsieh
2018-08-03  3:10 ` [PATCH v2 01/15] drm/mediatek: add connection from RDMA0 to DPI1 Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  4:57   ` CK Hu
2018-08-03  4:57     ` CK Hu
2018-08-03  4:57     ` CK Hu
2018-08-03  3:10 ` [PATCH v2 02/15] drm/mediatek: add connection from RDMA0 to DSI1 Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  4:58   ` CK Hu
2018-08-03  4:58     ` CK Hu
2018-08-03  4:58     ` CK Hu
2018-08-03  3:10 ` [PATCH v2 03/15] drm/mediatek: add connection from RDMA1 to DSI0 Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  5:00   ` CK Hu
2018-08-03  5:00     ` CK Hu
2018-08-03  5:00     ` CK Hu
2018-08-03  3:10 ` [PATCH v2 04/15] drm/mediatek: add connection from RDMA2 " Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  5:01   ` CK Hu
2018-08-03  5:01     ` CK Hu
2018-08-03  5:01     ` CK Hu
2018-08-03  3:10 ` [PATCH v2 05/15] drm/mediatek: add RDMA memory mode for crtc created Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10 ` [PATCH v2 06/15] drm/mediatek: add memory mode for RDMA Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:10   ` Stu Hsieh
2018-08-03  3:11 ` [PATCH v2 07/15] drm/mediatek: add layer config to set RDMA for plane setting Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11 ` Stu Hsieh [this message]
2018-08-03  3:11   ` [PATCH v2 08/15] drm/mediatek: add RGB color format support for RDMA Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11 ` [PATCH v2 09/15] drm/mediatek: add YUYV/UYVY " Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11 ` [PATCH v2 10/15] drm/mediatek: add function to get layer number for component Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  5:08   ` CK Hu
2018-08-03  5:08     ` CK Hu
2018-08-03  5:08     ` CK Hu
2018-08-03  3:11 ` [PATCH v2 11/15] drm/mediatek: add callback function to return OVL layer number Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  5:11   ` CK Hu
2018-08-03  5:11     ` CK Hu
2018-08-03  5:11     ` CK Hu
2018-08-06 11:54     ` Stu Hsieh
2018-08-06 11:54       ` Stu Hsieh
2018-08-06 11:54       ` Stu Hsieh
2018-08-03  3:11 ` [PATCH v2 12/15] drm/mediatek: add callback function to return RDMA " Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  5:13   ` CK Hu
2018-08-03  5:13     ` CK Hu
2018-08-03  5:13     ` CK Hu
2018-08-06 11:53     ` Stu Hsieh
2018-08-06 11:53       ` Stu Hsieh
2018-08-06 11:53       ` Stu Hsieh
2018-08-03  3:11 ` [PATCH v2 13/15] drm/mediatek: use layer_nr function to get layer number to init plane Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  5:33   ` CK Hu
2018-08-03  5:33     ` CK Hu
2018-08-03  5:33     ` CK Hu
2018-08-06 11:55     ` Stu Hsieh
2018-08-06 11:55       ` Stu Hsieh
2018-08-06 11:55       ` Stu Hsieh
2018-08-03  3:11 ` [PATCH v2 14/15] drm/mediatek: update some variable name from ovl to comp Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  5:34   ` CK Hu
2018-08-03  5:34     ` CK Hu
2018-08-03  5:34     ` CK Hu
2018-08-03  3:11 ` [PATCH v2 15/15] drm/mediatek: fix connection from RDMA2 to DSI1 Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  3:11   ` Stu Hsieh
2018-08-03  5:36   ` CK Hu
2018-08-03  5:36     ` CK Hu
2018-08-03  5:36     ` CK Hu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1533265868-28110-9-git-send-email-stu.hsieh@mediatek.com \
    --to=stu.hsieh@mediatek.com \
    --cc=airlied@linux.ie \
    --cc=ck.hu@mediatek.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=p.zabel@pengutronix.de \
    --cc=srv_heupstream@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.