aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-05-10 11:46:13 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-05-11 12:18:55 -0400
commitc7b87f3d5037a35b5c7bb916ffc826be3fcb208d (patch)
tree57fb9d7bb21965fa0d78b26043cf459ce51a9668 /include/asm-arm
parent129a84de2347002f09721cda3155ccfd19fade40 (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')
-rw-r--r--include/asm-arm/ecard.h4
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 */
121typedef struct expansion_card ecard_t; 121typedef struct expansion_card ecard_t;
122typedef unsigned long *loader_t; 122typedef unsigned long *loader_t;
123 123
124typedef struct { /* Card handler routines */ 124typedef 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
182void ecard_setirq(struct expansion_card *ec, const struct expansion_card_ops *ops, void *irq_data);
183
182struct in_chunk_dir { 184struct in_chunk_dir {
183 unsigned int start_offset; 185 unsigned int start_offset;
184 union { 186 union {