diff options
author | Greg Ungerer <gerg@uclinux.org> | 2009-05-19 00:08:47 -0400 |
---|---|---|
committer | Greg Ungerer <gerg@uclinux.org> | 2009-09-15 19:43:50 -0400 |
commit | 5187995f0a9253e915dfee83684eae7b692213e6 (patch) | |
tree | e2dffc82a6c4906a6a8304fc210f7e8f93fdc15b /arch/m68knommu/platform/coldfire/intc.c | |
parent | 5938084bd8843490a4493d19fb108df70d87df2d (diff) |
m68knommu: remove duplicate ColdFire mcf_autovector() code
Each of the ColdFire CPU platform code that used the old style interrupt
controller had its own copy of the mcf_autovector() function. They are all
the same, remove them all and create a single function in the common
coldfire/intc.c code.
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch/m68knommu/platform/coldfire/intc.c')
-rw-r--r-- | arch/m68knommu/platform/coldfire/intc.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/m68knommu/platform/coldfire/intc.c b/arch/m68knommu/platform/coldfire/intc.c index c81ab6e5cf26..f7a61346ee25 100644 --- a/arch/m68knommu/platform/coldfire/intc.c +++ b/arch/m68knommu/platform/coldfire/intc.c | |||
@@ -18,6 +18,33 @@ | |||
18 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
19 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
20 | 20 | ||
21 | /* | ||
22 | * Define the vector numbers for the basic 7 interrupt sources. | ||
23 | * These are often referred to as the "external" interrupts in | ||
24 | * the ColdFire documentation (for the early ColdFire cores at least). | ||
25 | */ | ||
26 | #define EIRQ1 25 | ||
27 | #define EIRQ7 31 | ||
28 | |||
29 | /* | ||
30 | * Interrupts can be "vectored" on the ColdFire cores that support this old | ||
31 | * interrupt controller. That is, the device raising the interrupt can also | ||
32 | * supply the vector number to interrupt through. The AVR register of the | ||
33 | * interrupt controller enables or disables this for each external interrupt, | ||
34 | * so provide generic support for this. Setting this up is out-of-band for | ||
35 | * the interrupt system API's, and needs to be done by the driver that | ||
36 | * supports this device. Very few devices actually use this. | ||
37 | */ | ||
38 | void mcf_autovector(int irq) | ||
39 | { | ||
40 | if ((irq >= EIRQ1) && (irq <= EIRQ7)) { | ||
41 | u8 avec; | ||
42 | avec = __raw_readb(MCF_MBAR + MCFSIM_AVR); | ||
43 | avec |= (0x1 << (irq - EIRQ1 + 1)); | ||
44 | __raw_writeb(avec, MCF_MBAR + MCFSIM_AVR); | ||
45 | } | ||
46 | } | ||
47 | |||
21 | static void intc_irq_mask(unsigned int irq) | 48 | static void intc_irq_mask(unsigned int irq) |
22 | { | 49 | { |
23 | } | 50 | } |