lkml.org 
[lkml]   [2017]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v2 07/10] soc: mediatek: refine scysys for mediatek platforms
From
Date


On 02/06/2017 01:15 PM, Mars Cheng wrote:
> This adds 2 refinements: avoid fixed spm power statue and add vdec item
>

Please be more explicit in the commit message.

> Signed-off-by: Mars Cheng <mars.cheng@mediatek.com>
> Signed-off-by: Kevin-CW Chen <kevin-cw.chen@mediatek.com>
> ---
> drivers/soc/mediatek/mtk-scpsys.c | 35 +++++++++++++++++++++++++++++------
> 1 file changed, 29 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c
> index beb7916..a8ba800 100644
> --- a/drivers/soc/mediatek/mtk-scpsys.c
> +++ b/drivers/soc/mediatek/mtk-scpsys.c
> @@ -71,6 +71,7 @@ enum clk_id {
> CLK_VENC,
> CLK_VENC_LT,
> CLK_ETHIF,
> + CLK_VDEC,
> CLK_MAX,
> };
>
> @@ -81,6 +82,7 @@ enum clk_id {
> "venc",
> "venc_lt",
> "ethif",
> + "vdec",
> NULL,
> };

Put CLK_VDEC addition in the patch where you add support for mt6797.

Thanks,
Matthias

>
> @@ -107,21 +109,28 @@ struct scp_domain {
> struct regulator *supply;
> };
>
> +struct scp_ctrl_reg {
> + int pwr_sta_offs;
> + int pwr_sta2nd_offs;
> +};
> +
> struct scp {
> struct scp_domain *domains;
> struct genpd_onecell_data pd_data;
> struct device *dev;
> void __iomem *base;
> struct regmap *infracfg;
> + struct scp_ctrl_reg ctrl_reg;
> };
>
> static int scpsys_domain_is_on(struct scp_domain *scpd)
> {
> struct scp *scp = scpd->scp;
>
> - u32 status = readl(scp->base + SPM_PWR_STATUS) & scpd->data->sta_mask;
> - u32 status2 = readl(scp->base + SPM_PWR_STATUS_2ND) &
> - scpd->data->sta_mask;
> + u32 status = readl(scp->base + scp->ctrl_reg.pwr_sta_offs) &
> + scpd->data->sta_mask;
> + u32 status2 = readl(scp->base + scp->ctrl_reg.pwr_sta2nd_offs) &
> + scpd->data->sta_mask;
>
> /*
> * A domain is on when both status bits are set. If only one is set
> @@ -346,7 +355,8 @@ static void init_clks(struct platform_device *pdev, struct clk **clk)
> }
>
> static struct scp *init_scp(struct platform_device *pdev,
> - const struct scp_domain_data *scp_domain_data, int num)
> + const struct scp_domain_data *scp_domain_data, int num,
> + struct scp_ctrl_reg *scp_ctrl_reg)
> {
> struct genpd_onecell_data *pd_data;
> struct resource *res;
> @@ -358,6 +368,9 @@ static struct scp *init_scp(struct platform_device *pdev,
> if (!scp)
> return ERR_PTR(-ENOMEM);
>
> + scp->ctrl_reg.pwr_sta_offs = scp_ctrl_reg->pwr_sta_offs;
> + scp->ctrl_reg.pwr_sta2nd_offs = scp_ctrl_reg->pwr_sta2nd_offs;
> +
> scp->dev = &pdev->dev;
>
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> @@ -556,8 +569,13 @@ static void mtk_register_power_domains(struct platform_device *pdev,
> static int __init scpsys_probe_mt2701(struct platform_device *pdev)
> {
> struct scp *scp;
> + struct scp_ctrl_reg scp_reg;
>
> - scp = init_scp(pdev, scp_domain_data_mt2701, NUM_DOMAINS_MT2701);
> + scp_reg.pwr_sta_offs = SPM_PWR_STATUS;
> + scp_reg.pwr_sta2nd_offs = SPM_PWR_STATUS_2ND;
> +
> + scp = init_scp(pdev, scp_domain_data_mt2701, NUM_DOMAINS_MT2701,
> + &scp_reg);
> if (IS_ERR(scp))
> return PTR_ERR(scp);
>
> @@ -667,8 +685,13 @@ static int __init scpsys_probe_mt8173(struct platform_device *pdev)
> struct scp *scp;
> struct genpd_onecell_data *pd_data;
> int ret;
> + struct scp_ctrl_reg scp_reg;
> +
> + scp_reg.pwr_sta_offs = SPM_PWR_STATUS;
> + scp_reg.pwr_sta2nd_offs = SPM_PWR_STATUS_2ND;
>
> - scp = init_scp(pdev, scp_domain_data_mt8173, NUM_DOMAINS_MT8173);
> + scp = init_scp(pdev, scp_domain_data_mt8173, NUM_DOMAINS_MT8173,
> + &scp_reg);
> if (IS_ERR(scp))
> return PTR_ERR(scp);
>
>

\
 
 \ /
  Last update: 2017-02-12 00:16    [W:0.282 / U:1.556 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site