+static irqreturn_t ufshcd_intr(int irq, void *__hba)
+{
+ struct ufs_hba *hba = __hba;
+
+ /*
+ * Move interrupt handling to thread when MCQ is not supported
+ * or when Interrupt Aggregation is not supported, leading to
+ * potentially longer interrupt handling.
+ */
+ if (!is_mcq_supported(hba) || !ufshcd_is_intr_aggr_allowed(hba))
+ return IRQ_WAKE_THREAD;
+
+ /* Directly handle interrupts since MCQ handlers does the hard job */
+ return ufshcd_sl_intr(hba, ufshcd_readl(hba, REG_INTERRUPT_STATUS) &
+ ufshcd_readl(hba, REG_INTERRUPT_ENABLE));
+}