Re: [PATCH v4] soc: mediatek: Add support always on flag
From: Chunfeng Yun
Date: Sun Jun 19 2022 - 03:30:24 EST
On Fri, 2022-06-17 at 13:52 +0200, Matthias Brugger wrote:
>
> On 17/06/2022 11:58, Chunfeng Yun wrote:
> > There is a t-phy shared by PCIe and USB3 on mt8195, if the t-phy is
> > used by PCIe, when power off its mtcmos, need software reset it
> > (workaround way, usually hardware do it, but has an issue on
> > mt8195),
> > but it has side effect to USB2 phy(works with USB3 phy to support
> > USB3.2 Gen1), so add support GENPD_FLAG_ALWAYS_ON flag, and make
> > its
> > power always on;
> > Another reason is that USB3.2 Gen1/2 need keep power always on when
> > support runtime-pm due to hardware limitation until now;
> >
> > Reviewed-by: AngeloGioacchino Del Regno <
> > angelogioacchino.delregno@xxxxxxxxxxxxx>
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@xxxxxxxxxxxx>
>
> I changed the subject line to add pm-domains to it. Also Reviewed-by
> tags come
> under the patch author Signed-off-by tag.
>
> For the next time, please try to get a better commit message. It's
> difficult to
> understand when reading the first time.
Got it, thanks a lot
>
> Applied, thanks!
>
> > ---
> > v4: add reviewed-by AngeloGioacchino
> >
> > v3: make always-on flag exclusive with defualt-off flag
> >
> > v2: keep active_wakeup flag for mt8195
> > ---
> > drivers/soc/mediatek/mt8195-pm-domains.h | 2 +-
> > drivers/soc/mediatek/mtk-pm-domains.c | 3 +++
> > drivers/soc/mediatek/mtk-pm-domains.h | 2 ++
> > 3 files changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/soc/mediatek/mt8195-pm-domains.h
> > b/drivers/soc/mediatek/mt8195-pm-domains.h
> > index 938f4d51f5ae..0529d130b675 100644
> > --- a/drivers/soc/mediatek/mt8195-pm-domains.h
> > +++ b/drivers/soc/mediatek/mt8195-pm-domains.h
> > @@ -67,7 +67,7 @@ static const struct scpsys_domain_data
> > scpsys_domain_data_mt8195[] = {
> > .ctl_offs = 0x334,
> > .pwr_sta_offs = 0x174,
> > .pwr_sta2nd_offs = 0x178,
> > - .caps = MTK_SCPD_ACTIVE_WAKEUP,
> > + .caps = MTK_SCPD_ACTIVE_WAKEUP | MTK_SCPD_ALWAYS_ON,
> > },
> > [MT8195_POWER_DOMAIN_CSI_RX_TOP] = {
> > .name = "csi_rx_top",
> > diff --git a/drivers/soc/mediatek/mtk-pm-domains.c
> > b/drivers/soc/mediatek/mtk-pm-domains.c
> > index 5ced254b082b..a3dae391a38a 100644
> > --- a/drivers/soc/mediatek/mtk-pm-domains.c
> > +++ b/drivers/soc/mediatek/mtk-pm-domains.c
> > @@ -428,6 +428,9 @@ generic_pm_domain *scpsys_add_one_domain(struct
> > scpsys *scpsys, struct device_no
> > dev_err(scpsys->dev, "%pOF: failed to power on
> > domain: %d\n", node, ret);
> > goto err_put_subsys_clocks;
> > }
> > +
> > + if (MTK_SCPD_CAPS(pd, MTK_SCPD_ALWAYS_ON))
> > + pd->genpd.flags |= GENPD_FLAG_ALWAYS_ON;
> > }
> >
> > if (scpsys->domains[id]) {
> > diff --git a/drivers/soc/mediatek/mtk-pm-domains.h
> > b/drivers/soc/mediatek/mtk-pm-domains.h
> > index daa24e890dd4..7d3c0c36316c 100644
> > --- a/drivers/soc/mediatek/mtk-pm-domains.h
> > +++ b/drivers/soc/mediatek/mtk-pm-domains.h
> > @@ -8,6 +8,8 @@
> > #define MTK_SCPD_SRAM_ISO BIT(2)
> > #define MTK_SCPD_KEEP_DEFAULT_OFF BIT(3)
> > #define MTK_SCPD_DOMAIN_SUPPLY BIT(4)
> > +/* can't set MTK_SCPD_KEEP_DEFAULT_OFF at the same time */
> > +#define MTK_SCPD_ALWAYS_ON BIT(5)
> > #define MTK_SCPD_CAPS(_scpd, _x) ((_scpd)->data->caps & (_x))
> >
> > #define SPM_VDE_PWR_CON 0x0210