diff options
Diffstat (limited to 'drivers/scsi/pcmcia')
-rw-r--r-- | drivers/scsi/pcmcia/fdomain_stub.c | 30 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/nsp_cs.c | 19 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/qlogic_stub.c | 16 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/sym53c500_cs.c | 14 |
4 files changed, 11 insertions, 68 deletions
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c index 5842c938fff5..538fedb97924 100644 --- a/drivers/scsi/pcmcia/fdomain_stub.c +++ b/drivers/scsi/pcmcia/fdomain_stub.c | |||
@@ -87,8 +87,6 @@ static dev_link_t *fdomain_attach(void); | |||
87 | static void fdomain_detach(struct pcmcia_device *p_dev); | 87 | static void fdomain_detach(struct pcmcia_device *p_dev); |
88 | 88 | ||
89 | 89 | ||
90 | static dev_link_t *dev_list = NULL; | ||
91 | |||
92 | static dev_info_t dev_info = "fdomain_cs"; | 90 | static dev_info_t dev_info = "fdomain_cs"; |
93 | 91 | ||
94 | static dev_link_t *fdomain_attach(void) | 92 | static dev_link_t *fdomain_attach(void) |
@@ -116,8 +114,7 @@ static dev_link_t *fdomain_attach(void) | |||
116 | link->conf.Present = PRESENT_OPTION; | 114 | link->conf.Present = PRESENT_OPTION; |
117 | 115 | ||
118 | /* Register with Card Services */ | 116 | /* Register with Card Services */ |
119 | link->next = dev_list; | 117 | link->next = NULL; |
120 | dev_list = link; | ||
121 | client_reg.dev_info = &dev_info; | 118 | client_reg.dev_info = &dev_info; |
122 | client_reg.Version = 0x0210; | 119 | client_reg.Version = 0x0210; |
123 | client_reg.event_callback_args.client_data = link; | 120 | client_reg.event_callback_args.client_data = link; |
@@ -135,24 +132,14 @@ static dev_link_t *fdomain_attach(void) | |||
135 | 132 | ||
136 | static void fdomain_detach(struct pcmcia_device *p_dev) | 133 | static void fdomain_detach(struct pcmcia_device *p_dev) |
137 | { | 134 | { |
138 | dev_link_t *link = dev_to_instance(p_dev); | 135 | dev_link_t *link = dev_to_instance(p_dev); |
139 | dev_link_t **linkp; | ||
140 | 136 | ||
141 | DEBUG(0, "fdomain_detach(0x%p)\n", link); | 137 | DEBUG(0, "fdomain_detach(0x%p)\n", link); |
142 | 138 | ||
143 | /* Locate device structure */ | 139 | if (link->state & DEV_CONFIG) |
144 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | 140 | fdomain_release(link); |
145 | if (*linkp == link) break; | 141 | |
146 | if (*linkp == NULL) | 142 | kfree(link->priv); |
147 | return; | ||
148 | |||
149 | if (link->state & DEV_CONFIG) | ||
150 | fdomain_release(link); | ||
151 | |||
152 | /* Unlink device structure, free bits */ | ||
153 | *linkp = link->next; | ||
154 | kfree(link->priv); | ||
155 | |||
156 | } /* fdomain_detach */ | 143 | } /* fdomain_detach */ |
157 | 144 | ||
158 | /*====================================================================*/ | 145 | /*====================================================================*/ |
@@ -324,7 +311,6 @@ static int __init init_fdomain_cs(void) | |||
324 | static void __exit exit_fdomain_cs(void) | 311 | static void __exit exit_fdomain_cs(void) |
325 | { | 312 | { |
326 | pcmcia_unregister_driver(&fdomain_cs_driver); | 313 | pcmcia_unregister_driver(&fdomain_cs_driver); |
327 | BUG_ON(dev_list != NULL); | ||
328 | } | 314 | } |
329 | 315 | ||
330 | module_init(init_fdomain_cs); | 316 | module_init(init_fdomain_cs); |
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index e40a8c22aa9d..e48e9fb3c58c 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c | |||
@@ -104,7 +104,6 @@ static struct scsi_host_template nsp_driver_template = { | |||
104 | #endif | 104 | #endif |
105 | }; | 105 | }; |
106 | 106 | ||
107 | static dev_link_t *dev_list = NULL; | ||
108 | static dev_info_t dev_info = {"nsp_cs"}; | 107 | static dev_info_t dev_info = {"nsp_cs"}; |
109 | 108 | ||
110 | static nsp_hw_data nsp_data_base; /* attach <-> detect glue */ | 109 | static nsp_hw_data nsp_data_base; /* attach <-> detect glue */ |
@@ -1638,8 +1637,7 @@ static dev_link_t *nsp_cs_attach(void) | |||
1638 | 1637 | ||
1639 | 1638 | ||
1640 | /* Register with Card Services */ | 1639 | /* Register with Card Services */ |
1641 | link->next = dev_list; | 1640 | link->next = NULL; |
1642 | dev_list = link; | ||
1643 | client_reg.dev_info = &dev_info; | 1641 | client_reg.dev_info = &dev_info; |
1644 | client_reg.Version = 0x0210; | 1642 | client_reg.Version = 0x0210; |
1645 | client_reg.event_callback_args.client_data = link; | 1643 | client_reg.event_callback_args.client_data = link; |
@@ -1665,30 +1663,16 @@ static dev_link_t *nsp_cs_attach(void) | |||
1665 | static void nsp_cs_detach(struct pcmcia_device *p_dev) | 1663 | static void nsp_cs_detach(struct pcmcia_device *p_dev) |
1666 | { | 1664 | { |
1667 | dev_link_t *link = dev_to_instance(p_dev); | 1665 | dev_link_t *link = dev_to_instance(p_dev); |
1668 | dev_link_t **linkp; | ||
1669 | 1666 | ||
1670 | nsp_dbg(NSP_DEBUG_INIT, "in, link=0x%p", link); | 1667 | nsp_dbg(NSP_DEBUG_INIT, "in, link=0x%p", link); |
1671 | 1668 | ||
1672 | /* Locate device structure */ | ||
1673 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) { | ||
1674 | if (*linkp == link) { | ||
1675 | break; | ||
1676 | } | ||
1677 | } | ||
1678 | if (*linkp == NULL) { | ||
1679 | return; | ||
1680 | } | ||
1681 | |||
1682 | if (link->state & DEV_CONFIG) { | 1669 | if (link->state & DEV_CONFIG) { |
1683 | ((scsi_info_t *)link->priv)->stop = 1; | 1670 | ((scsi_info_t *)link->priv)->stop = 1; |
1684 | nsp_cs_release(link); | 1671 | nsp_cs_release(link); |
1685 | } | 1672 | } |
1686 | 1673 | ||
1687 | /* Unlink device structure, free bits */ | ||
1688 | *linkp = link->next; | ||
1689 | kfree(link->priv); | 1674 | kfree(link->priv); |
1690 | link->priv = NULL; | 1675 | link->priv = NULL; |
1691 | |||
1692 | } /* nsp_cs_detach */ | 1676 | } /* nsp_cs_detach */ |
1693 | 1677 | ||
1694 | 1678 | ||
@@ -2168,7 +2152,6 @@ static void __exit nsp_cs_exit(void) | |||
2168 | 2152 | ||
2169 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68)) | 2153 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68)) |
2170 | pcmcia_unregister_driver(&nsp_driver); | 2154 | pcmcia_unregister_driver(&nsp_driver); |
2171 | BUG_ON(dev_list != NULL); | ||
2172 | #else | 2155 | #else |
2173 | unregister_pcmcia_driver(&dev_info); | 2156 | unregister_pcmcia_driver(&dev_info); |
2174 | /* XXX: this really needs to move into generic code.. */ | 2157 | /* XXX: this really needs to move into generic code.. */ |
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index 8351dc234ffb..e10281a6e5f9 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c | |||
@@ -104,8 +104,6 @@ static dev_link_t *qlogic_attach(void); | |||
104 | static void qlogic_detach(struct pcmcia_device *p_dev); | 104 | static void qlogic_detach(struct pcmcia_device *p_dev); |
105 | 105 | ||
106 | 106 | ||
107 | static dev_link_t *dev_list = NULL; | ||
108 | |||
109 | static dev_info_t dev_info = "qlogic_cs"; | 107 | static dev_info_t dev_info = "qlogic_cs"; |
110 | 108 | ||
111 | static struct Scsi_Host *qlogic_detect(struct scsi_host_template *host, | 109 | static struct Scsi_Host *qlogic_detect(struct scsi_host_template *host, |
@@ -190,8 +188,7 @@ static dev_link_t *qlogic_attach(void) | |||
190 | link->conf.Present = PRESENT_OPTION; | 188 | link->conf.Present = PRESENT_OPTION; |
191 | 189 | ||
192 | /* Register with Card Services */ | 190 | /* Register with Card Services */ |
193 | link->next = dev_list; | 191 | link->next = NULL; |
194 | dev_list = link; | ||
195 | client_reg.dev_info = &dev_info; | 192 | client_reg.dev_info = &dev_info; |
196 | client_reg.Version = 0x0210; | 193 | client_reg.Version = 0x0210; |
197 | client_reg.event_callback_args.client_data = link; | 194 | client_reg.event_callback_args.client_data = link; |
@@ -210,22 +207,12 @@ static dev_link_t *qlogic_attach(void) | |||
210 | static void qlogic_detach(struct pcmcia_device *p_dev) | 207 | static void qlogic_detach(struct pcmcia_device *p_dev) |
211 | { | 208 | { |
212 | dev_link_t *link = dev_to_instance(p_dev); | 209 | dev_link_t *link = dev_to_instance(p_dev); |
213 | dev_link_t **linkp; | ||
214 | 210 | ||
215 | DEBUG(0, "qlogic_detach(0x%p)\n", link); | 211 | DEBUG(0, "qlogic_detach(0x%p)\n", link); |
216 | 212 | ||
217 | /* Locate device structure */ | ||
218 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | ||
219 | if (*linkp == link) | ||
220 | break; | ||
221 | if (*linkp == NULL) | ||
222 | return; | ||
223 | |||
224 | if (link->state & DEV_CONFIG) | 213 | if (link->state & DEV_CONFIG) |
225 | qlogic_release(link); | 214 | qlogic_release(link); |
226 | 215 | ||
227 | /* Unlink device structure, free bits */ | ||
228 | *linkp = link->next; | ||
229 | kfree(link->priv); | 216 | kfree(link->priv); |
230 | 217 | ||
231 | } /* qlogic_detach */ | 218 | } /* qlogic_detach */ |
@@ -439,7 +426,6 @@ static int __init init_qlogic_cs(void) | |||
439 | static void __exit exit_qlogic_cs(void) | 426 | static void __exit exit_qlogic_cs(void) |
440 | { | 427 | { |
441 | pcmcia_unregister_driver(&qlogic_cs_driver); | 428 | pcmcia_unregister_driver(&qlogic_cs_driver); |
442 | BUG_ON(dev_list != NULL); | ||
443 | } | 429 | } |
444 | 430 | ||
445 | MODULE_AUTHOR("Tom Zerucha, Michael Griffith"); | 431 | MODULE_AUTHOR("Tom Zerucha, Michael Griffith"); |
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index a0f8e2691f9c..87d50b33475e 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c | |||
@@ -232,7 +232,6 @@ enum Phase { | |||
232 | * Global (within this module) variables other than | 232 | * Global (within this module) variables other than |
233 | * sym53c500_driver_template (the scsi_host_template). | 233 | * sym53c500_driver_template (the scsi_host_template). |
234 | */ | 234 | */ |
235 | static dev_link_t *dev_list; | ||
236 | static dev_info_t dev_info = "sym53c500_cs"; | 235 | static dev_info_t dev_info = "sym53c500_cs"; |
237 | 236 | ||
238 | /* ================================================================== */ | 237 | /* ================================================================== */ |
@@ -930,22 +929,12 @@ static void | |||
930 | SYM53C500_detach(struct pcmcia_device *p_dev) | 929 | SYM53C500_detach(struct pcmcia_device *p_dev) |
931 | { | 930 | { |
932 | dev_link_t *link = dev_to_instance(p_dev); | 931 | dev_link_t *link = dev_to_instance(p_dev); |
933 | dev_link_t **linkp; | ||
934 | 932 | ||
935 | DEBUG(0, "SYM53C500_detach(0x%p)\n", link); | 933 | DEBUG(0, "SYM53C500_detach(0x%p)\n", link); |
936 | 934 | ||
937 | /* Locate device structure */ | ||
938 | for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) | ||
939 | if (*linkp == link) | ||
940 | break; | ||
941 | if (*linkp == NULL) | ||
942 | return; | ||
943 | |||
944 | if (link->state & DEV_CONFIG) | 935 | if (link->state & DEV_CONFIG) |
945 | SYM53C500_release(link); | 936 | SYM53C500_release(link); |
946 | 937 | ||
947 | /* Unlink device structure, free bits. */ | ||
948 | *linkp = link->next; | ||
949 | kfree(link->priv); | 938 | kfree(link->priv); |
950 | link->priv = NULL; | 939 | link->priv = NULL; |
951 | } /* SYM53C500_detach */ | 940 | } /* SYM53C500_detach */ |
@@ -978,8 +967,7 @@ SYM53C500_attach(void) | |||
978 | link->conf.Present = PRESENT_OPTION; | 967 | link->conf.Present = PRESENT_OPTION; |
979 | 968 | ||
980 | /* Register with Card Services */ | 969 | /* Register with Card Services */ |
981 | link->next = dev_list; | 970 | link->next = NULL; |
982 | dev_list = link; | ||
983 | client_reg.dev_info = &dev_info; | 971 | client_reg.dev_info = &dev_info; |
984 | client_reg.Version = 0x0210; | 972 | client_reg.Version = 0x0210; |
985 | client_reg.event_callback_args.client_data = link; | 973 | client_reg.event_callback_args.client_data = link; |