From: Chanwoo Choi <cwchoi00@gmail.com> To: Dmitry Osipenko <digetx@gmail.com> Cc: 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>, linux-tegra@vger.kernel.org, Linux PM list <linux-pm@vger.kernel.org>, linux-kernel <linux-kernel@vger.kernel.org>, dri-devel <dri-devel@lists.freedesktop.org>, devicetree <devicetree@vger.kernel.org> Subject: Re: [PATCH v6 51/52] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree Date: Sun, 1 Nov 2020 23:39:38 +0900 [thread overview] Message-ID: <CAGTfZH1PV4r-pD=zTKD71nQb5+UobJKa5mBv-Nb2ZgSubkscjA@mail.gmail.com> (raw) In-Reply-To: <20201025221735.3062-52-digetx@gmail.com> Hi Dmitry, On Mon, Oct 26, 2020 at 7:22 AM Dmitry Osipenko <digetx@gmail.com> wrote: > > 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> > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- > drivers/devfreq/tegra30-devfreq.c | 91 ++++++++++++++++--------------- > 1 file changed, 48 insertions(+), 43 deletions(-) > > diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c > index 3f732ab53573..1b0b91a71886 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); > + 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; I can't find any change related to the frequency unit on this patch. Do you fix the previous bug of the frequency unit? > > actmon_dev = &tegra->devices[MCALL]; > > @@ -705,7 +693,7 @@ static int tegra_governor_get_target(struct devfreq *devfreq, > target_freq = max(target_freq, dev->target_freq); > } > > - *freq = target_freq; > + *freq = target_freq * KHZ; ditto. > > return 0; > } > @@ -773,13 +761,22 @@ 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 opp_table *opp_table; > struct devfreq *devfreq; > unsigned int i; > 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, cannot continue\n"); > + dev_err(&pdev->dev, "please update your device tree\n"); > + return -ENODEV; > + } As you mentioned, it breaks the old dtb. I have no objection to improving the driver. Instead, you need confirmation from the Devicetree maintainer. And, I recommend that you use dev_pm_opp_of_get_opp_desc_node(&pdev->dev) to check whether a device contains opp-table or not. > + > tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL); > if (!tegra) > return -ENOMEM; > @@ -821,11 +818,29 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return err; > } > > + tegra->opp_table = dev_pm_opp_get_opp_table(&pdev->dev); > + if (IS_ERR(tegra->opp_table)) > + return dev_err_probe(&pdev->dev, PTR_ERR(tegra->opp_table), > + "Failed to prepare OPP table\n"); As I knew, each device can contain the opp_table on devicetree. It means that opp_table has not depended to another device driver. Did you see this exception case with EPROBE_DEFER error? > + > + opp_table = dev_pm_opp_set_supported_hw(&pdev->dev, &hw_version, 1); > + err = PTR_ERR_OR_ZERO(opp_table); > + if (err) { > + dev_err(&pdev->dev, "Failed to set supported HW: %d\n", err); > + goto put_table; > + } > + > + 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); > @@ -849,23 +864,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; > @@ -881,7 +879,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); > @@ -901,6 +898,12 @@ 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); > +put_table: > + dev_pm_opp_put_opp_table(tegra->opp_table); > > return err; > } > @@ -912,11 +915,13 @@ 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); > + dev_pm_opp_put_opp_table(tegra->opp_table); > + > return 0; > } > > -- > 2.27.0 > -- Best Regards, Chanwoo Choi
WARNING: multiple messages have this Message-ID (diff)
From: Chanwoo Choi <cwchoi00@gmail.com> To: Dmitry Osipenko <digetx@gmail.com> Cc: Peter De Schrijver <pdeschrijver@nvidia.com>, Krzysztof Kozlowski <krzk@kernel.org>, Mikko Perttunen <cyndis@kapsi.fi>, dri-devel <dri-devel@lists.freedesktop.org>, Nicolas Chauvet <kwizart@gmail.com>, Stephen Boyd <sboyd@kernel.org>, Viresh Kumar <vireshk@kernel.org>, Michael Turquette <mturquette@baylibre.com>, Linux PM list <linux-pm@vger.kernel.org>, linux-kernel <linux-kernel@vger.kernel.org>, Rob Herring <robh+dt@kernel.org>, Jonathan Hunter <jonathanh@nvidia.com>, Chanwoo Choi <cw00.choi@samsung.com>, Kyungmin Park <kyungmin.park@samsung.com>, Thierry Reding <thierry.reding@gmail.com>, MyungJoo Ham <myungjoo.ham@samsung.com>, Peter Geis <pgwipeout@gmail.com>, linux-tegra@vger.kernel.org, Georgi Djakov <georgi.djakov@linaro.org>, devicetree <devicetree@vger.kernel.org> Subject: Re: [PATCH v6 51/52] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree Date: Sun, 1 Nov 2020 23:39:38 +0900 [thread overview] Message-ID: <CAGTfZH1PV4r-pD=zTKD71nQb5+UobJKa5mBv-Nb2ZgSubkscjA@mail.gmail.com> (raw) In-Reply-To: <20201025221735.3062-52-digetx@gmail.com> Hi Dmitry, On Mon, Oct 26, 2020 at 7:22 AM Dmitry Osipenko <digetx@gmail.com> wrote: > > 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> > Signed-off-by: Dmitry Osipenko <digetx@gmail.com> > --- > drivers/devfreq/tegra30-devfreq.c | 91 ++++++++++++++++--------------- > 1 file changed, 48 insertions(+), 43 deletions(-) > > diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c > index 3f732ab53573..1b0b91a71886 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); > + 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; I can't find any change related to the frequency unit on this patch. Do you fix the previous bug of the frequency unit? > > actmon_dev = &tegra->devices[MCALL]; > > @@ -705,7 +693,7 @@ static int tegra_governor_get_target(struct devfreq *devfreq, > target_freq = max(target_freq, dev->target_freq); > } > > - *freq = target_freq; > + *freq = target_freq * KHZ; ditto. > > return 0; > } > @@ -773,13 +761,22 @@ 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 opp_table *opp_table; > struct devfreq *devfreq; > unsigned int i; > 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, cannot continue\n"); > + dev_err(&pdev->dev, "please update your device tree\n"); > + return -ENODEV; > + } As you mentioned, it breaks the old dtb. I have no objection to improving the driver. Instead, you need confirmation from the Devicetree maintainer. And, I recommend that you use dev_pm_opp_of_get_opp_desc_node(&pdev->dev) to check whether a device contains opp-table or not. > + > tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL); > if (!tegra) > return -ENOMEM; > @@ -821,11 +818,29 @@ static int tegra_devfreq_probe(struct platform_device *pdev) > return err; > } > > + tegra->opp_table = dev_pm_opp_get_opp_table(&pdev->dev); > + if (IS_ERR(tegra->opp_table)) > + return dev_err_probe(&pdev->dev, PTR_ERR(tegra->opp_table), > + "Failed to prepare OPP table\n"); As I knew, each device can contain the opp_table on devicetree. It means that opp_table has not depended to another device driver. Did you see this exception case with EPROBE_DEFER error? > + > + opp_table = dev_pm_opp_set_supported_hw(&pdev->dev, &hw_version, 1); > + err = PTR_ERR_OR_ZERO(opp_table); > + if (err) { > + dev_err(&pdev->dev, "Failed to set supported HW: %d\n", err); > + goto put_table; > + } > + > + 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); > @@ -849,23 +864,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; > @@ -881,7 +879,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); > @@ -901,6 +898,12 @@ 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); > +put_table: > + dev_pm_opp_put_opp_table(tegra->opp_table); > > return err; > } > @@ -912,11 +915,13 @@ 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); > + dev_pm_opp_put_opp_table(tegra->opp_table); > + > return 0; > } > > -- > 2.27.0 > -- Best Regards, Chanwoo Choi _______________________________________________ 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-01 14:40 UTC|newest] Thread overview: 290+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-25 22:16 [PATCH v6 00/52] Introduce memory interconnect for NVIDIA Tegra SoCs Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-25 22:16 ` [PATCH v6 01/52] clk: tegra: Export Tegra20 EMC kernel symbols Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 13:04 ` Thierry Reding 2020-10-27 13:04 ` Thierry Reding 2020-10-25 22:16 ` [PATCH v6 02/52] soc/tegra: fuse: Export tegra_read_ram_code() Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 13:17 ` Thierry Reding 2020-10-27 13:17 ` Thierry Reding 2020-10-25 22:16 ` [PATCH v6 03/52] dt-bindings: memory: tegra20: emc: Correct registers range in example Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 13:18 ` Thierry Reding 2020-10-27 13:18 ` Thierry Reding 2020-10-28 15:16 ` Rob Herring 2020-10-28 15:16 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 04/52] dt-bindings: memory: tegra20: emc: Document nvidia,memory-controller property Dmitry Osipenko 2020-10-25 22:16 ` [PATCH v6 04/52] dt-bindings: memory: tegra20: emc: Document nvidia, memory-controller property Dmitry Osipenko 2020-10-27 8:54 ` [PATCH v6 04/52] dt-bindings: memory: tegra20: emc: Document nvidia,memory-controller property Krzysztof Kozlowski 2020-10-27 8:54 ` Krzysztof Kozlowski 2020-10-27 19:17 ` Dmitry Osipenko 2020-10-27 19:17 ` Dmitry Osipenko 2020-10-27 19:30 ` Krzysztof Kozlowski 2020-10-27 19:30 ` Krzysztof Kozlowski 2020-10-27 20:37 ` Dmitry Osipenko 2020-10-27 20:37 ` Dmitry Osipenko 2020-10-28 15:23 ` Rob Herring 2020-10-28 15:23 ` Rob Herring 2020-10-28 15:35 ` Krzysztof Kozlowski 2020-10-28 15:35 ` Krzysztof Kozlowski 2020-10-28 15:23 ` [PATCH v6 04/52] dt-bindings: memory: tegra20: emc: Document nvidia, memory-controller property Rob Herring 2020-10-28 15:23 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 05/52] dt-bindings: memory: tegra20: mc: Document new interconnect property Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 8:55 ` Krzysztof Kozlowski 2020-10-27 8:55 ` Krzysztof Kozlowski 2020-10-27 19:17 ` Dmitry Osipenko 2020-10-27 19:17 ` Dmitry Osipenko 2020-10-27 19:34 ` Krzysztof Kozlowski 2020-10-27 19:34 ` Krzysztof Kozlowski 2020-10-25 22:16 ` [PATCH v6 06/52] dt-bindings: memory: tegra20: emc: " Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 9:03 ` Krzysztof Kozlowski 2020-10-27 9:03 ` Krzysztof Kozlowski 2020-10-25 22:16 ` [PATCH v6 07/52] dt-bindings: memory: tegra20: emc: Document OPP table and voltage regulator Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 8:57 ` Krzysztof Kozlowski 2020-10-27 8:57 ` Krzysztof Kozlowski 2020-10-25 22:16 ` [PATCH v6 08/52] dt-bindings: memory: tegra20: emc: Document mfd-simple compatible and statistics sub-device Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 9:02 ` Krzysztof Kozlowski 2020-10-27 9:02 ` Krzysztof Kozlowski 2020-10-27 19:22 ` Dmitry Osipenko 2020-10-27 19:22 ` Dmitry Osipenko 2020-10-27 19:44 ` Krzysztof Kozlowski 2020-10-27 19:44 ` Krzysztof Kozlowski 2020-10-27 20:18 ` Dmitry Osipenko 2020-10-27 20:18 ` Dmitry Osipenko 2020-10-28 15:26 ` Rob Herring 2020-10-28 15:26 ` Rob Herring 2020-10-31 19:53 ` Dmitry Osipenko 2020-10-31 19:53 ` Dmitry Osipenko 2020-10-27 13:22 ` Thierry Reding 2020-10-27 13:22 ` Thierry Reding 2020-10-27 19:23 ` Dmitry Osipenko 2020-10-27 19:23 ` Dmitry Osipenko 2020-10-28 15:28 ` Rob Herring 2020-10-28 15:28 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 09/52] dt-bindings: memory: tegra30: mc: Document new interconnect property Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-27 9:05 ` Krzysztof Kozlowski 2020-10-27 9:05 ` Krzysztof Kozlowski 2020-10-27 19:18 ` Dmitry Osipenko 2020-10-27 19:18 ` Dmitry Osipenko 2020-10-27 19:39 ` Krzysztof Kozlowski 2020-10-27 19:39 ` Krzysztof Kozlowski 2020-10-25 22:16 ` [PATCH v6 10/52] dt-bindings: memory: tegra30: emc: " Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-25 22:16 ` [PATCH v6 11/52] dt-bindings: memory: tegra30: emc: Document OPP table and voltage regulator Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-28 15:29 ` Rob Herring 2020-10-28 15:29 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 12/52] dt-bindings: memory: tegra124: mc: Document new interconnect property Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-26 12:49 ` Rob Herring 2020-10-26 12:49 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 13/52] dt-bindings: memory: tegra124: emc: " Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-26 12:51 ` Rob Herring 2020-10-26 12:51 ` Rob Herring 2020-10-27 10:25 ` Krzysztof Kozlowski 2020-10-27 10:25 ` Krzysztof Kozlowski 2020-10-27 19:19 ` Dmitry Osipenko 2020-10-27 19:19 ` Dmitry Osipenko 2020-10-27 19:48 ` Krzysztof Kozlowski 2020-10-27 19:48 ` Krzysztof Kozlowski 2020-10-27 20:16 ` Dmitry Osipenko 2020-10-27 20:16 ` Dmitry Osipenko 2020-10-28 19:27 ` Krzysztof Kozlowski 2020-10-28 19:27 ` Krzysztof Kozlowski 2020-10-25 22:16 ` [PATCH v6 14/52] dt-bindings: memory: tegra124: emc: Document OPP table and voltage regulator Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-28 15:30 ` Rob Herring 2020-10-28 15:30 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 15/52] dt-bindings: tegra30-actmon: Document OPP and interconnect properties Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-28 15:30 ` Rob Herring 2020-10-28 15:30 ` Rob Herring 2020-10-25 22:16 ` [PATCH v6 16/52] dt-bindings: host1x: Document new " Dmitry Osipenko 2020-10-25 22:16 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 17/52] dt-bindings: memory: tegra20: Add memory client IDs Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 18/52] dt-bindings: memory: tegra30: " Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 19/52] dt-bindings: memory: tegra124: " Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-28 15:31 ` Rob Herring 2020-10-28 15:31 ` Rob Herring 2020-10-25 22:17 ` [PATCH v6 20/52] ARM: tegra: Correct EMC registers size in Tegra20 device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 9:10 ` Krzysztof Kozlowski 2020-10-27 9:10 ` Krzysztof Kozlowski 2020-10-27 20:43 ` Dmitry Osipenko 2020-10-27 20:43 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 21/52] ARM: tegra: Add interconnect properties to " Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 9:12 ` Krzysztof Kozlowski 2020-10-27 9:12 ` Krzysztof Kozlowski 2020-10-27 13:30 ` Thierry Reding 2020-10-27 13:30 ` Thierry Reding 2020-10-25 22:17 ` [PATCH v6 22/52] ARM: tegra: Add interconnect properties to Tegra30 device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 9:15 ` Krzysztof Kozlowski 2020-10-27 9:15 ` Krzysztof Kozlowski 2020-10-27 19:23 ` Dmitry Osipenko 2020-10-27 19:23 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 23/52] ARM: tegra: Add interconnect properties to Tegra124 device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 9:16 ` Krzysztof Kozlowski 2020-10-27 9:16 ` Krzysztof Kozlowski 2020-10-25 22:17 ` [PATCH v6 24/52] ARM: tegra: Add nvidia,memory-controller phandle to Tegra20 EMC device-tree Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 24/52] ARM: tegra: Add nvidia, memory-controller " Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 25/52] ARM: tegra: Add DVFS properties to Tegra20 EMC device-tree node Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 9:18 ` Krzysztof Kozlowski 2020-10-27 9:18 ` Krzysztof Kozlowski 2020-10-25 22:17 ` [PATCH v6 26/52] ARM: tegra: Add DVFS properties to Tegra30 EMC and ACTMON device-tree nodes Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 27/52] ARM: tegra: Add DVFS properties to Tegra124 " Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 28/52] memory: tegra: Add and use devm_tegra_get_memory_controller() Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 9:42 ` Krzysztof Kozlowski 2020-10-27 9:42 ` Krzysztof Kozlowski 2020-10-27 19:24 ` Dmitry Osipenko 2020-10-27 19:24 ` Dmitry Osipenko 2020-10-27 13:35 ` Thierry Reding 2020-10-27 13:35 ` Thierry Reding 2020-10-25 22:17 ` [PATCH v6 29/52] memory: tegra-mc: Add interconnect framework Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 13:48 ` Thierry Reding 2020-10-27 13:48 ` Thierry Reding 2020-10-27 19:30 ` Dmitry Osipenko 2020-10-27 19:30 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 30/52] memory: tegra20-emc: Make driver modular Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 13:49 ` Thierry Reding 2020-10-27 13:49 ` Thierry Reding 2020-10-25 22:17 ` [PATCH v6 31/52] memory: tegra20-emc: Use devm_platform_ioremap_resource() Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 13:50 ` Thierry Reding 2020-10-27 13:50 ` Thierry Reding 2020-10-27 13:57 ` Krzysztof Kozlowski 2020-10-27 13:57 ` Krzysztof Kozlowski 2020-10-25 22:17 ` [PATCH v6 32/52] memory: tegra20-emc: Continue probing if timings are missing in device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 13:52 ` Thierry Reding 2020-10-27 13:52 ` Thierry Reding 2020-10-27 19:38 ` Dmitry Osipenko 2020-10-27 19:38 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 33/52] memory: tegra20: Support interconnect framework Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 10:09 ` Krzysztof Kozlowski 2020-10-27 10:09 ` Krzysztof Kozlowski 2020-10-27 20:25 ` Dmitry Osipenko 2020-10-27 20:25 ` Dmitry Osipenko 2020-10-27 14:11 ` Thierry Reding 2020-10-27 14:11 ` Thierry Reding 2020-10-27 20:22 ` Dmitry Osipenko 2020-10-27 20:22 ` Dmitry Osipenko 2020-10-27 21:12 ` Dmitry Osipenko 2020-10-27 21:12 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 34/52] memory: tegra20-emc: Don't parse emc-stats node Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 35/52] memory: tegra: Add missing latency allowness entry for Page Table Cache Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 36/52] memory: tegra: Add FIFO sizes to Tegra30 memory clients Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 37/52] memory: tegra30-emc: Make driver modular Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 38/52] memory: tegra30-emc: Continue probing if timings are missing in device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 39/52] memory: tegra30: Support interconnect framework Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 40/52] memory: tegra124-emc: Make driver modular Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-26 4:04 ` kernel test robot 2020-10-25 22:17 ` [PATCH v6 41/52] memory: tegra124-emc: Use devm_platform_ioremap_resource() Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 10:27 ` Krzysztof Kozlowski 2020-10-27 10:27 ` Krzysztof Kozlowski 2020-10-27 20:30 ` Dmitry Osipenko 2020-10-27 20:30 ` Dmitry Osipenko 2020-10-28 19:28 ` Krzysztof Kozlowski 2020-10-28 19:28 ` Krzysztof Kozlowski 2020-10-25 22:17 ` [PATCH v6 42/52] memory: tegra124: Support interconnect framework Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 43/52] memory: tegra: Remove superfluous error messages around platform_get_irq() Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 44/52] drm/tegra: dc: Support memory bandwidth management Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-26 1:50 ` kernel test robot 2020-10-25 22:17 ` [PATCH v6 45/52] drm/tegra: dc: Extend debug stats with total number of events Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-25 22:17 ` [PATCH v6 46/52] opp: Put interconnect paths outside of opp_table_lock Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-27 5:10 ` Viresh Kumar 2020-10-27 5:10 ` Viresh Kumar 2020-10-27 20:26 ` Dmitry Osipenko 2020-10-27 20:26 ` Dmitry Osipenko 2020-10-28 4:03 ` Viresh Kumar 2020-10-28 4:03 ` Viresh Kumar 2020-10-25 22:17 ` [PATCH v6 47/52] PM / devfreq: tegra20: Silence deferred probe error Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-26 3:16 ` Chanwoo Choi 2020-10-26 3:16 ` Chanwoo Choi 2020-10-25 22:17 ` [PATCH v6 48/52] PM / devfreq: tegra20: Relax Kconfig dependency Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-26 3:18 ` Chanwoo Choi 2020-10-26 3:18 ` Chanwoo Choi 2020-10-25 22:17 ` [PATCH v6 49/52] PM / devfreq: tegra20: Convert to EMC_STAT driver, support interconnect and device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-11-01 13:31 ` Chanwoo Choi 2020-11-01 13:31 ` Chanwoo Choi 2020-11-01 14:12 ` Dmitry Osipenko 2020-11-01 14:12 ` Dmitry Osipenko 2020-11-02 20:08 ` Dmitry Osipenko 2020-11-02 20:08 ` Dmitry Osipenko 2020-11-03 2:22 ` Chanwoo Choi 2020-11-03 2:22 ` Chanwoo Choi 2020-10-25 22:17 ` [PATCH v6 50/52] PM / devfreq: tegra30: Silence deferred probe error Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-26 3:17 ` Chanwoo Choi 2020-10-26 3:17 ` Chanwoo Choi 2020-10-25 22:17 ` [PATCH v6 51/52] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-10-26 2:50 ` kernel test robot 2020-10-26 3:45 ` kernel test robot 2020-11-01 14:39 ` Chanwoo Choi [this message] 2020-11-01 14:39 ` Chanwoo Choi 2020-11-01 15:23 ` Dmitry Osipenko 2020-11-01 15:23 ` Dmitry Osipenko 2020-11-01 15:44 ` Chanwoo Choi 2020-11-01 15:44 ` Chanwoo Choi 2020-11-01 15:49 ` Dmitry Osipenko 2020-11-01 15:49 ` Dmitry Osipenko 2020-11-01 15:57 ` Chanwoo Choi 2020-11-01 15:57 ` Chanwoo Choi 2020-11-02 19:58 ` Dmitry Osipenko 2020-11-02 19:58 ` Dmitry Osipenko 2020-11-02 20:00 ` Dmitry Osipenko 2020-11-02 20:00 ` Dmitry Osipenko 2020-11-01 14:44 ` Chanwoo Choi 2020-11-01 14:44 ` Chanwoo Choi 2020-11-01 15:24 ` Dmitry Osipenko 2020-11-01 15:24 ` Dmitry Osipenko 2020-11-01 15:45 ` Chanwoo Choi 2020-11-01 15:45 ` Chanwoo Choi 2020-10-25 22:17 ` [PATCH v6 52/52] PM / devfreq: tegra30: Separate configurations per-SoC generation Dmitry Osipenko 2020-10-25 22:17 ` Dmitry Osipenko 2020-11-01 15:20 ` Chanwoo Choi 2020-11-01 15:20 ` Chanwoo Choi 2020-10-26 15:08 ` [PATCH v6 00/52] Introduce memory interconnect for NVIDIA Tegra SoCs Krzysztof Kozlowski 2020-10-26 15:08 ` Krzysztof Kozlowski 2020-10-26 19:14 ` Dmitry Osipenko 2020-10-26 19:14 ` Dmitry Osipenko 2020-10-27 8:52 ` Krzysztof Kozlowski 2020-10-27 8:52 ` Krzysztof Kozlowski 2020-10-27 20:31 ` Dmitry Osipenko 2020-10-27 20:31 ` 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='CAGTfZH1PV4r-pD=zTKD71nQb5+UobJKa5mBv-Nb2ZgSubkscjA@mail.gmail.com' \ --to=cwchoi00@gmail.com \ --cc=cw00.choi@samsung.com \ --cc=cyndis@kapsi.fi \ --cc=devicetree@vger.kernel.org \ --cc=digetx@gmail.com \ --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.