Commit d402b20f authored by Adrian Hunter's avatar Adrian Hunter Committed by Martin K. Petersen
Browse files

scsi: ufs: core: Do not write interrupt enable register unnecessarily



Write a new value to the interrupt enable register only if it is
different from the old value, thereby saving a register write operation.

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20250723165856.145750-8-adrian.hunter@intel.com


Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b4c0cab4
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -371,10 +371,11 @@ EXPORT_SYMBOL_GPL(ufshcd_disable_irq);
 */
static void ufshcd_enable_intr(struct ufs_hba *hba, u32 intrs)
{
	u32 set = ufshcd_readl(hba, REG_INTERRUPT_ENABLE);
	u32 old_val = ufshcd_readl(hba, REG_INTERRUPT_ENABLE);
	u32 new_val = old_val | intrs;

	set |= intrs;
	ufshcd_writel(hba, set, REG_INTERRUPT_ENABLE);
	if (new_val != old_val)
		ufshcd_writel(hba, new_val, REG_INTERRUPT_ENABLE);
}

/**
@@ -384,10 +385,11 @@ static void ufshcd_enable_intr(struct ufs_hba *hba, u32 intrs)
 */
static void ufshcd_disable_intr(struct ufs_hba *hba, u32 intrs)
{
	u32 set = ufshcd_readl(hba, REG_INTERRUPT_ENABLE);
	u32 old_val = ufshcd_readl(hba, REG_INTERRUPT_ENABLE);
	u32 new_val = old_val & ~intrs;

	set &= ~intrs;
	ufshcd_writel(hba, set, REG_INTERRUPT_ENABLE);
	if (new_val != old_val)
		ufshcd_writel(hba, new_val, REG_INTERRUPT_ENABLE);
}

static void ufshcd_configure_wb(struct ufs_hba *hba)