Message ID | 20250203081109.1614395-1-quic_ziqichen@quicinc.com |
---|---|
Headers | show |
Series | Support Multi-frequency scale for UFS | expand |
On Mon, 2025-02-03 at 16:11 +0800, Ziqi Chen wrote: > From: Can Guo <quic_cang@quicinc.com> > > Instead of only two frequencies, if OPP V2 is used, the UFS devfreq > clock > scaling may scale the clock among multiple frequencies, so just > passing > up/down to vop clk_scale_notify() is not enough to cover the > intermediate > clock freqs between the min and max freqs. Hence pass the target_freq > , > which will be used in successive commits, to clk_scale_notify() to > allow > the vop to perform corresponding configurations with regard to the > clock > freqs. > > Signed-off-by: Can Guo <quic_cang@quicinc.com> > Co-developed-by: Ziqi Chen <quic_ziqichen@quicinc.com> > Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com> I have reviewed patches [1/8], [2/8], [3/8], [4/8] in the v2, since you just changed coding types, and typos , but no logic change in v3. Add my review tag agaion: Reviewed-by: Bean Huo <beanhuo@micron.com>
Hi Bean, Thanks for your review ~ -Ziqi On 2/3/2025 5:37 PM, Bean Huo wrote: > On Mon, 2025-02-03 at 16:11 +0800, Ziqi Chen wrote: >> From: Can Guo <quic_cang@quicinc.com> >> >> Instead of only two frequencies, if OPP V2 is used, the UFS devfreq >> clock >> scaling may scale the clock among multiple frequencies, so just >> passing >> up/down to vop clk_scale_notify() is not enough to cover the >> intermediate >> clock freqs between the min and max freqs. Hence pass the target_freq >> , >> which will be used in successive commits, to clk_scale_notify() to >> allow >> the vop to perform corresponding configurations with regard to the >> clock >> freqs. >> >> Signed-off-by: Can Guo <quic_cang@quicinc.com> >> Co-developed-by: Ziqi Chen <quic_ziqichen@quicinc.com> >> Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com> > > I have reviewed patches [1/8], [2/8], [3/8], [4/8] in the v2, since you > just changed coding types, and typos , but no logic change in v3. Add > my review tag agaion: > > Reviewed-by: Bean Huo <beanhuo@micron.com>
On 03/02/2025 09:11, Ziqi Chen wrote: > With OPP V2 enabled, devfreq can scale clocks amongst multiple frequency > plans. However, the gear speed is only toggled between min and max during > clock scaling. Enable multi-level gear scaling by mapping clock frequencies > to gear speeds, so that when devfreq scales clock frequencies we can put > the UFS link at the appropraite gear speeds accordingly. > > This series has been tested on below platforms - > sm8550 mtp + UFS3.1 > SM8650 MTP + UFS3.1 > SM8750 MTP + UFS4.0 > > v1 -> v2: > 1. Withdraw old patch 8/8 "ARM: dts: msm: Use Operation Points V2 for UFS on SM8650" > 2. Add new patch 8/8 "ABI: sysfs-driver-ufs: Add missing UFS sysfs addributes" > 3. Modify commit message for "scsi: ufs: core: Pass target_freq to clk_scale_notify() vops" and "scsi: ufs: qcom: Pass target_freq to clk scale pre and post change" > 4. In "scsi: ufs: qcom: Pass target_freq to clk scale pre and post change", use common Macro HZ_PER_MHZ in function ufs_qcom_set_core_clk_ctrl() > 5. In "scsi: ufs: qcom: Implement the freq_to_gear_speed() vops", print out freq and gear info as debugging message > 6. In "scsi: ufs: core: Enable multi-level gear scaling", rename the lable "do_pmc" to "config_pwr_mode" > 7. In "scsi: ufs: core: Toggle Write Booster during clock", initialize the local variables "wb_en" as "false" > > v2 -> v3: > 1. Change 'vops' to 'vop' in all commit message > 2. keep the indentation consistent for clk_scale_notify() definition. > 3. In "scsi: ufs: core: Add a vop to map clock frequency to gear speed", "scsi: ufs: qcom: Implement the freq_to_gear_speed() vop" > and "scsi: ufs: core: Enable multi-level gear scaling", remove the parameter 'gear' and use it as return result in function freq_to_gear_speed() > 4. In "scsi: ufs: qcom: Implement the freq_to_gear_speed(), removed the variable 'ret' in function ufs_qcom_freq_to_gear_speed() > 5. In "scsi: ufs: core: Enable multi-level gear scaling", use assignment instead memcpy() in function ufshcd_scale_gear() > 6. Improve the grammar of attributes' descriptions in “ABI: sysfs-driver-ufs: Add missing UFS sysfs attributes” > 7. Typo fixed for some commit messages. > > Can Guo (6): > scsi: ufs: core: Pass target_freq to clk_scale_notify() vop > scsi: ufs: qcom: Pass target_freq to clk scale pre and post change > scsi: ufs: core: Add a vop to map clock frequency to gear speed > scsi: ufs: qcom: Implement the freq_to_gear_speed() vop > scsi: ufs: core: Enable multi-level gear scaling > scsi: ufs: core: Toggle Write Booster during clock scaling base on > gear speed > > Ziqi Chen (2): > scsi: ufs: core: Check if scaling up is required when disable clkscale > ABI: sysfs-driver-ufs: Add missing UFS sysfs attributes > > Documentation/ABI/testing/sysfs-driver-ufs | 33 ++++++++++ > drivers/ufs/core/ufshcd-priv.h | 15 ++++- > drivers/ufs/core/ufshcd.c | 76 +++++++++++++++++----- > drivers/ufs/host/ufs-mediatek.c | 1 + > drivers/ufs/host/ufs-qcom.c | 62 ++++++++++++++---- > include/ufs/ufshcd.h | 9 ++- > 6 files changed, 160 insertions(+), 36 deletions(-) > Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-HDK Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK I added some traces and played with devfreq max_freq while copying data from the UFS disk, no issues observed. Neil
On 2/6/2025 5:53 PM, neil.armstrong@linaro.org wrote: > On 03/02/2025 09:11, Ziqi Chen wrote: >> With OPP V2 enabled, devfreq can scale clocks amongst multiple frequency >> plans. However, the gear speed is only toggled between min and max during >> clock scaling. Enable multi-level gear scaling by mapping clock >> frequencies >> to gear speeds, so that when devfreq scales clock frequencies we can put >> the UFS link at the appropraite gear speeds accordingly. >> >> This series has been tested on below platforms - >> sm8550 mtp + UFS3.1 >> SM8650 MTP + UFS3.1 >> SM8750 MTP + UFS4.0 >> >> v1 -> v2: >> 1. Withdraw old patch 8/8 "ARM: dts: msm: Use Operation Points V2 for >> UFS on SM8650" >> 2. Add new patch 8/8 "ABI: sysfs-driver-ufs: Add missing UFS sysfs >> addributes" >> 3. Modify commit message for "scsi: ufs: core: Pass target_freq to >> clk_scale_notify() vops" and "scsi: ufs: qcom: Pass target_freq to clk >> scale pre and post change" >> 4. In "scsi: ufs: qcom: Pass target_freq to clk scale pre and post >> change", use common Macro HZ_PER_MHZ in function >> ufs_qcom_set_core_clk_ctrl() >> 5. In "scsi: ufs: qcom: Implement the freq_to_gear_speed() vops", >> print out freq and gear info as debugging message >> 6. In "scsi: ufs: core: Enable multi-level gear scaling", rename the >> lable "do_pmc" to "config_pwr_mode" >> 7. In "scsi: ufs: core: Toggle Write Booster during clock", initialize >> the local variables "wb_en" as "false" >> >> v2 -> v3: >> 1. Change 'vops' to 'vop' in all commit message >> 2. keep the indentation consistent for clk_scale_notify() definition. >> 3. In "scsi: ufs: core: Add a vop to map clock frequency to gear >> speed", "scsi: ufs: qcom: Implement the freq_to_gear_speed() vop" >> and "scsi: ufs: core: Enable multi-level gear scaling", remove the >> parameter 'gear' and use it as return result in function >> freq_to_gear_speed() >> 4. In "scsi: ufs: qcom: Implement the freq_to_gear_speed(), removed >> the variable 'ret' in function ufs_qcom_freq_to_gear_speed() >> 5. In "scsi: ufs: core: Enable multi-level gear scaling", use >> assignment instead memcpy() in function ufshcd_scale_gear() >> 6. Improve the grammar of attributes' descriptions in “ABI: sysfs- >> driver-ufs: Add missing UFS sysfs attributes” >> 7. Typo fixed for some commit messages. >> >> Can Guo (6): >> scsi: ufs: core: Pass target_freq to clk_scale_notify() vop >> scsi: ufs: qcom: Pass target_freq to clk scale pre and post change >> scsi: ufs: core: Add a vop to map clock frequency to gear speed >> scsi: ufs: qcom: Implement the freq_to_gear_speed() vop >> scsi: ufs: core: Enable multi-level gear scaling >> scsi: ufs: core: Toggle Write Booster during clock scaling base on >> gear speed >> >> Ziqi Chen (2): >> scsi: ufs: core: Check if scaling up is required when disable clkscale >> ABI: sysfs-driver-ufs: Add missing UFS sysfs attributes >> >> Documentation/ABI/testing/sysfs-driver-ufs | 33 ++++++++++ >> drivers/ufs/core/ufshcd-priv.h | 15 ++++- >> drivers/ufs/core/ufshcd.c | 76 +++++++++++++++++----- >> drivers/ufs/host/ufs-mediatek.c | 1 + >> drivers/ufs/host/ufs-qcom.c | 62 ++++++++++++++---- >> include/ufs/ufshcd.h | 9 ++- >> 6 files changed, 160 insertions(+), 36 deletions(-) >> > > Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD > Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-HDK > Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK > > I added some traces and played with devfreq max_freq while copying data > from the UFS disk, no issues observed. > > Neil Thank Neil for your test result. -Ziqi