Re: [PATCH 09/10] soc: qcom: rpmh-rsc: Save base address of drv
From: Ulf Hansson
Date: Fri Jan 14 2022 - 07:36:28 EST
On Sun, 9 Jan 2022 at 18:26, Maulik Shah <quic_mkshah@xxxxxxxxxxx> wrote:
>
> Add changes to save drv's base address for rsc. This is
> used to read drv's configuration such as solver mode is
> supported or to write into CONTROL_TCS registers.
>
> Signed-off-by: Maulik Shah <quic_mkshah@xxxxxxxxxxx>
Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
Kind regards
Uffe
> ---
> drivers/soc/qcom/rpmh-internal.h | 2 ++
> drivers/soc/qcom/rpmh-rsc.c | 18 ++++++++----------
> 2 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/soc/qcom/rpmh-internal.h b/drivers/soc/qcom/rpmh-internal.h
> index 32ac117..6770bbb 100644
> --- a/drivers/soc/qcom/rpmh-internal.h
> +++ b/drivers/soc/qcom/rpmh-internal.h
> @@ -91,6 +91,7 @@ struct rpmh_ctrlr {
> * Resource State Coordinator controller (RSC)
> *
> * @name: Controller identifier.
> + * @base: Start address of the DRV registers in this controller.
> * @tcs_base: Start address of the TCS registers in this controller.
> * @id: Instance id in the controller (Direct Resource Voter).
> * @num_tcs: Number of TCSes in this DRV.
> @@ -115,6 +116,7 @@ struct rpmh_ctrlr {
> */
> struct rsc_drv {
> const char *name;
> + void __iomem *base;
> void __iomem *tcs_base;
> int id;
> int num_tcs;
> diff --git a/drivers/soc/qcom/rpmh-rsc.c b/drivers/soc/qcom/rpmh-rsc.c
> index 5875ad5..c2a7c6c 100644
> --- a/drivers/soc/qcom/rpmh-rsc.c
> +++ b/drivers/soc/qcom/rpmh-rsc.c
> @@ -882,8 +882,7 @@ static int rpmh_rsc_pd_attach(struct rsc_drv *drv, struct device *dev)
> return dev_pm_genpd_add_notifier(dev, &drv->genpd_nb);
> }
>
> -static int rpmh_probe_tcs_config(struct platform_device *pdev,
> - struct rsc_drv *drv, void __iomem *base)
> +static int rpmh_probe_tcs_config(struct platform_device *pdev, struct rsc_drv *drv)
> {
> struct tcs_type_config {
> u32 type;
> @@ -897,9 +896,9 @@ static int rpmh_probe_tcs_config(struct platform_device *pdev,
> ret = of_property_read_u32(dn, "qcom,tcs-offset", &offset);
> if (ret)
> return ret;
> - drv->tcs_base = base + offset;
> + drv->tcs_base = drv->base + offset;
>
> - config = readl_relaxed(base + DRV_PRNT_CHLD_CONFIG);
> + config = readl_relaxed(drv->base + DRV_PRNT_CHLD_CONFIG);
>
> max_tcs = config;
> max_tcs &= DRV_NUM_TCS_MASK << (DRV_NUM_TCS_SHIFT * drv->id);
> @@ -961,7 +960,6 @@ static int rpmh_rsc_probe(struct platform_device *pdev)
> char drv_id[10] = {0};
> int ret, irq;
> u32 solver_config;
> - void __iomem *base;
>
> /*
> * Even though RPMh doesn't directly use cmd-db, all of its children
> @@ -988,11 +986,11 @@ static int rpmh_rsc_probe(struct platform_device *pdev)
> drv->name = dev_name(&pdev->dev);
>
> snprintf(drv_id, ARRAY_SIZE(drv_id), "drv-%d", drv->id);
> - base = devm_platform_ioremap_resource_byname(pdev, drv_id);
> - if (IS_ERR(base))
> - return PTR_ERR(base);
> + drv->base = devm_platform_ioremap_resource_byname(pdev, drv_id);
> + if (IS_ERR(drv->base))
> + return PTR_ERR(drv->base);
>
> - ret = rpmh_probe_tcs_config(pdev, drv, base);
> + ret = rpmh_probe_tcs_config(pdev, drv);
> if (ret)
> return ret;
>
> @@ -1015,7 +1013,7 @@ static int rpmh_rsc_probe(struct platform_device *pdev)
> * 'HW solver' mode where they can be in autonomous mode executing low
> * power mode to power down.
> */
> - solver_config = readl_relaxed(base + DRV_SOLVER_CONFIG);
> + solver_config = readl_relaxed(drv->base + DRV_SOLVER_CONFIG);
> solver_config &= DRV_HW_SOLVER_MASK << DRV_HW_SOLVER_SHIFT;
> solver_config = solver_config >> DRV_HW_SOLVER_SHIFT;
> if (!solver_config) {
> --
> 2.7.4
>