Message ID | 20220617095841.23031-1-chunfeng.yun@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4] soc: mediatek: Add support always on flag | expand |
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@collabora.com> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> 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. 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
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@collabora.com> > > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> > > 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
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