[PATCH v4] soc: mediatek: Add support always on flag

Matthias Brugger matthias.bgg at gmail.com
Fri Jun 17 04:52:45 PDT 2022



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 at collabora.com>
> Signed-off-by: Chunfeng Yun <chunfeng.yun at 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



More information about the Linux-mediatek mailing list