Messages in this thread |  | | Subject | Re: [PATCH v2] spi: spi-geni-qcom: Set the clock properly at runtime resume | From | Rajendra Nayak <> | Date | Fri, 10 Jul 2020 09:47:19 +0530 |
| |
On 7/9/2020 8:10 PM, Douglas Anderson wrote: > In the patch ("spi: spi-geni-qcom: Avoid clock setting if not needed") > we avoid a whole pile of clock code. As part of that, we should have > restored the clock at runtime resume. Do that. > > It turns out that, at least with today's configurations, this doesn't > actually matter. That's because none of the current device trees have > an OPP table for geni SPI yet. That makes dev_pm_opp_set_rate(dev, 0) > a no-op. This is why it wasn't noticed in the testing of the original > patch. It's still a good idea to fix, though. > > Signed-off-by: Douglas Anderson <dianders@chromium.org> > Acked-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Rajendra Nayak <rnayak@codeaurora.org>
> --- > Sending this as a separate patch even though I think the patch it's > fixing [1] hasn't landed yet. I'd be happy if this was squashed into > that patch when landing if that suits everyone, but it could land on > its own too. > > Like the patch it's fixing, this needs to target the Qualcomm tree in > order to avoid merge conflicts. > > [1] https://lore.kernel.org/r/20200701174506.1.Icfdcee14649fc0a6c38e87477b28523d4e60bab3@changeid > > Changes in v2: > - Return error from runtime resume if dev_pm_opp_set_rate() fails. > > drivers/spi/spi-geni-qcom.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c > index 97fac5ea6afd..0e11a90490ff 100644 > --- a/drivers/spi/spi-geni-qcom.c > +++ b/drivers/spi/spi-geni-qcom.c > @@ -79,6 +79,7 @@ struct spi_geni_master { > u32 tx_wm; > u32 last_mode; > unsigned long cur_speed_hz; > + unsigned long cur_sclk_hz; > unsigned int cur_bits_per_word; > unsigned int tx_rem_bytes; > unsigned int rx_rem_bytes; > @@ -116,6 +117,9 @@ static int get_spi_clk_cfg(unsigned int speed_hz, > ret = dev_pm_opp_set_rate(mas->dev, sclk_freq); > if (ret) > dev_err(mas->dev, "dev_pm_opp_set_rate failed %d\n", ret); > + else > + mas->cur_sclk_hz = sclk_freq; > + > return ret; > } > > @@ -670,7 +674,11 @@ static int __maybe_unused spi_geni_runtime_resume(struct device *dev) > if (ret) > return ret; > > - return geni_se_resources_on(&mas->se); > + ret = geni_se_resources_on(&mas->se); > + if (ret) > + return ret; > + > + return dev_pm_opp_set_rate(mas->dev, mas->cur_sclk_hz); > } > > static int __maybe_unused spi_geni_suspend(struct device *dev) >
-- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
|  |