38 #include <linux/module.h>
39 #include <linux/kernel.h>
41 #include <linux/ptrace.h>
42 #include <linux/slab.h>
43 #include <linux/string.h>
65 static int elsa_cs_config(
struct pcmcia_device *
link)
__devinit;
66 static void elsa_cs_release(
struct pcmcia_device *
link);
67 static void elsa_cs_detach(
struct pcmcia_device *p_dev)
__devexit;
75 static int __devinit elsa_cs_probe(
struct pcmcia_device *
link)
79 dev_dbg(&link->dev,
"elsa_cs_attach()\n");
83 if (!local)
return -
ENOMEM;
90 return elsa_cs_config(link);
93 static void __devexit elsa_cs_detach(
struct pcmcia_device *
link)
97 dev_dbg(&link->dev,
"elsa_cs_detach(0x%p)\n", link);
100 elsa_cs_release(link);
105 static int elsa_cs_configcheck(
struct pcmcia_device *p_dev,
void *priv_data)
110 p_dev->resource[0]->end = 8;
111 p_dev->resource[0]->flags &= IO_DATA_PATH_WIDTH;
112 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
114 if ((p_dev->resource[0]->end) && p_dev->resource[0]->start) {
120 for (j = 0x2f0; j > 0x100; j -= 0x10) {
121 p_dev->resource[0]->start =
j;
129 static int __devinit elsa_cs_config(
struct pcmcia_device *
link)
134 dev_dbg(&link->dev,
"elsa_config(0x%p)\n", link);
136 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
138 i = pcmcia_loop_config(link, elsa_cs_configcheck,
NULL);
149 icard.
para[0] = link->irq;
150 icard.
para[1] = link->resource[0]->start;
157 "PCMCIA %d with %pR\n", i, link->resource[0]);
158 elsa_cs_release(link);
164 elsa_cs_release(link);
168 static void elsa_cs_release(
struct pcmcia_device *link)
172 dev_dbg(&link->dev,
"elsa_cs_release(0x%p)\n", link);
184 static int elsa_suspend(
struct pcmcia_device *link)
193 static int elsa_resume(
struct pcmcia_device *link)
203 PCMCIA_DEVICE_PROD_ID12(
"ELSA AG (Aachen, Germany)",
"MicroLink ISDN/MC ", 0x983de2c4, 0x333ba257),
204 PCMCIA_DEVICE_PROD_ID12(
"ELSA GmbH, Aachen",
"MicroLink ISDN/MC ", 0x639e5718, 0x333ba257),
209 static struct pcmcia_driver elsa_cs_driver = {
212 .probe = elsa_cs_probe,
214 .id_table = elsa_ids,
215 .suspend = elsa_suspend,
216 .resume = elsa_resume,
219 static int __init init_elsa_cs(
void)
224 static void __exit exit_elsa_cs(
void)