Messages in this thread | | | Subject | Re: [PATCH v2 07/10] soc: mediatek: refine scysys for mediatek platforms | From | Matthias Brugger <> | Date | Sun, 12 Feb 2017 00:15:14 +0100 |
| |
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); > >
| |