diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/scsi/pcmcia/qlogic_stub.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/scsi/pcmcia/qlogic_stub.c')
-rw-r--r-- | drivers/scsi/pcmcia/qlogic_stub.c | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index 20c3e5e6d88a..f85f094870b4 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c | |||
@@ -62,15 +62,6 @@ | |||
62 | 62 | ||
63 | static char qlogic_name[] = "qlogic_cs"; | 63 | static char qlogic_name[] = "qlogic_cs"; |
64 | 64 | ||
65 | #ifdef PCMCIA_DEBUG | ||
66 | static int pc_debug = PCMCIA_DEBUG; | ||
67 | module_param(pc_debug, int, 0644); | ||
68 | #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) | ||
69 | static char *version = "qlogic_cs.c 1.79-ac 2002/10/26 (David Hinds)"; | ||
70 | #else | ||
71 | #define DEBUG(n, args...) | ||
72 | #endif | ||
73 | |||
74 | static struct scsi_host_template qlogicfas_driver_template = { | 65 | static struct scsi_host_template qlogicfas_driver_template = { |
75 | .module = THIS_MODULE, | 66 | .module = THIS_MODULE, |
76 | .name = qlogic_name, | 67 | .name = qlogic_name, |
@@ -159,7 +150,7 @@ static int qlogic_probe(struct pcmcia_device *link) | |||
159 | { | 150 | { |
160 | scsi_info_t *info; | 151 | scsi_info_t *info; |
161 | 152 | ||
162 | DEBUG(0, "qlogic_attach()\n"); | 153 | dev_dbg(&link->dev, "qlogic_attach()\n"); |
163 | 154 | ||
164 | /* Create new SCSI device */ | 155 | /* Create new SCSI device */ |
165 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 156 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
@@ -171,7 +162,6 @@ static int qlogic_probe(struct pcmcia_device *link) | |||
171 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; | 162 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; |
172 | link->io.IOAddrLines = 10; | 163 | link->io.IOAddrLines = 10; |
173 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; | 164 | link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; |
174 | link->irq.IRQInfo1 = IRQ_LEVEL_ID; | ||
175 | link->conf.Attributes = CONF_ENABLE_IRQ; | 165 | link->conf.Attributes = CONF_ENABLE_IRQ; |
176 | link->conf.IntType = INT_MEMORY_AND_IO; | 166 | link->conf.IntType = INT_MEMORY_AND_IO; |
177 | link->conf.Present = PRESENT_OPTION; | 167 | link->conf.Present = PRESENT_OPTION; |
@@ -183,7 +173,7 @@ static int qlogic_probe(struct pcmcia_device *link) | |||
183 | 173 | ||
184 | static void qlogic_detach(struct pcmcia_device *link) | 174 | static void qlogic_detach(struct pcmcia_device *link) |
185 | { | 175 | { |
186 | DEBUG(0, "qlogic_detach(0x%p)\n", link); | 176 | dev_dbg(&link->dev, "qlogic_detach\n"); |
187 | 177 | ||
188 | qlogic_release(link); | 178 | qlogic_release(link); |
189 | kfree(link->priv); | 179 | kfree(link->priv); |
@@ -192,9 +182,6 @@ static void qlogic_detach(struct pcmcia_device *link) | |||
192 | 182 | ||
193 | /*====================================================================*/ | 183 | /*====================================================================*/ |
194 | 184 | ||
195 | #define CS_CHECK(fn, ret) \ | ||
196 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | ||
197 | |||
198 | static int qlogic_config_check(struct pcmcia_device *p_dev, | 185 | static int qlogic_config_check(struct pcmcia_device *p_dev, |
199 | cistpl_cftable_entry_t *cfg, | 186 | cistpl_cftable_entry_t *cfg, |
200 | cistpl_cftable_entry_t *dflt, | 187 | cistpl_cftable_entry_t *dflt, |
@@ -213,19 +200,22 @@ static int qlogic_config_check(struct pcmcia_device *p_dev, | |||
213 | static int qlogic_config(struct pcmcia_device * link) | 200 | static int qlogic_config(struct pcmcia_device * link) |
214 | { | 201 | { |
215 | scsi_info_t *info = link->priv; | 202 | scsi_info_t *info = link->priv; |
216 | int last_ret, last_fn; | 203 | int ret; |
217 | struct Scsi_Host *host; | 204 | struct Scsi_Host *host; |
218 | 205 | ||
219 | DEBUG(0, "qlogic_config(0x%p)\n", link); | 206 | dev_dbg(&link->dev, "qlogic_config\n"); |
220 | 207 | ||
221 | last_ret = pcmcia_loop_config(link, qlogic_config_check, NULL); | 208 | ret = pcmcia_loop_config(link, qlogic_config_check, NULL); |
222 | if (last_ret) { | 209 | if (ret) |
223 | cs_error(link, RequestIO, last_ret); | 210 | goto failed; |
211 | |||
212 | ret = pcmcia_request_irq(link, &link->irq); | ||
213 | if (ret) | ||
224 | goto failed; | 214 | goto failed; |
225 | } | ||
226 | 215 | ||
227 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 216 | ret = pcmcia_request_configuration(link, &link->conf); |
228 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 217 | if (ret) |
218 | goto failed; | ||
229 | 219 | ||
230 | if ((info->manf_id == MANFID_MACNICA) || (info->manf_id == MANFID_PIONEER) || (info->manf_id == 0x0098)) { | 220 | if ((info->manf_id == MANFID_MACNICA) || (info->manf_id == MANFID_PIONEER) || (info->manf_id == 0x0098)) { |
231 | /* set ATAcmd */ | 221 | /* set ATAcmd */ |
@@ -244,7 +234,7 @@ static int qlogic_config(struct pcmcia_device * link) | |||
244 | 234 | ||
245 | if (!host) { | 235 | if (!host) { |
246 | printk(KERN_INFO "%s: no SCSI devices found\n", qlogic_name); | 236 | printk(KERN_INFO "%s: no SCSI devices found\n", qlogic_name); |
247 | goto cs_failed; | 237 | goto failed; |
248 | } | 238 | } |
249 | 239 | ||
250 | sprintf(info->node.dev_name, "scsi%d", host->host_no); | 240 | sprintf(info->node.dev_name, "scsi%d", host->host_no); |
@@ -253,12 +243,9 @@ static int qlogic_config(struct pcmcia_device * link) | |||
253 | 243 | ||
254 | return 0; | 244 | return 0; |
255 | 245 | ||
256 | cs_failed: | ||
257 | cs_error(link, last_fn, last_ret); | ||
258 | pcmcia_disable_device(link); | ||
259 | failed: | 246 | failed: |
247 | pcmcia_disable_device(link); | ||
260 | return -ENODEV; | 248 | return -ENODEV; |
261 | |||
262 | } /* qlogic_config */ | 249 | } /* qlogic_config */ |
263 | 250 | ||
264 | /*====================================================================*/ | 251 | /*====================================================================*/ |
@@ -267,7 +254,7 @@ static void qlogic_release(struct pcmcia_device *link) | |||
267 | { | 254 | { |
268 | scsi_info_t *info = link->priv; | 255 | scsi_info_t *info = link->priv; |
269 | 256 | ||
270 | DEBUG(0, "qlogic_release(0x%p)\n", link); | 257 | dev_dbg(&link->dev, "qlogic_release\n"); |
271 | 258 | ||
272 | scsi_remove_host(info->host); | 259 | scsi_remove_host(info->host); |
273 | 260 | ||