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 af615716dc2..a04e6caa585 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 52ebe75664e..d18330b401b 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 | ||
