mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
scsi: ufs: core: Maximum RTT supported by the host driver
Allow platform vendors to take precedence having their own max rtt support. This makes sense because the host controller's nortt characteristic may vary among vendors. while at it, set this value for Mediatek, as requested by Peter - https://lore.kernel.org/all/0a57d6bab739d6a10584f2baba115d00dfc9c94c.camel@mediatek.com/ Signed-off-by: Avri Altman <avri.altman@wdc.com> Link: https://lore.kernel.org/r/20240530142510.734-3-avri.altman@wdc.com Reviewed-by: Peter Wang <peter.wang@mediatek.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
9ec54934ce
commit
e75ff63300
@ -8131,6 +8131,8 @@ static void ufshcd_set_rtt(struct ufs_hba *hba)
|
||||
struct ufs_dev_info *dev_info = &hba->dev_info;
|
||||
u32 rtt = 0;
|
||||
u32 dev_rtt = 0;
|
||||
int host_rtt_cap = hba->vops && hba->vops->max_num_rtt ?
|
||||
hba->vops->max_num_rtt : hba->nortt;
|
||||
|
||||
/* RTT override makes sense only for UFS-4.0 and above */
|
||||
if (dev_info->wspecversion < 0x400)
|
||||
@ -8146,7 +8148,8 @@ static void ufshcd_set_rtt(struct ufs_hba *hba)
|
||||
if (dev_rtt != DEFAULT_MAX_NUM_RTT)
|
||||
return;
|
||||
|
||||
rtt = min_t(int, dev_info->rtt_cap, hba->nortt);
|
||||
rtt = min_t(int, dev_info->rtt_cap, host_rtt_cap);
|
||||
|
||||
if (rtt == dev_rtt)
|
||||
return;
|
||||
|
||||
|
@ -1785,6 +1785,7 @@ static int ufs_mtk_config_esi(struct ufs_hba *hba)
|
||||
*/
|
||||
static const struct ufs_hba_variant_ops ufs_hba_mtk_vops = {
|
||||
.name = "mediatek.ufshci",
|
||||
.max_num_rtt = MTK_MAX_NUM_RTT,
|
||||
.init = ufs_mtk_init,
|
||||
.get_ufs_hci_version = ufs_mtk_get_ufs_hci_version,
|
||||
.setup_clocks = ufs_mtk_setup_clocks,
|
||||
|
@ -189,4 +189,7 @@ struct ufs_mtk_host {
|
||||
/* MTK delay of autosuspend: 500 ms */
|
||||
#define MTK_RPM_AUTOSUSPEND_DELAY_MS 500
|
||||
|
||||
/* MTK RTT support number */
|
||||
#define MTK_MAX_NUM_RTT 2
|
||||
|
||||
#endif /* !_UFS_MEDIATEK_H */
|
||||
|
@ -295,6 +295,7 @@ struct ufs_pwr_mode_info {
|
||||
/**
|
||||
* struct ufs_hba_variant_ops - variant specific callbacks
|
||||
* @name: variant name
|
||||
* @max_num_rtt: maximum RTT supported by the host
|
||||
* @init: called when the driver is initialized
|
||||
* @exit: called to cleanup everything done in init
|
||||
* @get_ufs_hci_version: called to get UFS HCI version
|
||||
@ -332,6 +333,7 @@ struct ufs_pwr_mode_info {
|
||||
*/
|
||||
struct ufs_hba_variant_ops {
|
||||
const char *name;
|
||||
int max_num_rtt;
|
||||
int (*init)(struct ufs_hba *);
|
||||
void (*exit)(struct ufs_hba *);
|
||||
u32 (*get_ufs_hci_version)(struct ufs_hba *);
|
||||
|
Loading…
Reference in New Issue
Block a user