* [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state [not found] <1589368382-19607-1-git-send-email-rnayak@codeaurora.org> @ 2020-05-13 11:12 ` Rajendra Nayak 2020-05-13 19:07 ` Bjorn Andersson 2020-05-26 10:39 ` Mark Brown 2020-05-13 11:13 ` [PATCH v5 6/6] spi: spi-qcom-qspi: " Rajendra Nayak 1 sibling, 2 replies; 8+ messages in thread From: Rajendra Nayak @ 2020-05-13 11:12 UTC (permalink / raw) To: viresh.kumar, sboyd, bjorn.andersson, agross Cc: linux-arm-msm, linux-kernel, mka, Rajendra Nayak, Mark Brown, Alok Chauhan, Akash Asthana, linux-spi geni spi needs to express a perforamnce state requirement on CX depending on the frequency of the clock rates. Use OPP table from DT to register with OPP framework and use dev_pm_opp_set_rate() to set the clk/perf state. Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org> Reviewed-by: Matthias Kaehlcke <mka@chromium.org> Cc: Mark Brown <broonie@kernel.org> Cc: Alok Chauhan <alokc@codeaurora.org> Cc: Akash Asthana <akashast@codeaurora.org> Cc: linux-spi@vger.kernel.org --- This patch will need to land via the msm tree because of a dependency with another change. Change in v5: OPP cleanup done as the last thing in spi_geni_remove() drivers/spi/spi-geni-qcom.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index c397242..0d7ead1 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c @@ -7,6 +7,7 @@ #include <linux/log2.h> #include <linux/module.h> #include <linux/platform_device.h> +#include <linux/pm_opp.h> #include <linux/pm_runtime.h> #include <linux/qcom-geni-se.h> #include <linux/spi/spi.h> @@ -95,7 +96,6 @@ static int get_spi_clk_cfg(unsigned int speed_hz, { unsigned long sclk_freq; unsigned int actual_hz; - struct geni_se *se = &mas->se; int ret; ret = geni_se_clk_freq_match(&mas->se, @@ -112,9 +112,9 @@ static int get_spi_clk_cfg(unsigned int speed_hz, dev_dbg(mas->dev, "req %u=>%u sclk %lu, idx %d, div %d\n", speed_hz, actual_hz, sclk_freq, *clk_idx, *clk_div); - ret = clk_set_rate(se->clk, sclk_freq); + ret = dev_pm_opp_set_rate(mas->dev, sclk_freq); if (ret) - dev_err(mas->dev, "clk_set_rate failed %d\n", ret); + dev_err(mas->dev, "dev_pm_opp_set_rate failed %d\n", ret); return ret; } @@ -561,6 +561,17 @@ static int spi_geni_probe(struct platform_device *pdev) mas->se.wrapper = dev_get_drvdata(dev->parent); mas->se.base = base; mas->se.clk = clk; + mas->se.opp_table = dev_pm_opp_set_clkname(&pdev->dev, "se"); + if (IS_ERR(mas->se.opp_table)) + return PTR_ERR(mas->se.opp_table); + /* OPP table is optional */ + ret = dev_pm_opp_of_add_table(&pdev->dev); + if (!ret) { + mas->se.has_opp_table = true; + } else if (ret != -ENODEV) { + dev_err(&pdev->dev, "invalid OPP table in device tree\n"); + return ret; + } spi->bus_num = -1; spi->dev.of_node = dev->of_node; @@ -596,6 +607,9 @@ static int spi_geni_probe(struct platform_device *pdev) spi_geni_probe_runtime_disable: pm_runtime_disable(dev); spi_master_put(spi); + if (mas->se.has_opp_table) + dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_put_clkname(mas->se.opp_table); return ret; } @@ -609,6 +623,9 @@ static int spi_geni_remove(struct platform_device *pdev) free_irq(mas->irq, spi); pm_runtime_disable(&pdev->dev); + if (mas->se.has_opp_table) + dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_put_clkname(mas->se.opp_table); return 0; } @@ -617,6 +634,9 @@ static int __maybe_unused spi_geni_runtime_suspend(struct device *dev) struct spi_master *spi = dev_get_drvdata(dev); struct spi_geni_master *mas = spi_master_get_devdata(spi); + /* Drop the performance state vote */ + dev_pm_opp_set_rate(dev, 0); + return geni_se_resources_off(&mas->se); } -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state 2020-05-13 11:12 ` [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state Rajendra Nayak @ 2020-05-13 19:07 ` Bjorn Andersson 2020-05-14 5:03 ` Rajendra Nayak 2020-05-26 10:39 ` Mark Brown 1 sibling, 1 reply; 8+ messages in thread From: Bjorn Andersson @ 2020-05-13 19:07 UTC (permalink / raw) To: Rajendra Nayak Cc: viresh.kumar, sboyd, agross, linux-arm-msm, linux-kernel, mka, Mark Brown, Alok Chauhan, Akash Asthana, linux-spi On Wed 13 May 04:12 PDT 2020, Rajendra Nayak wrote: > geni spi needs to express a perforamnce state requirement on CX > depending on the frequency of the clock rates. Use OPP table from > DT to register with OPP framework and use dev_pm_opp_set_rate() to > set the clk/perf state. > > Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org> > Reviewed-by: Matthias Kaehlcke <mka@chromium.org> > Cc: Mark Brown <broonie@kernel.org> > Cc: Alok Chauhan <alokc@codeaurora.org> > Cc: Akash Asthana <akashast@codeaurora.org> > Cc: linux-spi@vger.kernel.org > --- > This patch will need to land via the msm tree because of a dependency > with another change. > Change in v5: OPP cleanup done as the last thing in spi_geni_remove() > > drivers/spi/spi-geni-qcom.c | 26 +++++++++++++++++++++++--- > 1 file changed, 23 insertions(+), 3 deletions(-) > > diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c > index c397242..0d7ead1 100644 > --- a/drivers/spi/spi-geni-qcom.c > +++ b/drivers/spi/spi-geni-qcom.c > @@ -7,6 +7,7 @@ > #include <linux/log2.h> > #include <linux/module.h> > #include <linux/platform_device.h> > +#include <linux/pm_opp.h> > #include <linux/pm_runtime.h> > #include <linux/qcom-geni-se.h> > #include <linux/spi/spi.h> > @@ -95,7 +96,6 @@ static int get_spi_clk_cfg(unsigned int speed_hz, > { > unsigned long sclk_freq; > unsigned int actual_hz; > - struct geni_se *se = &mas->se; > int ret; > > ret = geni_se_clk_freq_match(&mas->se, > @@ -112,9 +112,9 @@ static int get_spi_clk_cfg(unsigned int speed_hz, > > dev_dbg(mas->dev, "req %u=>%u sclk %lu, idx %d, div %d\n", speed_hz, > actual_hz, sclk_freq, *clk_idx, *clk_div); > - ret = clk_set_rate(se->clk, sclk_freq); > + ret = dev_pm_opp_set_rate(mas->dev, sclk_freq); > if (ret) > - dev_err(mas->dev, "clk_set_rate failed %d\n", ret); > + dev_err(mas->dev, "dev_pm_opp_set_rate failed %d\n", ret); > return ret; > } > > @@ -561,6 +561,17 @@ static int spi_geni_probe(struct platform_device *pdev) > mas->se.wrapper = dev_get_drvdata(dev->parent); > mas->se.base = base; > mas->se.clk = clk; > + mas->se.opp_table = dev_pm_opp_set_clkname(&pdev->dev, "se"); > + if (IS_ERR(mas->se.opp_table)) > + return PTR_ERR(mas->se.opp_table); > + /* OPP table is optional */ > + ret = dev_pm_opp_of_add_table(&pdev->dev); > + if (!ret) { > + mas->se.has_opp_table = true; > + } else if (ret != -ENODEV) { > + dev_err(&pdev->dev, "invalid OPP table in device tree\n"); > + return ret; > + } > > spi->bus_num = -1; > spi->dev.of_node = dev->of_node; > @@ -596,6 +607,9 @@ static int spi_geni_probe(struct platform_device *pdev) > spi_geni_probe_runtime_disable: > pm_runtime_disable(dev); > spi_master_put(spi); > + if (mas->se.has_opp_table) Why do you need has_opp_table? Afaict if dev_pm_opp_of_add_table() returns -ENODEV there's no attached opp-table and dev_pm_opp_of_remove_table() is a nop. Regards, Bjorn > + dev_pm_opp_of_remove_table(&pdev->dev); > + dev_pm_opp_put_clkname(mas->se.opp_table); > return ret; > } > > @@ -609,6 +623,9 @@ static int spi_geni_remove(struct platform_device *pdev) > > free_irq(mas->irq, spi); > pm_runtime_disable(&pdev->dev); > + if (mas->se.has_opp_table) > + dev_pm_opp_of_remove_table(&pdev->dev); > + dev_pm_opp_put_clkname(mas->se.opp_table); > return 0; > } > > @@ -617,6 +634,9 @@ static int __maybe_unused spi_geni_runtime_suspend(struct device *dev) > struct spi_master *spi = dev_get_drvdata(dev); > struct spi_geni_master *mas = spi_master_get_devdata(spi); > > + /* Drop the performance state vote */ > + dev_pm_opp_set_rate(dev, 0); > + > return geni_se_resources_off(&mas->se); > } > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member > of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state 2020-05-13 19:07 ` Bjorn Andersson @ 2020-05-14 5:03 ` Rajendra Nayak 2020-05-14 5:38 ` Bjorn Andersson 0 siblings, 1 reply; 8+ messages in thread From: Rajendra Nayak @ 2020-05-14 5:03 UTC (permalink / raw) To: Bjorn Andersson Cc: viresh.kumar, sboyd, agross, linux-arm-msm, linux-kernel, mka, Mark Brown, Alok Chauhan, Akash Asthana, linux-spi [].. >> >> spi->bus_num = -1; >> spi->dev.of_node = dev->of_node; >> @@ -596,6 +607,9 @@ static int spi_geni_probe(struct platform_device *pdev) >> spi_geni_probe_runtime_disable: >> pm_runtime_disable(dev); >> spi_master_put(spi); >> + if (mas->se.has_opp_table) > > Why do you need has_opp_table? > > Afaict if dev_pm_opp_of_add_table() returns -ENODEV there's no attached > opp-table and dev_pm_opp_of_remove_table() is a nop. Apparently its not. Calling dev_pm_opp_of_remove_table() when dev_pm_opp_of_add_table() failed causes use-count mismatch. You can see https://lkml.org/lkml/2020/4/15/18 for more details. -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state 2020-05-14 5:03 ` Rajendra Nayak @ 2020-05-14 5:38 ` Bjorn Andersson 0 siblings, 0 replies; 8+ messages in thread From: Bjorn Andersson @ 2020-05-14 5:38 UTC (permalink / raw) To: Rajendra Nayak Cc: viresh.kumar, sboyd, agross, linux-arm-msm, linux-kernel, mka, Mark Brown, Alok Chauhan, Akash Asthana, linux-spi On Wed 13 May 22:03 PDT 2020, Rajendra Nayak wrote: > > [].. > > > > spi->bus_num = -1; > > > spi->dev.of_node = dev->of_node; > > > @@ -596,6 +607,9 @@ static int spi_geni_probe(struct platform_device *pdev) > > > spi_geni_probe_runtime_disable: > > > pm_runtime_disable(dev); > > > spi_master_put(spi); > > > + if (mas->se.has_opp_table) > > > > Why do you need has_opp_table? > > > > Afaict if dev_pm_opp_of_add_table() returns -ENODEV there's no attached > > opp-table and dev_pm_opp_of_remove_table() is a nop. > > Apparently its not. Calling dev_pm_opp_of_remove_table() when dev_pm_opp_of_add_table() > failed causes use-count mismatch. > You can see https://lkml.org/lkml/2020/4/15/18 for more details. > Must have missed that when I glanced at the code, thanks for clarifying. Regards, Bjorn > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member > of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state 2020-05-13 11:12 ` [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state Rajendra Nayak 2020-05-13 19:07 ` Bjorn Andersson @ 2020-05-26 10:39 ` Mark Brown 1 sibling, 0 replies; 8+ messages in thread From: Mark Brown @ 2020-05-26 10:39 UTC (permalink / raw) To: Rajendra Nayak Cc: viresh.kumar, sboyd, bjorn.andersson, agross, linux-arm-msm, linux-kernel, mka, Alok Chauhan, Akash Asthana, linux-spi [-- Attachment #1: Type: text/plain, Size: 336 bytes --] On Wed, May 13, 2020 at 04:42:58PM +0530, Rajendra Nayak wrote: > geni spi needs to express a perforamnce state requirement on CX > depending on the frequency of the clock rates. Use OPP table from > DT to register with OPP framework and use dev_pm_opp_set_rate() to > set the clk/perf state. Acked-by: Mark Brown <broonie@kernel.org> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 6/6] spi: spi-qcom-qspi: Use OPP API to set clk/perf state [not found] <1589368382-19607-1-git-send-email-rnayak@codeaurora.org> 2020-05-13 11:12 ` [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state Rajendra Nayak @ 2020-05-13 11:13 ` Rajendra Nayak 2020-05-13 18:52 ` Matthias Kaehlcke 2020-05-26 10:39 ` Mark Brown 1 sibling, 2 replies; 8+ messages in thread From: Rajendra Nayak @ 2020-05-13 11:13 UTC (permalink / raw) To: viresh.kumar, sboyd, bjorn.andersson, agross Cc: linux-arm-msm, linux-kernel, mka, Rajendra Nayak, Mark Brown, Alok Chauhan, Akash Asthana, linux-spi QSPI needs to vote on a performance state of a power domain depending on the clock rate. Add support for it by specifying the perf state/clock rate as an OPP table in device tree. Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Alok Chauhan <alokc@codeaurora.org> Cc: Akash Asthana <akashast@codeaurora.org> Cc: linux-spi@vger.kernel.org --- Change in v5: OPP cleanup done as the last thing in qcom_qspi_remove() drivers/spi/spi-qcom-qspi.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi-qcom-qspi.c b/drivers/spi/spi-qcom-qspi.c index 3c4f83b..c853eba 100644 --- a/drivers/spi/spi-qcom-qspi.c +++ b/drivers/spi/spi-qcom-qspi.c @@ -8,6 +8,7 @@ #include <linux/of.h> #include <linux/of_platform.h> #include <linux/pm_runtime.h> +#include <linux/pm_opp.h> #include <linux/spi/spi.h> #include <linux/spi/spi-mem.h> @@ -139,6 +140,8 @@ struct qcom_qspi { struct device *dev; struct clk_bulk_data *clks; struct qspi_xfer xfer; + struct opp_table *opp_table; + bool has_opp_table; /* Lock to protect xfer and IRQ accessed registers */ spinlock_t lock; }; @@ -235,7 +238,7 @@ static int qcom_qspi_transfer_one(struct spi_master *master, speed_hz = xfer->speed_hz; /* In regular operation (SBL_EN=1) core must be 4x transfer clock */ - ret = clk_set_rate(ctrl->clks[QSPI_CLK_CORE].clk, speed_hz * 4); + ret = dev_pm_opp_set_rate(ctrl->dev, speed_hz * 4); if (ret) { dev_err(ctrl->dev, "Failed to set core clk %d\n", ret); return ret; @@ -481,6 +484,20 @@ static int qcom_qspi_probe(struct platform_device *pdev) master->handle_err = qcom_qspi_handle_err; master->auto_runtime_pm = true; + ctrl->opp_table = dev_pm_opp_set_clkname(&pdev->dev, "core"); + if (IS_ERR(ctrl->opp_table)) { + ret = PTR_ERR(ctrl->opp_table); + goto exit_probe_master_put; + } + /* OPP table is optional */ + ret = dev_pm_opp_of_add_table(&pdev->dev); + if (!ret) { + ctrl->has_opp_table = true; + } else if (ret != -ENODEV) { + dev_err(&pdev->dev, "invalid OPP table in device tree\n"); + goto exit_probe_master_put; + } + pm_runtime_enable(dev); ret = spi_register_master(master); @@ -488,6 +505,9 @@ static int qcom_qspi_probe(struct platform_device *pdev) return 0; pm_runtime_disable(dev); + if (ctrl->has_opp_table) + dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_put_clkname(ctrl->opp_table); exit_probe_master_put: spi_master_put(master); @@ -498,11 +518,16 @@ static int qcom_qspi_probe(struct platform_device *pdev) static int qcom_qspi_remove(struct platform_device *pdev) { struct spi_master *master = platform_get_drvdata(pdev); + struct qcom_qspi *ctrl = spi_master_get_devdata(master); /* Unregister _before_ disabling pm_runtime() so we stop transfers */ spi_unregister_master(master); pm_runtime_disable(&pdev->dev); + if (ctrl->has_opp_table) + dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_put_clkname(ctrl->opp_table); + return 0; } @@ -512,6 +537,8 @@ static int __maybe_unused qcom_qspi_runtime_suspend(struct device *dev) struct spi_master *master = dev_get_drvdata(dev); struct qcom_qspi *ctrl = spi_master_get_devdata(master); + /* Drop the performance state vote */ + dev_pm_opp_set_rate(dev, 0); clk_bulk_disable_unprepare(QSPI_NUM_CLKS, ctrl->clks); return 0; -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 6/6] spi: spi-qcom-qspi: Use OPP API to set clk/perf state 2020-05-13 11:13 ` [PATCH v5 6/6] spi: spi-qcom-qspi: " Rajendra Nayak @ 2020-05-13 18:52 ` Matthias Kaehlcke 2020-05-26 10:39 ` Mark Brown 1 sibling, 0 replies; 8+ messages in thread From: Matthias Kaehlcke @ 2020-05-13 18:52 UTC (permalink / raw) To: Rajendra Nayak Cc: viresh.kumar, sboyd, bjorn.andersson, agross, linux-arm-msm, linux-kernel, Mark Brown, Alok Chauhan, Akash Asthana, linux-spi On Wed, May 13, 2020 at 04:43:02PM +0530, Rajendra Nayak wrote: > QSPI needs to vote on a performance state of a power domain depending on > the clock rate. Add support for it by specifying the perf state/clock rate > as an OPP table in device tree. > > Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org> > Cc: Mark Brown <broonie@kernel.org> > Cc: Alok Chauhan <alokc@codeaurora.org> > Cc: Akash Asthana <akashast@codeaurora.org> > Cc: linux-spi@vger.kernel.org > --- > Change in v5: OPP cleanup done as the last thing in qcom_qspi_remove() > > drivers/spi/spi-qcom-qspi.c | 29 ++++++++++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > > diff --git a/drivers/spi/spi-qcom-qspi.c b/drivers/spi/spi-qcom-qspi.c > index 3c4f83b..c853eba 100644 > --- a/drivers/spi/spi-qcom-qspi.c > +++ b/drivers/spi/spi-qcom-qspi.c > @@ -8,6 +8,7 @@ > #include <linux/of.h> > #include <linux/of_platform.h> > #include <linux/pm_runtime.h> > +#include <linux/pm_opp.h> > #include <linux/spi/spi.h> > #include <linux/spi/spi-mem.h> > > @@ -139,6 +140,8 @@ struct qcom_qspi { > struct device *dev; > struct clk_bulk_data *clks; > struct qspi_xfer xfer; > + struct opp_table *opp_table; > + bool has_opp_table; > /* Lock to protect xfer and IRQ accessed registers */ > spinlock_t lock; > }; > @@ -235,7 +238,7 @@ static int qcom_qspi_transfer_one(struct spi_master *master, > speed_hz = xfer->speed_hz; > > /* In regular operation (SBL_EN=1) core must be 4x transfer clock */ > - ret = clk_set_rate(ctrl->clks[QSPI_CLK_CORE].clk, speed_hz * 4); > + ret = dev_pm_opp_set_rate(ctrl->dev, speed_hz * 4); > if (ret) { > dev_err(ctrl->dev, "Failed to set core clk %d\n", ret); > return ret; > @@ -481,6 +484,20 @@ static int qcom_qspi_probe(struct platform_device *pdev) > master->handle_err = qcom_qspi_handle_err; > master->auto_runtime_pm = true; > > + ctrl->opp_table = dev_pm_opp_set_clkname(&pdev->dev, "core"); > + if (IS_ERR(ctrl->opp_table)) { > + ret = PTR_ERR(ctrl->opp_table); > + goto exit_probe_master_put; > + } > + /* OPP table is optional */ > + ret = dev_pm_opp_of_add_table(&pdev->dev); > + if (!ret) { > + ctrl->has_opp_table = true; > + } else if (ret != -ENODEV) { > + dev_err(&pdev->dev, "invalid OPP table in device tree\n"); > + goto exit_probe_master_put; > + } > + > pm_runtime_enable(dev); > > ret = spi_register_master(master); > @@ -488,6 +505,9 @@ static int qcom_qspi_probe(struct platform_device *pdev) > return 0; > > pm_runtime_disable(dev); > + if (ctrl->has_opp_table) > + dev_pm_opp_of_remove_table(&pdev->dev); > + dev_pm_opp_put_clkname(ctrl->opp_table); > > exit_probe_master_put: > spi_master_put(master); > @@ -498,11 +518,16 @@ static int qcom_qspi_probe(struct platform_device *pdev) > static int qcom_qspi_remove(struct platform_device *pdev) > { > struct spi_master *master = platform_get_drvdata(pdev); > + struct qcom_qspi *ctrl = spi_master_get_devdata(master); > > /* Unregister _before_ disabling pm_runtime() so we stop transfers */ > spi_unregister_master(master); > > pm_runtime_disable(&pdev->dev); > + if (ctrl->has_opp_table) > + dev_pm_opp_of_remove_table(&pdev->dev); > + dev_pm_opp_put_clkname(ctrl->opp_table); > + > remove 2nd empty line. Maybe this can be done when the patch is applied if there are no other reasons to respin the series? Reviewed-by: Matthias Kaehlcke <mka@chromium.org> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 6/6] spi: spi-qcom-qspi: Use OPP API to set clk/perf state 2020-05-13 11:13 ` [PATCH v5 6/6] spi: spi-qcom-qspi: " Rajendra Nayak 2020-05-13 18:52 ` Matthias Kaehlcke @ 2020-05-26 10:39 ` Mark Brown 1 sibling, 0 replies; 8+ messages in thread From: Mark Brown @ 2020-05-26 10:39 UTC (permalink / raw) To: Rajendra Nayak Cc: viresh.kumar, sboyd, bjorn.andersson, agross, linux-arm-msm, linux-kernel, mka, Alok Chauhan, Akash Asthana, linux-spi [-- Attachment #1: Type: text/plain, Size: 294 bytes --] On Wed, May 13, 2020 at 04:43:02PM +0530, Rajendra Nayak wrote: > QSPI needs to vote on a performance state of a power domain depending on > the clock rate. Add support for it by specifying the perf state/clock rate > as an OPP table in device Acked-by: Mark Brown <broonie@kernel.org> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-05-26 10:40 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1589368382-19607-1-git-send-email-rnayak@codeaurora.org> 2020-05-13 11:12 ` [PATCH v5 2/6] spi: spi-geni-qcom: Use OPP API to set clk/perf state Rajendra Nayak 2020-05-13 19:07 ` Bjorn Andersson 2020-05-14 5:03 ` Rajendra Nayak 2020-05-14 5:38 ` Bjorn Andersson 2020-05-26 10:39 ` Mark Brown 2020-05-13 11:13 ` [PATCH v5 6/6] spi: spi-qcom-qspi: " Rajendra Nayak 2020-05-13 18:52 ` Matthias Kaehlcke 2020-05-26 10:39 ` Mark Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).