aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/legacy/ide-cs.c
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2006-03-01 18:09:29 -0500
committerDominik Brodowski <linux@dominikbrodowski.net>2006-03-31 10:26:33 -0500
commite2d4096365e06b9a3799afbadc28b4519c0b3526 (patch)
tree90ec691d71f9c0309048714e359b8ba351b533f7 /drivers/ide/legacy/ide-cs.c
parentf6fbe01ac976f3ec618cd5fb71ad9ce2cfa7ab2b (diff)
[PATCH] pcmcia: use bitfield instead of p_state and state
Instead of the two status values struct pcmcia_device->p_state and state, use descriptive bitfields. Most value-checking in drivers was invalid, as the core now only calls the ->remove() (a.k.a. detach) function in case the attachement _and_ configuration was successful. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/ide/legacy/ide-cs.c')
-rw-r--r--drivers/ide/legacy/ide-cs.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c
index 56c8e828c6e6..4961f1e764a7 100644
--- a/drivers/ide/legacy/ide-cs.c
+++ b/drivers/ide/legacy/ide-cs.c
@@ -125,7 +125,6 @@ static int ide_probe(struct pcmcia_device *link)
125 link->conf.Attributes = CONF_ENABLE_IRQ; 125 link->conf.Attributes = CONF_ENABLE_IRQ;
126 link->conf.IntType = INT_MEMORY_AND_IO; 126 link->conf.IntType = INT_MEMORY_AND_IO;
127 127
128 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
129 return ide_config(link); 128 return ide_config(link);
130} /* ide_attach */ 129} /* ide_attach */
131 130
@@ -142,8 +141,7 @@ static void ide_detach(struct pcmcia_device *link)
142{ 141{
143 DEBUG(0, "ide_detach(0x%p)\n", link); 142 DEBUG(0, "ide_detach(0x%p)\n", link);
144 143
145 if (link->state & DEV_CONFIG) 144 ide_release(link);
146 ide_release(link);
147 145
148 kfree(link->priv); 146 kfree(link->priv);
149} /* ide_detach */ 147} /* ide_detach */
@@ -209,9 +207,6 @@ static int ide_config(struct pcmcia_device *link)
209 ((stk->parse.manfid.card == PRODID_KME_KXLC005_A) || 207 ((stk->parse.manfid.card == PRODID_KME_KXLC005_A) ||
210 (stk->parse.manfid.card == PRODID_KME_KXLC005_B))); 208 (stk->parse.manfid.card == PRODID_KME_KXLC005_B)));
211 209
212 /* Configure card */
213 link->state |= DEV_CONFIG;
214
215 /* Not sure if this is right... look up the current Vcc */ 210 /* Not sure if this is right... look up the current Vcc */
216 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf)); 211 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(link, &stk->conf));
217 212
@@ -323,7 +318,6 @@ static int ide_config(struct pcmcia_device *link)
323 printk(KERN_INFO "ide-cs: %s: Vpp = %d.%d\n", 318 printk(KERN_INFO "ide-cs: %s: Vpp = %d.%d\n",
324 info->node.dev_name, link->conf.Vpp / 10, link->conf.Vpp % 10); 319 info->node.dev_name, link->conf.Vpp / 10, link->conf.Vpp % 10);
325 320
326 link->state &= ~DEV_CONFIG_PENDING;
327 kfree(stk); 321 kfree(stk);
328 return 0; 322 return 0;
329 323
@@ -336,7 +330,6 @@ cs_failed:
336failed: 330failed:
337 kfree(stk); 331 kfree(stk);
338 ide_release(link); 332 ide_release(link);
339 link->state &= ~DEV_CONFIG_PENDING;
340 return -ENODEV; 333 return -ENODEV;
341} /* ide_config */ 334} /* ide_config */
342 335