diff options
-rw-r--r-- | drivers/char/pcmcia/ipwireless/main.c | 2 | ||||
-rw-r--r-- | drivers/net/pcmcia/nmclan_cs.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/orinoco_cs.c | 2 | ||||
-rw-r--r-- | drivers/pcmcia/cs.c | 4 | ||||
-rw-r--r-- | drivers/pcmcia/cs_internal.h | 12 | ||||
-rw-r--r-- | drivers/pcmcia/pcmcia_ioctl.c | 2 | ||||
-rw-r--r-- | include/pcmcia/cistpl.h | 6 | ||||
-rw-r--r-- | include/pcmcia/cs.h | 67 | ||||
-rw-r--r-- | include/pcmcia/ds.h | 56 |
9 files changed, 76 insertions, 77 deletions
diff --git a/drivers/char/pcmcia/ipwireless/main.c b/drivers/char/pcmcia/ipwireless/main.c index 24ffe0324e53..dcf2b59ca8c5 100644 --- a/drivers/char/pcmcia/ipwireless/main.c +++ b/drivers/char/pcmcia/ipwireless/main.c | |||
@@ -65,7 +65,7 @@ static void signalled_reboot_work(struct work_struct *work_reboot) | |||
65 | struct ipw_dev *ipw = container_of(work_reboot, struct ipw_dev, | 65 | struct ipw_dev *ipw = container_of(work_reboot, struct ipw_dev, |
66 | work_reboot); | 66 | work_reboot); |
67 | struct pcmcia_device *link = ipw->link; | 67 | struct pcmcia_device *link = ipw->link; |
68 | int ret = pccard_reset_card(link->socket); | 68 | int ret = pcmcia_reset_card(link->socket); |
69 | 69 | ||
70 | if (ret != 0) | 70 | if (ret != 0) |
71 | cs_error(link, ResetCard, ret); | 71 | cs_error(link, ResetCard, ret); |
diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c index cfcbea9b7e2e..54df34f21c5f 100644 --- a/drivers/net/pcmcia/nmclan_cs.c +++ b/drivers/net/pcmcia/nmclan_cs.c | |||
@@ -925,7 +925,7 @@ static void mace_tx_timeout(struct net_device *dev) | |||
925 | printk(KERN_NOTICE "%s: transmit timed out -- ", dev->name); | 925 | printk(KERN_NOTICE "%s: transmit timed out -- ", dev->name); |
926 | #if RESET_ON_TIMEOUT | 926 | #if RESET_ON_TIMEOUT |
927 | printk("resetting card\n"); | 927 | printk("resetting card\n"); |
928 | pcmcia_reset_card(link, NULL); | 928 | pcmcia_reset_card(link->socket); |
929 | #else /* #if RESET_ON_TIMEOUT */ | 929 | #else /* #if RESET_ON_TIMEOUT */ |
930 | printk("NOT resetting card\n"); | 930 | printk("NOT resetting card\n"); |
931 | #endif /* #if RESET_ON_TIMEOUT */ | 931 | #endif /* #if RESET_ON_TIMEOUT */ |
diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c index c7b57d9d499d..f8d9de2fb4cf 100644 --- a/drivers/net/wireless/orinoco_cs.c +++ b/drivers/net/wireless/orinoco_cs.c | |||
@@ -80,7 +80,7 @@ orinoco_cs_hard_reset(struct orinoco_private *priv) | |||
80 | /* We need atomic ops here, because we're not holding the lock */ | 80 | /* We need atomic ops here, because we're not holding the lock */ |
81 | set_bit(0, &card->hard_reset_in_progress); | 81 | set_bit(0, &card->hard_reset_in_progress); |
82 | 82 | ||
83 | err = pcmcia_reset_card(link, NULL); | 83 | err = pcmcia_reset_card(link->socket); |
84 | if (err) | 84 | if (err) |
85 | return err; | 85 | return err; |
86 | 86 | ||
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index 48386f31e610..c68c5d338285 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c | |||
@@ -752,7 +752,7 @@ EXPORT_SYMBOL(pccard_register_pcmcia); | |||
752 | * CIS register. | 752 | * CIS register. |
753 | */ | 753 | */ |
754 | 754 | ||
755 | int pccard_reset_card(struct pcmcia_socket *skt) | 755 | int pcmcia_reset_card(struct pcmcia_socket *skt) |
756 | { | 756 | { |
757 | int ret; | 757 | int ret; |
758 | 758 | ||
@@ -791,7 +791,7 @@ int pccard_reset_card(struct pcmcia_socket *skt) | |||
791 | 791 | ||
792 | return ret; | 792 | return ret; |
793 | } /* reset_card */ | 793 | } /* reset_card */ |
794 | EXPORT_SYMBOL(pccard_reset_card); | 794 | EXPORT_SYMBOL(pcmcia_reset_card); |
795 | 795 | ||
796 | 796 | ||
797 | /* These shut down or wake up a socket. They are sort of user | 797 | /* These shut down or wake up a socket. They are sort of user |
diff --git a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h index 2df8d8be1ff9..d71eeee4992b 100644 --- a/drivers/pcmcia/cs_internal.h +++ b/drivers/pcmcia/cs_internal.h | |||
@@ -174,10 +174,18 @@ int pcmcia_get_window(struct pcmcia_socket *s, | |||
174 | window_handle_t *handle, | 174 | window_handle_t *handle, |
175 | int idx, | 175 | int idx, |
176 | win_req_t *req); | 176 | win_req_t *req); |
177 | int pccard_reset_card(struct pcmcia_socket *skt); | ||
178 | int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c); | 177 | int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c); |
179 | struct pcmcia_socket *pcmcia_get_socket_by_nr(unsigned int nr); | 178 | struct pcmcia_socket *pcmcia_get_socket_by_nr(unsigned int nr); |
180 | 179 | ||
180 | int pcmcia_suspend_card(struct pcmcia_socket *skt); | ||
181 | int pcmcia_resume_card(struct pcmcia_socket *skt); | ||
182 | |||
183 | int pcmcia_eject_card(struct pcmcia_socket *skt); | ||
184 | int pcmcia_insert_card(struct pcmcia_socket *skt); | ||
185 | |||
186 | struct pcmcia_socket *pcmcia_get_socket(struct pcmcia_socket *skt); | ||
187 | void pcmcia_put_socket(struct pcmcia_socket *skt); | ||
188 | |||
181 | /* cistpl.c */ | 189 | /* cistpl.c */ |
182 | int pcmcia_read_cis_mem(struct pcmcia_socket *s, int attr, | 190 | int pcmcia_read_cis_mem(struct pcmcia_socket *s, int attr, |
183 | u_int addr, u_int len, void *ptr); | 191 | u_int addr, u_int len, void *ptr); |
@@ -187,6 +195,8 @@ void release_cis_mem(struct pcmcia_socket *s); | |||
187 | void destroy_cis_cache(struct pcmcia_socket *s); | 195 | void destroy_cis_cache(struct pcmcia_socket *s); |
188 | int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function, | 196 | int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function, |
189 | cisdata_t code, void *parse); | 197 | cisdata_t code, void *parse); |
198 | int pcmcia_replace_cis(struct pcmcia_socket *s, | ||
199 | const u8 *data, const size_t len); | ||
190 | 200 | ||
191 | /* rsrc_mgr.c */ | 201 | /* rsrc_mgr.c */ |
192 | int pcmcia_validate_mem(struct pcmcia_socket *s); | 202 | int pcmcia_validate_mem(struct pcmcia_socket *s); |
diff --git a/drivers/pcmcia/pcmcia_ioctl.c b/drivers/pcmcia/pcmcia_ioctl.c index c400872f5d3b..579ec9455706 100644 --- a/drivers/pcmcia/pcmcia_ioctl.c +++ b/drivers/pcmcia/pcmcia_ioctl.c | |||
@@ -861,7 +861,7 @@ static int ds_ioctl(struct inode * inode, struct file * file, | |||
861 | ret = pccard_parse_tuple(&buf->tuple, &buf->tuple_parse.parse); | 861 | ret = pccard_parse_tuple(&buf->tuple, &buf->tuple_parse.parse); |
862 | break; | 862 | break; |
863 | case DS_RESET_CARD: | 863 | case DS_RESET_CARD: |
864 | ret = pccard_reset_card(s); | 864 | ret = pcmcia_reset_card(s); |
865 | break; | 865 | break; |
866 | case DS_GET_STATUS: | 866 | case DS_GET_STATUS: |
867 | if (buf->status.Function && | 867 | if (buf->status.Function && |
diff --git a/include/pcmcia/cistpl.h b/include/pcmcia/cistpl.h index 75a9d34c6346..7e8c2bcf11a7 100644 --- a/include/pcmcia/cistpl.h +++ b/include/pcmcia/cistpl.h | |||
@@ -580,8 +580,8 @@ typedef struct cisinfo_t { | |||
580 | 580 | ||
581 | #define CISTPL_MAX_CIS_SIZE 0x200 | 581 | #define CISTPL_MAX_CIS_SIZE 0x200 |
582 | 582 | ||
583 | int pcmcia_replace_cis(struct pcmcia_socket *s, | 583 | #ifdef __KERNEL__ |
584 | const u8 *data, const size_t len); | 584 | struct pcmcia_socket; |
585 | 585 | ||
586 | /* don't use outside of PCMCIA core yet */ | 586 | /* don't use outside of PCMCIA core yet */ |
587 | int pccard_get_next_tuple(struct pcmcia_socket *s, unsigned int func, tuple_t *tuple); | 587 | int pccard_get_next_tuple(struct pcmcia_socket *s, unsigned int func, tuple_t *tuple); |
@@ -615,4 +615,6 @@ int pcmcia_loop_config(struct pcmcia_device *p_dev, | |||
615 | void *priv_data), | 615 | void *priv_data), |
616 | void *priv_data); | 616 | void *priv_data); |
617 | 617 | ||
618 | #endif /* __KERNEL__ */ | ||
619 | |||
618 | #endif /* LINUX_CISTPL_H */ | 620 | #endif /* LINUX_CISTPL_H */ |
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h index 42c8759f0bdc..6944a74d3a7c 100644 --- a/include/pcmcia/cs.h +++ b/include/pcmcia/cs.h | |||
@@ -201,16 +201,6 @@ typedef struct win_req_t { | |||
201 | #define WIN_BAR_MASK 0xe000 | 201 | #define WIN_BAR_MASK 0xe000 |
202 | #define WIN_BAR_SHIFT 13 | 202 | #define WIN_BAR_SHIFT 13 |
203 | 203 | ||
204 | /* Attributes for RegisterClient -- UNUSED -- */ | ||
205 | #define INFO_MASTER_CLIENT 0x01 | ||
206 | #define INFO_IO_CLIENT 0x02 | ||
207 | #define INFO_MTD_CLIENT 0x04 | ||
208 | #define INFO_MEM_CLIENT 0x08 | ||
209 | #define MAX_NUM_CLIENTS 3 | ||
210 | |||
211 | #define INFO_CARD_SHARE 0x10 | ||
212 | #define INFO_CARD_EXCL 0x20 | ||
213 | |||
214 | typedef struct cs_status_t { | 204 | typedef struct cs_status_t { |
215 | u_char Function; | 205 | u_char Function; |
216 | event_t CardState; | 206 | event_t CardState; |
@@ -252,61 +242,4 @@ typedef struct error_info_t { | |||
252 | #define CS_EVENT_3VCARD 0x200000 | 242 | #define CS_EVENT_3VCARD 0x200000 |
253 | #define CS_EVENT_XVCARD 0x400000 | 243 | #define CS_EVENT_XVCARD 0x400000 |
254 | 244 | ||
255 | |||
256 | #ifdef __KERNEL__ | ||
257 | |||
258 | /* | ||
259 | * The main Card Services entry point | ||
260 | */ | ||
261 | |||
262 | enum service { | ||
263 | AccessConfigurationRegister, AddSocketServices, | ||
264 | AdjustResourceInfo, CheckEraseQueue, CloseMemory, CopyMemory, | ||
265 | DeregisterClient, DeregisterEraseQueue, GetCardServicesInfo, | ||
266 | GetClientInfo, GetConfigurationInfo, GetEventMask, | ||
267 | GetFirstClient, GetFirstPartion, GetFirstRegion, GetFirstTuple, | ||
268 | GetNextClient, GetNextPartition, GetNextRegion, GetNextTuple, | ||
269 | GetStatus, GetTupleData, MapLogSocket, MapLogWindow, MapMemPage, | ||
270 | MapPhySocket, MapPhyWindow, ModifyConfiguration, ModifyWindow, | ||
271 | OpenMemory, ParseTuple, ReadMemory, RegisterClient, | ||
272 | RegisterEraseQueue, RegisterMTD, RegisterTimer, | ||
273 | ReleaseConfiguration, ReleaseExclusive, ReleaseIO, ReleaseIRQ, | ||
274 | ReleaseSocketMask, ReleaseWindow, ReplaceSocketServices, | ||
275 | RequestConfiguration, RequestExclusive, RequestIO, RequestIRQ, | ||
276 | RequestSocketMask, RequestWindow, ResetCard, ReturnSSEntry, | ||
277 | SetEventMask, SetRegion, ValidateCIS, VendorSpecific, | ||
278 | WriteMemory, BindDevice, BindMTD, ReportError, | ||
279 | SuspendCard, ResumeCard, EjectCard, InsertCard, ReplaceCIS, | ||
280 | GetFirstWindow, GetNextWindow, GetMemPage | ||
281 | }; | ||
282 | |||
283 | struct pcmcia_socket; | ||
284 | |||
285 | int pcmcia_access_configuration_register(struct pcmcia_device *p_dev, conf_reg_t *reg); | ||
286 | int pcmcia_get_mem_page(window_handle_t win, memreq_t *req); | ||
287 | int pcmcia_map_mem_page(window_handle_t win, memreq_t *req); | ||
288 | int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod); | ||
289 | int pcmcia_release_window(window_handle_t win); | ||
290 | int pcmcia_request_configuration(struct pcmcia_device *p_dev, config_req_t *req); | ||
291 | int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req); | ||
292 | int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req); | ||
293 | int pcmcia_request_window(struct pcmcia_device **p_dev, win_req_t *req, window_handle_t *wh); | ||
294 | int pcmcia_suspend_card(struct pcmcia_socket *skt); | ||
295 | int pcmcia_resume_card(struct pcmcia_socket *skt); | ||
296 | int pcmcia_eject_card(struct pcmcia_socket *skt); | ||
297 | int pcmcia_insert_card(struct pcmcia_socket *skt); | ||
298 | int pccard_reset_card(struct pcmcia_socket *skt); | ||
299 | |||
300 | struct pcmcia_device * pcmcia_dev_present(struct pcmcia_device *p_dev); | ||
301 | void pcmcia_disable_device(struct pcmcia_device *p_dev); | ||
302 | |||
303 | struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt); | ||
304 | void pcmcia_put_socket(struct pcmcia_socket *skt); | ||
305 | |||
306 | /* compatibility functions */ | ||
307 | #define pcmcia_reset_card(p_dev, req) \ | ||
308 | pccard_reset_card(p_dev->socket) | ||
309 | |||
310 | #endif /* __KERNEL__ */ | ||
311 | |||
312 | #endif /* _LINUX_CS_H */ | 245 | #endif /* _LINUX_CS_H */ |
diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index 279df0fb036e..29e403230899 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h | |||
@@ -145,7 +145,26 @@ struct pcmcia_device { | |||
145 | * or dev_dbg() directly in the driver, without referring to pcmcia_error_func() | 145 | * or dev_dbg() directly in the driver, without referring to pcmcia_error_func() |
146 | * and/or pcmcia_error_ret() for those functions will go away soon. | 146 | * and/or pcmcia_error_ret() for those functions will go away soon. |
147 | */ | 147 | */ |
148 | 148 | enum service { | |
149 | AccessConfigurationRegister, AddSocketServices, | ||
150 | AdjustResourceInfo, CheckEraseQueue, CloseMemory, CopyMemory, | ||
151 | DeregisterClient, DeregisterEraseQueue, GetCardServicesInfo, | ||
152 | GetClientInfo, GetConfigurationInfo, GetEventMask, | ||
153 | GetFirstClient, GetFirstPartion, GetFirstRegion, GetFirstTuple, | ||
154 | GetNextClient, GetNextPartition, GetNextRegion, GetNextTuple, | ||
155 | GetStatus, GetTupleData, MapLogSocket, MapLogWindow, MapMemPage, | ||
156 | MapPhySocket, MapPhyWindow, ModifyConfiguration, ModifyWindow, | ||
157 | OpenMemory, ParseTuple, ReadMemory, RegisterClient, | ||
158 | RegisterEraseQueue, RegisterMTD, RegisterTimer, | ||
159 | ReleaseConfiguration, ReleaseExclusive, ReleaseIO, ReleaseIRQ, | ||
160 | ReleaseSocketMask, ReleaseWindow, ReplaceSocketServices, | ||
161 | RequestConfiguration, RequestExclusive, RequestIO, RequestIRQ, | ||
162 | RequestSocketMask, RequestWindow, ResetCard, ReturnSSEntry, | ||
163 | SetEventMask, SetRegion, ValidateCIS, VendorSpecific, | ||
164 | WriteMemory, BindDevice, BindMTD, ReportError, | ||
165 | SuspendCard, ResumeCard, EjectCard, InsertCard, ReplaceCIS, | ||
166 | GetFirstWindow, GetNextWindow, GetMemPage | ||
167 | }; | ||
149 | const char *pcmcia_error_func(int func); | 168 | const char *pcmcia_error_func(int func); |
150 | const char *pcmcia_error_ret(int ret); | 169 | const char *pcmcia_error_ret(int ret); |
151 | 170 | ||
@@ -158,6 +177,32 @@ const char *pcmcia_error_ret(int ret); | |||
158 | } | 177 | } |
159 | 178 | ||
160 | 179 | ||
180 | /* is the device still there? */ | ||
181 | struct pcmcia_device *pcmcia_dev_present(struct pcmcia_device *p_dev); | ||
182 | |||
183 | /* low-level interface reset */ | ||
184 | int pcmcia_reset_card(struct pcmcia_socket *skt); | ||
185 | |||
186 | /* CIS config */ | ||
187 | int pcmcia_access_configuration_register(struct pcmcia_device *p_dev, | ||
188 | conf_reg_t *reg); | ||
189 | |||
190 | /* device configuration */ | ||
191 | int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req); | ||
192 | int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req); | ||
193 | int pcmcia_request_configuration(struct pcmcia_device *p_dev, | ||
194 | config_req_t *req); | ||
195 | |||
196 | int pcmcia_request_window(struct pcmcia_device **p_dev, win_req_t *req, | ||
197 | window_handle_t *wh); | ||
198 | int pcmcia_release_window(window_handle_t win); | ||
199 | |||
200 | int pcmcia_get_mem_page(window_handle_t win, memreq_t *req); | ||
201 | int pcmcia_map_mem_page(window_handle_t win, memreq_t *req); | ||
202 | |||
203 | int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod); | ||
204 | void pcmcia_disable_device(struct pcmcia_device *p_dev); | ||
205 | |||
161 | #endif /* __KERNEL__ */ | 206 | #endif /* __KERNEL__ */ |
162 | 207 | ||
163 | 208 | ||
@@ -341,6 +386,15 @@ typedef union ds_ioctl_arg_t { | |||
341 | /* used in userspace only */ | 386 | /* used in userspace only */ |
342 | #define CS_IN_USE 0x1e | 387 | #define CS_IN_USE 0x1e |
343 | 388 | ||
389 | #define INFO_MASTER_CLIENT 0x01 | ||
390 | #define INFO_IO_CLIENT 0x02 | ||
391 | #define INFO_MTD_CLIENT 0x04 | ||
392 | #define INFO_MEM_CLIENT 0x08 | ||
393 | #define MAX_NUM_CLIENTS 3 | ||
394 | |||
395 | #define INFO_CARD_SHARE 0x10 | ||
396 | #define INFO_CARD_EXCL 0x20 | ||
397 | |||
344 | 398 | ||
345 | #endif /* !defined(__KERNEL__) || defined(CONFIG_PCMCIA_IOCTL) */ | 399 | #endif /* !defined(__KERNEL__) || defined(CONFIG_PCMCIA_IOCTL) */ |
346 | 400 | ||