aboutsummaryrefslogtreecommitdiffstats
path: root/include/pcmcia
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2010-03-07 06:21:16 -0500
committerDominik Brodowski <linux@dominikbrodowski.net>2010-05-10 04:23:13 -0400
commiteb14120f743d29744d9475bffec56ff4ad43a749 (patch)
tree56857094d2b0cfc0ecbd1685f18d6edbe78e140f /include/pcmcia
parenta7debe789dfcaee9c4d81e5738b0be8c5d93930b (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.h7
-rw-r--r--include/pcmcia/ds.h11
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 */
118typedef 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 */
196int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req); 195int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req);
197int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req); 196
197int __must_check __deprecated
198pcmcia_request_exclusive_irq(struct pcmcia_device *p_dev,
199 irq_handler_t handler);
200int __must_check pcmcia_request_irq(struct pcmcia_device *p_dev,
201 irq_handler_t handler);
202
198int pcmcia_request_configuration(struct pcmcia_device *p_dev, 203int pcmcia_request_configuration(struct pcmcia_device *p_dev,
199 config_req_t *req); 204 config_req_t *req);
200 205