aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrant Likely <grant.likely@secretlab.ca>2007-10-04 02:52:40 -0400
committerJens Axboe <axboe@carl.home.kernel.dk>2007-10-10 03:26:00 -0400
commitd2bbf3da3759d04cd5836955cc59c8ae96092831 (patch)
tree8fa462dc477c4e9bf01a340b4230814b98f38273
parentb5515d86f2efd4dd3516c16c17c1a611a5800b19 (diff)
Sysace: Don't enable IRQ until after interrupt handler is registered
The previous patch to move the interrupt handler registration moved it below enabling interrupts which could be a problem if the device is on a shared interrupt line. This patch fixes the order. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--drivers/block/xsysace.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index 5b73471ada78..9e7652dcde6c 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -1005,11 +1005,6 @@ static int __devinit ace_setup(struct ace_device *ace)
1005 ace_out(ace, ACE_CTRL, ACE_CTRL_FORCECFGMODE | 1005 ace_out(ace, ACE_CTRL, ACE_CTRL_FORCECFGMODE |
1006 ACE_CTRL_DATABUFRDYIRQ | ACE_CTRL_ERRORIRQ); 1006 ACE_CTRL_DATABUFRDYIRQ | ACE_CTRL_ERRORIRQ);
1007 1007
1008 /* Enable interrupts */
1009 val = ace_in(ace, ACE_CTRL);
1010 val |= ACE_CTRL_DATABUFRDYIRQ | ACE_CTRL_ERRORIRQ;
1011 ace_out(ace, ACE_CTRL, val);
1012
1013 /* Now we can hook up the irq handler */ 1008 /* Now we can hook up the irq handler */
1014 if (ace->irq != NO_IRQ) { 1009 if (ace->irq != NO_IRQ) {
1015 rc = request_irq(ace->irq, ace_interrupt, 0, "systemace", ace); 1010 rc = request_irq(ace->irq, ace_interrupt, 0, "systemace", ace);
@@ -1020,6 +1015,11 @@ static int __devinit ace_setup(struct ace_device *ace)
1020 } 1015 }
1021 } 1016 }
1022 1017
1018 /* Enable interrupts */
1019 val = ace_in(ace, ACE_CTRL);
1020 val |= ACE_CTRL_DATABUFRDYIRQ | ACE_CTRL_ERRORIRQ;
1021 ace_out(ace, ACE_CTRL, val);
1022
1023 /* Print the identification */ 1023 /* Print the identification */
1024 dev_info(ace->dev, "Xilinx SystemACE revision %i.%i.%i\n", 1024 dev_info(ace->dev, "Xilinx SystemACE revision %i.%i.%i\n",
1025 (version >> 12) & 0xf, (version >> 8) & 0x0f, version & 0xff); 1025 (version >> 12) & 0xf, (version >> 8) & 0x0f, version & 0xff);