From: CK Hu <ck.hu@mediatek.com>
To: jason-jh.lin <jason-jh.lin@mediatek.com>
Cc: <chunkuang.hu@kernel.org>, <matthias.bgg@gmail.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-mediatek@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
<fshao@google.com>, <nancy.lin@mediatek.com>,
<singo.chang@mediatek.com>
Subject: Re: [PATCH v1 04/17] soc: mediatek: add mtk-mmsys support for mt8195 vdosys0
Date: Wed, 7 Jul 2021 12:44:21 +0800 [thread overview]
Message-ID: <1625633061.7824.5.camel@mtksdaap41> (raw)
In-Reply-To: <20210707041249.29816-5-jason-jh.lin@mediatek.com>
Hi, Jason:
On Wed, 2021-07-07 at 12:12 +0800, jason-jh.lin wrote:
> 1. Add mtk-mmsys support for mt8195 vodsys0.
> 2. Change the clock driver of vdosys0 is probed
> from the probe of mtk-mmsys.
Move clock driver part out of this patch. And ask chun-jie to squash
clock driver modification to his patch [1].
[1]
https://patchwork.kernel.org/project/linux-mediatek/patch/20210616224743.5109-16-chun-jie.chen@mediatek.com/
Regards,
CK
>
> Signed-off-by: jason-jh.lin <jason-jh.lin@mediatek.com>
> ---
> drivers/clk/mediatek/clk-mt8195-vdo0.c | 24 ++--
> drivers/soc/mediatek/mt8195-mmsys.h | 173 +++++++++++++++++++++++++
> drivers/soc/mediatek/mtk-mmsys.c | 11 ++
> 3 files changed, 198 insertions(+), 10 deletions(-)
> create mode 100644 drivers/soc/mediatek/mt8195-mmsys.h
>
> diff --git a/drivers/clk/mediatek/clk-mt8195-vdo0.c b/drivers/clk/mediatek/clk-mt8195-vdo0.c
> index 8e23f267a1e6..940be5377f70 100644
> --- a/drivers/clk/mediatek/clk-mt8195-vdo0.c
> +++ b/drivers/clk/mediatek/clk-mt8195-vdo0.c
> @@ -94,20 +94,24 @@ static const struct mtk_clk_desc vdo0_desc = {
> .num_clks = ARRAY_SIZE(vdo0_clks),
> };
>
> -static const struct of_device_id of_match_clk_mt8195_vdo0[] = {
> - {
> - .compatible = "mediatek,mt8195-vdosys0",
> - .data = &vdo0_desc,
> - }, {
> - /* sentinel */
> - }
> -};
> +static int clk_mt8195_vdo0_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct device_node *node = dev->parent->of_node;
> + struct clk_onecell_data *clk_data;
> +
> + clk_data = mtk_alloc_clk_data(ARRAY_SIZE(vdo0_clks));
> +
> + mtk_clk_register_gates(node, vdo0_clks, ARRAY_SIZE(vdo0_clks),
> + clk_data);
> +
> + return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
> +}
>
> static struct platform_driver clk_mt8195_vdo0_drv = {
> - .probe = mtk_clk_simple_probe,
> + .probe = clk_mt8195_vdo0_probe,
> .driver = {
> .name = "clk-mt8195-vdo0",
> - .of_match_table = of_match_clk_mt8195_vdo0,
> },
> };
>
> diff --git a/drivers/soc/mediatek/mt8195-mmsys.h b/drivers/soc/mediatek/mt8195-mmsys.h
> new file mode 100644
> index 000000000000..47f3d0ea3c6c
> --- /dev/null
> +++ b/drivers/soc/mediatek/mt8195-mmsys.h
> @@ -0,0 +1,173 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __SOC_MEDIATEK_MT8195_MMSYS_H
> +#define __SOC_MEDIATEK_MT8195_MMSYS_H
> +
> +#define MT8195_VDO0_OVL_MOUT_EN 0xf14
> +#define MOUT_DISP_OVL0_TO_DISP_RDMA0 BIT(0)
> +#define MOUT_DISP_OVL0_TO_DISP_WDMA0 BIT(1)
> +#define MOUT_DISP_OVL0_TO_DISP_OVL1 BIT(2)
> +#define MOUT_DISP_OVL1_TO_DISP_RDMA1 BIT(4)
> +#define MOUT_DISP_OVL1_TO_DISP_WDMA1 BIT(5)
> +#define MOUT_DISP_OVL1_TO_DISP_OVL0 BIT(6)
> +
> +#define MT8195_VDO0_SEL_IN 0xf34
> +#define SEL_IN_VPP_MERGE_FROM_DSC_WRAP0_OUT (0 << 0)
> +#define SEL_IN_VPP_MERGE_FROM_DISP_DITHER1 (1 << 0)
> +#define SEL_IN_VPP_MERGE_FROM_VDO1_VIRTUAL0 (2 << 0)
> +#define SEL_IN_DSC_WRAP0_IN_FROM_DISP_DITHER0 (0 << 4)
> +#define SEL_IN_DSC_WRAP0_IN_FROM_VPP_MERGE (1 << 4)
> +#define SEL_IN_DSC_WRAP1_IN_FROM_DISP_DITHER1 (0 << 5)
> +#define SEL_IN_DSC_WRAP1_IN_FROM_VPP_MERGE (1 << 5)
> +#define SEL_IN_SINA_VIRTUAL0_FROM_VPP_MERGE (0 << 8)
> +#define SEL_IN_SINA_VIRTUAL0_FROM_DSC_WRAP1_OUT (1 << 8)
> +#define SEL_IN_SINB_VIRTUAL0_FROM_DSC_WRAP0_OUT (0 << 9)
> +#define SEL_IN_DP_INTF0_FROM_DSC_WRAP1_OUT (0 << 12)
> +#define SEL_IN_DP_INTF0_FROM_VPP_MERGE (1 << 12)
> +#define SEL_IN_DP_INTF0_FROM_VDO1_VIRTUAL0 (2 << 12)
> +#define SEL_IN_DSI0_FROM_DSC_WRAP0_OUT (0 << 16)
> +#define SEL_IN_DSI0_FROM_DISP_DITHER0 (1 << 16)
> +#define SEL_IN_DSI1_FROM_DSC_WRAP1_OUT (0 << 17)
> +#define SEL_IN_DSI1_FROM_VPP_MERGE (1 << 17)
> +#define SEL_IN_DISP_WDMA1_FROM_DISP_OVL1 (0 << 20)
> +#define SEL_IN_DISP_WDMA1_FROM_VPP_MERGE (1 << 20)
> +#define SEL_IN_DSC_WRAP1_OUT_FROM_DSC_WRAP1_IN (0 << 21)
> +#define SEL_IN_DSC_WRAP1_OUT_FROM_DISP_DITHER1 (1 << 21)
> +#define SEL_IN_DISP_WDMA0_FROM_DISP_OVL0 (0 << 22)
> +#define SEL_IN_DISP_WDMA0_FROM_VPP_MERGE (1 << 22)
> +
> +#define MT8195_VDO0_SEL_OUT 0xf38
> +#define SOUT_DISP_DITHER0_TO_DSC_WRAP0_IN (0 << 0)
> +#define SOUT_DISP_DITHER0_TO_DSI0 (1 << 0)
> +#define SOUT_DISP_DITHER1_TO_DSC_WRAP1_IN (0 << 1)
> +#define SOUT_DISP_DITHER1_TO_VPP_MERGE (1 << 1)
> +#define SOUT_DISP_DITHER1_TO_DSC_WRAP1_OUT (2 << 1)
> +#define SOUT_VDO1_VIRTUAL0_TO_VPP_MERGE (0 << 4)
> +#define SOUT_VDO1_VIRTUAL0_TO_DP_INTF0 (1 << 4)
> +#define SOUT_VPP_MERGE_TO_DSI1 (0 << 8)
> +#define SOUT_VPP_MERGE_TO_DP_INTF0 (1 << 8)
> +#define SOUT_VPP_MERGE_TO_SINA_VIRTUAL0 (2 << 8)
> +#define SOUT_VPP_MERGE_TO_DISP_WDMA1 (3 << 8)
> +#define SOUT_VPP_MERGE_TO_DSC_WRAP0_IN (4 << 8)
> +#define SOUT_VPP_MERGE_TO_DSC_WRAP1_IN (0 << 11)
> +#define SOUT_VPP_MERGE_TO_DISP_WDMA0 (1 << 11)
> +#define SOUT_DSC_WRAP0_OUT_TO_DSI0 (0 << 12)
> +#define SOUT_DSC_WRAP0_OUT_TO_SINB_VIRTUAL0 (1 << 12)
> +#define SOUT_DSC_WRAP0_OUT_TO_VPP_MERGE (2 << 12)
> +#define SOUT_DSC_WRAP1_OUT_TO_DSI1 (0 << 16)
> +#define SOUT_DSC_WRAP1_OUT_TO_DP_INTF0 (1 << 16)
> +#define SOUT_DSC_WRAP1_OUT_TO_SINA_VIRTUAL0 (2 << 16)
> +#define SOUT_DSC_WRAP1_OUT_TO_VPP_MERGE (3 << 16)
> +
> +#define MT8195_VDO1_VPP3_ASYNC_SOUT 0xf54
> +#define SOUT_TO_VPP_MERGE0_P0_SEL (0 << 0)
> +#define SOUT_TO_VPP_MERGE0_P1_SEL (1 << 0)
> +
> +#define MT8195_VDO1_MERGE0_ASYNC_SOUT_SEL 0xf40
> +#define SOUT_TO_HDR_VDO_FE0 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE1_ASYNC_SOUT_SEL 0xf44
> +#define SOUT_TO_HDR_VDO_FE1 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE2_ASYNC_SOUT_SEL 0xf48
> +#define SOUT_TO_HDR_GFX_FE0 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE3_ASYNC_SOUT_SEL 0xf4c
> +#define SOUT_TO_HDR_GFX_FE1 (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN1_SOUT_SEL 0xf58
> +#define MIXER_IN1_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN2_SOUT_SEL 0xf5c
> +#define MIXER_IN2_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN3_SOUT_SEL 0xf60
> +#define MIXER_IN3_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN4_SOUT_SEL 0xf64
> +#define MIXER_IN4_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_OUT_SOUT_SEL 0xf34
> +#define MIXER_SOUT_TO_HDR_VDO_BE0 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE4_SOUT_SEL 0xf18
> +#define MERGE4_SOUT_TO_VDOSYS0 (0 << 0)
> +#define MERGE4_SOUT_TO_DPI0_SEL (1 << 0)
> +#define MERGE4_SOUT_TO_DPI1_SEL (2 << 0)
> +#define MERGE4_SOUT_TO_DP_INTF0_SEL (3 << 0)
> +
> +#define MT8195_VDO1_VPP_MERGE0_P0_SEL_IN 0xf04
> +#define VPP_MERGE0_P0_SEL_IN_FROM_SVPP2 (0 << 0)
> +#define VPP_MERGE0_P0_SEL_IN_FROM_MDP_RDMA0 (1 << 0)
> +
> +#define MT8195_VDO1_VPP_MERGE0_P1_SEL_IN 0xf08
> +#define VPP_MERGE0_P1_SEL_IN_FROM_SVPP3 (0 << 0)
> +#define VPP_MERGE0_P1_SEL_IN_FROM_MDP_RDMA1 (1 << 0)
> +
> +#define MT8195_VDO1_VPP_MERGE1_P0_SEL_IN 0xf3c
> +#define VPP_MERGE1_P0_SEL_IN_FROM_VPP3_ASYNC_SOUT (0 << 0)
> +#define VPP_MERGE1_P0_SEL_IN_FROM_MDP_RDMA2 (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN1_SEL_IN 0xf24
> +#define MIXER_IN1_SEL_IN_FROM_HDR_VDO_FE0 (0 << 0)
> +#define MIXER_IN1_SEL_IN_FROM_MERGE0_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN2_SEL_IN 0xf28
> +#define MIXER_IN2_SEL_IN_FROM_HDR_VDO_FE1 (0 << 0)
> +#define MIXER_IN2_SEL_IN_FROM_MERGE1_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN3_SEL_IN 0xf2c
> +#define MIXER_IN3_SEL_IN_FROM_HDR_GFX_FE0 (0 << 0)
> +#define MIXER_IN3_SEL_IN_FROM_MERGE2_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN4_SEL_IN 0xf30
> +#define MIXER_IN4_SEL_IN_FROM_HDR_GFX_FE1 (0 << 0)
> +#define MIXER_IN4_SEL_IN_FROM_MERGE3_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_SOUT_SEL_IN 0xf68
> +#define MIXER_SOUT_SEL_IN_FROM_DISP_MIXER (0 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN1_SOUT (1 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN2_SOUT (2 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN3_SOUTR (3 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN4_SOUTR (4 << 0)
> +
> +#define MT8195_VDO1_MERGE4_ASYNC_SEL_IN 0xf50
> +#define MERGE4_ASYNC_SEL_IN_FROM_HDR_VDO_BE0 (0 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MIXER_OUT_SOUT (1 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE0_ASYNC_SOUT (2 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE1_ASYNC_SOUT (3 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE2_ASYNC_SOUT (4 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE3_ASYNC_SOUT (5 << 0)
> +
> +#define MT8195_VDO1_DISP_DPI0_SEL_IN 0xf0c
> +#define DISP_DPI0_SEL_IN_FROM_VPP_MERGE4_MOUT (0 << 0)
> +#define DISP_DPI0_SEL_IN_FROM_VDO0_MERGE_DL_ASYNC_MOUT (1 << 0)
> +#define DISP_DPI0_SEL_IN_FROM_VDO0_DSC_DL_ASYNC_MOUT (2 << 0)
> +
> +#define MT8195_VDO1_DISP_DPI1_SEL_IN 0xf10
> +#define DISP_DPI1_SEL_IN_FROM_VPP_MERGE4_MOUT (0 << 0)
> +#define DISP_DPI1_SEL_IN_FROM_VDO0_MERGE_DL_ASYNC_MOUT (1 << 0)
> +#define DISP_DPI1_SEL_IN_FROM_VDO0_DSC_DL_ASYNC_MOUT (2 << 0)
> +
> +#define MT8195_VDO1_DISP_DP_INTF0_SEL_IN 0xf14
> +#define DISP_DP_INTF0_SEL_IN_FROM_VPP_MERGE4_MOUT (0 << 0)
> +#define DISP_DP_INTF0_SEL_IN_FROM_VDO0_MERGE_DL_ASYNC_MOUT (1 << 0)
> +#define DISP_DP_INTF0_SEL_IN_FROM_VDO0_DSC_DL_ASYNC_MOUT (2 << 0)
> +
> +static const struct mtk_mmsys_routes mmsys_mt8195_routing_table[] = {
> + {
> + DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0,
> + MT8195_VDO0_OVL_MOUT_EN, MOUT_DISP_OVL0_TO_DISP_RDMA0
> + }, {
> + DDP_COMPONENT_OVL1, DDP_COMPONENT_RDMA1,
> + MT8195_VDO0_OVL_MOUT_EN, MOUT_DISP_OVL1_TO_DISP_RDMA1
> + }, {
> + DDP_COMPONENT_DITHER, DDP_COMPONENT_DSI0,
> + MT8195_VDO0_SEL_IN, SEL_IN_DSI0_FROM_DISP_DITHER0
> + }, {
> + DDP_COMPONENT_DITHER, DDP_COMPONENT_DSI0,
> + MT8195_VDO0_SEL_OUT, DDP_COMPONENT_DSI0
> + }
> +};
> +
> +#endif /* __SOC_MEDIATEK_MT8195_MMSYS_H */
> diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c
> index 080660ef11bf..1fb241750897 100644
> --- a/drivers/soc/mediatek/mtk-mmsys.c
> +++ b/drivers/soc/mediatek/mtk-mmsys.c
> @@ -13,6 +13,7 @@
> #include "mtk-mmsys.h"
> #include "mt8167-mmsys.h"
> #include "mt8183-mmsys.h"
> +#include "mt8195-mmsys.h"
>
> static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = {
> .clk_driver = "clk-mt2701-mm",
> @@ -52,6 +53,12 @@ static const struct mtk_mmsys_driver_data mt8183_mmsys_driver_data = {
> .num_routes = ARRAY_SIZE(mmsys_mt8183_routing_table),
> };
>
> +static const struct mtk_mmsys_driver_data mt8195_vdosys0_driver_data = {
> + .clk_driver = "clk-mt8195-vdo0",
> + .routes = mmsys_mt8195_routing_table,
> + .num_routes = ARRAY_SIZE(mmsys_mt8195_routing_table),
> +};
> +
> struct mtk_mmsys {
> void __iomem *regs;
> const struct mtk_mmsys_driver_data *data;
> @@ -157,6 +164,10 @@ static const struct of_device_id of_match_mtk_mmsys[] = {
> .compatible = "mediatek,mt8183-mmsys",
> .data = &mt8183_mmsys_driver_data,
> },
> + {
> + .compatible = "mediatek,mt8195-vdosys0",
> + .data = &mt8195_vdosys0_driver_data,
> + },
> { }
> };
>
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
WARNING: multiple messages have this Message-ID (diff)
From: CK Hu <ck.hu@mediatek.com>
To: jason-jh.lin <jason-jh.lin@mediatek.com>
Cc: <chunkuang.hu@kernel.org>, <matthias.bgg@gmail.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-mediatek@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
<fshao@google.com>, <nancy.lin@mediatek.com>,
<singo.chang@mediatek.com>
Subject: Re: [PATCH v1 04/17] soc: mediatek: add mtk-mmsys support for mt8195 vdosys0
Date: Wed, 7 Jul 2021 12:44:21 +0800 [thread overview]
Message-ID: <1625633061.7824.5.camel@mtksdaap41> (raw)
In-Reply-To: <20210707041249.29816-5-jason-jh.lin@mediatek.com>
Hi, Jason:
On Wed, 2021-07-07 at 12:12 +0800, jason-jh.lin wrote:
> 1. Add mtk-mmsys support for mt8195 vodsys0.
> 2. Change the clock driver of vdosys0 is probed
> from the probe of mtk-mmsys.
Move clock driver part out of this patch. And ask chun-jie to squash
clock driver modification to his patch [1].
[1]
https://patchwork.kernel.org/project/linux-mediatek/patch/20210616224743.5109-16-chun-jie.chen@mediatek.com/
Regards,
CK
>
> Signed-off-by: jason-jh.lin <jason-jh.lin@mediatek.com>
> ---
> drivers/clk/mediatek/clk-mt8195-vdo0.c | 24 ++--
> drivers/soc/mediatek/mt8195-mmsys.h | 173 +++++++++++++++++++++++++
> drivers/soc/mediatek/mtk-mmsys.c | 11 ++
> 3 files changed, 198 insertions(+), 10 deletions(-)
> create mode 100644 drivers/soc/mediatek/mt8195-mmsys.h
>
> diff --git a/drivers/clk/mediatek/clk-mt8195-vdo0.c b/drivers/clk/mediatek/clk-mt8195-vdo0.c
> index 8e23f267a1e6..940be5377f70 100644
> --- a/drivers/clk/mediatek/clk-mt8195-vdo0.c
> +++ b/drivers/clk/mediatek/clk-mt8195-vdo0.c
> @@ -94,20 +94,24 @@ static const struct mtk_clk_desc vdo0_desc = {
> .num_clks = ARRAY_SIZE(vdo0_clks),
> };
>
> -static const struct of_device_id of_match_clk_mt8195_vdo0[] = {
> - {
> - .compatible = "mediatek,mt8195-vdosys0",
> - .data = &vdo0_desc,
> - }, {
> - /* sentinel */
> - }
> -};
> +static int clk_mt8195_vdo0_probe(struct platform_device *pdev)
> +{
> + struct device *dev = &pdev->dev;
> + struct device_node *node = dev->parent->of_node;
> + struct clk_onecell_data *clk_data;
> +
> + clk_data = mtk_alloc_clk_data(ARRAY_SIZE(vdo0_clks));
> +
> + mtk_clk_register_gates(node, vdo0_clks, ARRAY_SIZE(vdo0_clks),
> + clk_data);
> +
> + return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
> +}
>
> static struct platform_driver clk_mt8195_vdo0_drv = {
> - .probe = mtk_clk_simple_probe,
> + .probe = clk_mt8195_vdo0_probe,
> .driver = {
> .name = "clk-mt8195-vdo0",
> - .of_match_table = of_match_clk_mt8195_vdo0,
> },
> };
>
> diff --git a/drivers/soc/mediatek/mt8195-mmsys.h b/drivers/soc/mediatek/mt8195-mmsys.h
> new file mode 100644
> index 000000000000..47f3d0ea3c6c
> --- /dev/null
> +++ b/drivers/soc/mediatek/mt8195-mmsys.h
> @@ -0,0 +1,173 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __SOC_MEDIATEK_MT8195_MMSYS_H
> +#define __SOC_MEDIATEK_MT8195_MMSYS_H
> +
> +#define MT8195_VDO0_OVL_MOUT_EN 0xf14
> +#define MOUT_DISP_OVL0_TO_DISP_RDMA0 BIT(0)
> +#define MOUT_DISP_OVL0_TO_DISP_WDMA0 BIT(1)
> +#define MOUT_DISP_OVL0_TO_DISP_OVL1 BIT(2)
> +#define MOUT_DISP_OVL1_TO_DISP_RDMA1 BIT(4)
> +#define MOUT_DISP_OVL1_TO_DISP_WDMA1 BIT(5)
> +#define MOUT_DISP_OVL1_TO_DISP_OVL0 BIT(6)
> +
> +#define MT8195_VDO0_SEL_IN 0xf34
> +#define SEL_IN_VPP_MERGE_FROM_DSC_WRAP0_OUT (0 << 0)
> +#define SEL_IN_VPP_MERGE_FROM_DISP_DITHER1 (1 << 0)
> +#define SEL_IN_VPP_MERGE_FROM_VDO1_VIRTUAL0 (2 << 0)
> +#define SEL_IN_DSC_WRAP0_IN_FROM_DISP_DITHER0 (0 << 4)
> +#define SEL_IN_DSC_WRAP0_IN_FROM_VPP_MERGE (1 << 4)
> +#define SEL_IN_DSC_WRAP1_IN_FROM_DISP_DITHER1 (0 << 5)
> +#define SEL_IN_DSC_WRAP1_IN_FROM_VPP_MERGE (1 << 5)
> +#define SEL_IN_SINA_VIRTUAL0_FROM_VPP_MERGE (0 << 8)
> +#define SEL_IN_SINA_VIRTUAL0_FROM_DSC_WRAP1_OUT (1 << 8)
> +#define SEL_IN_SINB_VIRTUAL0_FROM_DSC_WRAP0_OUT (0 << 9)
> +#define SEL_IN_DP_INTF0_FROM_DSC_WRAP1_OUT (0 << 12)
> +#define SEL_IN_DP_INTF0_FROM_VPP_MERGE (1 << 12)
> +#define SEL_IN_DP_INTF0_FROM_VDO1_VIRTUAL0 (2 << 12)
> +#define SEL_IN_DSI0_FROM_DSC_WRAP0_OUT (0 << 16)
> +#define SEL_IN_DSI0_FROM_DISP_DITHER0 (1 << 16)
> +#define SEL_IN_DSI1_FROM_DSC_WRAP1_OUT (0 << 17)
> +#define SEL_IN_DSI1_FROM_VPP_MERGE (1 << 17)
> +#define SEL_IN_DISP_WDMA1_FROM_DISP_OVL1 (0 << 20)
> +#define SEL_IN_DISP_WDMA1_FROM_VPP_MERGE (1 << 20)
> +#define SEL_IN_DSC_WRAP1_OUT_FROM_DSC_WRAP1_IN (0 << 21)
> +#define SEL_IN_DSC_WRAP1_OUT_FROM_DISP_DITHER1 (1 << 21)
> +#define SEL_IN_DISP_WDMA0_FROM_DISP_OVL0 (0 << 22)
> +#define SEL_IN_DISP_WDMA0_FROM_VPP_MERGE (1 << 22)
> +
> +#define MT8195_VDO0_SEL_OUT 0xf38
> +#define SOUT_DISP_DITHER0_TO_DSC_WRAP0_IN (0 << 0)
> +#define SOUT_DISP_DITHER0_TO_DSI0 (1 << 0)
> +#define SOUT_DISP_DITHER1_TO_DSC_WRAP1_IN (0 << 1)
> +#define SOUT_DISP_DITHER1_TO_VPP_MERGE (1 << 1)
> +#define SOUT_DISP_DITHER1_TO_DSC_WRAP1_OUT (2 << 1)
> +#define SOUT_VDO1_VIRTUAL0_TO_VPP_MERGE (0 << 4)
> +#define SOUT_VDO1_VIRTUAL0_TO_DP_INTF0 (1 << 4)
> +#define SOUT_VPP_MERGE_TO_DSI1 (0 << 8)
> +#define SOUT_VPP_MERGE_TO_DP_INTF0 (1 << 8)
> +#define SOUT_VPP_MERGE_TO_SINA_VIRTUAL0 (2 << 8)
> +#define SOUT_VPP_MERGE_TO_DISP_WDMA1 (3 << 8)
> +#define SOUT_VPP_MERGE_TO_DSC_WRAP0_IN (4 << 8)
> +#define SOUT_VPP_MERGE_TO_DSC_WRAP1_IN (0 << 11)
> +#define SOUT_VPP_MERGE_TO_DISP_WDMA0 (1 << 11)
> +#define SOUT_DSC_WRAP0_OUT_TO_DSI0 (0 << 12)
> +#define SOUT_DSC_WRAP0_OUT_TO_SINB_VIRTUAL0 (1 << 12)
> +#define SOUT_DSC_WRAP0_OUT_TO_VPP_MERGE (2 << 12)
> +#define SOUT_DSC_WRAP1_OUT_TO_DSI1 (0 << 16)
> +#define SOUT_DSC_WRAP1_OUT_TO_DP_INTF0 (1 << 16)
> +#define SOUT_DSC_WRAP1_OUT_TO_SINA_VIRTUAL0 (2 << 16)
> +#define SOUT_DSC_WRAP1_OUT_TO_VPP_MERGE (3 << 16)
> +
> +#define MT8195_VDO1_VPP3_ASYNC_SOUT 0xf54
> +#define SOUT_TO_VPP_MERGE0_P0_SEL (0 << 0)
> +#define SOUT_TO_VPP_MERGE0_P1_SEL (1 << 0)
> +
> +#define MT8195_VDO1_MERGE0_ASYNC_SOUT_SEL 0xf40
> +#define SOUT_TO_HDR_VDO_FE0 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE1_ASYNC_SOUT_SEL 0xf44
> +#define SOUT_TO_HDR_VDO_FE1 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE2_ASYNC_SOUT_SEL 0xf48
> +#define SOUT_TO_HDR_GFX_FE0 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE3_ASYNC_SOUT_SEL 0xf4c
> +#define SOUT_TO_HDR_GFX_FE1 (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN1_SOUT_SEL 0xf58
> +#define MIXER_IN1_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN2_SOUT_SEL 0xf5c
> +#define MIXER_IN2_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN3_SOUT_SEL 0xf60
> +#define MIXER_IN3_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN4_SOUT_SEL 0xf64
> +#define MIXER_IN4_SOUT_TO_DISP_MIXER (0 << 0)
> +
> +#define MT8195_VDO1_MIXER_OUT_SOUT_SEL 0xf34
> +#define MIXER_SOUT_TO_HDR_VDO_BE0 (0 << 0)
> +
> +#define MT8195_VDO1_MERGE4_SOUT_SEL 0xf18
> +#define MERGE4_SOUT_TO_VDOSYS0 (0 << 0)
> +#define MERGE4_SOUT_TO_DPI0_SEL (1 << 0)
> +#define MERGE4_SOUT_TO_DPI1_SEL (2 << 0)
> +#define MERGE4_SOUT_TO_DP_INTF0_SEL (3 << 0)
> +
> +#define MT8195_VDO1_VPP_MERGE0_P0_SEL_IN 0xf04
> +#define VPP_MERGE0_P0_SEL_IN_FROM_SVPP2 (0 << 0)
> +#define VPP_MERGE0_P0_SEL_IN_FROM_MDP_RDMA0 (1 << 0)
> +
> +#define MT8195_VDO1_VPP_MERGE0_P1_SEL_IN 0xf08
> +#define VPP_MERGE0_P1_SEL_IN_FROM_SVPP3 (0 << 0)
> +#define VPP_MERGE0_P1_SEL_IN_FROM_MDP_RDMA1 (1 << 0)
> +
> +#define MT8195_VDO1_VPP_MERGE1_P0_SEL_IN 0xf3c
> +#define VPP_MERGE1_P0_SEL_IN_FROM_VPP3_ASYNC_SOUT (0 << 0)
> +#define VPP_MERGE1_P0_SEL_IN_FROM_MDP_RDMA2 (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN1_SEL_IN 0xf24
> +#define MIXER_IN1_SEL_IN_FROM_HDR_VDO_FE0 (0 << 0)
> +#define MIXER_IN1_SEL_IN_FROM_MERGE0_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN2_SEL_IN 0xf28
> +#define MIXER_IN2_SEL_IN_FROM_HDR_VDO_FE1 (0 << 0)
> +#define MIXER_IN2_SEL_IN_FROM_MERGE1_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN3_SEL_IN 0xf2c
> +#define MIXER_IN3_SEL_IN_FROM_HDR_GFX_FE0 (0 << 0)
> +#define MIXER_IN3_SEL_IN_FROM_MERGE2_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_IN4_SEL_IN 0xf30
> +#define MIXER_IN4_SEL_IN_FROM_HDR_GFX_FE1 (0 << 0)
> +#define MIXER_IN4_SEL_IN_FROM_MERGE3_ASYNC_SOUT (1 << 0)
> +
> +#define MT8195_VDO1_MIXER_SOUT_SEL_IN 0xf68
> +#define MIXER_SOUT_SEL_IN_FROM_DISP_MIXER (0 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN1_SOUT (1 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN2_SOUT (2 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN3_SOUTR (3 << 0)
> +#define MIXER_SOUT_SEL_IN_FROM_MIXER_IN4_SOUTR (4 << 0)
> +
> +#define MT8195_VDO1_MERGE4_ASYNC_SEL_IN 0xf50
> +#define MERGE4_ASYNC_SEL_IN_FROM_HDR_VDO_BE0 (0 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MIXER_OUT_SOUT (1 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE0_ASYNC_SOUT (2 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE1_ASYNC_SOUT (3 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE2_ASYNC_SOUT (4 << 0)
> +#define MERGE4_ASYNC_SEL_IN_FROM_MERGE3_ASYNC_SOUT (5 << 0)
> +
> +#define MT8195_VDO1_DISP_DPI0_SEL_IN 0xf0c
> +#define DISP_DPI0_SEL_IN_FROM_VPP_MERGE4_MOUT (0 << 0)
> +#define DISP_DPI0_SEL_IN_FROM_VDO0_MERGE_DL_ASYNC_MOUT (1 << 0)
> +#define DISP_DPI0_SEL_IN_FROM_VDO0_DSC_DL_ASYNC_MOUT (2 << 0)
> +
> +#define MT8195_VDO1_DISP_DPI1_SEL_IN 0xf10
> +#define DISP_DPI1_SEL_IN_FROM_VPP_MERGE4_MOUT (0 << 0)
> +#define DISP_DPI1_SEL_IN_FROM_VDO0_MERGE_DL_ASYNC_MOUT (1 << 0)
> +#define DISP_DPI1_SEL_IN_FROM_VDO0_DSC_DL_ASYNC_MOUT (2 << 0)
> +
> +#define MT8195_VDO1_DISP_DP_INTF0_SEL_IN 0xf14
> +#define DISP_DP_INTF0_SEL_IN_FROM_VPP_MERGE4_MOUT (0 << 0)
> +#define DISP_DP_INTF0_SEL_IN_FROM_VDO0_MERGE_DL_ASYNC_MOUT (1 << 0)
> +#define DISP_DP_INTF0_SEL_IN_FROM_VDO0_DSC_DL_ASYNC_MOUT (2 << 0)
> +
> +static const struct mtk_mmsys_routes mmsys_mt8195_routing_table[] = {
> + {
> + DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0,
> + MT8195_VDO0_OVL_MOUT_EN, MOUT_DISP_OVL0_TO_DISP_RDMA0
> + }, {
> + DDP_COMPONENT_OVL1, DDP_COMPONENT_RDMA1,
> + MT8195_VDO0_OVL_MOUT_EN, MOUT_DISP_OVL1_TO_DISP_RDMA1
> + }, {
> + DDP_COMPONENT_DITHER, DDP_COMPONENT_DSI0,
> + MT8195_VDO0_SEL_IN, SEL_IN_DSI0_FROM_DISP_DITHER0
> + }, {
> + DDP_COMPONENT_DITHER, DDP_COMPONENT_DSI0,
> + MT8195_VDO0_SEL_OUT, DDP_COMPONENT_DSI0
> + }
> +};
> +
> +#endif /* __SOC_MEDIATEK_MT8195_MMSYS_H */
> diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c
> index 080660ef11bf..1fb241750897 100644
> --- a/drivers/soc/mediatek/mtk-mmsys.c
> +++ b/drivers/soc/mediatek/mtk-mmsys.c
> @@ -13,6 +13,7 @@
> #include "mtk-mmsys.h"
> #include "mt8167-mmsys.h"
> #include "mt8183-mmsys.h"
> +#include "mt8195-mmsys.h"
>
> static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = {
> .clk_driver = "clk-mt2701-mm",
> @@ -52,6 +53,12 @@ static const struct mtk_mmsys_driver_data mt8183_mmsys_driver_data = {
> .num_routes = ARRAY_SIZE(mmsys_mt8183_routing_table),
> };
>
> +static const struct mtk_mmsys_driver_data mt8195_vdosys0_driver_data = {
> + .clk_driver = "clk-mt8195-vdo0",
> + .routes = mmsys_mt8195_routing_table,
> + .num_routes = ARRAY_SIZE(mmsys_mt8195_routing_table),
> +};
> +
> struct mtk_mmsys {
> void __iomem *regs;
> const struct mtk_mmsys_driver_data *data;
> @@ -157,6 +164,10 @@ static const struct of_device_id of_match_mtk_mmsys[] = {
> .compatible = "mediatek,mt8183-mmsys",
> .data = &mt8183_mmsys_driver_data,
> },
> + {
> + .compatible = "mediatek,mt8195-vdosys0",
> + .data = &mt8195_vdosys0_driver_data,
> + },
> { }
> };
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-07-07 4:44 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-07 4:12 [PATCH v1 00/17] Add MediaTek SoC DRM (vdosys0) support for mt8195 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:12 ` [PATCH v1 01/17] dt-bindings: mediatek: add definition for mt8195 display jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:33 ` CK Hu
2021-07-07 4:33 ` CK Hu
2021-07-10 6:57 ` Jason-JH Lin
2021-07-10 6:57 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 02/17] dt-bindings: arm: mediatek: add definition for mt8195 mmsys jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:12 ` [PATCH v1 03/17] arm64: dts: mt8195: add display node for vdosys0 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:12 ` [PATCH v1 04/17] soc: mediatek: add mtk-mmsys support for mt8195 vdosys0 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:44 ` CK Hu [this message]
2021-07-07 4:44 ` CK Hu
2021-07-10 6:58 ` Jason-JH Lin
2021-07-10 6:58 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 05/17] drm/mediatek: add mediatek-drm of vdosys0 support for MT8195 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:48 ` CK Hu
2021-07-07 4:48 ` CK Hu
2021-07-10 6:59 ` Jason-JH Lin
2021-07-10 6:59 ` Jason-JH Lin
2021-07-10 6:59 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 06/17] soc: mediatek: add mtk-mutex support for mt8195 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:52 ` CK Hu
2021-07-07 4:52 ` CK Hu
2021-07-10 7:01 ` Jason-JH Lin
2021-07-10 7:01 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 07/17] drm/mediatek: add OVL support for MT8195 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 5:03 ` CK Hu
2021-07-07 5:03 ` CK Hu
2021-07-10 7:05 ` Jason-JH Lin
2021-07-10 7:05 ` Jason-JH Lin
2021-07-10 7:05 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 08/17] drm/mediatek: Add component_del in OVL remove function jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 5:12 ` CK Hu
2021-07-07 5:12 ` CK Hu
2021-07-10 7:06 ` Jason-JH Lin
2021-07-10 7:06 ` Jason-JH Lin
2021-07-10 7:06 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 09/17] drm/mediatek: add OVL support multi-layer jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 5:43 ` CK Hu
2021-07-07 5:43 ` CK Hu
2021-07-10 7:17 ` Jason-JH Lin
2021-07-10 7:17 ` Jason-JH Lin
2021-07-10 7:17 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 10/17] drm/mediatek: add RDMA support for MT8195 jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:12 ` [PATCH v1 11/17] drm/mediatek: add COLOR " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 6:01 ` CK Hu
2021-07-07 6:01 ` CK Hu
2021-07-10 7:21 ` Jason-JH Lin
2021-07-10 7:21 ` Jason-JH Lin
2021-07-10 7:21 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 12/17] drm/mediatek: add CCORR " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 6:02 ` CK Hu
2021-07-07 6:02 ` CK Hu
2021-07-10 7:22 ` Jason-JH Lin
2021-07-10 7:22 ` Jason-JH Lin
2021-07-10 7:22 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 13/17] drm/mediatek: Add AAL " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 6:14 ` CK Hu
2021-07-07 6:14 ` CK Hu
2021-07-10 7:35 ` Jason-JH Lin
2021-07-10 7:35 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 14/17] drm/mediatek: add GAMMA " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:12 ` [PATCH v1 15/17] drm/mediatek: add DITHER " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 4:12 ` [PATCH v1 16/17] drm/mediatek: add MERGE " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 7:02 ` CK Hu
2021-07-07 7:02 ` CK Hu
2021-07-10 7:52 ` Jason-JH Lin
2021-07-10 7:52 ` Jason-JH Lin
2021-07-07 4:12 ` [PATCH v1 17/17] drm/mediatek: add DSC " jason-jh.lin
2021-07-07 4:12 ` jason-jh.lin
2021-07-07 7:35 ` CK Hu
2021-07-07 7:35 ` CK Hu
2021-07-10 7:55 ` Jason-JH Lin
2021-07-10 7:55 ` Jason-JH Lin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1625633061.7824.5.camel@mtksdaap41 \
--to=ck.hu@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=chunkuang.hu@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=fshao@google.com \
--cc=jason-jh.lin@mediatek.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=nancy.lin@mediatek.com \
--cc=singo.chang@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.