Message ID | f0341655361aa0107266ed9c838aa8bcfe50a3ed.1611738418.git.viresh.kumar@linaro.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Chanwoo Choi |
Headers | show |
Series | None | expand |
On 27-01-21, 14:40, Viresh Kumar wrote: > dev_pm_opp_set_bw() is getting removed and dev_pm_opp_set_opp() should > be used instead. Migrate to the new API. > > We don't want the OPP core to manage the clk for this driver, migrate to > dev_pm_opp_of_add_table_noclk() to make sure dev_pm_opp_set_opp() > doesn't have any side effects. > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > Dmitry, > > This is based over the patches sent here: > > https://lore.kernel.org/lkml/6c2160ff30a8f421563793020264cf9f533f293c.1611738228.git.viresh.kumar@linaro.org/ > > This should fix the problem you mentioned earlier. Will push this for > linux-next unless you have any issues with it. > > drivers/devfreq/tegra30-devfreq.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c > index 117cad7968ab..31f7dec5990b 100644 > --- a/drivers/devfreq/tegra30-devfreq.c > +++ b/drivers/devfreq/tegra30-devfreq.c > @@ -647,7 +647,7 @@ static int tegra_devfreq_target(struct device *dev, unsigned long *freq, > return PTR_ERR(opp); > } > > - ret = dev_pm_opp_set_bw(dev, opp); > + ret = dev_pm_opp_set_opp(dev, opp); > dev_pm_opp_put(opp); > > return ret; > @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return err; > } > > - err = dev_pm_opp_of_add_table(&pdev->dev); > + err = dev_pm_opp_of_add_table_noclk(&pdev->dev); Plus this, somehow was left uncommited in my tree :( diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c index 31f7dec5990b..ce83f883ca65 100644 --- a/drivers/devfreq/tegra30-devfreq.c +++ b/drivers/devfreq/tegra30-devfreq.c @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) return err; } - err = dev_pm_opp_of_add_table_noclk(&pdev->dev); + err = dev_pm_opp_of_add_table_noclk(&pdev->dev, 0); if (err) { dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); goto put_hw;
27.01.2021 13:02, Viresh Kumar пишет: > On 27-01-21, 14:40, Viresh Kumar wrote: >> dev_pm_opp_set_bw() is getting removed and dev_pm_opp_set_opp() should >> be used instead. Migrate to the new API. >> >> We don't want the OPP core to manage the clk for this driver, migrate to >> dev_pm_opp_of_add_table_noclk() to make sure dev_pm_opp_set_opp() >> doesn't have any side effects. >> >> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> >> --- >> Dmitry, >> >> This is based over the patches sent here: >> >> https://lore.kernel.org/lkml/6c2160ff30a8f421563793020264cf9f533f293c.1611738228.git.viresh.kumar@linaro.org/ >> >> This should fix the problem you mentioned earlier. Will push this for >> linux-next unless you have any issues with it. >> >> drivers/devfreq/tegra30-devfreq.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c >> index 117cad7968ab..31f7dec5990b 100644 >> --- a/drivers/devfreq/tegra30-devfreq.c >> +++ b/drivers/devfreq/tegra30-devfreq.c >> @@ -647,7 +647,7 @@ static int tegra_devfreq_target(struct device *dev, unsigned long *freq, >> return PTR_ERR(opp); >> } >> >> - ret = dev_pm_opp_set_bw(dev, opp); >> + ret = dev_pm_opp_set_opp(dev, opp); >> dev_pm_opp_put(opp); >> >> return ret; >> @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) >> return err; >> } >> >> - err = dev_pm_opp_of_add_table(&pdev->dev); >> + err = dev_pm_opp_of_add_table_noclk(&pdev->dev); > > Plus this, somehow was left uncommited in my tree :( > > diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c > index 31f7dec5990b..ce83f883ca65 100644 > --- a/drivers/devfreq/tegra30-devfreq.c > +++ b/drivers/devfreq/tegra30-devfreq.c > @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return err; > } > > - err = dev_pm_opp_of_add_table_noclk(&pdev->dev); > + err = dev_pm_opp_of_add_table_noclk(&pdev->dev, 0); > if (err) { > dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); > goto put_hw; > Sadly this doesn't work because we missed that clk is assigned to opp_table when OPP table is allocated and not when it's added to device. Hence we're now set back to the dev_pm_opp_clear_clk() variant. What about to add a new OPP API which will allow OPP users to configure behaviour that user wants from OPP core in a generic way, something like this: struct opp_config { bool no_clk; ... }; devm_pm_opp_set_config(dev, struct opp_config); dev_pm_opp_set_config(dev, struct opp_config); dev_pm_opp_unset_config(dev); Or maybe even rename it dev_pm_opp_allocate_table(dev, struct opp_config), which will allow users to directly allocate OPP table instead of relying on the implicit allocations. Then there won't be a need for drivers to use a dummy devm_pm_opp_set_clkname(dev, NULL) just to allocate the table usable for dev_pm_opp_set_rate().
On 27-01-21, 18:58, Dmitry Osipenko wrote: > Sadly this doesn't work because we missed that clk is assigned to > opp_table when OPP table is allocated and not when it's added to device. Ahh, I missed that. I have bumped up the other patchset to V2, that should work fine with this patch for tegra30 (this shouldn't require any update). Everything is pushed in opp/linux-next, fetch and try it. Thanks.
On 1/27/21 6:10 PM, Viresh Kumar wrote: > dev_pm_opp_set_bw() is getting removed and dev_pm_opp_set_opp() should > be used instead. Migrate to the new API. > > We don't want the OPP core to manage the clk for this driver, migrate to > dev_pm_opp_of_add_table_noclk() to make sure dev_pm_opp_set_opp() > doesn't have any side effects. > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > Dmitry, > > This is based over the patches sent here: > > https://protect2.fireeye.com/v1/url?k=72d88562-2d43bc78-72d90e2d-000babff24ad-e4764030101eaedc&q=1&e=a25b5db7-346b-47b2-9c0a-3945e579f389&u=https%3A%2F%2Flore.kernel.org%2Flkml%2F6c2160ff30a8f421563793020264cf9f533f293c.1611738228.git.viresh.kumar%40linaro.org%2F > > This should fix the problem you mentioned earlier. Will push this for > linux-next unless you have any issues with it. > > drivers/devfreq/tegra30-devfreq.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c > index 117cad7968ab..31f7dec5990b 100644 > --- a/drivers/devfreq/tegra30-devfreq.c > +++ b/drivers/devfreq/tegra30-devfreq.c > @@ -647,7 +647,7 @@ static int tegra_devfreq_target(struct device *dev, unsigned long *freq, > return PTR_ERR(opp); > } > > - ret = dev_pm_opp_set_bw(dev, opp); > + ret = dev_pm_opp_set_opp(dev, opp); > dev_pm_opp_put(opp); > > return ret; > @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return err; > } > > - err = dev_pm_opp_of_add_table(&pdev->dev); > + err = dev_pm_opp_of_add_table_noclk(&pdev->dev); > if (err) { > dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); > goto put_hw; > Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
27.01.2021 12:10, Viresh Kumar пишет: > dev_pm_opp_set_bw() is getting removed and dev_pm_opp_set_opp() should > be used instead. Migrate to the new API. > > We don't want the OPP core to manage the clk for this driver, migrate to > dev_pm_opp_of_add_table_noclk() to make sure dev_pm_opp_set_opp() > doesn't have any side effects. > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > Dmitry, > > This is based over the patches sent here: > > https://lore.kernel.org/lkml/6c2160ff30a8f421563793020264cf9f533f293c.1611738228.git.viresh.kumar@linaro.org/ > > This should fix the problem you mentioned earlier. Will push this for > linux-next unless you have any issues with it. > > drivers/devfreq/tegra30-devfreq.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c > index 117cad7968ab..31f7dec5990b 100644 > --- a/drivers/devfreq/tegra30-devfreq.c > +++ b/drivers/devfreq/tegra30-devfreq.c > @@ -647,7 +647,7 @@ static int tegra_devfreq_target(struct device *dev, unsigned long *freq, > return PTR_ERR(opp); > } > > - ret = dev_pm_opp_set_bw(dev, opp); > + ret = dev_pm_opp_set_opp(dev, opp); > dev_pm_opp_put(opp); > > return ret; > @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return err; > } > > - err = dev_pm_opp_of_add_table(&pdev->dev); > + err = dev_pm_opp_of_add_table_noclk(&pdev->dev); > if (err) { > dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); > goto put_hw; > Tested-by: Dmitry Osipenko <digetx@gmail.com>
diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c index 117cad7968ab..31f7dec5990b 100644 --- a/drivers/devfreq/tegra30-devfreq.c +++ b/drivers/devfreq/tegra30-devfreq.c @@ -647,7 +647,7 @@ static int tegra_devfreq_target(struct device *dev, unsigned long *freq, return PTR_ERR(opp); } - ret = dev_pm_opp_set_bw(dev, opp); + ret = dev_pm_opp_set_opp(dev, opp); dev_pm_opp_put(opp); return ret; @@ -849,7 +849,7 @@ static int tegra_devfreq_probe(struct platform_device *pdev) return err; } - err = dev_pm_opp_of_add_table(&pdev->dev); + err = dev_pm_opp_of_add_table_noclk(&pdev->dev); if (err) { dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); goto put_hw;
dev_pm_opp_set_bw() is getting removed and dev_pm_opp_set_opp() should be used instead. Migrate to the new API. We don't want the OPP core to manage the clk for this driver, migrate to dev_pm_opp_of_add_table_noclk() to make sure dev_pm_opp_set_opp() doesn't have any side effects. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- Dmitry, This is based over the patches sent here: https://lore.kernel.org/lkml/6c2160ff30a8f421563793020264cf9f533f293c.1611738228.git.viresh.kumar@linaro.org/ This should fix the problem you mentioned earlier. Will push this for linux-next unless you have any issues with it. drivers/devfreq/tegra30-devfreq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)