[PATCH v7 0/5] UFS: Add OPP support

Manivannan Sadhasivam posted 5 patches 2 years, 2 months ago
.../devicetree/bindings/ufs/ufs-common.yaml   |  35 +++-
arch/arm64/boot/dts/qcom/sdm845.dtsi          |  42 +++-
arch/arm64/boot/dts/qcom/sm8250.dtsi          |  39 +++-
drivers/ufs/core/ufshcd.c                     | 180 ++++++++++++++----
drivers/ufs/host/ufshcd-pltfrm.c              |  78 ++++++++
include/ufs/ufshcd.h                          |   7 +
6 files changed, 326 insertions(+), 55 deletions(-)
[PATCH v7 0/5] UFS: Add OPP support
Posted by Manivannan Sadhasivam 2 years, 2 months ago
Hi,

This series adds OPP (Operating Points) support to UFSHCD driver.

Motivation behind adding OPP support is to scale both clocks as well as
regulators/performance state dynamically. Currently, UFSHCD just scales
clock frequency during runtime with the help of "freq-table-hz" property
defined in devicetree. With the addition of OPP tables in devicetree (as
done for Qcom SDM845 and SM8250 SoCs in this series) UFSHCD can now scale
both clocks and performance state of power domain which helps in power
saving.

For the addition of OPP support to UFSHCD, there are changes required to
the OPP framework and devfreq drivers. The OPP framework changes are already
merged and the devfreq change is added in this series.

Credits
=======

This series is a continuation of previous work by Krzysztof Kozlowski [1].

Testing
=======

This series is tested on 96Boards RB3 (SDM845 SoC) and RB5 (SM8250 SoC)
development boards.

Merging Strategy
================

Since the devfreq patch got an Ack from the maintainer, either it can be merged
to scsi tree with rest of the patches or merged separately through devfreq tree.

Thanks,
Mani

[1] https://lore.kernel.org/all/20220513061347.46480-1-krzysztof.kozlowski@linaro.org/

Changes in v7:

* Added missing EXPORT_SYMBOL_GPL() for ufshcd_opp_config_clks() API as reported
  by Alessandro Carminati

Changes in v6:

* Collected tags from Dmitry
* Fixed bindings issues reported by Krzysztof

Changes in v5:

* Dropped the devfreq patch since it got applied
* Fixed the bindings issue reported by DT bot
* Rebased on top of mkp/scsi/for-next

Changes in v4:

* Rebased on top of v6.6-rc3

Changes in v3:

* Rebased on top of linux-next/master tag: next-20230731
* Dropped the already applied patches (dts, opp binding and framework)
* Moved the interconnect patches to a separate series:
  https://lore.kernel.org/linux-scsi/20230731145020.41262-1-manivannan.sadhasivam@linaro.org/
* Moved ufshcd_opp_config_clks() API to ufshcd.c to fix the build failure
  reported by Kbuild bot: https://lore.kernel.org/all/202307210542.KoLHRbU6-lkp@intel.com/
* Collected Acks
* v2: https://lore.kernel.org/all/20230720054100.9940-1-manivannan.sadhasivam@linaro.org/

Changes in v2:

* Added more description to the bindings patch 2/15
* Fixed dev_pm_opp_put() usage in patch 10/15
* Added a new patch for adding enums for UFS lanes 14/15
* Changed the icc variables to mem_bw and cfg_bw and used
  the enums for gears and lanes in bw_table
* Collected review tags
* Added SCSI list and folks
* Removed duplicate patches

Krzysztof Kozlowski (2):
  dt-bindings: ufs: common: add OPP table
  arm64: dts: qcom: sdm845: Add OPP table support to UFSHC

Manivannan Sadhasivam (3):
  scsi: ufs: core: Add OPP support for scaling clocks and regulators
  scsi: ufs: host: Add support for parsing OPP
  arm64: dts: qcom: sm8250: Add OPP table support to UFSHC

 .../devicetree/bindings/ufs/ufs-common.yaml   |  35 +++-
 arch/arm64/boot/dts/qcom/sdm845.dtsi          |  42 +++-
 arch/arm64/boot/dts/qcom/sm8250.dtsi          |  39 +++-
 drivers/ufs/core/ufshcd.c                     | 180 ++++++++++++++----
 drivers/ufs/host/ufshcd-pltfrm.c              |  78 ++++++++
 include/ufs/ufshcd.h                          |   7 +
 6 files changed, 326 insertions(+), 55 deletions(-)

