34 #include <linux/module.h>
36 #include <linux/kernel.h>
37 #include <linux/slab.h>
38 #include <linux/string.h>
40 #include <scsi/scsi.h>
63 struct pcmcia_device *
p_dev;
68 static void fdomain_release(
struct pcmcia_device *
link);
69 static void fdomain_detach(
struct pcmcia_device *p_dev);
70 static int fdomain_config(
struct pcmcia_device *
link);
72 static int fdomain_probe(
struct pcmcia_device *
link)
76 dev_dbg(&link->dev,
"fdomain_attach()\n");
85 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
86 link->config_regs = PRESENT_OPTION;
88 return fdomain_config(link);
93 static void fdomain_detach(
struct pcmcia_device *link)
95 dev_dbg(&link->dev,
"fdomain_detach\n");
97 fdomain_release(link);
104 static int fdomain_config_check(
struct pcmcia_device *p_dev,
void *priv_data)
106 p_dev->io_lines = 10;
107 p_dev->resource[0]->end = 0x10;
108 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
109 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
114 static int fdomain_config(
struct pcmcia_device *link)
121 dev_dbg(&link->dev,
"fdomain_config\n");
123 ret = pcmcia_loop_config(link, fdomain_config_check,
NULL);
134 release_region(link->resource[0]->start, resource_size(link->resource[0]));
137 sprintf(str,
"%d,%d", (
unsigned int) link->resource[0]->start, link->irq);
146 if (scsi_add_host(host,
NULL))
155 fdomain_release(link);
161 static void fdomain_release(
struct pcmcia_device *link)
165 dev_dbg(&link->dev,
"fdomain_release\n");
174 static int fdomain_resume(
struct pcmcia_device *link)
182 PCMCIA_DEVICE_PROD_ID12(
"IBM Corp.",
"SCSI PCMCIA Card", 0xe3736c88, 0x859cad20),
183 PCMCIA_DEVICE_PROD_ID1(
"SCSI PCMCIA Adapter Card", 0x8dacb57e),
184 PCMCIA_DEVICE_PROD_ID12(
" SIMPLE TECHNOLOGY Corporation",
"SCSI PCMCIA Credit Card Controller", 0x182bdafe, 0xc80d106f),
189 static struct pcmcia_driver fdomain_cs_driver = {
191 .name =
"fdomain_cs",
192 .probe = fdomain_probe,
193 .remove = fdomain_detach,
194 .id_table = fdomain_ids,
195 .resume = fdomain_resume,
198 static int __init init_fdomain_cs(
void)
203 static void __exit exit_fdomain_cs(
void)