Messages in this thread | | | From | Enric Balletbo Serra <> | Date | Mon, 31 May 2021 23:36:07 +0200 | Subject | Re: [PATCH 2/3] soc: mtk-pm-domains: do not register smi node as syscon |
| |
Hi Hsin-Yi,
(again without html, sorry for the noise)
Thank you for the patch.
Missatge de Hsin-Yi Wang <hsinyi@chromium.org> del dia dl., 31 de maig 2021 a les 6:35: > > Mediatek requires mmsys clocks to be unprepared during suspend, > otherwise system has chances to hang. > > syscon_regmap_lookup_by_phandle_optional() will attach and prepare the > first clock in smi node, leading to additional prepare to the clock > which is not balanced with the prepare/unprepare pair in resume/suspend > callbacks. > > If a power domain node requests an smi node and the smi node's first > clock is an mmsys clock, it will results in an unstabke suspend resume.
Typo s/unstabke/unstable/
I think it would be nice to have a Fixes tag for that patch. So can be picked for the stable kernel more easily.
> > Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
I have a nit below but the patch looks good to me. So
Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> --- > drivers/soc/mediatek/mtk-pm-domains.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-pm-domains.c b/drivers/soc/mediatek/mtk-pm-domains.c > index 536d8c64b2b4..a9ba71eee4bb 100644 > --- a/drivers/soc/mediatek/mtk-pm-domains.c > +++ b/drivers/soc/mediatek/mtk-pm-domains.c > @@ -296,7 +296,7 @@ generic_pm_domain *scpsys_add_one_domain(struct scpsys *scpsys, struct device_no > { > const struct scpsys_domain_data *domain_data; > struct scpsys_domain *pd; > - struct device_node *root_node = scpsys->dev->of_node; > + struct device_node *root_node = scpsys->dev->of_node, *smi_node;
nit: Personal preference, but I'd prefer to add the smi_node in a new line, so it's really clear that the only thing you are doing here is adding a new variable.
> struct property *prop; > const char *clk_name; > int i, ret, num_clks; > @@ -352,9 +352,13 @@ generic_pm_domain *scpsys_add_one_domain(struct scpsys *scpsys, struct device_no > if (IS_ERR(pd->infracfg)) > return ERR_CAST(pd->infracfg); > > - pd->smi = syscon_regmap_lookup_by_phandle_optional(node, "mediatek,smi"); > - if (IS_ERR(pd->smi)) > - return ERR_CAST(pd->smi); > + smi_node = of_parse_phandle(node, "mediatek,smi", 0); > + if (smi_node) { > + pd->smi = device_node_to_regmap(smi_node); > + of_node_put(smi_node); > + if (IS_ERR(pd->smi)) > + return ERR_CAST(pd->smi); > + } > > num_clks = of_clk_get_parent_count(node); > if (num_clks > 0) { > -- > 2.32.0.rc0.204.g9fa02ecfa5-goog > > > _______________________________________________ > Linux-mediatek mailing list > Linux-mediatek@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek
| |