From: Felix Fietkau Date: Mon, 22 Dec 2014 20:47:10 +0000 (+0000) Subject: oxnas: sata_oxnas: make irq handler more readable X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=93192e65e8724098b9dbf36a870a2b885cf2f17f;p=openwrt%2Fstaging%2Fyousong.git oxnas: sata_oxnas: make irq handler more readable safed one level of indention by using 'continue' instead of a lengthy if-clause. Signed-off-by: Daniel Golle v2: use logic-AND instead of '?' operator when checking for hw bug 6320 SVN-Revision: 43768 --- diff --git a/target/linux/oxnas/files/drivers/ata/sata_oxnas.c b/target/linux/oxnas/files/drivers/ata/sata_oxnas.c index 30bcb23b1e..291a06f959 100644 --- a/target/linux/oxnas/files/drivers/ata/sata_oxnas.c +++ b/target/linux/oxnas/files/drivers/ata/sata_oxnas.c @@ -2041,7 +2041,7 @@ int sata_oxnas_init_controller(struct ata_host *host) * * @param port SATA port to check and if necessary, correct. */ -static int sata_oxnas_bug_6320_workaround(struct ata_port *ap) +static int sata_oxnas_bug_6320_detect(struct ata_port *ap) { struct sata_oxnas_port_priv *pd = ap->private_data; void __iomem *core_base = pd->core_base; @@ -2175,17 +2175,18 @@ static irqreturn_t sata_oxnas_interrupt(int irq, void *dev_instance) /* check the raw end of command interrupt to see if the * port is done */ mask = (COREINT_END << port_no); - if (int_status & mask) { - /* this port had an interrupt, clear it */ - iowrite32(mask, core_base + CORE_INT_CLEAR); - bug_present = - (hd->current_ucode == UNKNOWN_MODE) ? - sata_oxnas_bug_6320_workaround( - ah->ports[port_no]):0; - sata_oxnas_port_irq(ah->ports[port_no], - bug_present); - ret = IRQ_HANDLED; - } + if (!(int_status & mask)) + continue; + + /* this port had an interrupt, clear it */ + iowrite32(mask, core_base + CORE_INT_CLEAR); + /* check for bug 6320 only if no microcode was loaded */ + bug_present = (hd->current_ucode == UNKNOWN_MODE) && + sata_oxnas_bug_6320_detect(ah->ports[port_no]); + + sata_oxnas_port_irq(ah->ports[port_no], + bug_present); + ret = IRQ_HANDLED; } }