Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63f03c10 authored by Can Guo's avatar Can Guo
Browse files

scsi: ufs: tune host unipro attribute PA_PEERRXHSADAPTINITIAL



During power mode change, UFS host Unipro attribute PA_PEERRXHSADAPTINITIAL
should be set to the value of M-PHY attribute
RX_HS_ADAPT_INITIAL_CAPABILITY read from its peer UFS device.

Change-Id: I67f196babe584254add7f4805c7568dd0443904e
Signed-off-by: default avatarCan Guo <cang@codeaurora.org>
parent cdbe2d3e
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -5446,6 +5446,7 @@ int ufshcd_change_power_mode(struct ufs_hba *hba,
			     struct ufs_pa_layer_attr *pwr_mode)
{
	int ret = 0;
	u32 peer_rx_hs_adapt_initial_cap;

	/* if already configured to the requested pwr_mode */
	if (!hba->restore_needed &&
@@ -5496,8 +5497,19 @@ int ufshcd_change_power_mode(struct ufs_hba *hba,
						pwr_mode->hs_rate);

	if (pwr_mode->gear_tx == UFS_HS_G4) {
		ret = ufshcd_dme_peer_get(hba,
				 UIC_ARG_MIB_SEL(RX_HS_ADAPT_INITIAL_CAPABILITY,
					UIC_ARG_MPHY_RX_GEN_SEL_INDEX(0)),
				    &peer_rx_hs_adapt_initial_cap);
		if (ret) {
			dev_err(hba->dev,
				"%s: RX_HS_ADAPT_INITIAL_CAP get failed %d\n",
				__func__, ret);
			peer_rx_hs_adapt_initial_cap =
						PA_PEERRXHSADAPTINITIAL_Default;
		}
		ret = ufshcd_dme_set(hba, UIC_ARG_MIB(PA_PEERRXHSADAPTINITIAL),
				     PA_PEERRXHSADAPTINITIAL_Default);
				     peer_rx_hs_adapt_initial_cap);
		/* INITIAL ADAPT */
		ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXHSADAPTTYPE),
			       PA_INITIAL_ADAPT);