On Fri, 28 Aug 2020 at 08:08, Viresh Kumar <viresh.kumar@xxxxxxxxxx> 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@xxxxxxxxxx> 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 >