[OpenWrt-Devel] [PATCH v2 4/4] oxnas: sata_oxnas: make irq handler more readable

Daniel Golle daniel at makrotopia.org
Thu Dec 18 12:17:51 EST 2014


safed one level of indention by using 'continue' instead of a
lengthy if-clause.

Signed-off-by: Daniel Golle <daniel at makrotopia.org>
v2: use logic-AND instead of '?' operator when checking for hw bug 6320
---
 target/linux/oxnas/files/drivers/ata/sata_oxnas.c | 25 ++++++++++++-----------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/target/linux/oxnas/files/drivers/ata/sata_oxnas.c b/target/linux/oxnas/files/drivers/ata/sata_oxnas.c
index 30bcb23..291a06f 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;
 		}
 	}
 
-- 
2.1.3
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list