-- 
2.25.1
Re: [PATCH v7 0/5] UFS: Add OPP support
Posted by Manivannan Sadhasivam 2 years, 2 months ago
On Thu, Oct 12, 2023 at 10:51:24PM +0530, Manivannan Sadhasivam wrote:
> Hi,
> 
> This series adds OPP (Operating Points) support to UFSHCD driver.
> 
> Motivation behind adding OPP support is to scale both clocks as well as
> regulators/performance state dynamically. Currently, UFSHCD just scales
> clock frequency during runtime with the help of "freq-table-hz" property
> defined in devicetree. With the addition of OPP tables in devicetree (as
> done for Qcom SDM845 and SM8250 SoCs in this series) UFSHCD can now scale
> both clocks and performance state of power domain which helps in power
> saving.
> 
> For the addition of OPP support to UFSHCD, there are changes required to
> the OPP framework and devfreq drivers. The OPP framework changes are already
> merged and the devfreq change is added in this series.
> 
> Credits
> =======
> 
> This series is a continuation of previous work by Krzysztof Kozlowski [1].
> 
> Testing
> =======
> 
> This series is tested on 96Boards RB3 (SDM845 SoC) and RB5 (SM8250 SoC)
> development boards.
> 
> Merging Strategy
> ================
> 
> Since the devfreq patch got an Ack from the maintainer, either it can be merged
> to scsi tree with rest of the patches or merged separately through devfreq tree.
> 

Martin, can you please merge the ufs patches (drivers,bindings) for v6.7? Note
that the devfreq patch already got merged and the above text is outdated (my
bad).

- Mani

> Thanks,
> Mani
> 
> [1] https://lore.kernel.org/all/20220513061347.46480-1-krzysztof.kozlowski@linaro.org/
> 
> Changes in v7:
> 
> * Added missing EXPORT_SYMBOL_GPL() for ufshcd_opp_config_clks() API as reported
>   by Alessandro Carminati
> 
> Changes in v6:
> 
> * Collected tags from Dmitry
> * Fixed bindings issues reported by Krzysztof
> 
> Changes in v5:
> 
> * Dropped the devfreq patch since it got applied
> * Fixed the bindings issue reported by DT bot
> * Rebased on top of mkp/scsi/for-next
> 
> Changes in v4:
> 
> * Rebased on top of v6.6-rc3
> 
> Changes in v3:
> 
> * Rebased on top of linux-next/master tag: next-20230731
> * Dropped the already applied patches (dts, opp binding and framework)
> * Moved the interconnect patches to a separate series:
>   https://lore.kernel.org/linux-scsi/20230731145020.41262-1-manivannan.sadhasivam@linaro.org/
> * Moved ufshcd_opp_config_clks() API to ufshcd.c to fix the build failure
>   reported by Kbuild bot: https://lore.kernel.org/all/202307210542.KoLHRbU6-lkp@intel.com/
> * Collected Acks
> * v2: https://lore.kernel.org/all/20230720054100.9940-1-manivannan.sadhasivam@linaro.org/
> 
> Changes in v2:
> 
> * Added more description to the bindings patch 2/15
> * Fixed dev_pm_opp_put() usage in patch 10/15
> * Added a new patch for adding enums for UFS lanes 14/15
> * Changed the icc variables to mem_bw and cfg_bw and used
>   the enums for gears and lanes in bw_table
> * Collected review tags
> * Added SCSI list and folks
> * Removed duplicate patches
> 
> Krzysztof Kozlowski (2):
>   dt-bindings: ufs: common: add OPP table
>   arm64: dts: qcom: sdm845: Add OPP table support to UFSHC
> 
> Manivannan Sadhasivam (3):
>   scsi: ufs: core: Add OPP support for scaling clocks and regulators
>   scsi: ufs: host: Add support for parsing OPP
>   arm64: dts: qcom: sm8250: Add OPP table support to UFSHC
> 
>  .../devicetree/bindings/ufs/ufs-common.yaml   |  35 +++-
>  arch/arm64/boot/dts/qcom/sdm845.dtsi          |  42 +++-
>  arch/arm64/boot/dts/qcom/sm8250.dtsi          |  39 +++-
>  drivers/ufs/core/ufshcd.c                     | 180 ++++++++++++++----
>  drivers/ufs/host/ufshcd-pltfrm.c              |  78 ++++++++
>  include/ufs/ufshcd.h                          |   7 +
>  6 files changed, 326 insertions(+), 55 deletions(-)
> 
> -- 
> 2.25.1
> 

