summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/ufs/ufs-qcom.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index d10636f99512..ffce2f92c363 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -835,6 +835,7 @@ static void ufs_qcom_advertise_quirks(struct ufs_hba *hba)
{
u8 major;
u16 minor, step;
+ struct ufs_qcom_host *host = hba->priv;
ufs_qcom_get_controller_revision(hba, &major, &minor, &step);
@@ -847,6 +848,16 @@ static void ufs_qcom_advertise_quirks(struct ufs_hba *hba)
if ((minor == 0x001) && (step == 0x0001))
hba->quirks |= UFSHCD_QUIRK_BROKEN_INTR_AGGR;
}
+
+ if (major >= 0x2) {
+ hba->quirks |= UFSHCD_QUIRK_BROKEN_LCC;
+
+ if (!ufs_qcom_cap_qunipro(host))
+ /* Legacy UniPro mode still need following quirks */
+ hba->quirks |= (UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS
+ | UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE
+ | UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP);
+ }
}
static void ufs_qcom_set_caps(struct ufs_hba *hba)