diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2007-05-10 11:46:13 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-05-11 12:18:55 -0400 |
commit | c7b87f3d5037a35b5c7bb916ffc826be3fcb208d (patch) | |
tree | 57fb9d7bb21965fa0d78b26043cf459ce51a9668 /include/asm-arm/ecard.h | |
parent | 129a84de2347002f09721cda3155ccfd19fade40 (diff) |
[ARM] ecard: add helper function for setting ecard irq ops
Rather than having every driver fiddle about setting its private
IRQ operations and data, provide a helper function to contain
this functionality in one place.
Arrange to remove the driver-private IRQ operations and data when
the device is removed from the driver, and remove the driver
private code to do this.
This fixes potential problems caused by drivers forgetting to
remove these hooks.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/ecard.h')
-rw-r--r-- | include/asm-arm/ecard.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/asm-arm/ecard.h b/include/asm-arm/ecard.h index 3a6d3eb27622..8f1000eac91f 100644 --- a/include/asm-arm/ecard.h +++ b/include/asm-arm/ecard.h | |||
@@ -121,7 +121,7 @@ struct in_ecid { /* Packed card ID information */ | |||
121 | typedef struct expansion_card ecard_t; | 121 | typedef struct expansion_card ecard_t; |
122 | typedef unsigned long *loader_t; | 122 | typedef unsigned long *loader_t; |
123 | 123 | ||
124 | typedef struct { /* Card handler routines */ | 124 | typedef struct expansion_card_ops { /* Card handler routines */ |
125 | void (*irqenable)(ecard_t *ec, int irqnr); | 125 | void (*irqenable)(ecard_t *ec, int irqnr); |
126 | void (*irqdisable)(ecard_t *ec, int irqnr); | 126 | void (*irqdisable)(ecard_t *ec, int irqnr); |
127 | int (*irqpending)(ecard_t *ec); | 127 | int (*irqpending)(ecard_t *ec); |
@@ -179,6 +179,8 @@ struct expansion_card { | |||
179 | u64 dma_mask; | 179 | u64 dma_mask; |
180 | }; | 180 | }; |
181 | 181 | ||
182 | void ecard_setirq(struct expansion_card *ec, const struct expansion_card_ops *ops, void *irq_data); | ||
183 | |||
182 | struct in_chunk_dir { | 184 | struct in_chunk_dir { |
183 | unsigned int start_offset; | 185 | unsigned int start_offset; |
184 | union { | 186 | union { |