-- 
மணிவண்ணன் சதாசிவம்
Re: [PATCH v7 0/5] UFS: Add OPP support
Posted by Martin K. Petersen 2 years, 2 months ago
Manivannan,

> Martin, can you please merge the ufs patches (drivers,bindings) for
> v6.7? Note that the devfreq patch already got merged and the above
> text is outdated (my bad).

Applied to 6.7/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering
Re: (subset) [PATCH v7 0/5] UFS: Add OPP support
Posted by Bjorn Andersson 2 years ago
On Thu, 12 Oct 2023 22:51:24 +0530, Manivannan Sadhasivam wrote:
> This series adds OPP (Operating Points) support to UFSHCD driver.
> 
> Motivation behind adding OPP support is to scale both clocks as well as
> regulators/performance state dynamically. Currently, UFSHCD just scales
> clock frequency during runtime with the help of "freq-table-hz" property
> defined in devicetree. With the addition of OPP tables in devicetree (as
> done for Qcom SDM845 and SM8250 SoCs in this series) UFSHCD can now scale
> both clocks and performance state of power domain which helps in power
> saving.
> 
> [...]

Applied, thanks!

[4/5] arm64: dts: qcom: sdm845: Add OPP table support to UFSHC
      commit: ec987b5efd59fdea4178d824d8ec4bbdf3019bdf
[5/5] arm64: dts: qcom: sm8250: Add OPP table support to UFSHC
      commit: 725be1d6318e4ea7e3947fd4242a14cf589cfebf

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>
Re: (subset) [PATCH v7 0/5] UFS: Add OPP support
Posted by Manivannan Sadhasivam 2 years ago
On Sat, Dec 02, 2023 at 08:54:46PM -0800, Bjorn Andersson wrote:
> 
> On Thu, 12 Oct 2023 22:51:24 +0530, Manivannan Sadhasivam wrote:
> > This series adds OPP (Operating Points) support to UFSHCD driver.
> > 
> > Motivation behind adding OPP support is to scale both clocks as well as
> > regulators/performance state dynamically. Currently, UFSHCD just scales
> > clock frequency during runtime with the help of "freq-table-hz" property
> > defined in devicetree. With the addition of OPP tables in devicetree (as
> > done for Qcom SDM845 and SM8250 SoCs in this series) UFSHCD can now scale
> > both clocks and performance state of power domain which helps in power
> > saving.
> > 
> > [...]
> 
> Applied, thanks!
> 
> [4/5] arm64: dts: qcom: sdm845: Add OPP table support to UFSHC
>       commit: ec987b5efd59fdea4178d824d8ec4bbdf3019bdf
> [5/5] arm64: dts: qcom: sm8250: Add OPP table support to UFSHC
>       commit: 725be1d6318e4ea7e3947fd4242a14cf589cfebf
> 

Bjorn, could you please drop these two patches? I found the OPP regression in
the ufs-qcom driver due to some patches that got merged last cycle. Nitin is
working on a fix for that. So I'd like to defer merging of these dts patches to
v6.9.

I can resend them after v6.8-rc1.

- Mani

> Best regards,
> -- 
> Bjorn Andersson <andersson@kernel.org>

-- 
மணிவண்ணன் சதாசிவம்
Re: (subset) [PATCH v7 0/5] UFS: Add OPP support
Posted by Martin K. Petersen 2 years, 1 month ago
On Thu, 12 Oct 2023 22:51:24 +0530, Manivannan Sadhasivam wrote:

> This series adds OPP (Operating Points) support to UFSHCD driver.
> 
> Motivation behind adding OPP support is to scale both clocks as well as
> regulators/performance state dynamically. Currently, UFSHCD just scales
> clock frequency during runtime with the help of "freq-table-hz" property
> defined in devicetree. With the addition of OPP tables in devicetree (as
> done for Qcom SDM845 and SM8250 SoCs in this series) UFSHCD can now scale
> both clocks and performance state of power domain which helps in power
> saving.
> 
> [...]

Applied to 6.7/scsi-queue, thanks!

[1/5] dt-bindings: ufs: common: add OPP table
      https://git.kernel.org/mkp/scsi/c/e820de1d115f
[2/5] scsi: ufs: core: Add OPP support for scaling clocks and regulators
      https://git.kernel.org/mkp/scsi/c/930bd77ebe3d
[3/5] scsi: ufs: host: Add support for parsing OPP
      https://git.kernel.org/mkp/scsi/c/72208ebe181e

-- 
Martin K. Petersen	Oracle Linux Engineering