* Re: [PATCH v24 01/10] dt-bindings: reset: mt8195: add vdosys1 reset control bit [not found] ` <20220622130824.29143-2-nancy.lin@mediatek.com> @ 2022-06-30 9:40 ` Philipp Zabel 0 siblings, 0 replies; 3+ messages in thread From: Philipp Zabel @ 2022-06-30 9:40 UTC (permalink / raw) To: Nancy.Lin, Rob Herring, Matthias Brugger, Chun-Kuang Hu, wim, AngeloGioacchino Del Regno, linux Cc: David Airlie, Daniel Vetter, Nathan Chancellor, Nick Desaulniers, jason-jh . lin, Yongqiang Niu, devicetree, linux-kernel, linux-arm-kernel, linux-mediatek, dri-devel, llvm, singo.chang, Project_Global_Chrome_Upstream_Group On Mi, 2022-06-22 at 21:08 +0800, Nancy.Lin wrote: > Add vdosys1 reset control bit for MT8195 platform. > > Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> > Reviewed-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Reviewed-by: Rex-BC Chen <rex-bc.chen@mediatek.com> > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Acked-by: Philipp Zabel <p.zabel@pengutronix.de> regards Philipp ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <20220622130824.29143-5-nancy.lin@mediatek.com>]
* Re: [PATCH v24 04/10] soc: mediatek: add mtk_mmsys_update_bits API [not found] ` <20220622130824.29143-5-nancy.lin@mediatek.com> @ 2022-07-08 15:34 ` Matthias Brugger 0 siblings, 0 replies; 3+ messages in thread From: Matthias Brugger @ 2022-07-08 15:34 UTC (permalink / raw) To: Nancy.Lin, Rob Herring, Chun-Kuang Hu, Philipp Zabel, wim, AngeloGioacchino Del Regno, linux Cc: David Airlie, Daniel Vetter, Nathan Chancellor, Nick Desaulniers, jason-jh . lin, Yongqiang Niu, devicetree, linux-kernel, linux-arm-kernel, linux-mediatek, dri-devel, llvm, singo.chang, Project_Global_Chrome_Upstream_Group On 22/06/2022 15:08, Nancy.Lin wrote: > Add mtk_mmsys_update_bits API. Simplify code for update mmsys reg. > It is a preparation for adding support for mmsys config API. > > Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Reviewed-by: CK Hu <ck.hu@mediatek.com> > Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Tested-by: Bo-Chen Chen <rex-bc.chen@mediatek.com> > --- > drivers/soc/mediatek/mtk-mmsys.c | 37 +++++++++++++------------------- > 1 file changed, 15 insertions(+), 22 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c > index a74c86197d6a..ca5bf07114fa 100644 > --- a/drivers/soc/mediatek/mtk-mmsys.c > +++ b/drivers/soc/mediatek/mtk-mmsys.c > @@ -192,22 +192,27 @@ static int mtk_mmsys_find_match_drvdata(struct mtk_mmsys *mmsys, > return -EINVAL; > } > > +static void mtk_mmsys_update_bits(struct mtk_mmsys *mmsys, u32 offset, u32 mask, u32 val) > +{ > + u32 tmp; > + > + tmp = readl_relaxed(mmsys->regs + offset); > + tmp = (tmp & ~mask) | val; > + writel_relaxed(tmp, mmsys->regs + offset); > +} > + > void mtk_mmsys_ddp_connect(struct device *dev, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > struct mtk_mmsys *mmsys = dev_get_drvdata(dev); > const struct mtk_mmsys_routes *routes = mmsys->data->routes; > - u32 reg; > int i; > > for (i = 0; i < mmsys->data->num_routes; i++) > - if (cur == routes[i].from_comp && next == routes[i].to_comp) { > - reg = readl_relaxed(mmsys->regs + routes[i].addr); > - reg &= ~routes[i].mask; > - reg |= routes[i].val; > - writel_relaxed(reg, mmsys->regs + routes[i].addr); > - } > + if (cur == routes[i].from_comp && next == routes[i].to_comp) > + mtk_mmsys_update_bits(mmsys, routes[i].addr, routes[i].mask, > + routes[i].val); > } > EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_connect); > > @@ -217,15 +222,11 @@ void mtk_mmsys_ddp_disconnect(struct device *dev, > { > struct mtk_mmsys *mmsys = dev_get_drvdata(dev); > const struct mtk_mmsys_routes *routes = mmsys->data->routes; > - u32 reg; > int i; > > for (i = 0; i < mmsys->data->num_routes; i++) > - if (cur == routes[i].from_comp && next == routes[i].to_comp) { > - reg = readl_relaxed(mmsys->regs + routes[i].addr); > - reg &= ~routes[i].mask; > - writel_relaxed(reg, mmsys->regs + routes[i].addr); > - } > + if (cur == routes[i].from_comp && next == routes[i].to_comp) > + mtk_mmsys_update_bits(mmsys, routes[i].addr, routes[i].mask, 0); > } > EXPORT_SYMBOL_GPL(mtk_mmsys_ddp_disconnect); > > @@ -234,18 +235,10 @@ static int mtk_mmsys_reset_update(struct reset_controller_dev *rcdev, unsigned l > { > struct mtk_mmsys *mmsys = container_of(rcdev, struct mtk_mmsys, rcdev); > unsigned long flags; > - u32 reg; > > spin_lock_irqsave(&mmsys->lock, flags); > > - reg = readl_relaxed(mmsys->regs + mmsys->data->sw0_rst_offset); > - > - if (assert) > - reg &= ~BIT(id); > - else > - reg |= BIT(id); > - > - writel_relaxed(reg, mmsys->regs + mmsys->data->sw0_rst_offset); > + mtk_mmsys_update_bits(mmsys, mmsys->data->sw0_rst_offset, BIT(id), assert ? 0 : BIT(id)); Let's be this a normal if (assert) else but calling mtk_mmsys_update_bits(). Other then that patch looks good. Matthias > > spin_unlock_irqrestore(&mmsys->lock, flags); > ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <20220622130824.29143-8-nancy.lin@mediatek.com>]
* Re: [PATCH v24 07/10] soc: mediatek: mmsys: add mmsys for support 64 reset bits [not found] ` <20220622130824.29143-8-nancy.lin@mediatek.com> @ 2022-07-08 15:42 ` Matthias Brugger 0 siblings, 0 replies; 3+ messages in thread From: Matthias Brugger @ 2022-07-08 15:42 UTC (permalink / raw) To: Nancy.Lin, Rob Herring, Chun-Kuang Hu, Philipp Zabel, wim, AngeloGioacchino Del Regno, linux Cc: David Airlie, Daniel Vetter, Nathan Chancellor, Nick Desaulniers, jason-jh . lin, Yongqiang Niu, devicetree, linux-kernel, linux-arm-kernel, linux-mediatek, dri-devel, llvm, singo.chang, Project_Global_Chrome_Upstream_Group On 22/06/2022 15:08, Nancy.Lin wrote: > Add mmsys for support 64 reset bits. It is a preparation for MT8195 > vdosys1 HW reset. MT8195 vdosys1 has more than 32 reset bits. > > 1. Add the number of reset bits in mmsys private data > 2. move the whole "reset register code section" behind the > "get mmsys->data" code section for getting the num_resets in mmsys->data. > > Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Reviewed-by: CK Hu <ck.hu@mediatek.com> > Tested-by: Bo-Chen Chen <rex-bc.chen@mediatek.com> > --- > drivers/soc/mediatek/mtk-mmsys.c | 35 ++++++++++++++++++++------------ > drivers/soc/mediatek/mtk-mmsys.h | 1 + > 2 files changed, 23 insertions(+), 13 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c > index 16be77d5acac..47b72ae72cc2 100644 > --- a/drivers/soc/mediatek/mtk-mmsys.c > +++ b/drivers/soc/mediatek/mtk-mmsys.c > @@ -20,6 +20,8 @@ > #include "mt8195-mmsys.h" > #include "mt8365-mmsys.h" > > +#define MMSYS_SW_RESET_PER_REG 32 > + > static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = { > .clk_driver = "clk-mt2701-mm", > .routes = mmsys_default_routing_table, > @@ -86,6 +88,7 @@ static const struct mtk_mmsys_driver_data mt8173_mmsys_driver_data = { > .routes = mmsys_default_routing_table, > .num_routes = ARRAY_SIZE(mmsys_default_routing_table), > .sw0_rst_offset = MT8183_MMSYS_SW0_RST_B, > + .num_resets = 32, > }; > > static const struct mtk_mmsys_match_data mt8173_mmsys_match_data = { > @@ -100,6 +103,7 @@ static const struct mtk_mmsys_driver_data mt8183_mmsys_driver_data = { > .routes = mmsys_mt8183_routing_table, > .num_routes = ARRAY_SIZE(mmsys_mt8183_routing_table), > .sw0_rst_offset = MT8183_MMSYS_SW0_RST_B, > + .num_resets = 32, > }; > > static const struct mtk_mmsys_match_data mt8183_mmsys_match_data = { > @@ -114,6 +118,7 @@ static const struct mtk_mmsys_driver_data mt8186_mmsys_driver_data = { > .routes = mmsys_mt8186_routing_table, > .num_routes = ARRAY_SIZE(mmsys_mt8186_routing_table), > .sw0_rst_offset = MT8186_MMSYS_SW0_RST_B, > + .num_resets = 32, > }; > > static const struct mtk_mmsys_match_data mt8186_mmsys_match_data = { > @@ -288,10 +293,14 @@ static int mtk_mmsys_reset_update(struct reset_controller_dev *rcdev, unsigned l > { > struct mtk_mmsys *mmsys = container_of(rcdev, struct mtk_mmsys, rcdev); > unsigned long flags; > + u32 offset; > + > + offset = (id / MMSYS_SW_RESET_PER_REG) * sizeof(u32); > + id = id % MMSYS_SW_RESET_PER_REG; > > spin_lock_irqsave(&mmsys->lock, flags); > > - mtk_mmsys_update_bits(mmsys, mmsys->data->sw0_rst_offset, BIT(id), > + mtk_mmsys_update_bits(mmsys, mmsys->data->sw0_rst_offset + offset, BIT(id), > assert ? 0 : BIT(id), NULL); reg = mmsys->data->sw0_rst_offset + offset; mtk_mmsys_update_bits(mmsys, reg, BIT(id), assert ? 0 : BIT(id), NULL); Other then that, patch looks good. By the way setting val depending on assert in the function call gets (for me) hard to read, as I said earlier. Regards, Matthias > > spin_unlock_irqrestore(&mmsys->lock, flags); > @@ -349,18 +358,6 @@ static int mtk_mmsys_probe(struct platform_device *pdev) > return ret; > } > > - spin_lock_init(&mmsys->lock); > - > - mmsys->rcdev.owner = THIS_MODULE; > - mmsys->rcdev.nr_resets = 32; > - mmsys->rcdev.ops = &mtk_mmsys_reset_ops; > - mmsys->rcdev.of_node = pdev->dev.of_node; > - ret = devm_reset_controller_register(&pdev->dev, &mmsys->rcdev); > - if (ret) { > - dev_err(&pdev->dev, "Couldn't register mmsys reset controller: %d\n", ret); > - return ret; > - } > - > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > if (!res) { > dev_err(dev, "Couldn't get mmsys resource\n"); > @@ -382,6 +379,18 @@ static int mtk_mmsys_probe(struct platform_device *pdev) > mmsys->data = match_data->drv_data[0]; > } > > + spin_lock_init(&mmsys->lock); > + > + mmsys->rcdev.owner = THIS_MODULE; > + mmsys->rcdev.nr_resets = mmsys->data->num_resets; > + mmsys->rcdev.ops = &mtk_mmsys_reset_ops; > + mmsys->rcdev.of_node = pdev->dev.of_node; > + ret = devm_reset_controller_register(&pdev->dev, &mmsys->rcdev); > + if (ret) { > + dev_err(&pdev->dev, "Couldn't register mmsys reset controller: %d\n", ret); > + return ret; > + } > + > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > ret = cmdq_dev_get_client_reg(dev, &mmsys->cmdq_base, 0); > if (ret) > diff --git a/drivers/soc/mediatek/mtk-mmsys.h b/drivers/soc/mediatek/mtk-mmsys.h > index f01ba206481d..20a271b80b3b 100644 > --- a/drivers/soc/mediatek/mtk-mmsys.h > +++ b/drivers/soc/mediatek/mtk-mmsys.h > @@ -92,6 +92,7 @@ struct mtk_mmsys_driver_data { > const struct mtk_mmsys_routes *routes; > const unsigned int num_routes; > const u16 sw0_rst_offset; > + const u32 num_resets; > }; > > struct mtk_mmsys_match_data { ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-07-08 15:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20220622130824.29143-1-nancy.lin@mediatek.com>
[not found] ` <20220622130824.29143-2-nancy.lin@mediatek.com>
2022-06-30 9:40 ` [PATCH v24 01/10] dt-bindings: reset: mt8195: add vdosys1 reset control bit Philipp Zabel
[not found] ` <20220622130824.29143-5-nancy.lin@mediatek.com>
2022-07-08 15:34 ` [PATCH v24 04/10] soc: mediatek: add mtk_mmsys_update_bits API Matthias Brugger
[not found] ` <20220622130824.29143-8-nancy.lin@mediatek.com>
2022-07-08 15:42 ` [PATCH v24 07/10] soc: mediatek: mmsys: add mmsys for support 64 reset bits Matthias Brugger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).