diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-03-07 06:21:16 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-05-10 04:23:13 -0400 |
commit | eb14120f743d29744d9475bffec56ff4ad43a749 (patch) | |
tree | 56857094d2b0cfc0ecbd1685f18d6edbe78e140f /include/pcmcia | |
parent | a7debe789dfcaee9c4d81e5738b0be8c5d93930b (diff) |
pcmcia: re-work pcmcia_request_irq()
Instead of the old pcmcia_request_irq() interface, drivers may now
choose between:
- calling request_irq/free_irq directly. Use the IRQ from *p_dev->irq.
- use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will
clean up automatically on calls to pcmcia_disable_device() or
device ejection.
- drivers still not capable of IRQF_SHARED (or not telling us so) may
use the deprecated pcmcia_request_exclusive_irq() for the time
being; they might receive a shared IRQ nonetheless.
CC: linux-bluetooth@vger.kernel.org
CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-serial@vger.kernel.org
CC: alsa-devel@alsa-project.org
CC: linux-usb@vger.kernel.org
CC: linux-ide@vger.kernel.org
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'include/pcmcia')
-rw-r--r-- | include/pcmcia/cs.h | 7 | ||||
-rw-r--r-- | include/pcmcia/ds.h | 11 |
2 files changed, 8 insertions, 10 deletions
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h index af615716dc23..a04e6caa585a 100644 --- a/include/pcmcia/cs.h +++ b/include/pcmcia/cs.h | |||
@@ -114,13 +114,6 @@ typedef struct io_req_t { | |||
114 | #define IO_DATA_PATH_WIDTH_16 0x08 | 114 | #define IO_DATA_PATH_WIDTH_16 0x08 |
115 | #define IO_DATA_PATH_WIDTH_AUTO 0x10 | 115 | #define IO_DATA_PATH_WIDTH_AUTO 0x10 |
116 | 116 | ||
117 | /* For RequestIRQ and ReleaseIRQ */ | ||
118 | typedef struct irq_req_t { | ||
119 | u_int Attributes; | ||
120 | u_int AssignedIRQ; | ||
121 | irq_handler_t Handler; | ||
122 | } irq_req_t; | ||
123 | |||
124 | /* Attributes for RequestIRQ and ReleaseIRQ */ | 117 | /* Attributes for RequestIRQ and ReleaseIRQ */ |
125 | #define IRQ_TYPE 0x03 | 118 | #define IRQ_TYPE 0x03 |
126 | #define IRQ_TYPE_EXCLUSIVE 0x00 | 119 | #define IRQ_TYPE_EXCLUSIVE 0x00 |
diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index 52ebe75664e8..d18330b401b1 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h | |||
@@ -91,12 +91,11 @@ struct pcmcia_device { | |||
91 | dev_node_t *dev_node; | 91 | dev_node_t *dev_node; |
92 | u_int open; | 92 | u_int open; |
93 | io_req_t io; | 93 | io_req_t io; |
94 | irq_req_t irq; | ||
95 | config_req_t conf; | 94 | config_req_t conf; |
96 | window_handle_t win; | 95 | window_handle_t win; |
97 | 96 | ||
98 | /* device setup */ | 97 | /* device setup */ |
99 | unsigned int irq_v; /* do not use directly yet */ | 98 | unsigned int irq; |
100 | 99 | ||
101 | /* Is the device suspended? */ | 100 | /* Is the device suspended? */ |
102 | u16 suspended:1; | 101 | u16 suspended:1; |
@@ -194,7 +193,13 @@ int pcmcia_access_configuration_register(struct pcmcia_device *p_dev, | |||
194 | 193 | ||
195 | /* device configuration */ | 194 | /* device configuration */ |
196 | int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req); | 195 | int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req); |
197 | int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req); | 196 | |
197 | int __must_check __deprecated | ||
198 | pcmcia_request_exclusive_irq(struct pcmcia_device *p_dev, | ||
199 | irq_handler_t handler); | ||
200 | int __must_check pcmcia_request_irq(struct pcmcia_device *p_dev, | ||
201 | irq_handler_t handler); | ||
202 | |||
198 | int pcmcia_request_configuration(struct pcmcia_device *p_dev, | 203 | int pcmcia_request_configuration(struct pcmcia_device *p_dev, |
199 | config_req_t *req); | 204 | config_req_t *req); |
200 | 205 | ||