UPSTREAM: 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> Bug: 151050916 (cherry picked from commit d14734ae3ae79d3b0286a2431782054e5066da8f) Change-Id: I6ff47b50d2f83c66ac541c8a1b6206a688662037 Signed-off-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
79ec7f2998
commit
7e6050a292
@ -479,10 +479,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
|
||||
|
@ -5519,8 +5519,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;
|
||||
@ -5554,7 +5554,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;
|
||||
}
|
||||
@ -7640,6 +7640,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,
|
||||
|
@ -534,6 +534,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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user