From: Dmitry Osipenko <digetx@gmail.com> To: Thierry Reding <thierry.reding@gmail.com>, Jonathan Hunter <jonathanh@nvidia.com>, Georgi Djakov <georgi.djakov@linaro.org>, Rob Herring <robh+dt@kernel.org>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Peter De Schrijver <pdeschrijver@nvidia.com>, MyungJoo Ham <myungjoo.ham@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>, Chanwoo Choi <cw00.choi@samsung.com>, Mikko Perttunen <cyndis@kapsi.fi>, Viresh Kumar <vireshk@kernel.org>, Peter Geis <pgwipeout@gmail.com>, Nicolas Chauvet <kwizart@gmail.com>, Krzysztof Kozlowski <krzk@kernel.org> Cc: linux-tegra@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH v8 16/26] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree Date: Wed, 11 Nov 2020 04:14:46 +0300 [thread overview] Message-ID: <20201111011456.7875-17-digetx@gmail.com> (raw) In-Reply-To: <20201111011456.7875-1-digetx@gmail.com> This patch moves ACTMON driver away from generating OPP table by itself, transitioning it to use the table which comes from device-tree. This change breaks compatibility with older device-trees in order to bring support for the interconnect framework to the driver. This is a mandatory change which needs to be done in order to implement interconnect-based memory DVFS. Users of legacy device-trees will get a message telling that theirs DT needs to be upgraded. Now ACTMON issues memory bandwidth request using dev_pm_opp_set_bw(), instead of driving EMC clock rate directly. Tested-by: Peter Geis <pgwipeout@gmail.com> Tested-by: Nicolas Chauvet <kwizart@gmail.com> Acked-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/devfreq/tegra30-devfreq.c | 86 ++++++++++++++++--------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c index 38cc0d014738..ed6d4469c8c7 100644 --- a/drivers/devfreq/tegra30-devfreq.c +++ b/drivers/devfreq/tegra30-devfreq.c @@ -19,6 +19,8 @@ #include <linux/reset.h> #include <linux/workqueue.h> +#include <soc/tegra/fuse.h> + #include "governor.h" #define ACTMON_GLB_STATUS 0x0 @@ -155,6 +157,7 @@ struct tegra_devfreq_device { struct tegra_devfreq { struct devfreq *devfreq; + struct opp_table *opp_table; struct reset_control *reset; struct clk *clock; @@ -612,34 +615,19 @@ static void tegra_actmon_stop(struct tegra_devfreq *tegra) static int tegra_devfreq_target(struct device *dev, unsigned long *freq, u32 flags) { - struct tegra_devfreq *tegra = dev_get_drvdata(dev); - struct devfreq *devfreq = tegra->devfreq; struct dev_pm_opp *opp; - unsigned long rate; - int err; + int ret; opp = devfreq_recommended_opp(dev, freq, flags); if (IS_ERR(opp)) { dev_err(dev, "Failed to find opp for %lu Hz\n", *freq); return PTR_ERR(opp); } - rate = dev_pm_opp_get_freq(opp); - dev_pm_opp_put(opp); - - err = clk_set_min_rate(tegra->emc_clock, rate * KHZ); - if (err) - return err; - - err = clk_set_rate(tegra->emc_clock, 0); - if (err) - goto restore_min_rate; - return 0; - -restore_min_rate: - clk_set_min_rate(tegra->emc_clock, devfreq->previous_freq); + ret = dev_pm_opp_set_bw(dev, opp); + dev_pm_opp_put(opp); - return err; + return ret; } static int tegra_devfreq_get_dev_status(struct device *dev, @@ -655,7 +643,7 @@ static int tegra_devfreq_get_dev_status(struct device *dev, stat->private_data = tegra; /* The below are to be used by the other governors */ - stat->current_frequency = cur_freq; + stat->current_frequency = cur_freq * KHZ; actmon_dev = &tegra->devices[MCALL]; @@ -705,7 +693,12 @@ static int tegra_governor_get_target(struct devfreq *devfreq, target_freq = max(target_freq, dev->target_freq); } - *freq = target_freq; + /* + * tegra-devfreq driver operates with KHz units, while OPP table + * entries use Hz units. Hence we need to convert the units for the + * devfreq core. + */ + *freq = target_freq * KHZ; return 0; } @@ -774,6 +767,7 @@ static struct devfreq_governor tegra_devfreq_governor = { static int tegra_devfreq_probe(struct platform_device *pdev) { + u32 hw_version = BIT(tegra_sku_info.soc_speedo_id); struct tegra_devfreq_device *dev; struct tegra_devfreq *tegra; struct devfreq *devfreq; @@ -781,6 +775,13 @@ static int tegra_devfreq_probe(struct platform_device *pdev) long rate; int err; + /* legacy device-trees don't have OPP table and must be updated */ + if (!device_property_present(&pdev->dev, "operating-points-v2")) { + dev_err(&pdev->dev, + "OPP table not found, please update your device tree\n"); + return -ENODEV; + } + tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL); if (!tegra) return -ENOMEM; @@ -822,11 +823,25 @@ static int tegra_devfreq_probe(struct platform_device *pdev) return err; } + tegra->opp_table = dev_pm_opp_set_supported_hw(&pdev->dev, + &hw_version, 1); + err = PTR_ERR_OR_ZERO(tegra->opp_table); + if (err) { + dev_err(&pdev->dev, "Failed to set supported HW: %d\n", err); + return err; + } + + err = dev_pm_opp_of_add_table(&pdev->dev); + if (err) { + dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); + goto put_hw; + } + err = clk_prepare_enable(tegra->clock); if (err) { dev_err(&pdev->dev, "Failed to prepare and enable ACTMON clock\n"); - return err; + goto remove_table; } err = reset_control_reset(tegra->reset); @@ -850,23 +865,6 @@ static int tegra_devfreq_probe(struct platform_device *pdev) dev->regs = tegra->regs + dev->config->offset; } - for (rate = 0; rate <= tegra->max_freq * KHZ; rate++) { - rate = clk_round_rate(tegra->emc_clock, rate); - - if (rate < 0) { - dev_err(&pdev->dev, - "Failed to round clock rate: %ld\n", rate); - err = rate; - goto remove_opps; - } - - err = dev_pm_opp_add(&pdev->dev, rate / KHZ, 0); - if (err) { - dev_err(&pdev->dev, "Failed to add OPP: %d\n", err); - goto remove_opps; - } - } - platform_set_drvdata(pdev, tegra); tegra->clk_rate_change_nb.notifier_call = tegra_actmon_clk_notify_cb; @@ -882,7 +880,6 @@ static int tegra_devfreq_probe(struct platform_device *pdev) } tegra_devfreq_profile.initial_freq = clk_get_rate(tegra->emc_clock); - tegra_devfreq_profile.initial_freq /= KHZ; devfreq = devfreq_add_device(&pdev->dev, &tegra_devfreq_profile, "tegra_actmon", NULL); @@ -902,6 +899,10 @@ static int tegra_devfreq_probe(struct platform_device *pdev) reset_control_reset(tegra->reset); disable_clk: clk_disable_unprepare(tegra->clock); +remove_table: + dev_pm_opp_of_remove_table(&pdev->dev); +put_hw: + dev_pm_opp_put_supported_hw(tegra->opp_table); return err; } @@ -913,11 +914,12 @@ static int tegra_devfreq_remove(struct platform_device *pdev) devfreq_remove_device(tegra->devfreq); devfreq_remove_governor(&tegra_devfreq_governor); - dev_pm_opp_remove_all_dynamic(&pdev->dev); - reset_control_reset(tegra->reset); clk_disable_unprepare(tegra->clock); + dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_put_supported_hw(tegra->opp_table); + return 0; } -- 2.29.2
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Osipenko <digetx@gmail.com> To: Thierry Reding <thierry.reding@gmail.com>, Jonathan Hunter <jonathanh@nvidia.com>, Georgi Djakov <georgi.djakov@linaro.org>, Rob Herring <robh+dt@kernel.org>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Peter De Schrijver <pdeschrijver@nvidia.com>, MyungJoo Ham <myungjoo.ham@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>, Chanwoo Choi <cw00.choi@samsung.com>, Mikko Perttunen <cyndis@kapsi.fi>, Viresh Kumar <vireshk@kernel.org>, Peter Geis <pgwipeout@gmail.com>, Nicolas Chauvet <kwizart@gmail.com>, Krzysztof Kozlowski <krzk@kernel.org> Cc: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-pm@vger.kernel.org Subject: [PATCH v8 16/26] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree Date: Wed, 11 Nov 2020 04:14:46 +0300 [thread overview] Message-ID: <20201111011456.7875-17-digetx@gmail.com> (raw) In-Reply-To: <20201111011456.7875-1-digetx@gmail.com> This patch moves ACTMON driver away from generating OPP table by itself, transitioning it to use the table which comes from device-tree. This change breaks compatibility with older device-trees in order to bring support for the interconnect framework to the driver. This is a mandatory change which needs to be done in order to implement interconnect-based memory DVFS. Users of legacy device-trees will get a message telling that theirs DT needs to be upgraded. Now ACTMON issues memory bandwidth request using dev_pm_opp_set_bw(), instead of driving EMC clock rate directly. Tested-by: Peter Geis <pgwipeout@gmail.com> Tested-by: Nicolas Chauvet <kwizart@gmail.com> Acked-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/devfreq/tegra30-devfreq.c | 86 ++++++++++++++++--------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c index 38cc0d014738..ed6d4469c8c7 100644 --- a/drivers/devfreq/tegra30-devfreq.c +++ b/drivers/devfreq/tegra30-devfreq.c @@ -19,6 +19,8 @@ #include <linux/reset.h> #include <linux/workqueue.h> +#include <soc/tegra/fuse.h> + #include "governor.h" #define ACTMON_GLB_STATUS 0x0 @@ -155,6 +157,7 @@ struct tegra_devfreq_device { struct tegra_devfreq { struct devfreq *devfreq; + struct opp_table *opp_table; struct reset_control *reset; struct clk *clock; @@ -612,34 +615,19 @@ static void tegra_actmon_stop(struct tegra_devfreq *tegra) static int tegra_devfreq_target(struct device *dev, unsigned long *freq, u32 flags) { - struct tegra_devfreq *tegra = dev_get_drvdata(dev); - struct devfreq *devfreq = tegra->devfreq; struct dev_pm_opp *opp; - unsigned long rate; - int err; + int ret; opp = devfreq_recommended_opp(dev, freq, flags); if (IS_ERR(opp)) { dev_err(dev, "Failed to find opp for %lu Hz\n", *freq); return PTR_ERR(opp); } - rate = dev_pm_opp_get_freq(opp); - dev_pm_opp_put(opp); - - err = clk_set_min_rate(tegra->emc_clock, rate * KHZ); - if (err) - return err; - - err = clk_set_rate(tegra->emc_clock, 0); - if (err) - goto restore_min_rate; - return 0; - -restore_min_rate: - clk_set_min_rate(tegra->emc_clock, devfreq->previous_freq); + ret = dev_pm_opp_set_bw(dev, opp); + dev_pm_opp_put(opp); - return err; + return ret; } static int tegra_devfreq_get_dev_status(struct device *dev, @@ -655,7 +643,7 @@ static int tegra_devfreq_get_dev_status(struct device *dev, stat->private_data = tegra; /* The below are to be used by the other governors */ - stat->current_frequency = cur_freq; + stat->current_frequency = cur_freq * KHZ; actmon_dev = &tegra->devices[MCALL]; @@ -705,7 +693,12 @@ static int tegra_governor_get_target(struct devfreq *devfreq, target_freq = max(target_freq, dev->target_freq); } - *freq = target_freq; + /* + * tegra-devfreq driver operates with KHz units, while OPP table + * entries use Hz units. Hence we need to convert the units for the + * devfreq core. + */ + *freq = target_freq * KHZ; return 0; } @@ -774,6 +767,7 @@ static struct devfreq_governor tegra_devfreq_governor = { static int tegra_devfreq_probe(struct platform_device *pdev) { + u32 hw_version = BIT(tegra_sku_info.soc_speedo_id); struct tegra_devfreq_device *dev; struct tegra_devfreq *tegra; struct devfreq *devfreq; @@ -781,6 +775,13 @@ static int tegra_devfreq_probe(struct platform_device *pdev) long rate; int err; + /* legacy device-trees don't have OPP table and must be updated */ + if (!device_property_present(&pdev->dev, "operating-points-v2")) { + dev_err(&pdev->dev, + "OPP table not found, please update your device tree\n"); + return -ENODEV; + } + tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL); if (!tegra) return -ENOMEM; @@ -822,11 +823,25 @@ static int tegra_devfreq_probe(struct platform_device *pdev) return err; } + tegra->opp_table = dev_pm_opp_set_supported_hw(&pdev->dev, + &hw_version, 1); + err = PTR_ERR_OR_ZERO(tegra->opp_table); + if (err) { + dev_err(&pdev->dev, "Failed to set supported HW: %d\n", err); + return err; + } + + err = dev_pm_opp_of_add_table(&pdev->dev); + if (err) { + dev_err(&pdev->dev, "Failed to add OPP table: %d\n", err); + goto put_hw; + } + err = clk_prepare_enable(tegra->clock); if (err) { dev_err(&pdev->dev, "Failed to prepare and enable ACTMON clock\n"); - return err; + goto remove_table; } err = reset_control_reset(tegra->reset); @@ -850,23 +865,6 @@ static int tegra_devfreq_probe(struct platform_device *pdev) dev->regs = tegra->regs + dev->config->offset; } - for (rate = 0; rate <= tegra->max_freq * KHZ; rate++) { - rate = clk_round_rate(tegra->emc_clock, rate); - - if (rate < 0) { - dev_err(&pdev->dev, - "Failed to round clock rate: %ld\n", rate); - err = rate; - goto remove_opps; - } - - err = dev_pm_opp_add(&pdev->dev, rate / KHZ, 0); - if (err) { - dev_err(&pdev->dev, "Failed to add OPP: %d\n", err); - goto remove_opps; - } - } - platform_set_drvdata(pdev, tegra); tegra->clk_rate_change_nb.notifier_call = tegra_actmon_clk_notify_cb; @@ -882,7 +880,6 @@ static int tegra_devfreq_probe(struct platform_device *pdev) } tegra_devfreq_profile.initial_freq = clk_get_rate(tegra->emc_clock); - tegra_devfreq_profile.initial_freq /= KHZ; devfreq = devfreq_add_device(&pdev->dev, &tegra_devfreq_profile, "tegra_actmon", NULL); @@ -902,6 +899,10 @@ static int tegra_devfreq_probe(struct platform_device *pdev) reset_control_reset(tegra->reset); disable_clk: clk_disable_unprepare(tegra->clock); +remove_table: + dev_pm_opp_of_remove_table(&pdev->dev); +put_hw: + dev_pm_opp_put_supported_hw(tegra->opp_table); return err; } @@ -913,11 +914,12 @@ static int tegra_devfreq_remove(struct platform_device *pdev) devfreq_remove_device(tegra->devfreq); devfreq_remove_governor(&tegra_devfreq_governor); - dev_pm_opp_remove_all_dynamic(&pdev->dev); - reset_control_reset(tegra->reset); clk_disable_unprepare(tegra->clock); + dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_put_supported_hw(tegra->opp_table); + return 0; } -- 2.29.2 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-11-11 1:17 UTC|newest] Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-11 1:14 [PATCH v8 00/26] Introduce memory interconnect for NVIDIA Tegra SoCs Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 01/26] memory: tegra: Correct stub of devm_tegra_memory_controller_get() Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-14 15:36 ` Krzysztof Kozlowski 2020-11-14 15:36 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 02/26] memory: tegra20-emc: Use dev_pm_opp_set_clkname() Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 5:45 ` Viresh Kumar 2020-11-11 5:45 ` Viresh Kumar 2020-11-11 5:54 ` Viresh Kumar 2020-11-11 5:54 ` Viresh Kumar 2020-11-11 6:15 ` Dmitry Osipenko 2020-11-11 6:15 ` Dmitry Osipenko 2020-11-14 15:37 ` Krzysztof Kozlowski 2020-11-14 15:37 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 03/26] memory: tegra20-emc: Factor out clk initialization Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-14 15:37 ` Krzysztof Kozlowski 2020-11-14 15:37 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 04/26] memory: tegra20-emc: Add devfreq support Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 2:23 ` Chanwoo Choi 2020-11-11 2:23 ` Chanwoo Choi 2020-11-14 15:38 ` Krzysztof Kozlowski 2020-11-14 15:38 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 05/26] memory: tegra20-emc: Remove IRQ number from error message Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-14 15:38 ` Krzysztof Kozlowski 2020-11-14 15:38 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 06/26] memory: tegra30: Add FIFO sizes to memory clients Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-14 15:39 ` Krzysztof Kozlowski 2020-11-14 15:39 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 07/26] memory: tegra30-emc: Make driver modular Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-14 15:41 ` Krzysztof Kozlowski 2020-11-14 15:41 ` Krzysztof Kozlowski 2020-11-11 1:14 ` [PATCH v8 08/26] memory: tegra30-emc: Continue probing if timings are missing in device-tree Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-14 15:42 ` Krzysztof Kozlowski 2020-11-14 15:42 ` Krzysztof Kozlowski 2020-11-15 9:25 ` Dmitry Osipenko 2020-11-15 9:25 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 09/26] memory: tegra30: Support interconnect framework Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 5:53 ` Viresh Kumar 2020-11-11 5:53 ` Viresh Kumar 2020-11-11 6:14 ` Dmitry Osipenko 2020-11-11 6:14 ` Dmitry Osipenko 2020-11-11 6:18 ` Viresh Kumar 2020-11-11 6:18 ` Viresh Kumar 2020-11-11 7:32 ` Dmitry Osipenko 2020-11-11 7:32 ` Dmitry Osipenko 2020-11-11 7:54 ` Viresh Kumar 2020-11-11 7:54 ` Viresh Kumar 2020-11-11 14:08 ` Dmitry Osipenko 2020-11-11 14:08 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 10/26] memory: tegra30-emc: Factor out clk initialization Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 8:51 ` Krzysztof Kozlowski 2020-11-11 8:51 ` Krzysztof Kozlowski 2020-11-11 8:52 ` Krzysztof Kozlowski 2020-11-11 8:52 ` Krzysztof Kozlowski 2020-11-11 9:01 ` Dmitry Osipenko 2020-11-11 9:01 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 11/26] memory: tegra124-emc: Make driver modular Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 9:04 ` Krzysztof Kozlowski 2020-11-11 9:04 ` Krzysztof Kozlowski 2020-11-11 9:17 ` Dmitry Osipenko 2020-11-11 9:17 ` Dmitry Osipenko 2020-11-11 9:26 ` Krzysztof Kozlowski 2020-11-11 9:26 ` Krzysztof Kozlowski 2020-11-11 10:25 ` Dmitry Osipenko 2020-11-11 10:25 ` Dmitry Osipenko 2020-11-11 11:53 ` Dmitry Osipenko 2020-11-11 11:53 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 12/26] memory: tegra124-emc: Continue probing if timings are missing in device-tree Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 13/26] memory: tegra124: Support interconnect framework Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 14/26] drm/tegra: dc: Support memory bandwidth management Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 15/26] drm/tegra: dc: Extend debug stats with total number of events Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko [this message] 2020-11-11 1:14 ` [PATCH v8 16/26] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 17/26] PM / devfreq: tegra30: Separate configurations per-SoC generation Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 18/26] PM / devfreq: tegra20: Deprecate in a favor of emc-stat based driver Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 19/26] ARM: tegra: Correct EMC registers size in Tegra20 device-tree Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 20/26] ARM: tegra: Add interconnect properties to " Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 21/26] ARM: tegra: Add interconnect properties to Tegra30 device-tree Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 22/26] ARM: tegra: Add interconnect properties to Tegra124 device-tree Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 23/26] ARM: tegra: Add nvidia,memory-controller phandle to Tegra20 EMC device-tree Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 23/26] ARM: tegra: Add nvidia, memory-controller " Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 24/26] ARM: tegra: Add DVFS properties to Tegra20 EMC device-tree node Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 25/26] ARM: tegra: Add DVFS properties to Tegra30 EMC and ACTMON device-tree nodes Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko 2020-11-11 1:14 ` [PATCH v8 26/26] ARM: tegra: Add DVFS properties to Tegra124 " Dmitry Osipenko 2020-11-11 1:14 ` Dmitry Osipenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201111011456.7875-17-digetx@gmail.com \ --to=digetx@gmail.com \ --cc=cw00.choi@samsung.com \ --cc=cyndis@kapsi.fi \ --cc=dri-devel@lists.freedesktop.org \ --cc=georgi.djakov@linaro.org \ --cc=jonathanh@nvidia.com \ --cc=krzk@kernel.org \ --cc=kwizart@gmail.com \ --cc=kyungmin.park@samsung.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux-tegra@vger.kernel.org \ --cc=mturquette@baylibre.com \ --cc=myungjoo.ham@samsung.com \ --cc=pdeschrijver@nvidia.com \ --cc=pgwipeout@gmail.com \ --cc=robh+dt@kernel.org \ --cc=sboyd@kernel.org \ --cc=thierry.reding@gmail.com \ --cc=vireshk@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.