diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-01 18:09:29 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-03-31 10:26:33 -0500 |
commit | e2d4096365e06b9a3799afbadc28b4519c0b3526 (patch) | |
tree | 90ec691d71f9c0309048714e359b8ba351b533f7 /drivers/isdn/hisax/teles_cs.c | |
parent | f6fbe01ac976f3ec618cd5fb71ad9ce2cfa7ab2b (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/isdn/hisax/teles_cs.c')
-rw-r--r-- | drivers/isdn/hisax/teles_cs.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/drivers/isdn/hisax/teles_cs.c b/drivers/isdn/hisax/teles_cs.c index 7b66038096f3..afcc2aeadb34 100644 --- a/drivers/isdn/hisax/teles_cs.c +++ b/drivers/isdn/hisax/teles_cs.c | |||
@@ -164,7 +164,6 @@ static int teles_probe(struct pcmcia_device *link) | |||
164 | link->conf.Attributes = CONF_ENABLE_IRQ; | 164 | link->conf.Attributes = CONF_ENABLE_IRQ; |
165 | link->conf.IntType = INT_MEMORY_AND_IO; | 165 | link->conf.IntType = INT_MEMORY_AND_IO; |
166 | 166 | ||
167 | link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; | ||
168 | return teles_cs_config(link); | 167 | return teles_cs_config(link); |
169 | } /* teles_attach */ | 168 | } /* teles_attach */ |
170 | 169 | ||
@@ -179,17 +178,14 @@ static int teles_probe(struct pcmcia_device *link) | |||
179 | 178 | ||
180 | static void teles_detach(struct pcmcia_device *link) | 179 | static void teles_detach(struct pcmcia_device *link) |
181 | { | 180 | { |
182 | local_info_t *info = link->priv; | 181 | local_info_t *info = link->priv; |
183 | 182 | ||
184 | DEBUG(0, "teles_detach(0x%p)\n", link); | 183 | DEBUG(0, "teles_detach(0x%p)\n", link); |
185 | 184 | ||
186 | if (link->state & DEV_CONFIG) { | 185 | info->busy = 1; |
187 | info->busy = 1; | 186 | teles_cs_release(link); |
188 | teles_cs_release(link); | ||
189 | } | ||
190 | |||
191 | kfree(info); | ||
192 | 187 | ||
188 | kfree(info); | ||
193 | } /* teles_detach */ | 189 | } /* teles_detach */ |
194 | 190 | ||
195 | /*====================================================================== | 191 | /*====================================================================== |
@@ -253,9 +249,6 @@ static int teles_cs_config(struct pcmcia_device *link) | |||
253 | link->conf.ConfigBase = parse.config.base; | 249 | link->conf.ConfigBase = parse.config.base; |
254 | link->conf.Present = parse.config.rmask[0]; | 250 | link->conf.Present = parse.config.rmask[0]; |
255 | 251 | ||
256 | /* Configure card */ | ||
257 | link->state |= DEV_CONFIG; | ||
258 | |||
259 | tuple.TupleData = (cisdata_t *)buf; | 252 | tuple.TupleData = (cisdata_t *)buf; |
260 | tuple.TupleOffset = 0; tuple.TupleDataMax = 255; | 253 | tuple.TupleOffset = 0; tuple.TupleDataMax = 255; |
261 | tuple.Attributes = 0; | 254 | tuple.Attributes = 0; |
@@ -319,8 +312,6 @@ static int teles_cs_config(struct pcmcia_device *link) | |||
319 | link->io.BasePort2+link->io.NumPorts2-1); | 312 | link->io.BasePort2+link->io.NumPorts2-1); |
320 | printk("\n"); | 313 | printk("\n"); |
321 | 314 | ||
322 | link->state &= ~DEV_CONFIG_PENDING; | ||
323 | |||
324 | icard.para[0] = link->irq.AssignedIRQ; | 315 | icard.para[0] = link->irq.AssignedIRQ; |
325 | icard.para[1] = link->io.BasePort1; | 316 | icard.para[1] = link->io.BasePort1; |
326 | icard.protocol = protocol; | 317 | icard.protocol = protocol; |