Message ID | 20201217180638.22748-42-digetx@gmail.com |
---|---|
State | New |
Headers | show |
Series | Introduce core voltage scaling for NVIDIA Tegra20/30 SoCs | expand |
On Thu, Dec 17, 2020 at 09:06:31PM +0300, Dmitry Osipenko wrote: > Use common devm_tegra_core_dev_init_opp_table() helper for the OPP table > initialization. > > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- > drivers/memory/tegra/tegra20-emc.c | 57 +++--------------------------- > 1 file changed, 4 insertions(+), 53 deletions(-) If there was no more Tegra MC work planned, this could easily go via Tegra SoC tree. However I expect still work of your interconnect patches, so maybe it's better to stick these in same tree. In such case I would need a stable tag with the devm_tegra_core_dev_init_opp_table() helper for memory controller tree. Best regards, Krzysztof
19.12.2020 14:02, Krzysztof Kozlowski пишет: > On Thu, Dec 17, 2020 at 09:06:31PM +0300, Dmitry Osipenko wrote: >> Use common devm_tegra_core_dev_init_opp_table() helper for the OPP table >> initialization. >> >> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> >> --- >> drivers/memory/tegra/tegra20-emc.c | 57 +++--------------------------- >> 1 file changed, 4 insertions(+), 53 deletions(-) > > If there was no more Tegra MC work planned, this could easily go via > Tegra SoC tree. However I expect still work of your interconnect > patches, so maybe it's better to stick these in same tree. I'll re-send the remaining interconnect patches soon. > In such case I would need a stable tag with the > devm_tegra_core_dev_init_opp_table() helper for memory controller tree. Perhaps will be better to drop these memory changes for now from this series since they are optional, i.e. memory drivers will work properly because voltage changes are done by the OPP core and these patches just replace the duplicated code with a new common helper which doesn't add new features to the memory drivers. It should be fine to get back to these memory patches once interconnect patchset will be fully merged. I'll take it into account in v3, thanks.
diff --git a/drivers/memory/tegra/tegra20-emc.c b/drivers/memory/tegra/tegra20-emc.c index 686aaf477d8a..4be847442fc7 100644 --- a/drivers/memory/tegra/tegra20-emc.c +++ b/drivers/memory/tegra/tegra20-emc.c @@ -908,58 +908,6 @@ static int tegra_emc_interconnect_init(struct tegra_emc *emc) return err; } -static int tegra_emc_opp_table_init(struct tegra_emc *emc) -{ - u32 hw_version = BIT(tegra_sku_info.soc_process_id); - struct opp_table *clk_opp_table, *hw_opp_table; - int err; - - clk_opp_table = dev_pm_opp_set_clkname(emc->dev, NULL); - err = PTR_ERR_OR_ZERO(clk_opp_table); - if (err) { - dev_err(emc->dev, "failed to set OPP clk: %d\n", err); - return err; - } - - hw_opp_table = dev_pm_opp_set_supported_hw(emc->dev, &hw_version, 1); - err = PTR_ERR_OR_ZERO(hw_opp_table); - if (err) { - dev_err(emc->dev, "failed to set OPP supported HW: %d\n", err); - goto put_clk_table; - } - - err = dev_pm_opp_of_add_table(emc->dev); - if (err) { - if (err == -ENODEV) - dev_err(emc->dev, "OPP table not found, please update your device tree\n"); - else - dev_err(emc->dev, "failed to add OPP table: %d\n", err); - - goto put_hw_table; - } - - dev_info(emc->dev, "OPP HW ver. 0x%x, current clock rate %lu MHz\n", - hw_version, clk_get_rate(emc->clk) / 1000000); - - /* first dummy rate-set initializes voltage state */ - err = dev_pm_opp_set_rate(emc->dev, clk_get_rate(emc->clk)); - if (err) { - dev_err(emc->dev, "failed to initialize OPP clock: %d\n", err); - goto remove_table; - } - - return 0; - -remove_table: - dev_pm_opp_of_remove_table(emc->dev); -put_hw_table: - dev_pm_opp_put_supported_hw(hw_opp_table); -put_clk_table: - dev_pm_opp_put_clkname(clk_opp_table); - - return err; -} - static void devm_tegra_emc_unset_callback(void *data) { tegra20_clk_set_emc_round_callback(NULL, NULL); @@ -1086,6 +1034,7 @@ static int tegra_emc_devfreq_init(struct tegra_emc *emc) static int tegra_emc_probe(struct platform_device *pdev) { + struct tegra_core_opp_params opp_params = {}; struct device_node *np; struct tegra_emc *emc; int irq, err; @@ -1131,7 +1080,9 @@ static int tegra_emc_probe(struct platform_device *pdev) if (err) return err; - err = tegra_emc_opp_table_init(emc); + opp_params.init_state = true; + + err = devm_tegra_core_dev_init_opp_table(&pdev->dev, &opp_params); if (err) return err;
Use common devm_tegra_core_dev_init_opp_table() helper for the OPP table initialization. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/memory/tegra/tegra20-emc.c | 57 +++--------------------------- 1 file changed, 4 insertions(+), 53 deletions(-)