mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
FROMGIT: scsi: ufs: ufs-qcom: Factor out the logic finding the HS Gear
In the preparation of adding support for new gears, move the logic that
finds the gear for each platform to a new function. This helps with code
readability and also allows the logic to be used in other places of the
driver in future.
While at it, make it clear that this driver only supports symmetric gear
setting (hs_tx_gear == hs_rx_gear).
Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
Tested-by: Andrew Halaney <ahalaney@redhat.com> # Qdrive3/sa8540p-ride
Change-Id: I84a9ba276db78e041bc9913e1d6554e05da4023b
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit c270986527 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
committed by
Todd Kjos
parent
6228fc0812
commit
dcbf4ebcac
@@ -269,6 +269,25 @@ static int ufs_qcom_host_reset(struct ufs_hba *hba)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u32 ufs_qcom_get_hs_gear(struct ufs_hba *hba)
|
||||
{
|
||||
struct ufs_qcom_host *host = ufshcd_get_variant(hba);
|
||||
|
||||
if (host->hw_ver.major == 0x1) {
|
||||
/*
|
||||
* HS-G3 operations may not reliably work on legacy QCOM
|
||||
* UFS host controller hardware even though capability
|
||||
* exchange during link startup phase may end up
|
||||
* negotiating maximum supported gear as G3.
|
||||
* Hence downgrade the maximum supported gear to HS-G2.
|
||||
*/
|
||||
return UFS_HS_G2;
|
||||
}
|
||||
|
||||
/* Default is HS-G3 */
|
||||
return UFS_HS_G3;
|
||||
}
|
||||
|
||||
static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)
|
||||
{
|
||||
struct ufs_qcom_host *host = ufshcd_get_variant(hba);
|
||||
@@ -683,19 +702,8 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
|
||||
ufshcd_init_pwr_dev_param(&ufs_qcom_cap);
|
||||
ufs_qcom_cap.hs_rate = UFS_QCOM_LIMIT_HS_RATE;
|
||||
|
||||
if (host->hw_ver.major == 0x1) {
|
||||
/*
|
||||
* HS-G3 operations may not reliably work on legacy QCOM
|
||||
* UFS host controller hardware even though capability
|
||||
* exchange during link startup phase may end up
|
||||
* negotiating maximum supported gear as G3.
|
||||
* Hence downgrade the maximum supported gear to HS-G2.
|
||||
*/
|
||||
if (ufs_qcom_cap.hs_tx_gear > UFS_HS_G2)
|
||||
ufs_qcom_cap.hs_tx_gear = UFS_HS_G2;
|
||||
if (ufs_qcom_cap.hs_rx_gear > UFS_HS_G2)
|
||||
ufs_qcom_cap.hs_rx_gear = UFS_HS_G2;
|
||||
}
|
||||
/* This driver only supports symmetic gear setting i.e., hs_tx_gear == hs_rx_gear */
|
||||
ufs_qcom_cap.hs_tx_gear = ufs_qcom_cap.hs_rx_gear = ufs_qcom_get_hs_gear(hba);
|
||||
|
||||
ret = ufshcd_get_pwr_dev_param(&ufs_qcom_cap,
|
||||
dev_max_params,
|
||||
|
||||
Reference in New Issue
Block a user