scsi: ufs: core: Add support for parsing OPP
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Thu, 12 Oct 2023 17:21:27 +0000 (22:51 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 17 Oct 2023 00:59:21 +0000 (20:59 -0400)
commit72208ebe181e38678dce753354233acf0cc5422b
tree470d5fcab61dd251057c39fa67d9a5a64efe7426
parent930bd77ebe3dc23b18aa49e55e6a515d5663d67a
scsi: ufs: core: Add support for parsing OPP

OPP framework can be used to scale the clocks along with other entities
such as regulators, performance state etc... So let's add support for
parsing OPP from devicetree. OPP support in devicetree is added through the
"operating-points-v2" property which accepts the OPP table defining clock
frequency, regulator voltage, power domain performance state etc...

Since the UFS controller requires multiple clocks to be controlled for
proper working, devm_pm_opp_set_config() has been used which supports
scaling multiple clocks through custom ufshcd_opp_config_clks() callback.

It should be noted that the OPP support is not compatible with the old
"freq-table-hz" property. So only one can be used at a time even though
the UFS core supports both.

Co-developed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20231012172129.65172-4-manivannan.sadhasivam@linaro.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c
drivers/ufs/host/ufshcd-pltfrm.c
include/ufs/ufshcd.h