aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/pcmcia/ipwireless/main.c2
-rw-r--r--drivers/net/pcmcia/nmclan_cs.c2
-rw-r--r--drivers/net/wireless/orinoco_cs.c2
-rw-r--r--drivers/pcmcia/cs.c4
-rw-r--r--drivers/pcmcia/cs_internal.h12
-rw-r--r--drivers/pcmcia/pcmcia_ioctl.c2
-rw-r--r--include/pcmcia/cistpl.h6
-rw-r--r--include/pcmcia/cs.h67
-rw-r--r--include/pcmcia/ds.h56
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
755int pccard_reset_card(struct pcmcia_socket *skt) 755int 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 */
794EXPORT_SYMBOL(pccard_reset_card); 794EXPORT_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);
177int pccard_reset_card(struct pcmcia_socket *skt);
178int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c); 177int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c);
179struct pcmcia_socket *pcmcia_get_socket_by_nr(unsigned int nr); 178struct pcmcia_socket *pcmcia_get_socket_by_nr(unsigned int nr);
180 179
180int pcmcia_suspend_card(struct pcmcia_socket *skt);
181int pcmcia_resume_card(struct pcmcia_socket *skt);
182
183int pcmcia_eject_card(struct pcmcia_socket *skt);
184int pcmcia_insert_card(struct pcmcia_socket *skt);
185
186struct pcmcia_socket *pcmcia_get_socket(struct pcmcia_socket *skt);
187void pcmcia_put_socket(struct pcmcia_socket *skt);
188
181/* cistpl.c */ 189/* cistpl.c */
182int pcmcia_read_cis_mem(struct pcmcia_socket *s, int attr, 190int 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);
187void destroy_cis_cache(struct pcmcia_socket *s); 195void destroy_cis_cache(struct pcmcia_socket *s);
188int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function, 196int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function,
189 cisdata_t code, void *parse); 197 cisdata_t code, void *parse);
198int 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 */
192int pcmcia_validate_mem(struct pcmcia_socket *s); 202int 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
583int pcmcia_replace_cis(struct pcmcia_socket *s, 583#ifdef __KERNEL__
584 const u8 *data, const size_t len); 584struct pcmcia_socket;
585 585
586/* don't use outside of PCMCIA core yet */ 586/* don't use outside of PCMCIA core yet */
587int pccard_get_next_tuple(struct pcmcia_socket *s, unsigned int func, tuple_t *tuple); 587int 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
214typedef struct cs_status_t { 204typedef 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
262enum 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
283struct pcmcia_socket;
284
285int pcmcia_access_configuration_register(struct pcmcia_device *p_dev, conf_reg_t *reg);
286int pcmcia_get_mem_page(window_handle_t win, memreq_t *req);
287int pcmcia_map_mem_page(window_handle_t win, memreq_t *req);
288int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod);
289int pcmcia_release_window(window_handle_t win);
290int pcmcia_request_configuration(struct pcmcia_device *p_dev, config_req_t *req);
291int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req);
292int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req);
293int pcmcia_request_window(struct pcmcia_device **p_dev, win_req_t *req, window_handle_t *wh);
294int pcmcia_suspend_card(struct pcmcia_socket *skt);
295int pcmcia_resume_card(struct pcmcia_socket *skt);
296int pcmcia_eject_card(struct pcmcia_socket *skt);
297int pcmcia_insert_card(struct pcmcia_socket *skt);
298int pccard_reset_card(struct pcmcia_socket *skt);
299
300struct pcmcia_device * pcmcia_dev_present(struct pcmcia_device *p_dev);
301void pcmcia_disable_device(struct pcmcia_device *p_dev);
302
303struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt);
304void 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 148enum 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};
149const char *pcmcia_error_func(int func); 168const char *pcmcia_error_func(int func);
150const char *pcmcia_error_ret(int ret); 169const 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? */
181struct pcmcia_device *pcmcia_dev_present(struct pcmcia_device *p_dev);
182
183/* low-level interface reset */
184int pcmcia_reset_card(struct pcmcia_socket *skt);
185
186/* CIS config */
187int pcmcia_access_configuration_register(struct pcmcia_device *p_dev,
188 conf_reg_t *reg);
189
190/* device configuration */
191int pcmcia_request_io(struct pcmcia_device *p_dev, io_req_t *req);
192int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req);
193int pcmcia_request_configuration(struct pcmcia_device *p_dev,
194 config_req_t *req);
195
196int pcmcia_request_window(struct pcmcia_device **p_dev, win_req_t *req,
197 window_handle_t *wh);
198int pcmcia_release_window(window_handle_t win);
199
200int pcmcia_get_mem_page(window_handle_t win, memreq_t *req);
201int pcmcia_map_mem_page(window_handle_t win, memreq_t *req);
202
203int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod);
204void 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