From patchwork Thu Oct 21 06:34:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "roy-cw.yeh" X-Patchwork-Id: 12574001 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 54AECC433EF for ; Thu, 21 Oct 2021 06:36:06 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0D0C061359 for ; Thu, 21 Oct 2021 06:36:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0D0C061359 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=m7olP4EfnA90gvTZu+hkESzphzKuGXEEsZbH0gTXbFU=; b=sxXjoOGBI1ZpFF PShtUfeCySmoLCJaSzpKmBrEVmshXyL3ezSoGLr/P87K9qbi7rHMoUzzQSX91dDA2iUP6t2+sJDEw j/tFySTF6OxQgUofNg6xagdDEoZlnOVTDarfSAHNQ5p0zsP4lmvrGlReP+9GwzQDGiul8IncngSAY bQ751vyxXHMKOjELyeV8OIMR4johFnMrdpwcB0Kcziu33qst4aqFE28gvvYovBOeuAj5W90r3u2yw vRIYGdz4xlSL3oQ+hXkzBD6+Tk7h1evU0YRG3nr2OevCs6zTjQMqjbm4CG6UQiTlvJdGX8QQZ0OnO PW6+hXAjBHRKKddzh+SA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRer-006WbC-Mw; Thu, 21 Oct 2021 06:34:33 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRen-006WZw-Qk; Thu, 21 Oct 2021 06:34:31 +0000 X-UUID: a06efa8b60b54054a105638b90157a68-20211020 X-UUID: a06efa8b60b54054a105638b90157a68-20211020 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1304385899; Wed, 20 Oct 2021 23:34:29 -0700 Received: from MTKMBS07N2.mediatek.inc (172.21.101.141) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 20 Oct 2021 23:34:27 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 21 Oct 2021 14:34:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 21 Oct 2021 14:34:26 +0800 From: roy-cw.yeh To: Rob Herring , Matthias Brugger , AngeloGioacchino Del Regno , Chun-Kuang Hu CC: Mauro Carvalho Chehab , Fabien Parent , "Roy-CW . Yeh" , "jason-jh . lin" , daoyuan huang , Ping-Hsun Wu , Moudy Ho , "river . cheng" , Enric Balletbo i Serra , Yongqiang Niu , , , , , Subject: [PATCH v1 1/4] arm64: dts: mt8195: Modify svpp rdma node property Date: Thu, 21 Oct 2021 14:34:11 +0800 Message-ID: <20211021063414.23663-2-roy-cw.yeh@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> References: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211020_233429_895786_DAA40DC6 X-CRM114-Status: GOOD ( 10.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: "Roy-CW.Yeh" Add svpp3/svpp2_mdp_rdma compatible name Add dma-range for each svpp rdma node Signed-off-by: Roy-CW.Yeh --- This patch is based on [1] [1] add mdp3 node - https://patchwork.kernel.org/project/linux-mediatek/patch/20211020071448.14187-6-roy-cw.yeh@mediatek.com/ --- arch/arm64/boot/dts/mediatek/mt8195.dtsi | 26 ++++++++++++++---------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt8195.dtsi b/arch/arm64/boot/dts/mediatek/mt8195.dtsi index 727b78535605..212930c7b782 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8195.dtsi @@ -1022,9 +1022,8 @@ power-domains = <&spm MT8195_POWER_DOMAIN_VPPSYS0>, <&spm MT8195_POWER_DOMAIN_VPPSYS1>; iommus = <&iommu_vpp M4U_PORT_L4_MDP_RDMA>, - <&iommu_vpp M4U_PORT_L4_MDP_WROT>, - <&iommu_vpp M4U_PORT_L6_SVPP3_MDP_RDMA>, - <&iommu_vpp M4U_PORT_L6_SVPP3_MDP_WROT>; + <&iommu_vpp M4U_PORT_L4_MDP_WROT>; + dma-ranges = <0x2 0x0 0x0 0x40000000 0x1 0x0>; /* 8G - 12G IOVA*/ clocks = <&vppsys0 CLK_VPP0_MDP_RDMA>, <&topckgen CLK_TOP_CFG_VPP0>, <&topckgen CLK_TOP_CFG_26M_VPP0>, @@ -1440,7 +1439,7 @@ svpp1_mdp3_rdma: svpp1_mdp_rdma@14f08000 { compatible = "mediatek,mt8195-mdp3", - "mediatek,mt8183-mdp3-rdma"; + "mediatek,mt8183-mdp3-rdma"; mediatek,mdp3-id = <1>; reg = <0 0x14f08000 0 0x1000>; mediatek,gce-client-reg = <&gce0 SUBSYS_14f0XXXX 0x8000 0x1000>; @@ -1452,14 +1451,14 @@ "TOP_CFG_VPP1", "TOP_CFG_26M_VPP1"; iommus = <&iommu_vdo M4U_PORT_L5_SVPP1_MDP_RDMA>, - <&iommu_vdo M4U_PORT_L5_SVPP2_MDP_RDMA>, - <&iommu_vdo M4U_PORT_L5_SVPP1_MDP_WROT>, - <&iommu_vdo M4U_PORT_L5_SVPP2_MDP_WROT>; + <&iommu_vdo M4U_PORT_L5_SVPP1_MDP_WROT>; + dma-ranges = <0x2 0x0 0x0 0x40000000 0x1 0x0>; /* 8G - 12G IOVA*/ power-domains = <&spm MT8195_POWER_DOMAIN_VPPSYS1>; }; svpp2_mdp3_rdma: svpp2_mdp_rdma@14f09000 { - compatible = "mediatek,mt8195-mdp3-rdma", "mediatek,mt8183-mdp3-rdma"; + compatible = "mediatek,mt8195-mdp3", + "mediatek,mt8183-mdp3-rdma"; mediatek,mdp3-id = <2>; reg = <0 0x14f09000 0 0x1000>; mediatek,gce-client-reg = <&gce0 SUBSYS_14f0XXXX 0x9000 0x1000>; @@ -1470,12 +1469,15 @@ clock-names = "MDP_RDMA2", "TOP_CFG_VPP1", "TOP_CFG_26M_VPP1"; - iommus = <&iommu_vdo M4U_PORT_L5_SVPP2_MDP_RDMA>; + iommus = <&iommu_vdo M4U_PORT_L5_SVPP2_MDP_RDMA>, + <&iommu_vdo M4U_PORT_L5_SVPP2_MDP_WROT>; + dma-ranges = <0x2 0x0 0x0 0x40000000 0x1 0x0>; /* 8G - 12G IOVA*/ power-domains = <&spm MT8195_POWER_DOMAIN_VPPSYS1>; }; svpp3_mdp3_rdma: svpp3_mdp_rdma@14f0a000 { - compatible = "mediatek,mt8195-mdp3-rdma", "mediatek,mt8183-mdp3-rdma"; + compatible = "mediatek,mt8195-mdp3", + "mediatek,mt8183-mdp3-rdma"; mediatek,mdp3-id = <3>; reg = <0 0x14f0a000 0 0x1000>; mediatek,gce-client-reg = <&gce0 SUBSYS_14f0XXXX 0xa000 0x1000>; @@ -1486,7 +1488,9 @@ clock-names = "MDP_RDMA3", "TOP_CFG_VPP1", "TOP_CFG_26M_VPP1"; - iommus = <&iommu_vpp M4U_PORT_L6_SVPP3_MDP_RDMA>; + iommus = <&iommu_vpp M4U_PORT_L6_SVPP3_MDP_RDMA>, + <&iommu_vpp M4U_PORT_L6_SVPP3_MDP_WROT>; + dma-ranges = <0x2 0x0 0x0 0x40000000 0x1 0x0>; /* 8G - 12G IOVA*/ power-domains = <&spm MT8195_POWER_DOMAIN_VPPSYS1>; }; From patchwork Thu Oct 21 06:34:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "roy-cw.yeh" X-Patchwork-Id: 12574005 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 853B1C433EF for ; Thu, 21 Oct 2021 06:36:50 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4E1D96135F for ; Thu, 21 Oct 2021 06:36:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4E1D96135F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=YDi7qwsh0dFHuYHqCAqdlV6bc/DNAFZYp1iUQZ+0wHU=; b=iL5EuERuA6kAaL 7ww3w2D9Nfe7M4QryhGrMllmoosqQcT4ZNJyFtkC75DVwnefKmojHuxXDJC/HM1rhrX1RN50gOu2y YXlEQYR+SDIi7/Dwv/Opr5OE1v28PZGo/8rG+J4bEBsszrYOwQt2uop9FmE4AsB63LF/gQSy8tWY7 uGuGr40QYeE1XW/c1TAF+ONCqnELAN1FKTwV4x5HV9botXO3jL/46DzIMVdreKwLI17aWoV7WshhL 37g/jSjaEP7Qy9f/GZNzSiNE1zoJiDrt6wuKobS3VajURACphnKRkh1Aw7hs/3zERVfo/AI6ErFtC EiDlKamcbuTDIywW7GrA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRfM-006Wlb-5Q; Thu, 21 Oct 2021 06:35:04 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRep-006WZw-CV; Thu, 21 Oct 2021 06:34:34 +0000 X-UUID: 082035c1429c49b9abf4fda93920c989-20211020 X-UUID: 082035c1429c49b9abf4fda93920c989-20211020 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 2110757481; Wed, 20 Oct 2021 23:34:29 -0700 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 20 Oct 2021 23:34:28 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.15; Thu, 21 Oct 2021 14:34:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 21 Oct 2021 14:34:26 +0800 From: roy-cw.yeh To: Rob Herring , Matthias Brugger , AngeloGioacchino Del Regno , Chun-Kuang Hu CC: Mauro Carvalho Chehab , Fabien Parent , "Roy-CW . Yeh" , "jason-jh . lin" , daoyuan huang , Ping-Hsun Wu , Moudy Ho , "river . cheng" , Enric Balletbo i Serra , Yongqiang Niu , , , , , Subject: [PATCH v1 2/4] media: platform: mtk-mdp3: Reconfigure SHM to improve performance Date: Thu, 21 Oct 2021 14:34:12 +0800 Message-ID: <20211021063414.23663-3-roy-cw.yeh@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> References: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211020_233431_489040_9A7011DA X-CRM114-Status: GOOD ( 25.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: "Roy-CW.Yeh" 1. Reconfig SHM 2. Alloc Path Buffer in SHM 3. Modify frame_change criteria 4. Modify dual pipe criteria Signed-off-by: Roy-CW.Yeh --- This patch is based on [1][2][3] [1] add chip independence architecture - https://patchwork.kernel.org/project/linux-mediatek/patch/20211020071448.14187-4-roy-cw.yeh@mediatek.com/ [2] support mt8195 - https://patchwork.kernel.org/project/linux-mediatek/patch/20211020071448.14187-9-roy-cw.yeh@mediatek.com/ [3] Add dual pipe feature support - https://patchwork.kernel.org/project/linux-mediatek/patch/20211020071448.14187-10-roy-cw.yeh@mediatek.com/ --- .../media/platform/mtk-mdp3/mtk-mdp3-cmdq.c | 106 +++++++++++++++++- .../media/platform/mtk-mdp3/mtk-mdp3-cmdq.h | 10 ++ .../media/platform/mtk-mdp3/mtk-mdp3-core.c | 24 +++- .../media/platform/mtk-mdp3/mtk-mdp3-core.h | 1 + .../media/platform/mtk-mdp3/mtk-mdp3-m2m.c | 10 +- .../media/platform/mtk-mdp3/mtk-mdp3-regs.c | 4 +- .../media/platform/mtk-mdp3/mtk-mdp3-vpu.c | 80 +++++++------ .../media/platform/mtk-mdp3/mtk-mdp3-vpu.h | 8 ++ 8 files changed, 193 insertions(+), 50 deletions(-) diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c index 37bd7c4b9ded..345ab81c5d1f 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c @@ -14,6 +14,7 @@ #define PATH_1 1 #define MDP_DUAL_PIPE 2 #define MDP_PATH_MAX_COMPS IMG_MAX_COMPONENTS +#define MDP_CMDQ_TIMEOUT 2000 struct mdp_path { struct mdp_dev *mdp_dev; @@ -50,6 +51,9 @@ struct mdp_path_subfrm { u32 num_sof2s; }; +static struct mdp_cmdq_pkt_pool cmdq_pool = {0}; +static struct mdp_cmdq_pkt_pool cmdq_d_pool = {0}; + static bool is_output_disable(const struct img_compparam *param, u32 count) { return (count < param->num_subfrms) ? @@ -82,6 +86,99 @@ int mdp_get_event_idx(struct mdp_dev *mdp, enum mdp_comp_event event) return -ENODEV; } +int mdp_cmdq_pkt_create(struct mdp_dev *mdp) +{ + int i; + + if (mdp->cmdq_clt) { + cmdq_pool.clt = mdp->cmdq_clt; + + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) + if (!cmdq_pool.pkt[i]) + cmdq_pool.pkt[i] = cmdq_pkt_create(mdp->cmdq_clt, SZ_16K); + } + + if (mdp->cmdq_d_clt) { + cmdq_d_pool.clt = mdp->cmdq_d_clt; + + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) + if (!cmdq_d_pool.pkt[i]) + cmdq_d_pool.pkt[i] = cmdq_pkt_create(mdp->cmdq_d_clt, SZ_16K); + } + + return 0; +} + +void mdp_cmdq_pkt_destroy(void) +{ + int i; + + if (cmdq_pool.clt) { + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) { + if (cmdq_pool.pkt[i]) { + cmdq_pkt_destroy(cmdq_pool.pkt[i]); + cmdq_pool.pkt[i] = NULL; + } + } + } + + if (cmdq_d_pool.clt) { + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) { + if (cmdq_d_pool.pkt[i]) { + cmdq_pkt_destroy(cmdq_d_pool.pkt[i]); + cmdq_d_pool.pkt[i] = NULL; + } + } + } +} + +static struct cmdq_pkt *mdp_cmdq_pkt_get(struct cmdq_client *client) +{ + int i; + + if (cmdq_pool.clt == client) { + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) { + if (!cmdq_pool.occupied[i]) { + cmdq_pool.pkt[i]->cmd_buf_size = 0; + cmdq_pool.occupied[i] = true; + return cmdq_pool.pkt[i]; + } + } + } else if (cmdq_d_pool.clt == client) { + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) { + if (!cmdq_d_pool.occupied[i]) { + cmdq_d_pool.pkt[i]->cmd_buf_size = 0; + cmdq_d_pool.occupied[i] = true; + return cmdq_d_pool.pkt[i]; + } + } + } + + return ERR_PTR(-ENOMEM); +} + +static void mdp_cmdq_pkt_free(struct cmdq_pkt *pkt) +{ + int i; + + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) { + if (cmdq_pool.pkt[i] == pkt) { + cmdq_pool.occupied[i] = false; + goto free_done; + } + } + + for (i = 0; i < MDP_CMDQ_PKT_SIZE; i++) { + if (cmdq_d_pool.pkt[i] == pkt) { + cmdq_d_pool.occupied[i] = false; + goto free_done; + } + } + +free_done: + return; +} + static int mdp_path_subfrm_require(struct mdp_path_subfrm *subfrm, const struct mdp_path *path, struct mmsys_cmdq_cmd *cmd, u32 count) @@ -794,7 +891,7 @@ static void mdp_handle_cmdq_callback(struct cmdq_cb_data data) cb_param->user_cmdq_cb(user_cb_data); } - cmdq_pkt_destroy(cb_param->pkt); + mdp_cmdq_pkt_free(cb_param->pkt); INIT_WORK(&cb_param->auto_release_work, mdp_auto_release_work); if (!queue_work(mdp->clock_wq, &cb_param->auto_release_work)) { dev_err(dev, "%s:queue_work fail!\n", __func__); @@ -832,8 +929,8 @@ int mdp_cmdq_send(struct mdp_dev *mdp, struct mdp_cmdq_param *param) return -ECANCELED; atomic_inc(&mdp->job_count); - - cmd.pkt = cmdq_pkt_create(mdp->cmdq_clt, SZ_16K); + mbox_flush(mdp->cmdq_clt->chan, MDP_CMDQ_TIMEOUT); + cmd.pkt = mdp_cmdq_pkt_get(mdp->cmdq_clt); if (IS_ERR(cmd.pkt)) { atomic_dec(&mdp->job_count); wake_up(&mdp->callback_wq); @@ -842,7 +939,8 @@ int mdp_cmdq_send(struct mdp_dev *mdp, struct mdp_cmdq_param *param) cmd.event = &mdp->event[0]; if (is_dual_pipe(scenario)) { - cmd_d.pkt = cmdq_pkt_create(mdp->cmdq_d_clt, SZ_16K); + mbox_flush(mdp->cmdq_d_clt->chan, MDP_CMDQ_TIMEOUT); + cmd_d.pkt = mdp_cmdq_pkt_get(mdp->cmdq_d_clt); if (IS_ERR(cmd_d.pkt)) { atomic_dec(&mdp->job_count); wake_up(&mdp->callback_wq); diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.h b/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.h index 0a0e88cef6b5..b8844ebde4a1 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.h +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.h @@ -12,6 +12,8 @@ #include #include "mtk-img-ipi.h" +#define MDP_CMDQ_PKT_SIZE (2) + struct platform_device *mdp_get_plat_device(struct platform_device *pdev); int mdp_cmdq_sendtask(struct platform_device *pdev, struct img_config *config, @@ -40,8 +42,16 @@ struct mdp_cmdq_cb_param { bool finalize; }; +struct mdp_cmdq_pkt_pool { + struct cmdq_client *clt; + bool occupied[MDP_CMDQ_PKT_SIZE]; + struct cmdq_pkt *pkt[MDP_CMDQ_PKT_SIZE]; +}; + struct mdp_dev; +int mdp_cmdq_pkt_create(struct mdp_dev *mdp); +void mdp_cmdq_pkt_destroy(void); int mdp_cmdq_send(struct mdp_dev *mdp, struct mdp_cmdq_param *param); #endif /* __MTK_MDP3_CMDQ_H__ */ diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c index 1c8baa33ecc6..1e61ac7ca790 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c @@ -1130,7 +1130,7 @@ static int mdp_probe(struct platform_device *pdev) struct device_node *mdp_node; struct platform_device *mm_pdev, *mm_pdev2; u32 event_ofst; - int ret, i, mutex_id; + int ret, i, mutex_id, id = 0; mdp = devm_kzalloc(dev, sizeof(*mdp), GFP_KERNEL); if (!mdp) { @@ -1140,6 +1140,18 @@ static int mdp_probe(struct platform_device *pdev) mdp->pdev = pdev; mdp->mdp_data = of_device_get_match_data(&pdev->dev); + + ret = of_property_read_u32(dev->of_node, "mediatek,mdp3-id", &id); + if (ret) { + dev_err(dev, "Failed to get mdp-id\n"); + goto err_return; + } + + if (id != MDP_RDMA0_NODE) { + platform_set_drvdata(pdev, mdp); + goto err_return; + } + mm_pdev = __get_pdev_by_name(pdev, "mediatek,mmsys"); if (!mm_pdev) { ret = -ENODEV; @@ -1270,6 +1282,12 @@ static int mdp_probe(struct platform_device *pdev) goto err_mbox_destroy; } + ret = mdp_cmdq_pkt_create(mdp); + if (ret) { + dev_err(dev, "Failed to create cmdq pkt\n"); + goto err_dual_mbox_destroy; + } + init_waitqueue_head(&mdp->callback_wq); ida_init(&mdp->mdp_ida); platform_set_drvdata(pdev, mdp); @@ -1280,7 +1298,7 @@ static int mdp_probe(struct platform_device *pdev) if (ret) { dev_err(dev, "Failed to register v4l2 device\n"); ret = -EINVAL; - goto err_dual_mbox_destroy; + goto err_destroy_cmdq_pkt; } ret = mdp_m2m_device_register(mdp); @@ -1294,6 +1312,8 @@ static int mdp_probe(struct platform_device *pdev) err_unregister_device: v4l2_device_unregister(&mdp->v4l2_dev); +err_destroy_cmdq_pkt: + mdp_cmdq_pkt_destroy(); err_dual_mbox_destroy: cmdq_mbox_destroy(mdp->cmdq_d_clt); err_mbox_destroy: diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.h b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.h index 5091fdacc5c6..44035bcbb9c4 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.h +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.h @@ -15,6 +15,7 @@ #include "mtk-mdp3-vpu.h" #define MDP_MODULE_NAME "mtk-mdp3" +#define MDP_RDMA0_NODE (0) enum mdp_buffer_usage { MDP_BUFFER_USAGE_HW_READ, diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.c index 55384bb812cf..4684bb3718d3 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.c @@ -99,6 +99,7 @@ static void mdp_m2m_worker(struct work_struct *work) struct img_ipi_frameparam param = {0}; struct mdp_cmdq_param task = {0}; enum vb2_buffer_state vb_state = VB2_BUF_STATE_ERROR; + static u8 prev_scenario; int ret; if (mdp_m2m_ctx_is_state_set(ctx, MDP_M2M_CTX_ERROR)) { @@ -111,12 +112,19 @@ static void mdp_m2m_worker(struct work_struct *work) param.type = ctx->curr_param.type; param.num_inputs = 1; param.num_outputs = 1; - param.frame_change = (ctx->frame_count == 0) ? true : false; frame = ctx_get_frame(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); src_vb = v4l2_m2m_next_src_buf(ctx->m2m_ctx); mdp_set_src_config(¶m.inputs[0], frame, &src_vb->vb2_buf); mdp_set_scenario(ctx->mdp_dev, ¶m, frame); + + if (prev_scenario != param.type) { + prev_scenario = param.type; + param.frame_change = true; + } else { + param.frame_change = (ctx->frame_count == 0) ? true : false; + } + if (param.frame_change) dev_info(&ctx->mdp_dev->pdev->dev, "MDP Scenario: %d\n", param.type); diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.c index 92f337077411..91c5e35947d3 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.c @@ -10,7 +10,7 @@ #include "mtk-mdp3-core.h" #include "mtk-mdp3-regs.h" -#define QHD (2560 * 1440) +#define FHD (1920 * 1080) static const struct mdp_limit mdp_def_limit = { .out_limit = { @@ -445,7 +445,7 @@ void mdp_set_scenario(struct mdp_dev *mdp, return; if (mdp->mdp_data->mdp_cfg->support_dual_pipe) { - if ((width * height) >= QHD) + if ((width * height) >= FHD) param->type = MDP_STREAM_TYPE_DUAL_BITBLT; } } diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.c index f91d817ea379..f99233060c99 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.c @@ -10,7 +10,8 @@ #include "mtk-mdp3-core.h" #define MDP_VPU_MESSAGE_TIMEOUT 500U -#define vpu_alloc_size 0x600000 +#define MDP_DUAL_PIPE 2 +#define MDP_VPU_PATH_SIZE 0x78000 static inline struct mdp_dev *vpu_to_mdp(struct mdp_vpu_dev *vpu) { @@ -22,10 +23,22 @@ static int mdp_vpu_shared_mem_alloc(struct mdp_vpu_dev *vpu) if (vpu->work && vpu->work_addr) return 0; - vpu->work = dma_alloc_coherent(scp_get_device(vpu->scp), vpu_alloc_size, - &vpu->work_addr, GFP_KERNEL); + if (vpu->config && vpu->config_addr) + return 0; + + if (vpu->path && vpu->path_addr) + return 0; + + vpu->work = dma_alloc_wc(scp_get_device(vpu->scp), vpu->work_size, + &vpu->work_addr, GFP_KERNEL); - if (!vpu->work) + vpu->config = dma_alloc_wc(scp_get_device(vpu->scp), vpu->config_size, + &vpu->config_addr, GFP_KERNEL); + + vpu->path = dma_alloc_wc(scp_get_device(vpu->scp), vpu->path_size, + &vpu->path_addr, GFP_KERNEL); + + if (!vpu->work || !vpu->config || !vpu->path) return -ENOMEM; else return 0; @@ -34,8 +47,16 @@ static int mdp_vpu_shared_mem_alloc(struct mdp_vpu_dev *vpu) void mdp_vpu_shared_mem_free(struct mdp_vpu_dev *vpu) { if (vpu->work && vpu->work_addr) - dma_free_coherent(scp_get_device(vpu->scp), vpu_alloc_size, + dma_free_coherent(scp_get_device(vpu->scp), vpu->work_size, vpu->work, vpu->work_addr); + + if (vpu->config && vpu->config_addr) + dma_free_coherent(scp_get_device(vpu->scp), vpu->config_size, + vpu->config, vpu->config_addr); + + if (vpu->path && vpu->path_addr) + dma_free_coherent(scp_get_device(vpu->scp), vpu->path_size, + vpu->path, vpu->path_addr); } static void mdp_vpu_ipi_handle_init_ack(void *data, unsigned int len, @@ -155,9 +176,6 @@ int mdp_vpu_dev_init(struct mdp_vpu_dev *vpu, struct mtk_scp *scp, struct mdp_ipi_init_msg msg = { .drv_data = (unsigned long)vpu, }; - size_t mem_size; - phys_addr_t pool; - const size_t pool_size = sizeof(struct mdp_config_pool); struct mdp_dev *mdp = vpu_to_mdp(vpu); int err; @@ -170,33 +188,19 @@ int mdp_vpu_dev_init(struct mdp_vpu_dev *vpu, struct mtk_scp *scp, goto err_work_size; /* vpu work_size was set in mdp_vpu_ipi_handle_init_ack */ - mem_size = vpu_alloc_size; + vpu->config_size = MDP_DUAL_PIPE * sizeof(struct img_config); + vpu->path_size = MDP_VPU_PATH_SIZE; if (mdp_vpu_shared_mem_alloc(vpu)) { dev_err(&mdp->pdev->dev, "VPU memory alloc fail!"); goto err_mem_alloc; } - pool = ALIGN((phys_addr_t)vpu->work + vpu->work_size, 8); - if (pool + pool_size - (phys_addr_t)vpu->work > mem_size) { - dev_err(&mdp->pdev->dev, - "VPU memory insufficient: %zx + %zx > %zx", - vpu->work_size, pool_size, mem_size); - err = -ENOMEM; - goto err_mem_size; - } - - dev_dbg(&mdp->pdev->dev, - "VPU work:%pK pa:%pad sz:%zx pool:%pa sz:%zx (mem sz:%zx)", - vpu->work, &vpu->work_addr, vpu->work_size, - &pool, pool_size, mem_size); - vpu->pool = (struct mdp_config_pool *)pool; msg.work_addr = vpu->work_addr; msg.work_size = vpu->work_size; err = mdp_vpu_sendmsg(vpu, SCP_IPI_MDP_INIT, &msg, sizeof(msg)); if (err) goto err_work_size; - memset(vpu->pool, 0, sizeof(*vpu->pool)); return 0; err_work_size: @@ -209,7 +213,6 @@ int mdp_vpu_dev_init(struct mdp_vpu_dev *vpu, struct mtk_scp *scp, break; } return err; -err_mem_size: err_mem_alloc: return err; } @@ -232,12 +235,8 @@ static struct img_config *mdp_config_get(struct mdp_vpu_dev *vpu, if (id < 0 || id >= MDP_CONFIG_POOL_SIZE) return ERR_PTR(-EINVAL); - mutex_lock(vpu->lock); - vpu->pool->cfg_count[id]++; - config = &vpu->pool->configs[id]; - *addr = vpu->work_addr + - ((unsigned long)config - (phys_addr_t)vpu->work); - mutex_unlock(vpu->lock); + config = vpu->config; + *addr = vpu->config_addr; return config; } @@ -250,14 +249,7 @@ static int mdp_config_put(struct mdp_vpu_dev *vpu, if (id < 0 || id >= MDP_CONFIG_POOL_SIZE) return -EINVAL; - if (vpu->lock) - mutex_lock(vpu->lock); - if (!vpu->pool->cfg_count[id] || config != &vpu->pool->configs[id]) - err = -EINVAL; - else - vpu->pool->cfg_count[id]--; - if (vpu->lock) - mutex_unlock(vpu->lock); + return err; } @@ -299,7 +291,13 @@ int mdp_vpu_process(struct mdp_vpu_ctx *ctx, struct img_ipi_frameparam *param) } } memset((void *)ctx->vpu_dev->work, 0, ctx->vpu_dev->work_size); - memset(ctx->config, 0, sizeof(*ctx->config)); + + if (param->frame_change) + memset((void *)ctx->vpu_dev->path, 0, ctx->vpu_dev->path_size); + param->self_data.pa = ctx->vpu_dev->path_addr; + param->self_data.va = (phys_addr_t)ctx->vpu_dev->path; + + memset(ctx->config, 0, ctx->vpu_dev->config_size); param->config_data.va = (unsigned long)ctx->config; param->config_data.pa = ctx->inst_addr; param->drv_data = (unsigned long)ctx; @@ -308,5 +306,5 @@ int mdp_vpu_process(struct mdp_vpu_ctx *ctx, struct img_ipi_frameparam *param) addr.pa = ctx->vpu_dev->work_addr; addr.va = (phys_addr_t)ctx->vpu_dev->work; return mdp_vpu_sendmsg(ctx->vpu_dev, SCP_IPI_MDP_FRAME, - &addr, sizeof(addr)); + &addr, sizeof(addr)); } diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.h b/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.h index e831070b44d0..d3557f2d9002 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.h +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.h @@ -57,6 +57,14 @@ struct mdp_vpu_dev { size_t work_size; struct mdp_config_pool *pool; u32 status; + + void *config; + dma_addr_t config_addr; + size_t config_size; + + void *path; + dma_addr_t path_addr; + size_t path_size; }; struct mdp_vpu_ctx { From patchwork Thu Oct 21 06:34:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "roy-cw.yeh" X-Patchwork-Id: 12574007 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4731EC433EF for ; Thu, 21 Oct 2021 06:36:55 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 19DD961359 for ; Thu, 21 Oct 2021 06:36:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 19DD961359 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FLb2wWT97zR7ZiFts+7fTK7cZr902JDY0uwl7hUddEk=; b=xBdXjT/drvD0+J dzUdUuH0Umiws+lsZVzx8dbr5hnuOjZygedWnPzUVFUpUiO5FQ0sDXNm8MHEjRQBLQUoI4edTGpkF yiSIcbD69WAuBOLEVsAFJeftCgmIX3tXtV4AhjSl2DPH8biSO+sek5T+X/iggO6O2mfqT9leHenPC DUk1l5JXRRQytpgDGzoH4UFk6/ZSIl3Pqnmtl4dSyOe47PwMnTg+JVoQ8mHv3xPnHg9Jfc3Mxusbe k4dmQvhZQ1yRd310iiKMIp4ET//thQxoYp3u+7DC5nUChoyo0xbcprB7d46aLwJyE/2SfuV/BjZFm GzigT4KhvccG+7CmgbBQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRfd-006Wu7-9l; Thu, 21 Oct 2021 06:35:21 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdReq-006Wbe-Qi; Thu, 21 Oct 2021 06:34:35 +0000 X-UUID: b5434498dd924429b3ec026585978da5-20211020 X-UUID: b5434498dd924429b3ec026585978da5-20211020 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1445650850; Wed, 20 Oct 2021 23:34:29 -0700 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 20 Oct 2021 23:34:28 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.3; Thu, 21 Oct 2021 14:34:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 21 Oct 2021 14:34:26 +0800 From: roy-cw.yeh To: Rob Herring , Matthias Brugger , AngeloGioacchino Del Regno , Chun-Kuang Hu CC: Mauro Carvalho Chehab , Fabien Parent , "Roy-CW . Yeh" , "jason-jh . lin" , daoyuan huang , Ping-Hsun Wu , Moudy Ho , "river . cheng" , Enric Balletbo i Serra , Yongqiang Niu , , , , , Subject: [PATCH v1 3/4] media: platform: mtk-mdp3: Set dma_set_mask_and_coherent Date: Thu, 21 Oct 2021 14:34:13 +0800 Message-ID: <20211021063414.23663-4-roy-cw.yeh@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> References: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211020_233432_937918_4216DB93 X-CRM114-Status: GOOD ( 10.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: "Roy-CW.Yeh" Set dma_set_mask_and_coherent Signed-off-by: Roy-CW.Yeh --- drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c index 1e61ac7ca790..875326afb686 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c @@ -1141,6 +1141,8 @@ static int mdp_probe(struct platform_device *pdev) mdp->pdev = pdev; mdp->mdp_data = of_device_get_match_data(&pdev->dev); + dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(34)); + ret = of_property_read_u32(dev->of_node, "mediatek,mdp3-id", &id); if (ret) { dev_err(dev, "Failed to get mdp-id\n"); From patchwork Thu Oct 21 06:34:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "roy-cw.yeh" X-Patchwork-Id: 12574009 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 925A6C433F5 for ; Thu, 21 Oct 2021 06:37:21 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5BF036128B for ; Thu, 21 Oct 2021 06:37:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5BF036128B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=QV5GV7loR+To9Wt9A8wIoeu/apgWdxiKpeKQsbED+14=; b=MH3u8HsrQ9fv0A ouluBrYizfVbd5qZ4MxcKSi0RJK/BbAlWUuIT94K0yds0ucvvIs8HipCWgD550mV3W8TCX83puvVh IZLBpZABj3sHWHPtd2j1AjgAO8/sV2L15jnuEs/Mhae6dwf9XDCkvTuPQXxsAq9kpH2hOnD3T10lL qKU/kjBmCI3N0700QdHWrBBS02TqTy8yqO7pZvbZPntPpV/PdenBs7ngx4DEtL+FtacwUXhNqZLGi 2sw4VZ5Qpb+09zW5ezatOg3Xy/8xBkDlaO0GIfJ9GMgtBdkuRutoVrqZrTq9M+pxXVOzFC7pTcs7Y mxAEWEEu0tt5GrV+fsWw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRfz-006X6B-Lg; Thu, 21 Oct 2021 06:35:44 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mdRf6-006Wfm-4g; Thu, 21 Oct 2021 06:34:49 +0000 X-UUID: bcef2ddd6f9d4122b36a96d790bbebba-20211020 X-UUID: bcef2ddd6f9d4122b36a96d790bbebba-20211020 Received: from mtkcas68.mediatek.inc [(172.29.94.19)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1536580375; Wed, 20 Oct 2021 23:34:42 -0700 Received: from mtkexhb01.mediatek.inc (172.21.101.102) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 20 Oct 2021 23:34:41 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkexhb01.mediatek.inc (172.21.101.102) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 21 Oct 2021 14:34:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 21 Oct 2021 14:34:26 +0800 From: roy-cw.yeh To: Rob Herring , Matthias Brugger , AngeloGioacchino Del Regno , Chun-Kuang Hu CC: Mauro Carvalho Chehab , Fabien Parent , "Roy-CW . Yeh" , "jason-jh . lin" , daoyuan huang , Ping-Hsun Wu , Moudy Ho , "river . cheng" , Enric Balletbo i Serra , Yongqiang Niu , , , , , Subject: [PATCH v1 4/4] media: platform: mtk-mdp3: Set rdma compression reg in each frame Date: Thu, 21 Oct 2021 14:34:14 +0800 Message-ID: <20211021063414.23663-5-roy-cw.yeh@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> References: <20211021063414.23663-1-roy-cw.yeh@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211020_233448_202280_31BE017E X-CRM114-Status: GOOD ( 13.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: "Roy-CW.Yeh" Set rdma compression reg in each frame Signed-off-by: Roy-CW.Yeh --- drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c | 10 ++++++---- drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c index 12d6c88c68d2..dc0d1b3ff218 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c @@ -178,15 +178,17 @@ static int config_rdma_frame(struct mdp_comp_ctx *ctx, /* Setup Compression Control */ MM_REG_WRITE(cmd, subsys_id, base, MDP_RDMA_COMP_CON, rdma->comp_ctrl, write_mask); - } - - if (mdp_cfg->rdma_support_afbc && - (MDP_COLOR_IS_COMPRESS(colorformat))) { + } else if (mdp_cfg->rdma_support_afbc && + (MDP_COLOR_IS_COMPRESS(colorformat))) { MM_REG_WRITE(cmd, subsys_id, base, MDP_RDMA_MF_BKGD_SIZE_IN_PXL, ((width + 31) >> 5) << 5, 0x001FFFFF); MM_REG_WRITE(cmd, subsys_id, base, MDP_RDMA_MF_BKGD_H_SIZE_IN_PXL, ((height + 7) >> 3) << 3, 0x001FFFFF); + /* Setup Compression Control */ + MM_REG_WRITE(cmd, subsys_id, base, MDP_RDMA_COMP_CON, + rdma->comp_ctrl, write_mask); + } else { /* Setup Compression Control */ MM_REG_WRITE(cmd, subsys_id, base, MDP_RDMA_COMP_CON, rdma->comp_ctrl, write_mask); diff --git a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c index 875326afb686..1a15490d45e7 100644 --- a/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c +++ b/drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c @@ -34,7 +34,7 @@ static const struct mdp_platform_config mt8195_plat_cfg = { .rdma_support_afbc = true, .rdma_esl_setting = true, .rdma_rsz1_sram_sharing = false, - .rdma_upsample_repeat_only = true, + .rdma_upsample_repeat_only = false, .rsz_disable_dcm_small_sample = false, .rsz_etc_control = true, .wrot_filter_constraint = false,