diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index b21d96365b65..0c4eb4a48fc0 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -7006,6 +7006,11 @@ static irqreturn_t ufshcd_intr(int irq, void *__hba) if (enabled_intr_status) retval |= ufshcd_sl_intr(hba, enabled_intr_status); + if (hba->android_quirks & + UFSHCD_ANDROID_QUIRK_NO_IS_READ_ON_H8 && + intr_status & UIC_HIBERNATE_ENTER) + break; + intr_status = ufshcd_readl(hba, REG_INTERRUPT_STATUS); } diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index 66bd5c15375e..cde9ad6489b2 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -704,6 +704,9 @@ enum ufshcd_android_quirks { /* Set IID to one. */ UFSHCD_ANDROID_QUIRK_SET_IID_TO_ONE = 1 << 30, + + /* Do not read IS after H8 enter */ + UFSHCD_ANDROID_QUIRK_NO_IS_READ_ON_H8 = 1 << 31, }; enum ufshcd_caps {