scsi: ufs: Customize flush threshold for WriteBooster

Allow flush threshold for WriteBooster to be customizable by vendors. To
achieve this, make the value a variable in struct ufs_hba_variant_params.

Also introduce UFS_WB_BUF_REMAIN_PERCENT() macro to provide a more flexible
way to specify WriteBooster available buffer values.

Link: https://lore.kernel.org/r/20200509093716.21010-4-stanley.chu@mediatek.com
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Stanley Chu
2020-05-14 21:02:22 -04:00
committed by Martin K. Petersen
parent 90b8491c00
commit d14734ae3a
3 changed files with 6 additions and 7 deletions
+1 -4
View File
@@ -478,10 +478,7 @@ enum ufs_dev_pwr_mode {
UFS_POWERDOWN_PWR_MODE = 3,
};
enum ufs_dev_wb_buf_avail_size {
UFS_WB_10_PERCENT_BUF_REMAIN = 0x1,
UFS_WB_40_PERCENT_BUF_REMAIN = 0x4,
};
#define UFS_WB_BUF_REMAIN_PERCENT(val) ((val) / 10)
/**
* struct utp_cmd_rsp - Response UPIU structure
+4 -3
View File
@@ -5301,8 +5301,8 @@ static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
cur_buf);
return false;
}
/* Let it continue to flush when >60% full */
if (avail_buf < UFS_WB_40_PERCENT_BUF_REMAIN)
/* Let it continue to flush when available buffer exceeds threshold */
if (avail_buf < hba->vps->wb_flush_threshold)
return true;
return false;
@@ -5336,7 +5336,7 @@ static bool ufshcd_wb_keep_vcc_on(struct ufs_hba *hba)
}
if (!hba->dev_info.b_presrv_uspc_en) {
if (avail_buf <= UFS_WB_10_PERCENT_BUF_REMAIN)
if (avail_buf <= UFS_WB_BUF_REMAIN_PERCENT(10))
return true;
return false;
}
@@ -7462,6 +7462,7 @@ static const struct attribute_group *ufshcd_driver_groups[] = {
static struct ufs_hba_variant_params ufs_hba_vps = {
.hba_enable_delay_us = 1000,
.wb_flush_threshold = UFS_WB_BUF_REMAIN_PERCENT(40),
.devfreq_profile.polling_ms = 100,
.devfreq_profile.target = ufshcd_devfreq_target,
.devfreq_profile.get_dev_status = ufshcd_devfreq_get_dev_status,
+1
View File
@@ -570,6 +570,7 @@ struct ufs_hba_variant_params {
struct devfreq_dev_profile devfreq_profile;
struct devfreq_simple_ondemand_data ondemand_data;
u16 hba_enable_delay_us;
u32 wb_flush_threshold;
};
/**