Message ID | 20250203081109.1614395-1-quic_ziqichen@quicinc.com |
---|---|
Headers | show |
Series | Support Multi-frequency scale for UFS | expand |
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