summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubhash Jadavani <subhashj@codeaurora.org>2015-01-09 16:08:07 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 10:58:22 -0700
commit7005012bb0ee53355a4bb5e60e61f31316bd27ef (patch)
tree492dd4076e51b12c9adc5c30d00f2cc96c5a53c0
parente0c0dd6ba0f3962ee4982d940961b71cc6183d5c (diff)
scsi: ufs-qcom: save controller revision before phy_init()
phy_init() calls "init" phy_ops and UFS phy driver might need to know the UFS controller revision in this "init" ops hence save the controller revision before calling phy_init(). Change-Id: I3e9d780dfa3da603b372b1fc4465dfd5f7cfb31a Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
-rw-r--r--drivers/scsi/ufs/ufs-qcom.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index a9ec4d647b6f..8a33fb9520e4 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -252,16 +252,12 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba)
struct ufs_qcom_host *host = hba->priv;
struct phy *phy = host->generic_phy;
int ret = 0;
- u8 major;
- u16 minor, step;
/* Assert PHY reset and apply PHY calibration values */
ufs_qcom_assert_reset(hba);
/* provide 1ms delay to let the reset pulse propagate */
usleep_range(1000, 1100);
- ufs_qcom_get_controller_revision(hba, &major, &minor, &step);
- ufs_qcom_phy_save_controller_version(phy, major, minor, step);
ret = ufs_qcom_phy_calibrate_phy(phy);
if (ret) {
dev_err(hba->dev, "%s: ufs_qcom_phy_calibrate_phy() failed, ret = %d\n",
@@ -1097,6 +1093,8 @@ static int ufs_qcom_init(struct ufs_hba *hba)
int err;
struct device *dev = hba->dev;
struct ufs_qcom_host *host;
+ u8 major;
+ u16 minor, step;
if (strlen(android_boot_dev) && strcmp(android_boot_dev, dev_name(dev)))
return -ENODEV;
@@ -1150,6 +1148,11 @@ static int ufs_qcom_init(struct ufs_hba *hba)
if (err)
goto out_host_free;
+ ufs_qcom_get_controller_revision(hba, &major, &minor, &step);
+ /* update phy revision information before calling phy_init() */
+ ufs_qcom_phy_save_controller_version(host->generic_phy,
+ major, minor, step);
+
phy_init(host->generic_phy);
err = phy_power_on(host->generic_phy);
if (err)