diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index af60346a8f6d..c530a514e95e 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -7186,6 +7186,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 dccc71f37b27..f11e8f54319f 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -706,6 +706,9 @@ enum ufshcd_quirks { enum ufshcd_android_quirks { /* Set IID to one. */ UFSHCD_ANDROID_QUIRK_SET_IID_TO_ONE = 1 << 0, + + /* Do not read IS after H8 enter */ + UFSHCD_ANDROID_QUIRK_NO_IS_READ_ON_H8 = 1 << 1, }; enum ufshcd_caps {