From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 658D0ECDFBB for ; Tue, 24 Jul 2018 08:18:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 24B7E20880 for ; Tue, 24 Jul 2018 08:18:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 24B7E20880 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388813AbeGXJX1 (ORCPT ); Tue, 24 Jul 2018 05:23:27 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:3361 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2388644AbeGXJWr (ORCPT ); Tue, 24 Jul 2018 05:22:47 -0400 X-UUID: 2580607beee84ca8990e88ca9a7c71bd-20180724 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (mhqrelay.mediatek.com ESMTP with TLS) with ESMTP id 931220600; Tue, 24 Jul 2018 16:17:28 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs03n2.mediatek.inc (172.21.101.182) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Tue, 24 Jul 2018 16:17:21 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1210.3 via Frontend Transport; Tue, 24 Jul 2018 16:17:21 +0800 From: Stu Hsieh To: CK Hu , Philipp Zabel CC: David Airlie , Matthias Brugger , , , , , , Stu Hsieh Subject: [PATCH v1 07/15] drm/mediatek: add layer config to set RDMA for plane setting Date: Tue, 24 Jul 2018 16:17:07 +0800 Message-ID: <1532420235-22268-8-git-send-email-stu.hsieh@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1532420235-22268-1-git-send-email-stu.hsieh@mediatek.com> References: <1532420235-22268-1-git-send-email-stu.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch add layer config to set RDMA for plane setting Layer config set the data address and pitch to RDMA from plane setting. Signed-off-by: Stu Hsieh --- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c index 78a1a0057aff..4ad0715c8341 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c @@ -36,13 +36,17 @@ #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_SRC_PITCH 0x002c +#define DISP_RDMA_MEM_GMC_SETTING_0 0x0030 #define DISP_REG_RDMA_FIFO_CON 0x0040 #define RDMA_FIFO_UNDERFLOW_EN BIT(31) #define RDMA_FIFO_PSEUDO_SIZE(bytes) (((bytes) / 16) << 16) #define RDMA_OUTPUT_VALID_FIFO_THRESHOLD(bytes) ((bytes) / 16) #define RDMA_FIFO_SIZE(rdma) ((rdma)->data->fifo_size) +#define DISP_RDMA_MEM_START_ADDR 0x0f00 #define MATRIX_INT_MTX_SEL_DEFAULT 0xb00000 +#define RDMA_MEM_GMC 0x40402020 struct mtk_disp_rdma_data { unsigned int fifo_size; @@ -152,12 +156,28 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width, writel(reg, comp->regs + DISP_REG_RDMA_FIFO_CON); } +static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx, + struct mtk_plane_state *state) +{ + struct mtk_plane_pending_state *pending = &state->pending; + unsigned int addr = pending->addr; + unsigned int pitch = pending->pitch & 0xffff; + + if (pending->height == 0u || pending->width == 0u) + return; + + 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); +} + static const struct mtk_ddp_comp_funcs mtk_disp_rdma_funcs = { .config = mtk_rdma_config, .start = mtk_rdma_start, .stop = mtk_rdma_stop, .enable_vblank = mtk_rdma_enable_vblank, .disable_vblank = mtk_rdma_disable_vblank, + .layer_config = mtk_rdma_layer_config, }; static int mtk_disp_rdma_bind(struct device *dev, struct device *master, -- 2.12.5 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stu Hsieh Subject: [PATCH v1 07/15] drm/mediatek: add layer config to set RDMA for plane setting Date: Tue, 24 Jul 2018 16:17:07 +0800 Message-ID: <1532420235-22268-8-git-send-email-stu.hsieh@mediatek.com> References: <1532420235-22268-1-git-send-email-stu.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1532420235-22268-1-git-send-email-stu.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: CK Hu , Philipp Zabel Cc: srv_heupstream@mediatek.com, David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, Stu Hsieh , Matthias Brugger , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org VGhpcyBwYXRjaCBhZGQgbGF5ZXIgY29uZmlnIHRvIHNldCBSRE1BIGZvciBwbGFuZSBzZXR0aW5n CgpMYXllciBjb25maWcgc2V0IHRoZSBkYXRhIGFkZHJlc3MgYW5kIHBpdGNoIHRvIFJETUEgZnJv bSBwbGFuZSBzZXR0aW5nLgoKU2lnbmVkLW9mZi1ieTogU3R1IEhzaWVoIDxzdHUuaHNpZWhAbWVk aWF0ZWsuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9yZG1hLmMg fCAyMCArKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcmRtYS5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX3JkbWEuYwppbmRleCA3OGExYTAw NTdhZmYuLjRhZDA3MTVjODM0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kaXNwX3JkbWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bf cmRtYS5jCkBAIC0zNiwxMyArMzYsMTcgQEAKICNkZWZpbmUgRElTUF9SRUdfUkRNQV9TSVpFX0NP Tl8wCQkweDAwMTQKICNkZWZpbmUgRElTUF9SRUdfUkRNQV9TSVpFX0NPTl8xCQkweDAwMTgKICNk ZWZpbmUgRElTUF9SRUdfUkRNQV9UQVJHRVRfTElORQkJMHgwMDFjCisjZGVmaW5lIERJU1BfUkRN QV9NRU1fU1JDX1BJVENICQkJMHgwMDJjCisjZGVmaW5lIERJU1BfUkRNQV9NRU1fR01DX1NFVFRJ TkdfMAkJMHgwMDMwCiAjZGVmaW5lIERJU1BfUkVHX1JETUFfRklGT19DT04JCQkweDAwNDAKICNk ZWZpbmUgUkRNQV9GSUZPX1VOREVSRkxPV19FTgkJCQlCSVQoMzEpCiAjZGVmaW5lIFJETUFfRklG T19QU0VVRE9fU0laRShieXRlcykJCQkoKChieXRlcykgLyAxNikgPDwgMTYpCiAjZGVmaW5lIFJE TUFfT1VUUFVUX1ZBTElEX0ZJRk9fVEhSRVNIT0xEKGJ5dGVzKQkJKChieXRlcykgLyAxNikKICNk ZWZpbmUgUkRNQV9GSUZPX1NJWkUocmRtYSkJCQkoKHJkbWEpLT5kYXRhLT5maWZvX3NpemUpCisj ZGVmaW5lIERJU1BfUkRNQV9NRU1fU1RBUlRfQUREUgkJMHgwZjAwCiAKICNkZWZpbmUgTUFUUklY X0lOVF9NVFhfU0VMX0RFRkFVTFQJCTB4YjAwMDAwCisjZGVmaW5lIFJETUFfTUVNX0dNQwkJCQkw eDQwNDAyMDIwCiAKIHN0cnVjdCBtdGtfZGlzcF9yZG1hX2RhdGEgewogCXVuc2lnbmVkIGludCBm aWZvX3NpemU7CkBAIC0xNTIsMTIgKzE1NiwyOCBAQCBzdGF0aWMgdm9pZCBtdGtfcmRtYV9jb25m aWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHdpZHRoLAogCXdyaXRl bChyZWcsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19SRE1BX0ZJRk9fQ09OKTsKIH0KIAorc3RhdGlj IHZvaWQgbXRrX3JkbWFfbGF5ZXJfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVu c2lnbmVkIGludCBpZHgsCisJCQkJICBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sK KwlzdHJ1Y3QgbXRrX3BsYW5lX3BlbmRpbmdfc3RhdGUgKnBlbmRpbmcgPSAmc3RhdGUtPnBlbmRp bmc7CisJdW5zaWduZWQgaW50IGFkZHIgPSBwZW5kaW5nLT5hZGRyOworCXVuc2lnbmVkIGludCBw aXRjaCA9IHBlbmRpbmctPnBpdGNoICYgMHhmZmZmOworCisJaWYgKHBlbmRpbmctPmhlaWdodCA9 PSAwdSB8fCBwZW5kaW5nLT53aWR0aCA9PSAwdSkKKwkJcmV0dXJuOworCisJd3JpdGVsX3JlbGF4 ZWQoYWRkciwgY29tcC0+cmVncyArIERJU1BfUkRNQV9NRU1fU1RBUlRfQUREUik7CisJd3JpdGVs X3JlbGF4ZWQocGl0Y2gsIGNvbXAtPnJlZ3MgKyBESVNQX1JETUFfTUVNX1NSQ19QSVRDSCk7CisJ d3JpdGVsKFJETUFfTUVNX0dNQywgY29tcC0+cmVncyArIERJU1BfUkRNQV9NRU1fR01DX1NFVFRJ TkdfMCk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2RkcF9jb21wX2Z1bmNzIG10a19k aXNwX3JkbWFfZnVuY3MgPSB7CiAJLmNvbmZpZyA9IG10a19yZG1hX2NvbmZpZywKIAkuc3RhcnQg PSBtdGtfcmRtYV9zdGFydCwKIAkuc3RvcCA9IG10a19yZG1hX3N0b3AsCiAJLmVuYWJsZV92Ymxh bmsgPSBtdGtfcmRtYV9lbmFibGVfdmJsYW5rLAogCS5kaXNhYmxlX3ZibGFuayA9IG10a19yZG1h X2Rpc2FibGVfdmJsYW5rLAorCS5sYXllcl9jb25maWcgPSBtdGtfcmRtYV9sYXllcl9jb25maWcs CiB9OwogCiBzdGF0aWMgaW50IG10a19kaXNwX3JkbWFfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKLS0gCjIuMTIuNQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: stu.hsieh@mediatek.com (Stu Hsieh) Date: Tue, 24 Jul 2018 16:17:07 +0800 Subject: [PATCH v1 07/15] drm/mediatek: add layer config to set RDMA for plane setting In-Reply-To: <1532420235-22268-1-git-send-email-stu.hsieh@mediatek.com> References: <1532420235-22268-1-git-send-email-stu.hsieh@mediatek.com> Message-ID: <1532420235-22268-8-git-send-email-stu.hsieh@mediatek.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org This patch add layer config to set RDMA for plane setting Layer config set the data address and pitch to RDMA from plane setting. Signed-off-by: Stu Hsieh --- drivers/gpu/drm/mediatek/mtk_disp_rdma.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c index 78a1a0057aff..4ad0715c8341 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_rdma.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_rdma.c @@ -36,13 +36,17 @@ #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_SRC_PITCH 0x002c +#define DISP_RDMA_MEM_GMC_SETTING_0 0x0030 #define DISP_REG_RDMA_FIFO_CON 0x0040 #define RDMA_FIFO_UNDERFLOW_EN BIT(31) #define RDMA_FIFO_PSEUDO_SIZE(bytes) (((bytes) / 16) << 16) #define RDMA_OUTPUT_VALID_FIFO_THRESHOLD(bytes) ((bytes) / 16) #define RDMA_FIFO_SIZE(rdma) ((rdma)->data->fifo_size) +#define DISP_RDMA_MEM_START_ADDR 0x0f00 #define MATRIX_INT_MTX_SEL_DEFAULT 0xb00000 +#define RDMA_MEM_GMC 0x40402020 struct mtk_disp_rdma_data { unsigned int fifo_size; @@ -152,12 +156,28 @@ static void mtk_rdma_config(struct mtk_ddp_comp *comp, unsigned int width, writel(reg, comp->regs + DISP_REG_RDMA_FIFO_CON); } +static void mtk_rdma_layer_config(struct mtk_ddp_comp *comp, unsigned int idx, + struct mtk_plane_state *state) +{ + struct mtk_plane_pending_state *pending = &state->pending; + unsigned int addr = pending->addr; + unsigned int pitch = pending->pitch & 0xffff; + + if (pending->height == 0u || pending->width == 0u) + return; + + 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); +} + static const struct mtk_ddp_comp_funcs mtk_disp_rdma_funcs = { .config = mtk_rdma_config, .start = mtk_rdma_start, .stop = mtk_rdma_stop, .enable_vblank = mtk_rdma_enable_vblank, .disable_vblank = mtk_rdma_disable_vblank, + .layer_config = mtk_rdma_layer_config, }; static int mtk_disp_rdma_bind(struct device *dev, struct device *master, -- 2.12.5