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=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable 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 9DFC1C433DB for ; Tue, 2 Feb 2021 05:44:09 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 1973F64EDE for ; Tue, 2 Feb 2021 05:44:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1973F64EDE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date:To:From: Subject:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=HU7/5JIz6HpaK3VEjPMLbVyYIHF9fcOmOb1JjXbPtlc=; b=Gk8o/U5ZoEJCpwWza5zn7iy38 T8ZEPxRa/PHOg7pyOoQ9ebLG84J4JZb67mPA/wEbHrqYIvinW7Q2g9+x+UqYJtBO5mk7Aij9QMSWP DelTG9vAX/ONHvcmJTvsGWkfFybW6XaSSEljQ4/cr4JhUM6JGlPo2M+LL+5Lwmvw0/RUM8/Bmnu+7 Ufr2GtX67iPeJFbLVCTD1hqP7T+mvvhI3XNANO8uABh0VjJHa4q1Xk41Ci4ImTP5ZZo6TnHNFF0r8 R2MQFUaQvszS+3ELIZ4YQauYOKJSqwwRtI9mJGpCEUe6/y1SjLX4QQjZ2osPdFsW+o/kfvPF+PgBa sUX48qu7A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l6oTk-0006kA-V2; Tue, 02 Feb 2021 05:43:57 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l6oTh-0006ip-SN; Tue, 02 Feb 2021 05:43:55 +0000 X-UUID: 2d73814a8442447f8c79449b16bd9255-20210201 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=cJfW6YZrdRXzbOKONI8Uvf4KAxexd/34rJKPGoc/EmI=; b=EXwTacFGp08cLupHvRljPyOrYkDT3h94L/pf+aRc9/iAWCptYheIR8VTWhangTAxGfQ1Lz7v/LXCnP5sXPPRNKkAcW/5gfcGj/yVPawQu1cAQXAcuwuaiyiWB9lFbLwuvcfQL7EZ1CXX5fPCf6sy115I4CW00t2LScel3vuZmUo=; X-UUID: 2d73814a8442447f8c79449b16bd9255-20210201 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1541001647; Mon, 01 Feb 2021 21:43:46 -0800 Received: from MTKMBS31N1.mediatek.inc (172.27.4.69) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 1 Feb 2021 21:43:27 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by MTKMBS31N1.mediatek.inc (172.27.4.69) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 2 Feb 2021 13:43:17 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 2 Feb 2021 13:43:17 +0800 Message-ID: <1612244597.5495.1.camel@mtksdaap41> Subject: Re: [PATCH v5 2/8] drm/mediatek: add component POSTMASK From: CK Hu To: Hsin-Yi Wang Date: Tue, 2 Feb 2021 13:43:17 +0800 In-Reply-To: <20210201103727.376721-3-hsinyi@chromium.org> References: <20210201103727.376721-1-hsinyi@chromium.org> <20210201103727.376721-3-hsinyi@chromium.org> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 279E678B9FAC54269C18FB7F3383F7F0B137905EBD748A4B2B8826E5987033C92000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210202_004354_115913_D4C40DCD X-CRM114-Status: GOOD ( 28.51 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, Philipp Zabel , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yongqiang Niu , linux-mediatek@lists.infradead.org, Daniel Vetter , Matthias Brugger , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hi, Hsin-Yi: It looks like that postmask driver could be placed in mtk_drm_ddp_comp.c and this patch would much smaller. Regards, CK On Mon, 2021-02-01 at 18:37 +0800, Hsin-Yi Wang wrote: > From: Yongqiang Niu > > This patch add component POSTMASK. > > Signed-off-by: Yongqiang Niu > Signed-off-by: Hsin-Yi Wang > --- > drivers/gpu/drm/mediatek/Makefile | 1 + > drivers/gpu/drm/mediatek/mtk_disp_drv.h | 8 + > drivers/gpu/drm/mediatek/mtk_disp_postmask.c | 149 +++++++++++++++++++ > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 71 +++++---- > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 1 + > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 + > 7 files changed, 204 insertions(+), 31 deletions(-) > create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_postmask.c > > diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile > index b64674b944860..13a0eafabf9c0 100644 > --- a/drivers/gpu/drm/mediatek/Makefile > +++ b/drivers/gpu/drm/mediatek/Makefile > @@ -3,6 +3,7 @@ > mediatek-drm-y := mtk_disp_color.o \ > mtk_disp_gamma.o \ > mtk_disp_ovl.o \ > + mtk_disp_postmask.o \ > mtk_disp_rdma.o \ > mtk_drm_crtc.o \ > mtk_drm_ddp_comp.o \ > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > index cdb0383f99061..06d4d4e1c0d05 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > @@ -37,6 +37,14 @@ void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state); > void mtk_gamma_start(struct device *dev); > void mtk_gamma_stop(struct device *dev); > > +int mtk_postmask_clk_enable(struct device *dev); > +void mtk_postmask_clk_disable(struct device *dev); > +void mtk_postmask_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt); > +void mtk_postmask_start(struct device *dev); > +void mtk_postmask_stop(struct device *dev); > + > void mtk_ovl_bgclr_in_on(struct device *dev); > void mtk_ovl_bgclr_in_off(struct device *dev); > void mtk_ovl_bypass_shadow(struct device *dev); > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_postmask.c b/drivers/gpu/drm/mediatek/mtk_disp_postmask.c > new file mode 100644 > index 0000000000000..5a109fee6b238 > --- /dev/null > +++ b/drivers/gpu/drm/mediatek/mtk_disp_postmask.c > @@ -0,0 +1,149 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2021 MediaTek Inc. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "mtk_disp_drv.h" > +#include "mtk_drm_crtc.h" > +#include "mtk_drm_ddp_comp.h" > + > +#define DISP_POSTMASK_EN 0x0000 > +#define POSTMASK_EN BIT(0) > +#define DISP_POSTMASK_CFG 0x0020 > +#define POSTMASK_RELAY_MODE BIT(0) > +#define DISP_POSTMASK_SIZE 0x0030 > + > +/** > + * struct mtk_disp_postmask - DISP_postmask driver structure > + * @ddp_comp - structure containing type enum and hardware resources > + * @crtc - associated crtc to report irq events to > + */ > +struct mtk_disp_postmask { > + struct clk *clk; > + void __iomem *regs; > + struct cmdq_client_reg cmdq_reg; > +}; > + > +int mtk_postmask_clk_enable(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + return clk_prepare_enable(postmask->clk); > +} > + > +void mtk_postmask_clk_disable(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + clk_disable_unprepare(postmask->clk); > +} > + > +void mtk_postmask_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + mtk_ddp_write(cmdq_pkt, w << 16 | h, &postmask->cmdq_reg, postmask->regs, > + DISP_POSTMASK_SIZE); > + mtk_ddp_write(cmdq_pkt, POSTMASK_RELAY_MODE, &postmask->cmdq_reg, > + postmask->regs, DISP_POSTMASK_CFG); > +} > + > +void mtk_postmask_start(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + writel(POSTMASK_EN, postmask->regs + DISP_POSTMASK_EN); > +} > + > +void mtk_postmask_stop(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + writel_relaxed(0x0, postmask->regs + DISP_POSTMASK_EN); > +} > + > +static int mtk_disp_postmask_bind(struct device *dev, struct device *master, void *data) > +{ > + return 0; > +} > + > +static void mtk_disp_postmask_unbind(struct device *dev, struct device *master, > + void *data) > +{ > +} > + > +static const struct component_ops mtk_disp_postmask_component_ops = { > + .bind = mtk_disp_postmask_bind, > + .unbind = mtk_disp_postmask_unbind, > +}; > + > +static int mtk_disp_postmask_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct mtk_disp_postmask *priv; > + struct resource *res; > + int ret; > + > + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + priv->clk = devm_clk_get(dev, NULL); > + if (IS_ERR(priv->clk)) { > + dev_err(dev, "failed to get postmask clk\n"); > + return PTR_ERR(priv->clk); > + } > + > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + priv->regs = devm_ioremap_resource(dev, res); > + if (IS_ERR(priv->regs)) { > + dev_err(dev, "failed to ioremap postmask\n"); > + return PTR_ERR(priv->regs); > + } > + > +#if IS_REACHABLE(CONFIG_MTK_CMDQ) > + ret = cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0); > + if (ret) > + dev_dbg(dev, "get mediatek,gce-client-reg fail!\n"); > +#endif > + > + platform_set_drvdata(pdev, priv); > + > + ret = component_add(dev, &mtk_disp_postmask_component_ops); > + if (ret) > + dev_err(dev, "Failed to add component: %d\n", ret); > + > + return ret; > +} > + > +static int mtk_disp_postmask_remove(struct platform_device *pdev) > +{ > + component_del(&pdev->dev, &mtk_disp_postmask_component_ops); > + > + return 0; > +} > + > +static const struct of_device_id mtk_disp_postmask_driver_dt_match[] = { > + {}, > +}; > +MODULE_DEVICE_TABLE(of, mtk_disp_postmask_driver_dt_match); > + > +struct platform_driver mtk_disp_postmask_driver = { > + .probe = mtk_disp_postmask_probe, > + .remove = mtk_disp_postmask_remove, > + .driver = { > + .name = "mediatek-disp-postmask", > + .owner = THIS_MODULE, > + .of_match_table = mtk_disp_postmask_driver_dt_match, > + }, > +}; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > index b6c4e73031ca6..7a6efc849694b 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > @@ -413,6 +413,14 @@ static const struct mtk_ddp_comp_funcs ddp_ovl = { > .bgclr_in_off = mtk_ovl_bgclr_in_off, > }; > > +static const struct mtk_ddp_comp_funcs ddp_postmask = { > + .clk_enable = mtk_postmask_clk_enable, > + .clk_disable = mtk_postmask_clk_disable, > + .config = mtk_postmask_config, > + .start = mtk_postmask_start, > + .stop = mtk_postmask_stop, > +}; > + > static const struct mtk_ddp_comp_funcs ddp_rdma = { > .clk_enable = mtk_rdma_clk_enable, > .clk_disable = mtk_rdma_clk_disable, > @@ -448,6 +456,7 @@ static const char * const mtk_ddp_comp_stem[MTK_DDP_COMP_TYPE_MAX] = { > [MTK_DISP_MUTEX] = "mutex", > [MTK_DISP_OD] = "od", > [MTK_DISP_BLS] = "bls", > + [MTK_DISP_POSTMASK] = "postmask", > }; > > struct mtk_ddp_comp_match { > @@ -457,36 +466,37 @@ struct mtk_ddp_comp_match { > }; > > static const struct mtk_ddp_comp_match mtk_ddp_matches[DDP_COMPONENT_ID_MAX] = { > - [DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal }, > - [DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal }, > - [DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL }, > - [DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr }, > - [DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color }, > - [DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color }, > - [DDP_COMPONENT_DITHER] = { MTK_DISP_DITHER, 0, &ddp_dither }, > - [DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi }, > - [DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi }, > - [DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi }, > - [DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi }, > - [DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi }, > - [DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi }, > - [DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma }, > - [DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od }, > - [DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od }, > - [DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl }, > - [DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl }, > - [DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL }, > - [DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL }, > - [DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL }, > - [DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma }, > - [DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma }, > - [DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma }, > - [DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe }, > - [DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL }, > - [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, > + [DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal }, > + [DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal }, > + [DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL }, > + [DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr }, > + [DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color }, > + [DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color }, > + [DDP_COMPONENT_DITHER] = { MTK_DISP_DITHER, 0, &ddp_dither }, > + [DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi }, > + [DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi }, > + [DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi }, > + [DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi }, > + [DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi }, > + [DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi }, > + [DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma }, > + [DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od }, > + [DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od }, > + [DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl }, > + [DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl }, > + [DDP_COMPONENT_POSTMASK0] = { MTK_DISP_POSTMASK, 0, &ddp_postmask }, > + [DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL }, > + [DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL }, > + [DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL }, > + [DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma }, > + [DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma }, > + [DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma }, > + [DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe }, > + [DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL }, > + [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, > }; > > static bool mtk_drm_find_comp_in_ddp(struct device *dev, > @@ -601,6 +611,7 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, > if (type == MTK_DISP_BLS || > type == MTK_DISP_COLOR || > type == MTK_DISP_GAMMA || > + type == MTK_DISP_POSTMASK || > type == MTK_DPI || > type == MTK_DSI || > type == MTK_DISP_OVL || > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > index bb914d976cf5d..cd1dec6b4cdf2 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > @@ -30,6 +30,7 @@ enum mtk_ddp_comp_type { > MTK_DISP_UFOE, > MTK_DSI, > MTK_DPI, > + MTK_DISP_POSTMASK, > MTK_DISP_PWM, > MTK_DISP_MUTEX, > MTK_DISP_OD, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 486e73e675ad5..d99afc8528684 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -531,7 +531,7 @@ static int mtk_drm_probe(struct platform_device *pdev) > private->comp_node[comp_id] = of_node_get(node); > > /* > - * Currently only the COLOR, GAMMA, OVL, RDMA, DSI, and DPI blocks have > + * Currently only the COLOR, GAMMA, OVL, POSTMASK, RDMA, DSI, and DPI blocks have > * separate component platform drivers and initialize their own > * DDP component structure. The others are initialized here. > */ > @@ -539,6 +539,7 @@ static int mtk_drm_probe(struct platform_device *pdev) > comp_type == MTK_DISP_GAMMA || > comp_type == MTK_DISP_OVL || > comp_type == MTK_DISP_OVL_2L || > + comp_type == MTK_DISP_POSTMASK || > comp_type == MTK_DISP_RDMA || > comp_type == MTK_DSI || > comp_type == MTK_DPI) { > @@ -637,6 +638,7 @@ static struct platform_driver * const mtk_drm_drivers[] = { > &mtk_disp_color_driver, > &mtk_disp_gamma_driver, > &mtk_disp_ovl_driver, > + &mtk_disp_postmask_driver, > &mtk_disp_rdma_driver, > &mtk_dpi_driver, > &mtk_drm_platform_driver, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index 0e54e3d51014a..7e7b28e32aa2f 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -49,6 +49,7 @@ struct mtk_drm_private { > extern struct platform_driver mtk_disp_color_driver; > extern struct platform_driver mtk_disp_gamma_driver; > extern struct platform_driver mtk_disp_ovl_driver; > +extern struct platform_driver mtk_disp_postmask_driver; > extern struct platform_driver mtk_disp_rdma_driver; > extern struct platform_driver mtk_dpi_driver; > extern struct platform_driver mtk_dsi_driver; _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=unavailable 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 64A64C433E6 for ; Tue, 2 Feb 2021 05:45:45 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 F0E8E64ED4 for ; Tue, 2 Feb 2021 05:45:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F0E8E64ED4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date:To:From: Subject:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=0PxhYarc/2KB6OPAHQByTgdrjuVq40xwzcRr2+7EL6U=; b=HClVNEdtyAaInWDb3XOWY6K4w 1qGITC//9+p+m8CuuCyQQ6MuMzFA6k2+OEM6O4miS/E360UwJbyFWIxJ50JuzWzhhXhQoG5/mJEvk CldrgbqS4mcK+WFakdFp3OUHT84CmNNazLoTHcKiQVQsut3H87zjFn2Bs+Bbqi8+vZ7gt/q/bBLnS W7wG8EgeqLD9kI21TEKIIv+AoMvMdngoHY4jEcuM/kruaU3vlBnN0/g8KuY2fGNXQ/j/+ENC8oByD 8XIJoNPGpQV+rgh8B4p1OIuwLhei/FyHj9nn230EDSkZ4/kOQSmzCQmC5h+BtnuWjQOIFgyN4ao0O ynucAda6w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l6oTl-0006kI-Mh; Tue, 02 Feb 2021 05:43:57 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l6oTh-0006ip-SN; Tue, 02 Feb 2021 05:43:55 +0000 X-UUID: 2d73814a8442447f8c79449b16bd9255-20210201 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=cJfW6YZrdRXzbOKONI8Uvf4KAxexd/34rJKPGoc/EmI=; b=EXwTacFGp08cLupHvRljPyOrYkDT3h94L/pf+aRc9/iAWCptYheIR8VTWhangTAxGfQ1Lz7v/LXCnP5sXPPRNKkAcW/5gfcGj/yVPawQu1cAQXAcuwuaiyiWB9lFbLwuvcfQL7EZ1CXX5fPCf6sy115I4CW00t2LScel3vuZmUo=; X-UUID: 2d73814a8442447f8c79449b16bd9255-20210201 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1541001647; Mon, 01 Feb 2021 21:43:46 -0800 Received: from MTKMBS31N1.mediatek.inc (172.27.4.69) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 1 Feb 2021 21:43:27 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by MTKMBS31N1.mediatek.inc (172.27.4.69) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 2 Feb 2021 13:43:17 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 2 Feb 2021 13:43:17 +0800 Message-ID: <1612244597.5495.1.camel@mtksdaap41> Subject: Re: [PATCH v5 2/8] drm/mediatek: add component POSTMASK From: CK Hu To: Hsin-Yi Wang Date: Tue, 2 Feb 2021 13:43:17 +0800 In-Reply-To: <20210201103727.376721-3-hsinyi@chromium.org> References: <20210201103727.376721-1-hsinyi@chromium.org> <20210201103727.376721-3-hsinyi@chromium.org> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 279E678B9FAC54269C18FB7F3383F7F0B137905EBD748A4B2B8826E5987033C92000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210202_004354_115913_D4C40DCD X-CRM114-Status: GOOD ( 28.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, Philipp Zabel , David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yongqiang Niu , linux-mediatek@lists.infradead.org, Daniel Vetter , Matthias Brugger , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Hsin-Yi: It looks like that postmask driver could be placed in mtk_drm_ddp_comp.c and this patch would much smaller. Regards, CK On Mon, 2021-02-01 at 18:37 +0800, Hsin-Yi Wang wrote: > From: Yongqiang Niu > > This patch add component POSTMASK. > > Signed-off-by: Yongqiang Niu > Signed-off-by: Hsin-Yi Wang > --- > drivers/gpu/drm/mediatek/Makefile | 1 + > drivers/gpu/drm/mediatek/mtk_disp_drv.h | 8 + > drivers/gpu/drm/mediatek/mtk_disp_postmask.c | 149 +++++++++++++++++++ > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 71 +++++---- > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 1 + > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 + > 7 files changed, 204 insertions(+), 31 deletions(-) > create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_postmask.c > > diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile > index b64674b944860..13a0eafabf9c0 100644 > --- a/drivers/gpu/drm/mediatek/Makefile > +++ b/drivers/gpu/drm/mediatek/Makefile > @@ -3,6 +3,7 @@ > mediatek-drm-y := mtk_disp_color.o \ > mtk_disp_gamma.o \ > mtk_disp_ovl.o \ > + mtk_disp_postmask.o \ > mtk_disp_rdma.o \ > mtk_drm_crtc.o \ > mtk_drm_ddp_comp.o \ > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > index cdb0383f99061..06d4d4e1c0d05 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > @@ -37,6 +37,14 @@ void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state); > void mtk_gamma_start(struct device *dev); > void mtk_gamma_stop(struct device *dev); > > +int mtk_postmask_clk_enable(struct device *dev); > +void mtk_postmask_clk_disable(struct device *dev); > +void mtk_postmask_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt); > +void mtk_postmask_start(struct device *dev); > +void mtk_postmask_stop(struct device *dev); > + > void mtk_ovl_bgclr_in_on(struct device *dev); > void mtk_ovl_bgclr_in_off(struct device *dev); > void mtk_ovl_bypass_shadow(struct device *dev); > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_postmask.c b/drivers/gpu/drm/mediatek/mtk_disp_postmask.c > new file mode 100644 > index 0000000000000..5a109fee6b238 > --- /dev/null > +++ b/drivers/gpu/drm/mediatek/mtk_disp_postmask.c > @@ -0,0 +1,149 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2021 MediaTek Inc. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "mtk_disp_drv.h" > +#include "mtk_drm_crtc.h" > +#include "mtk_drm_ddp_comp.h" > + > +#define DISP_POSTMASK_EN 0x0000 > +#define POSTMASK_EN BIT(0) > +#define DISP_POSTMASK_CFG 0x0020 > +#define POSTMASK_RELAY_MODE BIT(0) > +#define DISP_POSTMASK_SIZE 0x0030 > + > +/** > + * struct mtk_disp_postmask - DISP_postmask driver structure > + * @ddp_comp - structure containing type enum and hardware resources > + * @crtc - associated crtc to report irq events to > + */ > +struct mtk_disp_postmask { > + struct clk *clk; > + void __iomem *regs; > + struct cmdq_client_reg cmdq_reg; > +}; > + > +int mtk_postmask_clk_enable(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + return clk_prepare_enable(postmask->clk); > +} > + > +void mtk_postmask_clk_disable(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + clk_disable_unprepare(postmask->clk); > +} > + > +void mtk_postmask_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + mtk_ddp_write(cmdq_pkt, w << 16 | h, &postmask->cmdq_reg, postmask->regs, > + DISP_POSTMASK_SIZE); > + mtk_ddp_write(cmdq_pkt, POSTMASK_RELAY_MODE, &postmask->cmdq_reg, > + postmask->regs, DISP_POSTMASK_CFG); > +} > + > +void mtk_postmask_start(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + writel(POSTMASK_EN, postmask->regs + DISP_POSTMASK_EN); > +} > + > +void mtk_postmask_stop(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + writel_relaxed(0x0, postmask->regs + DISP_POSTMASK_EN); > +} > + > +static int mtk_disp_postmask_bind(struct device *dev, struct device *master, void *data) > +{ > + return 0; > +} > + > +static void mtk_disp_postmask_unbind(struct device *dev, struct device *master, > + void *data) > +{ > +} > + > +static const struct component_ops mtk_disp_postmask_component_ops = { > + .bind = mtk_disp_postmask_bind, > + .unbind = mtk_disp_postmask_unbind, > +}; > + > +static int mtk_disp_postmask_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct mtk_disp_postmask *priv; > + struct resource *res; > + int ret; > + > + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + priv->clk = devm_clk_get(dev, NULL); > + if (IS_ERR(priv->clk)) { > + dev_err(dev, "failed to get postmask clk\n"); > + return PTR_ERR(priv->clk); > + } > + > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + priv->regs = devm_ioremap_resource(dev, res); > + if (IS_ERR(priv->regs)) { > + dev_err(dev, "failed to ioremap postmask\n"); > + return PTR_ERR(priv->regs); > + } > + > +#if IS_REACHABLE(CONFIG_MTK_CMDQ) > + ret = cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0); > + if (ret) > + dev_dbg(dev, "get mediatek,gce-client-reg fail!\n"); > +#endif > + > + platform_set_drvdata(pdev, priv); > + > + ret = component_add(dev, &mtk_disp_postmask_component_ops); > + if (ret) > + dev_err(dev, "Failed to add component: %d\n", ret); > + > + return ret; > +} > + > +static int mtk_disp_postmask_remove(struct platform_device *pdev) > +{ > + component_del(&pdev->dev, &mtk_disp_postmask_component_ops); > + > + return 0; > +} > + > +static const struct of_device_id mtk_disp_postmask_driver_dt_match[] = { > + {}, > +}; > +MODULE_DEVICE_TABLE(of, mtk_disp_postmask_driver_dt_match); > + > +struct platform_driver mtk_disp_postmask_driver = { > + .probe = mtk_disp_postmask_probe, > + .remove = mtk_disp_postmask_remove, > + .driver = { > + .name = "mediatek-disp-postmask", > + .owner = THIS_MODULE, > + .of_match_table = mtk_disp_postmask_driver_dt_match, > + }, > +}; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > index b6c4e73031ca6..7a6efc849694b 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > @@ -413,6 +413,14 @@ static const struct mtk_ddp_comp_funcs ddp_ovl = { > .bgclr_in_off = mtk_ovl_bgclr_in_off, > }; > > +static const struct mtk_ddp_comp_funcs ddp_postmask = { > + .clk_enable = mtk_postmask_clk_enable, > + .clk_disable = mtk_postmask_clk_disable, > + .config = mtk_postmask_config, > + .start = mtk_postmask_start, > + .stop = mtk_postmask_stop, > +}; > + > static const struct mtk_ddp_comp_funcs ddp_rdma = { > .clk_enable = mtk_rdma_clk_enable, > .clk_disable = mtk_rdma_clk_disable, > @@ -448,6 +456,7 @@ static const char * const mtk_ddp_comp_stem[MTK_DDP_COMP_TYPE_MAX] = { > [MTK_DISP_MUTEX] = "mutex", > [MTK_DISP_OD] = "od", > [MTK_DISP_BLS] = "bls", > + [MTK_DISP_POSTMASK] = "postmask", > }; > > struct mtk_ddp_comp_match { > @@ -457,36 +466,37 @@ struct mtk_ddp_comp_match { > }; > > static const struct mtk_ddp_comp_match mtk_ddp_matches[DDP_COMPONENT_ID_MAX] = { > - [DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal }, > - [DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal }, > - [DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL }, > - [DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr }, > - [DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color }, > - [DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color }, > - [DDP_COMPONENT_DITHER] = { MTK_DISP_DITHER, 0, &ddp_dither }, > - [DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi }, > - [DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi }, > - [DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi }, > - [DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi }, > - [DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi }, > - [DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi }, > - [DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma }, > - [DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od }, > - [DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od }, > - [DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl }, > - [DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl }, > - [DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL }, > - [DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL }, > - [DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL }, > - [DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma }, > - [DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma }, > - [DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma }, > - [DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe }, > - [DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL }, > - [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, > + [DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal }, > + [DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal }, > + [DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL }, > + [DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr }, > + [DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color }, > + [DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color }, > + [DDP_COMPONENT_DITHER] = { MTK_DISP_DITHER, 0, &ddp_dither }, > + [DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi }, > + [DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi }, > + [DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi }, > + [DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi }, > + [DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi }, > + [DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi }, > + [DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma }, > + [DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od }, > + [DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od }, > + [DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl }, > + [DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl }, > + [DDP_COMPONENT_POSTMASK0] = { MTK_DISP_POSTMASK, 0, &ddp_postmask }, > + [DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL }, > + [DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL }, > + [DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL }, > + [DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma }, > + [DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma }, > + [DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma }, > + [DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe }, > + [DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL }, > + [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, > }; > > static bool mtk_drm_find_comp_in_ddp(struct device *dev, > @@ -601,6 +611,7 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, > if (type == MTK_DISP_BLS || > type == MTK_DISP_COLOR || > type == MTK_DISP_GAMMA || > + type == MTK_DISP_POSTMASK || > type == MTK_DPI || > type == MTK_DSI || > type == MTK_DISP_OVL || > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > index bb914d976cf5d..cd1dec6b4cdf2 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > @@ -30,6 +30,7 @@ enum mtk_ddp_comp_type { > MTK_DISP_UFOE, > MTK_DSI, > MTK_DPI, > + MTK_DISP_POSTMASK, > MTK_DISP_PWM, > MTK_DISP_MUTEX, > MTK_DISP_OD, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 486e73e675ad5..d99afc8528684 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -531,7 +531,7 @@ static int mtk_drm_probe(struct platform_device *pdev) > private->comp_node[comp_id] = of_node_get(node); > > /* > - * Currently only the COLOR, GAMMA, OVL, RDMA, DSI, and DPI blocks have > + * Currently only the COLOR, GAMMA, OVL, POSTMASK, RDMA, DSI, and DPI blocks have > * separate component platform drivers and initialize their own > * DDP component structure. The others are initialized here. > */ > @@ -539,6 +539,7 @@ static int mtk_drm_probe(struct platform_device *pdev) > comp_type == MTK_DISP_GAMMA || > comp_type == MTK_DISP_OVL || > comp_type == MTK_DISP_OVL_2L || > + comp_type == MTK_DISP_POSTMASK || > comp_type == MTK_DISP_RDMA || > comp_type == MTK_DSI || > comp_type == MTK_DPI) { > @@ -637,6 +638,7 @@ static struct platform_driver * const mtk_drm_drivers[] = { > &mtk_disp_color_driver, > &mtk_disp_gamma_driver, > &mtk_disp_ovl_driver, > + &mtk_disp_postmask_driver, > &mtk_disp_rdma_driver, > &mtk_dpi_driver, > &mtk_drm_platform_driver, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index 0e54e3d51014a..7e7b28e32aa2f 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -49,6 +49,7 @@ struct mtk_drm_private { > extern struct platform_driver mtk_disp_color_driver; > extern struct platform_driver mtk_disp_gamma_driver; > extern struct platform_driver mtk_disp_ovl_driver; > +extern struct platform_driver mtk_disp_postmask_driver; > extern struct platform_driver mtk_disp_rdma_driver; > extern struct platform_driver mtk_dpi_driver; > extern struct platform_driver mtk_dsi_driver; _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 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 E54F4C433E6 for ; Tue, 2 Feb 2021 05:44:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9EEB664ED4 for ; Tue, 2 Feb 2021 05:44:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229846AbhBBFo2 (ORCPT ); Tue, 2 Feb 2021 00:44:28 -0500 Received: from mailgw02.mediatek.com ([1.203.163.81]:1874 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S231584AbhBBFoY (ORCPT ); Tue, 2 Feb 2021 00:44:24 -0500 X-UUID: 265a4cc770074caabf0849f1a9d66d92-20210202 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=cJfW6YZrdRXzbOKONI8Uvf4KAxexd/34rJKPGoc/EmI=; b=EXwTacFGp08cLupHvRljPyOrYkDT3h94L/pf+aRc9/iAWCptYheIR8VTWhangTAxGfQ1Lz7v/LXCnP5sXPPRNKkAcW/5gfcGj/yVPawQu1cAQXAcuwuaiyiWB9lFbLwuvcfQL7EZ1CXX5fPCf6sy115I4CW00t2LScel3vuZmUo=; X-UUID: 265a4cc770074caabf0849f1a9d66d92-20210202 Received: from mtkcas35.mediatek.inc [(172.27.4.253)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 763380348; Tue, 02 Feb 2021 13:43:26 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by MTKMBS31N1.mediatek.inc (172.27.4.69) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 2 Feb 2021 13:43:17 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 2 Feb 2021 13:43:17 +0800 Message-ID: <1612244597.5495.1.camel@mtksdaap41> Subject: Re: [PATCH v5 2/8] drm/mediatek: add component POSTMASK From: CK Hu To: Hsin-Yi Wang CC: Philipp Zabel , Matthias Brugger , David Airlie , Daniel Vetter , Mark Rutland , , , , , , Yongqiang Niu Date: Tue, 2 Feb 2021 13:43:17 +0800 In-Reply-To: <20210201103727.376721-3-hsinyi@chromium.org> References: <20210201103727.376721-1-hsinyi@chromium.org> <20210201103727.376721-3-hsinyi@chromium.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 279E678B9FAC54269C18FB7F3383F7F0B137905EBD748A4B2B8826E5987033C92000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGksIEhzaW4tWWk6DQoNCkl0IGxvb2tzIGxpa2UgdGhhdCBwb3N0bWFzayBkcml2ZXIgY291bGQg YmUgcGxhY2VkIGluIG10a19kcm1fZGRwX2NvbXAuYw0KYW5kIHRoaXMgcGF0Y2ggd291bGQgbXVj aCBzbWFsbGVyLg0KDQpSZWdhcmRzLA0KQ0sNCg0KT24gTW9uLCAyMDIxLTAyLTAxIGF0IDE4OjM3 ICswODAwLCBIc2luLVlpIFdhbmcgd3JvdGU6DQo+IEZyb206IFlvbmdxaWFuZyBOaXUgPHlvbmdx aWFuZy5uaXVAbWVkaWF0ZWsuY29tPg0KPiANCj4gVGhpcyBwYXRjaCBhZGQgY29tcG9uZW50IFBP U1RNQVNLLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogWW9uZ3FpYW5nIE5pdSA8eW9uZ3FpYW5nLm5p dUBtZWRpYXRlay5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEhzaW4tWWkgV2FuZyA8aHNpbnlpQGNo cm9taXVtLm9yZz4NCj4gLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUg ICAgICAgICAgICB8ICAgMSArDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bf ZHJ2LmggICAgICB8ICAgOCArDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bf cG9zdG1hc2suYyB8IDE0OSArKysrKysrKysrKysrKysrKysrDQo+ICBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5jICB8ICA3MSArKysrKy0tLS0NCj4gIGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmggIHwgICAxICsNCj4gIGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jICAgICAgIHwgICA0ICstDQo+ICBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgICAgICB8ICAgMSArDQo+ICA3IGZpbGVz IGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkNCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcG9zdG1hc2suYw0K PiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQ0KPiBpbmRleCBiNjQ2NzRiOTQ0ODYwLi4x M2EwZWFmYWJmOWMwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFr ZWZpbGUNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlDQo+IEBAIC0z LDYgKzMsNyBAQA0KPiAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3BfY29sb3IubyBcDQo+ICAJ CSAgbXRrX2Rpc3BfZ2FtbWEubyBcDQo+ICAJCSAgbXRrX2Rpc3Bfb3ZsLm8gXA0KPiArCQkgIG10 a19kaXNwX3Bvc3RtYXNrLm8gXA0KPiAgCQkgIG10a19kaXNwX3JkbWEubyBcDQo+ICAJCSAgbXRr X2RybV9jcnRjLm8gXA0KPiAgCQkgIG10a19kcm1fZGRwX2NvbXAubyBcDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmgNCj4gaW5kZXggY2RiMDM4M2Y5OTA2MS4uMDZkNGQ0 ZTFjMGQwNSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNw X2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9kcnYuaA0K PiBAQCAtMzcsNiArMzcsMTQgQEAgdm9pZCBtdGtfZ2FtbWFfc2V0X2NvbW1vbih2b2lkIF9faW9t ZW0gKnJlZ3MsIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpOw0KPiAgdm9pZCBtdGtfZ2Ft bWFfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2KTsNCj4gIHZvaWQgbXRrX2dhbW1hX3N0b3Aoc3Ry dWN0IGRldmljZSAqZGV2KTsNCj4gIA0KPiAraW50IG10a19wb3N0bWFza19jbGtfZW5hYmxlKHN0 cnVjdCBkZXZpY2UgKmRldik7DQo+ICt2b2lkIG10a19wb3N0bWFza19jbGtfZGlzYWJsZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOw0KPiArdm9pZCBtdGtfcG9zdG1hc2tfY29uZmlnKHN0cnVjdCBkZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHcsDQo+ICsJCQkgdW5zaWduZWQgaW50IGgsIHVuc2lnbmVk IGludCB2cmVmcmVzaCwNCj4gKwkJCSB1bnNpZ25lZCBpbnQgYnBjLCBzdHJ1Y3QgY21kcV9wa3Qg KmNtZHFfcGt0KTsNCj4gK3ZvaWQgbXRrX3Bvc3RtYXNrX3N0YXJ0KHN0cnVjdCBkZXZpY2UgKmRl dik7DQo+ICt2b2lkIG10a19wb3N0bWFza19zdG9wKHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ICsN Cj4gIHZvaWQgbXRrX292bF9iZ2Nscl9pbl9vbihzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiAgdm9p ZCBtdGtfb3ZsX2JnY2xyX2luX29mZihzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiAgdm9pZCBtdGtf b3ZsX2J5cGFzc19zaGFkb3coc3RydWN0IGRldmljZSAqZGV2KTsNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9wb3N0bWFzay5jIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX3Bvc3RtYXNrLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uNWExMDlmZWU2YjIzOA0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9wb3N0bWFzay5jDQo+IEBA IC0wLDAgKzEsMTQ5IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5DQo+ICsvKg0KPiArICogQ29weXJpZ2h0IChjKSAyMDIxIE1lZGlhVGVrIEluYy4NCj4gKyAq Lw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY29t cG9uZW50Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvb2ZfZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlh dGVrL210ay1jbWRxLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJtdGtfZGlzcF9kcnYuaCINCj4gKyNp bmNsdWRlICJtdGtfZHJtX2NydGMuaCINCj4gKyNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgi DQo+ICsNCj4gKyNkZWZpbmUgRElTUF9QT1NUTUFTS19FTgkJCTB4MDAwMA0KPiArI2RlZmluZSBQ T1NUTUFTS19FTgkJCQlCSVQoMCkNCj4gKyNkZWZpbmUgRElTUF9QT1NUTUFTS19DRkcJCQkweDAw MjANCj4gKyNkZWZpbmUgUE9TVE1BU0tfUkVMQVlfTU9ERQkJCUJJVCgwKQ0KPiArI2RlZmluZSBE SVNQX1BPU1RNQVNLX1NJWkUJCQkweDAwMzANCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgbXRr X2Rpc3BfcG9zdG1hc2sgLSBESVNQX3Bvc3RtYXNrIGRyaXZlciBzdHJ1Y3R1cmUNCj4gKyAqIEBk ZHBfY29tcCAtIHN0cnVjdHVyZSBjb250YWluaW5nIHR5cGUgZW51bSBhbmQgaGFyZHdhcmUgcmVz b3VyY2VzDQo+ICsgKiBAY3J0YyAtIGFzc29jaWF0ZWQgY3J0YyB0byByZXBvcnQgaXJxIGV2ZW50 cyB0bw0KPiArICovDQo+ICtzdHJ1Y3QgbXRrX2Rpc3BfcG9zdG1hc2sgew0KPiArCXN0cnVjdCBj bGsgKmNsazsNCj4gKwl2b2lkIF9faW9tZW0gKnJlZ3M7DQo+ICsJc3RydWN0IGNtZHFfY2xpZW50 X3JlZyBjbWRxX3JlZzsNCj4gK307DQo+ICsNCj4gK2ludCBtdGtfcG9zdG1hc2tfY2xrX2VuYWJs ZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IG10a19kaXNwX3Bvc3RtYXNr ICpwb3N0bWFzayA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ICsJcmV0dXJuIGNsa19w cmVwYXJlX2VuYWJsZShwb3N0bWFzay0+Y2xrKTsNCj4gK30NCj4gKw0KPiArdm9pZCBtdGtfcG9z dG1hc2tfY2xrX2Rpc2FibGUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBt dGtfZGlzcF9wb3N0bWFzayAqcG9zdG1hc2sgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0K PiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShwb3N0bWFzay0+Y2xrKTsNCj4gK30NCj4gKw0KPiAr dm9pZCBtdGtfcG9zdG1hc2tfY29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHcsDQo+ICsJCQkgdW5zaWduZWQgaW50IGgsIHVuc2lnbmVkIGludCB2cmVmcmVzaCwNCj4gKwkJ CSB1bnNpZ25lZCBpbnQgYnBjLCBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiArew0KPiAr CXN0cnVjdCBtdGtfZGlzcF9wb3N0bWFzayAqcG9zdG1hc2sgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsNCj4gKw0KPiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIHcgPDwgMTYgfCBoLCAmcG9zdG1h c2stPmNtZHFfcmVnLCBwb3N0bWFzay0+cmVncywNCj4gKwkJICAgICAgRElTUF9QT1NUTUFTS19T SVpFKTsNCj4gKwltdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBQT1NUTUFTS19SRUxBWV9NT0RFLCAm cG9zdG1hc2stPmNtZHFfcmVnLA0KPiArCQkgICAgICBwb3N0bWFzay0+cmVncywgRElTUF9QT1NU TUFTS19DRkcpOw0KPiArfQ0KPiArDQo+ICt2b2lkIG10a19wb3N0bWFza19zdGFydChzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IG10a19kaXNwX3Bvc3RtYXNrICpwb3N0bWFz ayA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ICsJd3JpdGVsKFBPU1RNQVNLX0VOLCBw b3N0bWFzay0+cmVncyArIERJU1BfUE9TVE1BU0tfRU4pOw0KPiArfQ0KPiArDQo+ICt2b2lkIG10 a19wb3N0bWFza19zdG9wKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRr X2Rpc3BfcG9zdG1hc2sgKnBvc3RtYXNrID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4g Kwl3cml0ZWxfcmVsYXhlZCgweDAsIHBvc3RtYXNrLT5yZWdzICsgRElTUF9QT1NUTUFTS19FTik7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRrX2Rpc3BfcG9zdG1hc2tfYmluZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkNCj4gK3sNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgbXRrX2Rpc3BfcG9zdG1hc2tf dW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLA0KPiArCQkJ CSAgdm9pZCAqZGF0YSkNCj4gK3sNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBj b21wb25lbnRfb3BzIG10a19kaXNwX3Bvc3RtYXNrX2NvbXBvbmVudF9vcHMgPSB7DQo+ICsJLmJp bmQJPSBtdGtfZGlzcF9wb3N0bWFza19iaW5kLA0KPiArCS51bmJpbmQgPSBtdGtfZGlzcF9wb3N0 bWFza191bmJpbmQsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IG10a19kaXNwX3Bvc3RtYXNr X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGRl dmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gKwlzdHJ1Y3QgbXRrX2Rpc3BfcG9zdG1hc2sgKnBy aXY7DQo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXBy aXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsNCj4gKwlp ZiAoIXByaXYpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJcHJpdi0+Y2xrID0gZGV2 bV9jbGtfZ2V0KGRldiwgTlVMTCk7DQo+ICsJaWYgKElTX0VSUihwcml2LT5jbGspKSB7DQo+ICsJ CWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBwb3N0bWFzayBjbGtcbiIpOw0KPiArCQlyZXR1 cm4gUFRSX0VSUihwcml2LT5jbGspOw0KPiArCX0NCj4gKw0KPiArCXJlcyA9IHBsYXRmb3JtX2dl dF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ICsJcHJpdi0+cmVncyA9IGRl dm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7DQo+ICsJaWYgKElTX0VSUihwcml2LT5yZWdz KSkgew0KPiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBpb3JlbWFwIHBvc3RtYXNrXG4iKTsN Cj4gKwkJcmV0dXJuIFBUUl9FUlIocHJpdi0+cmVncyk7DQo+ICsJfQ0KPiArDQo+ICsjaWYgSVNf UkVBQ0hBQkxFKENPTkZJR19NVEtfQ01EUSkNCj4gKwlyZXQgPSBjbWRxX2Rldl9nZXRfY2xpZW50 X3JlZyhkZXYsICZwcml2LT5jbWRxX3JlZywgMCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZGV2X2Ri ZyhkZXYsICJnZXQgbWVkaWF0ZWssZ2NlLWNsaWVudC1yZWcgZmFpbCFcbiIpOw0KPiArI2VuZGlm DQo+ICsNCj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsNCj4gKw0KPiArCXJl dCA9IGNvbXBvbmVudF9hZGQoZGV2LCAmbXRrX2Rpc3BfcG9zdG1hc2tfY29tcG9uZW50X29wcyk7 DQo+ICsJaWYgKHJldCkNCj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIGNvbXBvbmVu dDogJWRcbiIsIHJldCk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IG10a19kaXNwX3Bvc3RtYXNrX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KPiArew0KPiArCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kaXNwX3Bvc3Rt YXNrX2NvbXBvbmVudF9vcHMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19kaXNwX3Bvc3RtYXNrX2RyaXZlcl9k dF9tYXRjaFtdID0gew0KPiArCXt9LA0KPiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IG10a19kaXNwX3Bvc3RtYXNrX2RyaXZlcl9kdF9tYXRjaCk7DQo+ICsNCj4gK3N0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfcG9zdG1hc2tfZHJpdmVyID0gew0KPiArCS5wcm9iZQkJPSBt dGtfZGlzcF9wb3N0bWFza19wcm9iZSwNCj4gKwkucmVtb3ZlCQk9IG10a19kaXNwX3Bvc3RtYXNr X3JlbW92ZSwNCj4gKwkuZHJpdmVyCQk9IHsNCj4gKwkJLm5hbWUJPSAibWVkaWF0ZWstZGlzcC1w b3N0bWFzayIsDQo+ICsJCS5vd25lcgk9IFRISVNfTU9EVUxFLA0KPiArCQkub2ZfbWF0Y2hfdGFi bGUgPSBtdGtfZGlzcF9wb3N0bWFza19kcml2ZXJfZHRfbWF0Y2gsDQo+ICsJfSwNCj4gK307DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuYw0KPiBpbmRleCBi NmM0ZTczMDMxY2E2Li43YTZlZmM4NDk2OTRiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmMNCj4gQEAgLTQxMyw2ICs0MTMsMTQgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfZGRwX2NvbXBfZnVuY3MgZGRwX292bCA9IHsNCj4gIAkuYmdjbHJf aW5fb2ZmID0gbXRrX292bF9iZ2Nscl9pbl9vZmYsDQo+ICB9Ow0KPiAgDQo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG10a19kZHBfY29tcF9mdW5jcyBkZHBfcG9zdG1hc2sgPSB7DQo+ICsJLmNsa19l bmFibGUgPSBtdGtfcG9zdG1hc2tfY2xrX2VuYWJsZSwNCj4gKwkuY2xrX2Rpc2FibGUgPSBtdGtf cG9zdG1hc2tfY2xrX2Rpc2FibGUsDQo+ICsJLmNvbmZpZyA9IG10a19wb3N0bWFza19jb25maWcs DQo+ICsJLnN0YXJ0ID0gbXRrX3Bvc3RtYXNrX3N0YXJ0LA0KPiArCS5zdG9wID0gbXRrX3Bvc3Rt YXNrX3N0b3AsDQo+ICt9Ow0KPiArDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29t cF9mdW5jcyBkZHBfcmRtYSA9IHsNCj4gIAkuY2xrX2VuYWJsZSA9IG10a19yZG1hX2Nsa19lbmFi bGUsDQo+ICAJLmNsa19kaXNhYmxlID0gbXRrX3JkbWFfY2xrX2Rpc2FibGUsDQo+IEBAIC00NDgs NiArNDU2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtdGtfZGRwX2NvbXBfc3RlbVtN VEtfRERQX0NPTVBfVFlQRV9NQVhdID0gew0KPiAgCVtNVEtfRElTUF9NVVRFWF0gPSAibXV0ZXgi LA0KPiAgCVtNVEtfRElTUF9PRF0gPSAib2QiLA0KPiAgCVtNVEtfRElTUF9CTFNdID0gImJscyIs DQo+ICsJW01US19ESVNQX1BPU1RNQVNLXSA9ICJwb3N0bWFzayIsDQo+ICB9Ow0KPiAgDQo+ICBz dHJ1Y3QgbXRrX2RkcF9jb21wX21hdGNoIHsNCj4gQEAgLTQ1NywzNiArNDY2LDM3IEBAIHN0cnVj dCBtdGtfZGRwX2NvbXBfbWF0Y2ggew0KPiAgfTsNCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVj dCBtdGtfZGRwX2NvbXBfbWF0Y2ggbXRrX2RkcF9tYXRjaGVzW0REUF9DT01QT05FTlRfSURfTUFY XSA9IHsNCj4gLQlbRERQX0NPTVBPTkVOVF9BQUwwXQk9IHsgTVRLX0RJU1BfQUFMLAkwLCAmZGRw X2FhbCB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX0FBTDFdCT0geyBNVEtfRElTUF9BQUwsCTEsICZk ZHBfYWFsIH0sDQo+IC0JW0REUF9DT01QT05FTlRfQkxTXQk9IHsgTVRLX0RJU1BfQkxTLAkwLCBO VUxMIH0sDQo+IC0JW0REUF9DT01QT05FTlRfQ0NPUlJdCT0geyBNVEtfRElTUF9DQ09SUiwJMCwg JmRkcF9jY29yciB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX0NPTE9SMF0JPSB7IE1US19ESVNQX0NP TE9SLAkwLCAmZGRwX2NvbG9yIH0sDQo+IC0JW0REUF9DT01QT05FTlRfQ09MT1IxXQk9IHsgTVRL X0RJU1BfQ09MT1IsCTEsICZkZHBfY29sb3IgfSwNCj4gLQlbRERQX0NPTVBPTkVOVF9ESVRIRVJd CT0geyBNVEtfRElTUF9ESVRIRVIsCTAsICZkZHBfZGl0aGVyIH0sDQo+IC0JW0REUF9DT01QT05F TlRfRFBJMF0JPSB7IE1US19EUEksCQkwLCAmZGRwX2RwaSB9LA0KPiAtCVtERFBfQ09NUE9ORU5U X0RQSTFdCT0geyBNVEtfRFBJLAkJMSwgJmRkcF9kcGkgfSwNCj4gLQlbRERQX0NPTVBPTkVOVF9E U0kwXQk9IHsgTVRLX0RTSSwJCTAsICZkZHBfZHNpIH0sDQo+IC0JW0REUF9DT01QT05FTlRfRFNJ MV0JPSB7IE1US19EU0ksCQkxLCAmZGRwX2RzaSB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX0RTSTJd CT0geyBNVEtfRFNJLAkJMiwgJmRkcF9kc2kgfSwNCj4gLQlbRERQX0NPTVBPTkVOVF9EU0kzXQk9 IHsgTVRLX0RTSSwJCTMsICZkZHBfZHNpIH0sDQo+IC0JW0REUF9DT01QT05FTlRfR0FNTUFdCT0g eyBNVEtfRElTUF9HQU1NQSwJMCwgJmRkcF9nYW1tYSB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX09E MF0JPSB7IE1US19ESVNQX09ELAkwLCAmZGRwX29kIH0sDQo+IC0JW0REUF9DT01QT05FTlRfT0Qx XQk9IHsgTVRLX0RJU1BfT0QsCTEsICZkZHBfb2QgfSwNCj4gLQlbRERQX0NPTVBPTkVOVF9PVkww XQk9IHsgTVRLX0RJU1BfT1ZMLAkwLCAmZGRwX292bCB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX09W TDFdCT0geyBNVEtfRElTUF9PVkwsCTEsICZkZHBfb3ZsIH0sDQo+IC0JW0REUF9DT01QT05FTlRf T1ZMXzJMMF0JPSB7IE1US19ESVNQX09WTF8yTCwJMCwgJmRkcF9vdmwgfSwNCj4gLQlbRERQX0NP TVBPTkVOVF9PVkxfMkwxXQk9IHsgTVRLX0RJU1BfT1ZMXzJMLAkxLCAmZGRwX292bCB9LA0KPiAt CVtERFBfQ09NUE9ORU5UX09WTF8yTDJdID0geyBNVEtfRElTUF9PVkxfMkwsICAgIDIsICZkZHBf b3ZsIH0sDQo+IC0JW0REUF9DT01QT05FTlRfUFdNMF0JPSB7IE1US19ESVNQX1BXTSwJMCwgTlVM TCB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX1BXTTFdCT0geyBNVEtfRElTUF9QV00sCTEsIE5VTEwg fSwNCj4gLQlbRERQX0NPTVBPTkVOVF9QV00yXQk9IHsgTVRLX0RJU1BfUFdNLAkyLCBOVUxMIH0s DQo+IC0JW0REUF9DT01QT05FTlRfUkRNQTBdCT0geyBNVEtfRElTUF9SRE1BLAkwLCAmZGRwX3Jk bWEgfSwNCj4gLQlbRERQX0NPTVBPTkVOVF9SRE1BMV0JPSB7IE1US19ESVNQX1JETUEsCTEsICZk ZHBfcmRtYSB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX1JETUEyXQk9IHsgTVRLX0RJU1BfUkRNQSwJ MiwgJmRkcF9yZG1hIH0sDQo+IC0JW0REUF9DT01QT05FTlRfVUZPRV0JPSB7IE1US19ESVNQX1VG T0UsCTAsICZkZHBfdWZvZSB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX1dETUEwXQk9IHsgTVRLX0RJ U1BfV0RNQSwJMCwgTlVMTCB9LA0KPiAtCVtERFBfQ09NUE9ORU5UX1dETUExXQk9IHsgTVRLX0RJ U1BfV0RNQSwJMSwgTlVMTCB9LA0KPiArCVtERFBfQ09NUE9ORU5UX0FBTDBdCQk9IHsgTVRLX0RJ U1BfQUFMLAkwLCAmZGRwX2FhbCB9LA0KPiArCVtERFBfQ09NUE9ORU5UX0FBTDFdCQk9IHsgTVRL X0RJU1BfQUFMLAkxLCAmZGRwX2FhbCB9LA0KPiArCVtERFBfQ09NUE9ORU5UX0JMU10JCT0geyBN VEtfRElTUF9CTFMsCTAsIE5VTEwgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9DQ09SUl0JCT0geyBN VEtfRElTUF9DQ09SUiwJMCwgJmRkcF9jY29yciB9LA0KPiArCVtERFBfQ09NUE9ORU5UX0NPTE9S MF0JCT0geyBNVEtfRElTUF9DT0xPUiwJMCwgJmRkcF9jb2xvciB9LA0KPiArCVtERFBfQ09NUE9O RU5UX0NPTE9SMV0JCT0geyBNVEtfRElTUF9DT0xPUiwJMSwgJmRkcF9jb2xvciB9LA0KPiArCVtE RFBfQ09NUE9ORU5UX0RJVEhFUl0JCT0geyBNVEtfRElTUF9ESVRIRVIsCTAsICZkZHBfZGl0aGVy IH0sDQo+ICsJW0REUF9DT01QT05FTlRfRFBJMF0JCT0geyBNVEtfRFBJLAkJMCwgJmRkcF9kcGkg fSwNCj4gKwlbRERQX0NPTVBPTkVOVF9EUEkxXQkJPSB7IE1US19EUEksCQkxLCAmZGRwX2RwaSB9 LA0KPiArCVtERFBfQ09NUE9ORU5UX0RTSTBdCQk9IHsgTVRLX0RTSSwJCTAsICZkZHBfZHNpIH0s DQo+ICsJW0REUF9DT01QT05FTlRfRFNJMV0JCT0geyBNVEtfRFNJLAkJMSwgJmRkcF9kc2kgfSwN Cj4gKwlbRERQX0NPTVBPTkVOVF9EU0kyXQkJPSB7IE1US19EU0ksCQkyLCAmZGRwX2RzaSB9LA0K PiArCVtERFBfQ09NUE9ORU5UX0RTSTNdCQk9IHsgTVRLX0RTSSwJCTMsICZkZHBfZHNpIH0sDQo+ ICsJW0REUF9DT01QT05FTlRfR0FNTUFdCQk9IHsgTVRLX0RJU1BfR0FNTUEsCTAsICZkZHBfZ2Ft bWEgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PRDBdCQk9IHsgTVRLX0RJU1BfT0QsCTAsICZkZHBf b2QgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PRDFdCQk9IHsgTVRLX0RJU1BfT0QsCTEsICZkZHBf b2QgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PVkwwXQkJPSB7IE1US19ESVNQX09WTCwJMCwgJmRk cF9vdmwgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PVkwxXQkJPSB7IE1US19ESVNQX09WTCwJMSwg JmRkcF9vdmwgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PVkxfMkwwXQkJPSB7IE1US19ESVNQX09W TF8yTCwJMCwgJmRkcF9vdmwgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PVkxfMkwxXQkJPSB7IE1U S19ESVNQX09WTF8yTCwJMSwgJmRkcF9vdmwgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9PVkxfMkwy XQkJPSB7IE1US19ESVNQX09WTF8yTCwgICAgMiwgJmRkcF9vdmwgfSwNCj4gKwlbRERQX0NPTVBP TkVOVF9QT1NUTUFTSzBdCT0geyBNVEtfRElTUF9QT1NUTUFTSywJMCwgJmRkcF9wb3N0bWFzayB9 LA0KPiArCVtERFBfQ09NUE9ORU5UX1BXTTBdCQk9IHsgTVRLX0RJU1BfUFdNLAkwLCBOVUxMIH0s DQo+ICsJW0REUF9DT01QT05FTlRfUFdNMV0JCT0geyBNVEtfRElTUF9QV00sCTEsIE5VTEwgfSwN Cj4gKwlbRERQX0NPTVBPTkVOVF9QV00yXQkJPSB7IE1US19ESVNQX1BXTSwJMiwgTlVMTCB9LA0K PiArCVtERFBfQ09NUE9ORU5UX1JETUEwXQkJPSB7IE1US19ESVNQX1JETUEsCTAsICZkZHBfcmRt YSB9LA0KPiArCVtERFBfQ09NUE9ORU5UX1JETUExXQkJPSB7IE1US19ESVNQX1JETUEsCTEsICZk ZHBfcmRtYSB9LA0KPiArCVtERFBfQ09NUE9ORU5UX1JETUEyXQkJPSB7IE1US19ESVNQX1JETUEs CTIsICZkZHBfcmRtYSB9LA0KPiArCVtERFBfQ09NUE9ORU5UX1VGT0VdCQk9IHsgTVRLX0RJU1Bf VUZPRSwJMCwgJmRkcF91Zm9lIH0sDQo+ICsJW0REUF9DT01QT05FTlRfV0RNQTBdCQk9IHsgTVRL X0RJU1BfV0RNQSwJMCwgTlVMTCB9LA0KPiArCVtERFBfQ09NUE9ORU5UX1dETUExXQkJPSB7IE1U S19ESVNQX1dETUEsCTEsIE5VTEwgfSwNCj4gIH07DQo+ICANCj4gIHN0YXRpYyBib29sIG10a19k cm1fZmluZF9jb21wX2luX2RkcChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+IEBAIC02MDEsNiArNjEx LDcgQEAgaW50IG10a19kZHBfY29tcF9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwgc3Ry dWN0IG10a19kZHBfY29tcCAqY29tcCwNCj4gIAlpZiAodHlwZSA9PSBNVEtfRElTUF9CTFMgfHwN Cj4gIAkgICAgdHlwZSA9PSBNVEtfRElTUF9DT0xPUiB8fA0KPiAgCSAgICB0eXBlID09IE1US19E SVNQX0dBTU1BIHx8DQo+ICsJICAgIHR5cGUgPT0gTVRLX0RJU1BfUE9TVE1BU0sgfHwNCj4gIAkg ICAgdHlwZSA9PSBNVEtfRFBJIHx8DQo+ICAJICAgIHR5cGUgPT0gTVRLX0RTSSB8fA0KPiAgCSAg ICB0eXBlID09IE1US19ESVNQX09WTCB8fA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZHJtX2RkcF9jb21wLmgNCj4gaW5kZXggYmI5MTRkOTc2Y2Y1ZC4uY2QxZGVjNmI0Y2RmMiAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAu aA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oDQo+ IEBAIC0zMCw2ICszMCw3IEBAIGVudW0gbXRrX2RkcF9jb21wX3R5cGUgew0KPiAgCU1US19ESVNQ X1VGT0UsDQo+ICAJTVRLX0RTSSwNCj4gIAlNVEtfRFBJLA0KPiArCU1US19ESVNQX1BPU1RNQVNL LA0KPiAgCU1US19ESVNQX1BXTSwNCj4gIAlNVEtfRElTUF9NVVRFWCwNCj4gIAlNVEtfRElTUF9P RCwNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMNCj4gaW5kZXggNDg2ZTcz ZTY3NWFkNS4uZDk5YWZjODUyODY4NCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZHJ2LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fZHJ2LmMNCj4gQEAgLTUzMSw3ICs1MzEsNyBAQCBzdGF0aWMgaW50IG10a19kcm1fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkJcHJpdmF0ZS0+Y29tcF9ub2Rl W2NvbXBfaWRdID0gb2Zfbm9kZV9nZXQobm9kZSk7DQo+ICANCj4gIAkJLyoNCj4gLQkJICogQ3Vy cmVudGx5IG9ubHkgdGhlIENPTE9SLCBHQU1NQSwgT1ZMLCBSRE1BLCBEU0ksIGFuZCBEUEkgYmxv Y2tzIGhhdmUNCj4gKwkJICogQ3VycmVudGx5IG9ubHkgdGhlIENPTE9SLCBHQU1NQSwgT1ZMLCBQ T1NUTUFTSywgUkRNQSwgRFNJLCBhbmQgRFBJIGJsb2NrcyBoYXZlDQo+ICAJCSAqIHNlcGFyYXRl IGNvbXBvbmVudCBwbGF0Zm9ybSBkcml2ZXJzIGFuZCBpbml0aWFsaXplIHRoZWlyIG93bg0KPiAg CQkgKiBERFAgY29tcG9uZW50IHN0cnVjdHVyZS4gVGhlIG90aGVycyBhcmUgaW5pdGlhbGl6ZWQg aGVyZS4NCj4gIAkJICovDQo+IEBAIC01MzksNiArNTM5LDcgQEAgc3RhdGljIGludCBtdGtfZHJt X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJCSAgICBjb21wX3R5cGUg PT0gTVRLX0RJU1BfR0FNTUEgfHwNCj4gIAkJICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9PVkwg fHwNCj4gIAkJICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9PVkxfMkwgfHwNCj4gKwkJICAgIGNv bXBfdHlwZSA9PSBNVEtfRElTUF9QT1NUTUFTSyB8fA0KPiAgCQkgICAgY29tcF90eXBlID09IE1U S19ESVNQX1JETUEgfHwNCj4gIAkJICAgIGNvbXBfdHlwZSA9PSBNVEtfRFNJIHx8DQo+ICAJCSAg ICBjb21wX3R5cGUgPT0gTVRLX0RQSSkgew0KPiBAQCAtNjM3LDYgKzYzOCw3IEBAIHN0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICogY29uc3QgbXRrX2RybV9kcml2ZXJzW10gPSB7DQo+ICAJ Jm10a19kaXNwX2NvbG9yX2RyaXZlciwNCj4gIAkmbXRrX2Rpc3BfZ2FtbWFfZHJpdmVyLA0KPiAg CSZtdGtfZGlzcF9vdmxfZHJpdmVyLA0KPiArCSZtdGtfZGlzcF9wb3N0bWFza19kcml2ZXIsDQo+ ICAJJm10a19kaXNwX3JkbWFfZHJpdmVyLA0KPiAgCSZtdGtfZHBpX2RyaXZlciwNCj4gIAkmbXRr X2RybV9wbGF0Zm9ybV9kcml2ZXIsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5oDQo+IGluZGV4IDBlNTRlM2Q1MTAxNGEuLjdlN2IyOGUzMmFhMmYgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+IEBAIC00OSw2ICs0OSw3IEBAIHN0cnVj dCBtdGtfZHJtX3ByaXZhdGUgew0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRr X2Rpc3BfY29sb3JfZHJpdmVyOw0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRr X2Rpc3BfZ2FtbWFfZHJpdmVyOw0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRr X2Rpc3Bfb3ZsX2RyaXZlcjsNCj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19k aXNwX3Bvc3RtYXNrX2RyaXZlcjsNCj4gIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10 a19kaXNwX3JkbWFfZHJpdmVyOw0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRr X2RwaV9kcml2ZXI7DQo+ICBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHNpX2Ry aXZlcjsNCg0K 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=-15.0 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 8D647C433DB for ; Tue, 2 Feb 2021 05:43:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 30AE464EDE for ; Tue, 2 Feb 2021 05:43:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 30AE464EDE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6A8996E14C; Tue, 2 Feb 2021 05:43:44 +0000 (UTC) Received: from mailgw02.mediatek.com (unknown [1.203.163.81]) by gabe.freedesktop.org (Postfix) with ESMTP id B1AEA6E14C for ; Tue, 2 Feb 2021 05:43:33 +0000 (UTC) X-UUID: 265a4cc770074caabf0849f1a9d66d92-20210202 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=cJfW6YZrdRXzbOKONI8Uvf4KAxexd/34rJKPGoc/EmI=; b=EXwTacFGp08cLupHvRljPyOrYkDT3h94L/pf+aRc9/iAWCptYheIR8VTWhangTAxGfQ1Lz7v/LXCnP5sXPPRNKkAcW/5gfcGj/yVPawQu1cAQXAcuwuaiyiWB9lFbLwuvcfQL7EZ1CXX5fPCf6sy115I4CW00t2LScel3vuZmUo=; X-UUID: 265a4cc770074caabf0849f1a9d66d92-20210202 Received: from mtkcas35.mediatek.inc [(172.27.4.253)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 763380348; Tue, 02 Feb 2021 13:43:26 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by MTKMBS31N1.mediatek.inc (172.27.4.69) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 2 Feb 2021 13:43:17 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 2 Feb 2021 13:43:17 +0800 Message-ID: <1612244597.5495.1.camel@mtksdaap41> Subject: Re: [PATCH v5 2/8] drm/mediatek: add component POSTMASK From: CK Hu To: Hsin-Yi Wang Date: Tue, 2 Feb 2021 13:43:17 +0800 In-Reply-To: <20210201103727.376721-3-hsinyi@chromium.org> References: <20210201103727.376721-1-hsinyi@chromium.org> <20210201103727.376721-3-hsinyi@chromium.org> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 279E678B9FAC54269C18FB7F3383F7F0B137905EBD748A4B2B8826E5987033C92000:8 X-MTK: N X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, David Airlie , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yongqiang Niu , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi, Hsin-Yi: It looks like that postmask driver could be placed in mtk_drm_ddp_comp.c and this patch would much smaller. Regards, CK On Mon, 2021-02-01 at 18:37 +0800, Hsin-Yi Wang wrote: > From: Yongqiang Niu > > This patch add component POSTMASK. > > Signed-off-by: Yongqiang Niu > Signed-off-by: Hsin-Yi Wang > --- > drivers/gpu/drm/mediatek/Makefile | 1 + > drivers/gpu/drm/mediatek/mtk_disp_drv.h | 8 + > drivers/gpu/drm/mediatek/mtk_disp_postmask.c | 149 +++++++++++++++++++ > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 71 +++++---- > drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 1 + > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 + > 7 files changed, 204 insertions(+), 31 deletions(-) > create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_postmask.c > > diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile > index b64674b944860..13a0eafabf9c0 100644 > --- a/drivers/gpu/drm/mediatek/Makefile > +++ b/drivers/gpu/drm/mediatek/Makefile > @@ -3,6 +3,7 @@ > mediatek-drm-y := mtk_disp_color.o \ > mtk_disp_gamma.o \ > mtk_disp_ovl.o \ > + mtk_disp_postmask.o \ > mtk_disp_rdma.o \ > mtk_drm_crtc.o \ > mtk_drm_ddp_comp.o \ > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > index cdb0383f99061..06d4d4e1c0d05 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h > @@ -37,6 +37,14 @@ void mtk_gamma_set_common(void __iomem *regs, struct drm_crtc_state *state); > void mtk_gamma_start(struct device *dev); > void mtk_gamma_stop(struct device *dev); > > +int mtk_postmask_clk_enable(struct device *dev); > +void mtk_postmask_clk_disable(struct device *dev); > +void mtk_postmask_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt); > +void mtk_postmask_start(struct device *dev); > +void mtk_postmask_stop(struct device *dev); > + > void mtk_ovl_bgclr_in_on(struct device *dev); > void mtk_ovl_bgclr_in_off(struct device *dev); > void mtk_ovl_bypass_shadow(struct device *dev); > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_postmask.c b/drivers/gpu/drm/mediatek/mtk_disp_postmask.c > new file mode 100644 > index 0000000000000..5a109fee6b238 > --- /dev/null > +++ b/drivers/gpu/drm/mediatek/mtk_disp_postmask.c > @@ -0,0 +1,149 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2021 MediaTek Inc. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "mtk_disp_drv.h" > +#include "mtk_drm_crtc.h" > +#include "mtk_drm_ddp_comp.h" > + > +#define DISP_POSTMASK_EN 0x0000 > +#define POSTMASK_EN BIT(0) > +#define DISP_POSTMASK_CFG 0x0020 > +#define POSTMASK_RELAY_MODE BIT(0) > +#define DISP_POSTMASK_SIZE 0x0030 > + > +/** > + * struct mtk_disp_postmask - DISP_postmask driver structure > + * @ddp_comp - structure containing type enum and hardware resources > + * @crtc - associated crtc to report irq events to > + */ > +struct mtk_disp_postmask { > + struct clk *clk; > + void __iomem *regs; > + struct cmdq_client_reg cmdq_reg; > +}; > + > +int mtk_postmask_clk_enable(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + return clk_prepare_enable(postmask->clk); > +} > + > +void mtk_postmask_clk_disable(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + clk_disable_unprepare(postmask->clk); > +} > + > +void mtk_postmask_config(struct device *dev, unsigned int w, > + unsigned int h, unsigned int vrefresh, > + unsigned int bpc, struct cmdq_pkt *cmdq_pkt) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + mtk_ddp_write(cmdq_pkt, w << 16 | h, &postmask->cmdq_reg, postmask->regs, > + DISP_POSTMASK_SIZE); > + mtk_ddp_write(cmdq_pkt, POSTMASK_RELAY_MODE, &postmask->cmdq_reg, > + postmask->regs, DISP_POSTMASK_CFG); > +} > + > +void mtk_postmask_start(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + writel(POSTMASK_EN, postmask->regs + DISP_POSTMASK_EN); > +} > + > +void mtk_postmask_stop(struct device *dev) > +{ > + struct mtk_disp_postmask *postmask = dev_get_drvdata(dev); > + > + writel_relaxed(0x0, postmask->regs + DISP_POSTMASK_EN); > +} > + > +static int mtk_disp_postmask_bind(struct device *dev, struct device *master, void *data) > +{ > + return 0; > +} > + > +static void mtk_disp_postmask_unbind(struct device *dev, struct device *master, > + void *data) > +{ > +} > + > +static const struct component_ops mtk_disp_postmask_component_ops = { > + .bind = mtk_disp_postmask_bind, > + .unbind = mtk_disp_postmask_unbind, > +}; > + > +static int mtk_disp_postmask_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct mtk_disp_postmask *priv; > + struct resource *res; > + int ret; > + > + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + priv->clk = devm_clk_get(dev, NULL); > + if (IS_ERR(priv->clk)) { > + dev_err(dev, "failed to get postmask clk\n"); > + return PTR_ERR(priv->clk); > + } > + > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + priv->regs = devm_ioremap_resource(dev, res); > + if (IS_ERR(priv->regs)) { > + dev_err(dev, "failed to ioremap postmask\n"); > + return PTR_ERR(priv->regs); > + } > + > +#if IS_REACHABLE(CONFIG_MTK_CMDQ) > + ret = cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0); > + if (ret) > + dev_dbg(dev, "get mediatek,gce-client-reg fail!\n"); > +#endif > + > + platform_set_drvdata(pdev, priv); > + > + ret = component_add(dev, &mtk_disp_postmask_component_ops); > + if (ret) > + dev_err(dev, "Failed to add component: %d\n", ret); > + > + return ret; > +} > + > +static int mtk_disp_postmask_remove(struct platform_device *pdev) > +{ > + component_del(&pdev->dev, &mtk_disp_postmask_component_ops); > + > + return 0; > +} > + > +static const struct of_device_id mtk_disp_postmask_driver_dt_match[] = { > + {}, > +}; > +MODULE_DEVICE_TABLE(of, mtk_disp_postmask_driver_dt_match); > + > +struct platform_driver mtk_disp_postmask_driver = { > + .probe = mtk_disp_postmask_probe, > + .remove = mtk_disp_postmask_remove, > + .driver = { > + .name = "mediatek-disp-postmask", > + .owner = THIS_MODULE, > + .of_match_table = mtk_disp_postmask_driver_dt_match, > + }, > +}; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > index b6c4e73031ca6..7a6efc849694b 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c > @@ -413,6 +413,14 @@ static const struct mtk_ddp_comp_funcs ddp_ovl = { > .bgclr_in_off = mtk_ovl_bgclr_in_off, > }; > > +static const struct mtk_ddp_comp_funcs ddp_postmask = { > + .clk_enable = mtk_postmask_clk_enable, > + .clk_disable = mtk_postmask_clk_disable, > + .config = mtk_postmask_config, > + .start = mtk_postmask_start, > + .stop = mtk_postmask_stop, > +}; > + > static const struct mtk_ddp_comp_funcs ddp_rdma = { > .clk_enable = mtk_rdma_clk_enable, > .clk_disable = mtk_rdma_clk_disable, > @@ -448,6 +456,7 @@ static const char * const mtk_ddp_comp_stem[MTK_DDP_COMP_TYPE_MAX] = { > [MTK_DISP_MUTEX] = "mutex", > [MTK_DISP_OD] = "od", > [MTK_DISP_BLS] = "bls", > + [MTK_DISP_POSTMASK] = "postmask", > }; > > struct mtk_ddp_comp_match { > @@ -457,36 +466,37 @@ struct mtk_ddp_comp_match { > }; > > static const struct mtk_ddp_comp_match mtk_ddp_matches[DDP_COMPONENT_ID_MAX] = { > - [DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal }, > - [DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal }, > - [DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL }, > - [DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr }, > - [DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color }, > - [DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color }, > - [DDP_COMPONENT_DITHER] = { MTK_DISP_DITHER, 0, &ddp_dither }, > - [DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi }, > - [DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi }, > - [DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi }, > - [DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi }, > - [DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi }, > - [DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi }, > - [DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma }, > - [DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od }, > - [DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od }, > - [DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl }, > - [DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl }, > - [DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl }, > - [DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL }, > - [DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL }, > - [DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL }, > - [DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma }, > - [DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma }, > - [DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma }, > - [DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe }, > - [DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL }, > - [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, > + [DDP_COMPONENT_AAL0] = { MTK_DISP_AAL, 0, &ddp_aal }, > + [DDP_COMPONENT_AAL1] = { MTK_DISP_AAL, 1, &ddp_aal }, > + [DDP_COMPONENT_BLS] = { MTK_DISP_BLS, 0, NULL }, > + [DDP_COMPONENT_CCORR] = { MTK_DISP_CCORR, 0, &ddp_ccorr }, > + [DDP_COMPONENT_COLOR0] = { MTK_DISP_COLOR, 0, &ddp_color }, > + [DDP_COMPONENT_COLOR1] = { MTK_DISP_COLOR, 1, &ddp_color }, > + [DDP_COMPONENT_DITHER] = { MTK_DISP_DITHER, 0, &ddp_dither }, > + [DDP_COMPONENT_DPI0] = { MTK_DPI, 0, &ddp_dpi }, > + [DDP_COMPONENT_DPI1] = { MTK_DPI, 1, &ddp_dpi }, > + [DDP_COMPONENT_DSI0] = { MTK_DSI, 0, &ddp_dsi }, > + [DDP_COMPONENT_DSI1] = { MTK_DSI, 1, &ddp_dsi }, > + [DDP_COMPONENT_DSI2] = { MTK_DSI, 2, &ddp_dsi }, > + [DDP_COMPONENT_DSI3] = { MTK_DSI, 3, &ddp_dsi }, > + [DDP_COMPONENT_GAMMA] = { MTK_DISP_GAMMA, 0, &ddp_gamma }, > + [DDP_COMPONENT_OD0] = { MTK_DISP_OD, 0, &ddp_od }, > + [DDP_COMPONENT_OD1] = { MTK_DISP_OD, 1, &ddp_od }, > + [DDP_COMPONENT_OVL0] = { MTK_DISP_OVL, 0, &ddp_ovl }, > + [DDP_COMPONENT_OVL1] = { MTK_DISP_OVL, 1, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L0] = { MTK_DISP_OVL_2L, 0, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L1] = { MTK_DISP_OVL_2L, 1, &ddp_ovl }, > + [DDP_COMPONENT_OVL_2L2] = { MTK_DISP_OVL_2L, 2, &ddp_ovl }, > + [DDP_COMPONENT_POSTMASK0] = { MTK_DISP_POSTMASK, 0, &ddp_postmask }, > + [DDP_COMPONENT_PWM0] = { MTK_DISP_PWM, 0, NULL }, > + [DDP_COMPONENT_PWM1] = { MTK_DISP_PWM, 1, NULL }, > + [DDP_COMPONENT_PWM2] = { MTK_DISP_PWM, 2, NULL }, > + [DDP_COMPONENT_RDMA0] = { MTK_DISP_RDMA, 0, &ddp_rdma }, > + [DDP_COMPONENT_RDMA1] = { MTK_DISP_RDMA, 1, &ddp_rdma }, > + [DDP_COMPONENT_RDMA2] = { MTK_DISP_RDMA, 2, &ddp_rdma }, > + [DDP_COMPONENT_UFOE] = { MTK_DISP_UFOE, 0, &ddp_ufoe }, > + [DDP_COMPONENT_WDMA0] = { MTK_DISP_WDMA, 0, NULL }, > + [DDP_COMPONENT_WDMA1] = { MTK_DISP_WDMA, 1, NULL }, > }; > > static bool mtk_drm_find_comp_in_ddp(struct device *dev, > @@ -601,6 +611,7 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, > if (type == MTK_DISP_BLS || > type == MTK_DISP_COLOR || > type == MTK_DISP_GAMMA || > + type == MTK_DISP_POSTMASK || > type == MTK_DPI || > type == MTK_DSI || > type == MTK_DISP_OVL || > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > index bb914d976cf5d..cd1dec6b4cdf2 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h > @@ -30,6 +30,7 @@ enum mtk_ddp_comp_type { > MTK_DISP_UFOE, > MTK_DSI, > MTK_DPI, > + MTK_DISP_POSTMASK, > MTK_DISP_PWM, > MTK_DISP_MUTEX, > MTK_DISP_OD, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 486e73e675ad5..d99afc8528684 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -531,7 +531,7 @@ static int mtk_drm_probe(struct platform_device *pdev) > private->comp_node[comp_id] = of_node_get(node); > > /* > - * Currently only the COLOR, GAMMA, OVL, RDMA, DSI, and DPI blocks have > + * Currently only the COLOR, GAMMA, OVL, POSTMASK, RDMA, DSI, and DPI blocks have > * separate component platform drivers and initialize their own > * DDP component structure. The others are initialized here. > */ > @@ -539,6 +539,7 @@ static int mtk_drm_probe(struct platform_device *pdev) > comp_type == MTK_DISP_GAMMA || > comp_type == MTK_DISP_OVL || > comp_type == MTK_DISP_OVL_2L || > + comp_type == MTK_DISP_POSTMASK || > comp_type == MTK_DISP_RDMA || > comp_type == MTK_DSI || > comp_type == MTK_DPI) { > @@ -637,6 +638,7 @@ static struct platform_driver * const mtk_drm_drivers[] = { > &mtk_disp_color_driver, > &mtk_disp_gamma_driver, > &mtk_disp_ovl_driver, > + &mtk_disp_postmask_driver, > &mtk_disp_rdma_driver, > &mtk_dpi_driver, > &mtk_drm_platform_driver, > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index 0e54e3d51014a..7e7b28e32aa2f 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -49,6 +49,7 @@ struct mtk_drm_private { > extern struct platform_driver mtk_disp_color_driver; > extern struct platform_driver mtk_disp_gamma_driver; > extern struct platform_driver mtk_disp_ovl_driver; > +extern struct platform_driver mtk_disp_postmask_driver; > extern struct platform_driver mtk_disp_rdma_driver; > extern struct platform_driver mtk_dpi_driver; > extern struct platform_driver mtk_dsi_driver; _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel