diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2007-10-04 02:52:40 -0400 |
---|---|---|
committer | Jens Axboe <axboe@carl.home.kernel.dk> | 2007-10-10 03:26:00 -0400 |
commit | d2bbf3da3759d04cd5836955cc59c8ae96092831 (patch) | |
tree | 8fa462dc477c4e9bf01a340b4230814b98f38273 /drivers/block/xsysace.c | |
parent | b5515d86f2efd4dd3516c16c17c1a611a5800b19 (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>
Diffstat (limited to 'drivers/block/xsysace.c')
-rw-r--r-- | drivers/block/xsysace.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c index 5b73471ada7..9e7652dcde6 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); |