[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPDyKFpdZhzXQv3hpTzf3UkJDhFqBhgMXCqVfAfE6PejLCxvfg@mail.gmail.com>
Date: Fri, 28 Aug 2020 10:43:50 +0200
From: Ulf Hansson <ulf.hansson@...aro.org>
To: Viresh Kumar <viresh.kumar@...aro.org>
Cc: Rajendra Nayak <rnayak@...eaurora.org>,
Adrian Hunter <adrian.hunter@...el.com>,
Andy Gross <agross@...nel.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Linux PM <linux-pm@...r.kernel.org>,
Vincent Guittot <vincent.guittot@...aro.org>,
Rafael Wysocki <rjw@...ysocki.net>,
Stephen Boyd <sboyd@...nel.org>, Nishanth Menon <nm@...com>,
Douglas Anderson <dianders@...omium.org>,
Naresh Kamboju <naresh.kamboju@...aro.org>,
linux-arm-msm <linux-arm-msm@...r.kernel.org>,
"linux-mmc@...r.kernel.org" <linux-mmc@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH V2 4/8] mmc: sdhci-msm: Unconditionally call dev_pm_opp_of_remove_table()
On Fri, 28 Aug 2020 at 08:08, Viresh Kumar <viresh.kumar@...aro.org> wrote:
>
> dev_pm_opp_of_remove_table() doesn't report any errors when it fails to
> find the OPP table with error -ENODEV (i.e. OPP table not present for
> the device). And we can call dev_pm_opp_of_remove_table()
> unconditionally here.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@...aro.org>
Replaced v1 with v2 on my next branch, thanks!
Just to be sure, this patch doesn't depend on any changes for the opp
core that are queued for v5.10?
Kind regards
Uffe
>
> ---
> V2:
> - Compare with -ENODEV only for failures.
> - Create new label to put clkname.
> ---
> drivers/mmc/host/sdhci-msm.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 5a33389037cd..f7beaec6412e 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -263,7 +263,6 @@ struct sdhci_msm_host {
> unsigned long clk_rate;
> struct mmc_host *mmc;
> struct opp_table *opp_table;
> - bool has_opp_table;
> bool use_14lpp_dll_reset;
> bool tuning_done;
> bool calibration_done;
> @@ -2285,11 +2284,9 @@ static int sdhci_msm_probe(struct platform_device *pdev)
>
> /* OPP table is optional */
> ret = dev_pm_opp_of_add_table(&pdev->dev);
> - if (!ret) {
> - msm_host->has_opp_table = true;
> - } else if (ret != -ENODEV) {
> + if (ret && ret != -ENODEV) {
> dev_err(&pdev->dev, "Invalid OPP table in Device tree\n");
> - goto opp_cleanup;
> + goto opp_put_clkname;
> }
>
> /* Vote for maximum clock rate for maximum performance */
> @@ -2453,8 +2450,8 @@ static int sdhci_msm_probe(struct platform_device *pdev)
> clk_bulk_disable_unprepare(ARRAY_SIZE(msm_host->bulk_clks),
> msm_host->bulk_clks);
> opp_cleanup:
> - if (msm_host->has_opp_table)
> - dev_pm_opp_of_remove_table(&pdev->dev);
> + dev_pm_opp_of_remove_table(&pdev->dev);
> +opp_put_clkname:
> dev_pm_opp_put_clkname(msm_host->opp_table);
> bus_clk_disable:
> if (!IS_ERR(msm_host->bus_clk))
> @@ -2474,8 +2471,7 @@ static int sdhci_msm_remove(struct platform_device *pdev)
>
> sdhci_remove_host(host, dead);
>
> - if (msm_host->has_opp_table)
> - dev_pm_opp_of_remove_table(&pdev->dev);
> + dev_pm_opp_of_remove_table(&pdev->dev);
> dev_pm_opp_put_clkname(msm_host->opp_table);
> pm_runtime_get_sync(&pdev->dev);
> pm_runtime_disable(&pdev->dev);
> --
> 2.25.0.rc1.19.g042ed3e048af
>
Powered by blists - more mailing lists