diff options
| author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-07-24 11:23:51 -0400 |
|---|---|---|
| committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-08-03 03:04:11 -0400 |
| commit | 90abdc3b973229bae98dd96649d9f7106cc177a4 (patch) | |
| tree | 5c1a7a131b65560dd73b5103118d8c7631bd76a4 /include/pcmcia | |
| parent | 9a017a910346afd88ec2e065989903bf211a7d37 (diff) | |
pcmcia: do not use io_req_t when calling pcmcia_request_io()
Instead of io_req_t, drivers are now requested to fill out
struct pcmcia_device *p_dev->resource[0,1] for up to two ioport
ranges. After a call to pcmcia_request_io(), the ports found there
are reserved, after calling pcmcia_request_configuration(), they may
be used.
CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-ide@vger.kernel.org
CC: linux-usb@vger.kernel.org
CC: laforge@gnumonks.org
CC: linux-mtd@lists.infradead.org
CC: alsa-devel@alsa-project.org
CC: linux-serial@vger.kernel.org
CC: Michael Buesch <mb@bu3sch.de>
Acked-by: Marcel Holtmann <marcel@holtmann.org> (for drivers/bluetooth/)
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'include/pcmcia')
| -rw-r--r-- | include/pcmcia/cs.h | 17 | ||||
| -rw-r--r-- | include/pcmcia/ds.h | 21 |
2 files changed, 19 insertions, 19 deletions
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h index 0cd8c70d8aa..ad71bb5a865 100644 --- a/include/pcmcia/cs.h +++ b/include/pcmcia/cs.h | |||
| @@ -56,23 +56,6 @@ typedef struct config_req_t { | |||
| 56 | #define INT_CARDBUS 0x04 | 56 | #define INT_CARDBUS 0x04 |
| 57 | #define INT_ZOOMED_VIDEO 0x08 | 57 | #define INT_ZOOMED_VIDEO 0x08 |
| 58 | 58 | ||
| 59 | /* For RequestIO and ReleaseIO */ | ||
| 60 | typedef struct io_req_t { | ||
| 61 | u_int BasePort1; | ||
| 62 | u_int NumPorts1; | ||
| 63 | u_int Attributes1; | ||
| 64 | u_int BasePort2; | ||
| 65 | u_int NumPorts2; | ||
| 66 | u_int Attributes2; | ||
| 67 | u_int IOAddrLines; | ||
| 68 | } io_req_t; | ||
| 69 | |||
| 70 | /* Attributes for RequestIO and ReleaseIO */ | ||
| 71 | #define IO_DATA_PATH_WIDTH 0x18 | ||
| 72 | #define IO_DATA_PATH_WIDTH_8 0x00 | ||
| 73 | #define IO_DATA_PATH_WIDTH_16 0x08 | ||
| 74 | #define IO_DATA_PATH_WIDTH_AUTO 0x10 | ||
| 75 | |||
| 76 | /* Bits in IRQInfo1 field */ | 59 | /* Bits in IRQInfo1 field */ |
| 77 | #define IRQ_NMI_ID 0x01 | 60 | #define IRQ_NMI_ID 0x01 |
| 78 | #define IRQ_IOCK_ID 0x02 | 61 | #define IRQ_IOCK_ID 0x02 |
diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index 3dafd7db34d..0748bec0a87 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h | |||
| @@ -80,7 +80,6 @@ struct pcmcia_device { | |||
| 80 | struct list_head socket_device_list; | 80 | struct list_head socket_device_list; |
| 81 | 81 | ||
| 82 | /* deprecated, will be cleaned up soon */ | 82 | /* deprecated, will be cleaned up soon */ |
| 83 | io_req_t io; | ||
| 84 | config_req_t conf; | 83 | config_req_t conf; |
| 85 | window_handle_t win; | 84 | window_handle_t win; |
| 86 | 85 | ||
| @@ -88,6 +87,8 @@ struct pcmcia_device { | |||
| 88 | unsigned int irq; | 87 | unsigned int irq; |
| 89 | struct resource *resource[MAX_IO_WIN]; | 88 | struct resource *resource[MAX_IO_WIN]; |
| 90 | 89 | ||
| 90 | unsigned int io_lines; /* number of I/O lines */ | ||
| 91 | |||
| 91 | /* Is the device suspended? */ | 92 | /* Is the device suspended? */ |
| 92 | u16 suspended:1; | 93 | u16 suspended:1; |
| 93 | 94 | ||
| @@ -179,7 +180,7 @@ int pcmcia_read_config_byte(struct pcmcia_device *p_dev, off_t where, u8 *val); | |||
| 179 | int pcmcia_write_config_byte(struct pcmcia_device *p_dev, off_t where, u8 val); | 180 | int pcmcia_write_config_byte(struct pcmcia_device *p_dev, off_t where, u8 val); |
| 180 | 181 | ||
| 181 | /* device configuration */ | 182 | /* device configuration */ |
| 182 | int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req); | 183 | int pcmcia_request_io(struct pcmcia_device *p_dev); |
| 183 | 184 | ||
| 184 | int __must_check | 185 | int __must_check |
| 185 | __pcmcia_request_exclusive_irq(struct pcmcia_device *p_dev, | 186 | __pcmcia_request_exclusive_irq(struct pcmcia_device *p_dev, |
| @@ -206,6 +207,22 @@ int pcmcia_map_mem_page(struct pcmcia_device *p_dev, window_handle_t win, | |||
| 206 | int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod); | 207 | int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod); |
| 207 | void pcmcia_disable_device(struct pcmcia_device *p_dev); | 208 | void pcmcia_disable_device(struct pcmcia_device *p_dev); |
| 208 | 209 | ||
| 210 | /* IO ports */ | ||
| 211 | #define IO_DATA_PATH_WIDTH 0x18 | ||
| 212 | #define IO_DATA_PATH_WIDTH_8 0x00 | ||
| 213 | #define IO_DATA_PATH_WIDTH_16 0x08 | ||
| 214 | #define IO_DATA_PATH_WIDTH_AUTO 0x10 | ||
| 215 | |||
| 216 | /* convert flag found in cfgtable to data path width parameter */ | ||
| 217 | static inline int pcmcia_io_cfg_data_width(unsigned int flags) | ||
| 218 | { | ||
| 219 | if (!(flags & CISTPL_IO_8BIT)) | ||
| 220 | return IO_DATA_PATH_WIDTH_16; | ||
| 221 | if (!(flags & CISTPL_IO_16BIT)) | ||
| 222 | return IO_DATA_PATH_WIDTH_8; | ||
| 223 | return IO_DATA_PATH_WIDTH_AUTO; | ||
| 224 | } | ||
| 225 | |||
| 209 | #endif /* __KERNEL__ */ | 226 | #endif /* __KERNEL__ */ |
| 210 | 227 | ||
| 211 | #endif /* _LINUX_DS_H */ | 228 | #endif /* _LINUX_DS_H */ |
