diff options
| -rw-r--r-- | drivers/char/pcmcia/cm4000_cs.c | 4 | ||||
| -rw-r--r-- | drivers/char/pcmcia/cm4040_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/pcmcia/3c574_cs.c | 4 | ||||
| -rw-r--r-- | drivers/net/pcmcia/3c589_cs.c | 8 | ||||
| -rw-r--r-- | drivers/net/pcmcia/axnet_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/pcmcia/fmvj18x_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/pcmcia/nmclan_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/pcmcia/pcnet_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/pcmcia/smc91c92_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/pcmcia/xirc2ps_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/atmel_cs.c | 9 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/netwave_cs.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ray_cs.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/wl3501_cs.c | 2 | ||||
| -rw-r--r-- | drivers/pcmcia/ds.c | 27 | ||||
| -rw-r--r-- | drivers/serial/serial_cs.c | 2 | ||||
| -rw-r--r-- | include/pcmcia/cs.h | 1 | ||||
| -rw-r--r-- | include/pcmcia/ds.h | 12 | ||||
| -rw-r--r-- | sound/pcmcia/pdaudiocf/pdaudiocf.c | 2 | ||||
| -rw-r--r-- | sound/pcmcia/vx/vxpocket.c | 2 |
21 files changed, 59 insertions, 36 deletions
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c index 16e105d8d70c..02114a0bd0d9 100644 --- a/drivers/char/pcmcia/cm4000_cs.c +++ b/drivers/char/pcmcia/cm4000_cs.c | |||
| @@ -1458,7 +1458,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, | |||
| 1458 | iminor(inode), ioctl_names[_IOC_NR(cmd)]); | 1458 | iminor(inode), ioctl_names[_IOC_NR(cmd)]); |
| 1459 | 1459 | ||
| 1460 | link = dev_table[iminor(inode)]; | 1460 | link = dev_table[iminor(inode)]; |
| 1461 | if (!(DEV_OK(link))) { | 1461 | if (!pcmcia_dev_present(link)) { |
| 1462 | DEBUGP(4, dev, "DEV_OK false\n"); | 1462 | DEBUGP(4, dev, "DEV_OK false\n"); |
| 1463 | return -ENODEV; | 1463 | return -ENODEV; |
| 1464 | } | 1464 | } |
| @@ -1667,7 +1667,7 @@ static int cmm_open(struct inode *inode, struct file *filp) | |||
| 1667 | return -ENODEV; | 1667 | return -ENODEV; |
| 1668 | 1668 | ||
| 1669 | link = dev_table[minor]; | 1669 | link = dev_table[minor]; |
| 1670 | if (link == NULL || !(DEV_OK(link))) | 1670 | if (link == NULL || !pcmcia_dev_present(link)) |
| 1671 | return -ENODEV; | 1671 | return -ENODEV; |
| 1672 | 1672 | ||
| 1673 | if (link->open) | 1673 | if (link->open) |
diff --git a/drivers/char/pcmcia/cm4040_cs.c b/drivers/char/pcmcia/cm4040_cs.c index 74609c3b2b5f..29efa64580a8 100644 --- a/drivers/char/pcmcia/cm4040_cs.c +++ b/drivers/char/pcmcia/cm4040_cs.c | |||
| @@ -452,7 +452,7 @@ static int cm4040_open(struct inode *inode, struct file *filp) | |||
| 452 | return -ENODEV; | 452 | return -ENODEV; |
| 453 | 453 | ||
| 454 | link = dev_table[minor]; | 454 | link = dev_table[minor]; |
| 455 | if (link == NULL || !(DEV_OK(link))) | 455 | if (link == NULL || !pcmcia_dev_present(link)) |
| 456 | return -ENODEV; | 456 | return -ENODEV; |
| 457 | 457 | ||
| 458 | if (link->open) | 458 | if (link->open) |
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c index 70e3cca09787..fab93360f017 100644 --- a/drivers/net/pcmcia/3c574_cs.c +++ b/drivers/net/pcmcia/3c574_cs.c | |||
| @@ -728,7 +728,7 @@ static int el3_open(struct net_device *dev) | |||
| 728 | struct el3_private *lp = netdev_priv(dev); | 728 | struct el3_private *lp = netdev_priv(dev); |
| 729 | struct pcmcia_device *link = lp->p_dev; | 729 | struct pcmcia_device *link = lp->p_dev; |
| 730 | 730 | ||
| 731 | if (!DEV_OK(link)) | 731 | if (!pcmcia_dev_present(link)) |
| 732 | return -ENODEV; | 732 | return -ENODEV; |
| 733 | 733 | ||
| 734 | link->open++; | 734 | link->open++; |
| @@ -1176,7 +1176,7 @@ static int el3_close(struct net_device *dev) | |||
| 1176 | 1176 | ||
| 1177 | DEBUG(2, "%s: shutting down ethercard.\n", dev->name); | 1177 | DEBUG(2, "%s: shutting down ethercard.\n", dev->name); |
| 1178 | 1178 | ||
| 1179 | if (DEV_OK(link)) { | 1179 | if (pcmcia_dev_present(link)) { |
| 1180 | unsigned long flags; | 1180 | unsigned long flags; |
| 1181 | 1181 | ||
| 1182 | /* Turn off statistics ASAP. We update lp->stats below. */ | 1182 | /* Turn off statistics ASAP. We update lp->stats below. */ |
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c index 3d05f66e9c70..875a0fe251e7 100644 --- a/drivers/net/pcmcia/3c589_cs.c +++ b/drivers/net/pcmcia/3c589_cs.c | |||
| @@ -557,7 +557,7 @@ static int el3_open(struct net_device *dev) | |||
| 557 | struct el3_private *lp = netdev_priv(dev); | 557 | struct el3_private *lp = netdev_priv(dev); |
| 558 | struct pcmcia_device *link = lp->p_dev; | 558 | struct pcmcia_device *link = lp->p_dev; |
| 559 | 559 | ||
| 560 | if (!DEV_OK(link)) | 560 | if (!pcmcia_dev_present(link)) |
| 561 | return -ENODEV; | 561 | return -ENODEV; |
| 562 | 562 | ||
| 563 | link->open++; | 563 | link->open++; |
| @@ -818,7 +818,7 @@ static struct net_device_stats *el3_get_stats(struct net_device *dev) | |||
| 818 | unsigned long flags; | 818 | unsigned long flags; |
| 819 | struct pcmcia_device *link = lp->p_dev; | 819 | struct pcmcia_device *link = lp->p_dev; |
| 820 | 820 | ||
| 821 | if (DEV_OK(link)) { | 821 | if (pcmcia_dev_present(link)) { |
| 822 | spin_lock_irqsave(&lp->lock, flags); | 822 | spin_lock_irqsave(&lp->lock, flags); |
| 823 | update_stats(dev); | 823 | update_stats(dev); |
| 824 | spin_unlock_irqrestore(&lp->lock, flags); | 824 | spin_unlock_irqrestore(&lp->lock, flags); |
| @@ -922,7 +922,7 @@ static void set_multicast_list(struct net_device *dev) | |||
| 922 | kio_addr_t ioaddr = dev->base_addr; | 922 | kio_addr_t ioaddr = dev->base_addr; |
| 923 | u16 opts = SetRxFilter | RxStation | RxBroadcast; | 923 | u16 opts = SetRxFilter | RxStation | RxBroadcast; |
| 924 | 924 | ||
| 925 | if (!(DEV_OK(link))) return; | 925 | if (!pcmcia_dev_present(link)) return; |
| 926 | if (dev->flags & IFF_PROMISC) | 926 | if (dev->flags & IFF_PROMISC) |
| 927 | opts |= RxMulticast | RxProm; | 927 | opts |= RxMulticast | RxProm; |
| 928 | else if (dev->mc_count || (dev->flags & IFF_ALLMULTI)) | 928 | else if (dev->mc_count || (dev->flags & IFF_ALLMULTI)) |
| @@ -938,7 +938,7 @@ static int el3_close(struct net_device *dev) | |||
| 938 | 938 | ||
| 939 | DEBUG(1, "%s: shutting down ethercard.\n", dev->name); | 939 | DEBUG(1, "%s: shutting down ethercard.\n", dev->name); |
| 940 | 940 | ||
| 941 | if (DEV_OK(link)) { | 941 | if (pcmcia_dev_present(link)) { |
| 942 | /* Turn off statistics ASAP. We update lp->stats below. */ | 942 | /* Turn off statistics ASAP. We update lp->stats below. */ |
| 943 | outw(StatsDisable, ioaddr + EL3_CMD); | 943 | outw(StatsDisable, ioaddr + EL3_CMD); |
| 944 | 944 | ||
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c index 0f1219c11853..56233afcb2b3 100644 --- a/drivers/net/pcmcia/axnet_cs.c +++ b/drivers/net/pcmcia/axnet_cs.c | |||
| @@ -530,7 +530,7 @@ static int axnet_open(struct net_device *dev) | |||
| 530 | 530 | ||
| 531 | DEBUG(2, "axnet_open('%s')\n", dev->name); | 531 | DEBUG(2, "axnet_open('%s')\n", dev->name); |
| 532 | 532 | ||
| 533 | if (!DEV_OK(link)) | 533 | if (!pcmcia_dev_present(link)) |
| 534 | return -ENODEV; | 534 | return -ENODEV; |
| 535 | 535 | ||
| 536 | link->open++; | 536 | link->open++; |
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c index 7cb20b6b9348..09b11761cdfa 100644 --- a/drivers/net/pcmcia/fmvj18x_cs.c +++ b/drivers/net/pcmcia/fmvj18x_cs.c | |||
| @@ -1112,7 +1112,7 @@ static int fjn_open(struct net_device *dev) | |||
| 1112 | 1112 | ||
| 1113 | DEBUG(4, "fjn_open('%s').\n", dev->name); | 1113 | DEBUG(4, "fjn_open('%s').\n", dev->name); |
| 1114 | 1114 | ||
| 1115 | if (!DEV_OK(link)) | 1115 | if (!pcmcia_dev_present(link)) |
| 1116 | return -ENODEV; | 1116 | return -ENODEV; |
| 1117 | 1117 | ||
| 1118 | link->open++; | 1118 | link->open++; |
diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c index fd191143cb2f..4260c2128f47 100644 --- a/drivers/net/pcmcia/nmclan_cs.c +++ b/drivers/net/pcmcia/nmclan_cs.c | |||
| @@ -853,7 +853,7 @@ static int mace_open(struct net_device *dev) | |||
| 853 | mace_private *lp = netdev_priv(dev); | 853 | mace_private *lp = netdev_priv(dev); |
| 854 | struct pcmcia_device *link = lp->p_dev; | 854 | struct pcmcia_device *link = lp->p_dev; |
| 855 | 855 | ||
| 856 | if (!DEV_OK(link)) | 856 | if (!pcmcia_dev_present(link)) |
| 857 | return -ENODEV; | 857 | return -ENODEV; |
| 858 | 858 | ||
| 859 | link->open++; | 859 | link->open++; |
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c index d9661410f2ff..506e777c5f06 100644 --- a/drivers/net/pcmcia/pcnet_cs.c +++ b/drivers/net/pcmcia/pcnet_cs.c | |||
| @@ -992,7 +992,7 @@ static int pcnet_open(struct net_device *dev) | |||
| 992 | 992 | ||
| 993 | DEBUG(2, "pcnet_open('%s')\n", dev->name); | 993 | DEBUG(2, "pcnet_open('%s')\n", dev->name); |
| 994 | 994 | ||
| 995 | if (!DEV_OK(link)) | 995 | if (!pcmcia_dev_present(link)) |
| 996 | return -ENODEV; | 996 | return -ENODEV; |
| 997 | 997 | ||
| 998 | link->open++; | 998 | link->open++; |
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c index 7d565f26a3bf..e74bf5014ef6 100644 --- a/drivers/net/pcmcia/smc91c92_cs.c +++ b/drivers/net/pcmcia/smc91c92_cs.c | |||
| @@ -1259,7 +1259,7 @@ static int smc_open(struct net_device *dev) | |||
| 1259 | #endif | 1259 | #endif |
| 1260 | 1260 | ||
| 1261 | /* Check that the PCMCIA card is still here. */ | 1261 | /* Check that the PCMCIA card is still here. */ |
| 1262 | if (!DEV_OK(link)) | 1262 | if (!pcmcia_dev_present(link)) |
| 1263 | return -ENODEV; | 1263 | return -ENODEV; |
| 1264 | /* Physical device present signature. */ | 1264 | /* Physical device present signature. */ |
| 1265 | if (check_sig(link) < 0) { | 1265 | if (check_sig(link) < 0) { |
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c index 0141c5037f41..a92a3134c833 100644 --- a/drivers/net/pcmcia/xirc2ps_cs.c +++ b/drivers/net/pcmcia/xirc2ps_cs.c | |||
| @@ -1525,7 +1525,7 @@ do_open(struct net_device *dev) | |||
| 1525 | 1525 | ||
| 1526 | /* Check that the PCMCIA card is still here. */ | 1526 | /* Check that the PCMCIA card is still here. */ |
| 1527 | /* Physical device present signature. */ | 1527 | /* Physical device present signature. */ |
| 1528 | if (!DEV_OK(link)) | 1528 | if (!pcmcia_dev_present(link)) |
| 1529 | return -ENODEV; | 1529 | return -ENODEV; |
| 1530 | 1530 | ||
| 1531 | /* okay */ | 1531 | /* okay */ |
diff --git a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c index 25fb919b3791..26bf1127524d 100644 --- a/drivers/net/wireless/atmel_cs.c +++ b/drivers/net/wireless/atmel_cs.c | |||
| @@ -216,13 +216,12 @@ do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | |||
| 216 | /* Call-back function to interrogate PCMCIA-specific information | 216 | /* Call-back function to interrogate PCMCIA-specific information |
| 217 | about the current existance of the card */ | 217 | about the current existance of the card */ |
| 218 | static int card_present(void *arg) | 218 | static int card_present(void *arg) |
| 219 | { | 219 | { |
| 220 | struct pcmcia_device *link = (struct pcmcia_device *)arg; | 220 | struct pcmcia_device *link = (struct pcmcia_device *)arg; |
| 221 | if (link->suspended) | 221 | |
| 222 | return 0; | 222 | if (pcmcia_dev_present(link)) |
| 223 | else if (pcmcia_dev_present(link)) | ||
| 224 | return 1; | 223 | return 1; |
| 225 | 224 | ||
| 226 | return 0; | 225 | return 0; |
| 227 | } | 226 | } |
| 228 | 227 | ||
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c index a2cb9b0fa3d6..55bed923fbe9 100644 --- a/drivers/net/wireless/hostap/hostap_cs.c +++ b/drivers/net/wireless/hostap/hostap_cs.c | |||
| @@ -210,7 +210,7 @@ static int prism2_config(struct pcmcia_device *link); | |||
| 210 | static int prism2_pccard_card_present(local_info_t *local) | 210 | static int prism2_pccard_card_present(local_info_t *local) |
| 211 | { | 211 | { |
| 212 | struct hostap_cs_priv *hw_priv = local->hw_priv; | 212 | struct hostap_cs_priv *hw_priv = local->hw_priv; |
| 213 | if (hw_priv != NULL && hw_priv->link != NULL && DEV_OK(hw_priv->link)) | 213 | if (hw_priv != NULL && hw_priv->link != NULL && pcmcia_dev_present(hw_priv->link)) |
| 214 | return 1; | 214 | return 1; |
| 215 | return 0; | 215 | return 0; |
| 216 | } | 216 | } |
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c index fbc8595cde39..9343d970537b 100644 --- a/drivers/net/wireless/netwave_cs.c +++ b/drivers/net/wireless/netwave_cs.c | |||
| @@ -1107,7 +1107,7 @@ static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs | |||
| 1107 | 1107 | ||
| 1108 | status = inb(iobase + NETWAVE_REG_ASR); | 1108 | status = inb(iobase + NETWAVE_REG_ASR); |
| 1109 | 1109 | ||
| 1110 | if (!DEV_OK(link)) { | 1110 | if (!pcmcia_dev_present(link)) { |
| 1111 | DEBUG(1, "netwave_interrupt: Interrupt with status 0x%x " | 1111 | DEBUG(1, "netwave_interrupt: Interrupt with status 0x%x " |
| 1112 | "from removed or suspended card!\n", status); | 1112 | "from removed or suspended card!\n", status); |
| 1113 | break; | 1113 | break; |
| @@ -1346,7 +1346,7 @@ static int netwave_open(struct net_device *dev) { | |||
| 1346 | 1346 | ||
| 1347 | DEBUG(1, "netwave_open: starting.\n"); | 1347 | DEBUG(1, "netwave_open: starting.\n"); |
| 1348 | 1348 | ||
| 1349 | if (!DEV_OK(link)) | 1349 | if (!pcmcia_dev_present(link)) |
| 1350 | return -ENODEV; | 1350 | return -ENODEV; |
| 1351 | 1351 | ||
| 1352 | link->open++; | 1352 | link->open++; |
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c index 85712ffb842a..879eb427607c 100644 --- a/drivers/net/wireless/ray_cs.c +++ b/drivers/net/wireless/ray_cs.c | |||
| @@ -1961,7 +1961,7 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
| 1961 | 1961 | ||
| 1962 | local = (ray_dev_t *)dev->priv; | 1962 | local = (ray_dev_t *)dev->priv; |
| 1963 | link = (struct pcmcia_device *)local->finder; | 1963 | link = (struct pcmcia_device *)local->finder; |
| 1964 | if (!(pcmcia_dev_present(link)) || link->suspended ) { | 1964 | if (!pcmcia_dev_present(link)) { |
| 1965 | DEBUG(2,"ray_cs interrupt from device not present or suspended.\n"); | 1965 | DEBUG(2,"ray_cs interrupt from device not present or suspended.\n"); |
| 1966 | return IRQ_NONE; | 1966 | return IRQ_NONE; |
| 1967 | } | 1967 | } |
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c index b6578059de34..e52a650f6737 100644 --- a/drivers/net/wireless/wl3501_cs.c +++ b/drivers/net/wireless/wl3501_cs.c | |||
| @@ -1387,7 +1387,7 @@ static int wl3501_open(struct net_device *dev) | |||
| 1387 | link = this->p_dev; | 1387 | link = this->p_dev; |
| 1388 | 1388 | ||
| 1389 | spin_lock_irqsave(&this->lock, flags); | 1389 | spin_lock_irqsave(&this->lock, flags); |
| 1390 | if (!DEV_OK(link)) | 1390 | if (!pcmcia_dev_present(link)) |
| 1391 | goto out; | 1391 | goto out; |
| 1392 | netif_device_attach(dev); | 1392 | netif_device_attach(dev); |
| 1393 | link->open++; | 1393 | link->open++; |
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index 8c87343707cf..677105e35759 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c | |||
| @@ -469,6 +469,7 @@ static void pcmcia_card_remove(struct pcmcia_socket *s) | |||
| 469 | } | 469 | } |
| 470 | p_dev = list_entry((&s->devices_list)->next, struct pcmcia_device, socket_device_list); | 470 | p_dev = list_entry((&s->devices_list)->next, struct pcmcia_device, socket_device_list); |
| 471 | list_del(&p_dev->socket_device_list); | 471 | list_del(&p_dev->socket_device_list); |
| 472 | p_dev->_removed=1; | ||
| 472 | spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); | 473 | spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); |
| 473 | 474 | ||
| 474 | device_unregister(&p_dev->dev); | 475 | device_unregister(&p_dev->dev); |
| @@ -1163,6 +1164,32 @@ static int ds_event(struct pcmcia_socket *skt, event_t event, int priority) | |||
| 1163 | } /* ds_event */ | 1164 | } /* ds_event */ |
| 1164 | 1165 | ||
| 1165 | 1166 | ||
| 1167 | struct pcmcia_device * pcmcia_dev_present(struct pcmcia_device *_p_dev) | ||
| 1168 | { | ||
| 1169 | struct pcmcia_device *p_dev; | ||
| 1170 | struct pcmcia_device *ret = NULL; | ||
| 1171 | |||
| 1172 | p_dev = pcmcia_get_dev(_p_dev); | ||
| 1173 | if (!p_dev) | ||
| 1174 | return NULL; | ||
| 1175 | |||
| 1176 | if (!p_dev->socket->pcmcia_state.present) | ||
| 1177 | goto out; | ||
| 1178 | |||
| 1179 | if (p_dev->_removed) | ||
| 1180 | goto out; | ||
| 1181 | |||
| 1182 | if (p_dev->suspended) | ||
| 1183 | goto out; | ||
| 1184 | |||
| 1185 | ret = p_dev; | ||
| 1186 | out: | ||
| 1187 | pcmcia_put_dev(p_dev); | ||
| 1188 | return ret; | ||
| 1189 | } | ||
| 1190 | EXPORT_SYMBOL(pcmcia_dev_present); | ||
| 1191 | |||
| 1192 | |||
| 1166 | static struct pcmcia_callback pcmcia_bus_callback = { | 1193 | static struct pcmcia_callback pcmcia_bus_callback = { |
| 1167 | .owner = THIS_MODULE, | 1194 | .owner = THIS_MODULE, |
| 1168 | .event = ds_event, | 1195 | .event = ds_event, |
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index eec05a0a86f6..389d847cd1b4 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c | |||
| @@ -155,7 +155,7 @@ static int serial_suspend(struct pcmcia_device *link) | |||
| 155 | 155 | ||
| 156 | static int serial_resume(struct pcmcia_device *link) | 156 | static int serial_resume(struct pcmcia_device *link) |
| 157 | { | 157 | { |
| 158 | if (DEV_OK(link)) { | 158 | if (pcmcia_dev_present(link)) { |
| 159 | struct serial_info *info = link->priv; | 159 | struct serial_info *info = link->priv; |
| 160 | int i; | 160 | int i; |
| 161 | 161 | ||
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h index e0835d612b7a..d5838c30d20f 100644 --- a/include/pcmcia/cs.h +++ b/include/pcmcia/cs.h | |||
| @@ -390,6 +390,7 @@ int pcmcia_eject_card(struct pcmcia_socket *skt); | |||
| 390 | int pcmcia_insert_card(struct pcmcia_socket *skt); | 390 | int pcmcia_insert_card(struct pcmcia_socket *skt); |
| 391 | int pccard_reset_card(struct pcmcia_socket *skt); | 391 | int pccard_reset_card(struct pcmcia_socket *skt); |
| 392 | 392 | ||
| 393 | struct pcmcia_device * pcmcia_dev_present(struct pcmcia_device *p_dev); | ||
| 393 | void pcmcia_disable_device(struct pcmcia_device *p_dev); | 394 | void pcmcia_disable_device(struct pcmcia_device *p_dev); |
| 394 | 395 | ||
| 395 | struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt); | 396 | struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt); |
diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index a8ce8fc11514..8c339f5678cf 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h | |||
| @@ -104,12 +104,6 @@ typedef struct dev_node_t { | |||
| 104 | struct dev_node_t *next; | 104 | struct dev_node_t *next; |
| 105 | } dev_node_t; | 105 | } dev_node_t; |
| 106 | 106 | ||
| 107 | #define pcmcia_dev_present(p_dev) \ | ||
| 108 | (p_dev->socket->pcmcia_state.present) | ||
| 109 | |||
| 110 | #define DEV_OK(l) \ | ||
| 111 | ((l) && (!l->suspended) && pcmcia_dev_present(l)) | ||
| 112 | |||
| 113 | 107 | ||
| 114 | struct pcmcia_socket; | 108 | struct pcmcia_socket; |
| 115 | struct config_t; | 109 | struct config_t; |
| @@ -155,8 +149,10 @@ struct pcmcia_device { | |||
| 155 | config_req_t conf; | 149 | config_req_t conf; |
| 156 | window_handle_t win; | 150 | window_handle_t win; |
| 157 | 151 | ||
| 158 | /* Is the device suspended? */ | 152 | /* Is the device suspended, or in the process of |
| 153 | * being removed? */ | ||
| 159 | u16 suspended:1; | 154 | u16 suspended:1; |
| 155 | u16 _removed:1; | ||
| 160 | 156 | ||
| 161 | /* Flags whether io, irq, win configurations were | 157 | /* Flags whether io, irq, win configurations were |
| 162 | * requested, and whether the configuration is "locked" */ | 158 | * requested, and whether the configuration is "locked" */ |
| @@ -174,7 +170,7 @@ struct pcmcia_device { | |||
| 174 | u16 has_card_id:1; | 170 | u16 has_card_id:1; |
| 175 | u16 has_func_id:1; | 171 | u16 has_func_id:1; |
| 176 | 172 | ||
| 177 | u16 reserved:4; | 173 | u16 reserved:3; |
| 178 | 174 | ||
| 179 | u8 func_id; | 175 | u8 func_id; |
| 180 | u16 manf_id; | 176 | u16 manf_id; |
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf.c b/sound/pcmcia/pdaudiocf/pdaudiocf.c index a1333fa236ac..adfdce7499d1 100644 --- a/sound/pcmcia/pdaudiocf/pdaudiocf.c +++ b/sound/pcmcia/pdaudiocf/pdaudiocf.c | |||
| @@ -280,7 +280,7 @@ static int pdacf_resume(struct pcmcia_device *link) | |||
| 280 | struct snd_pdacf *chip = link->priv; | 280 | struct snd_pdacf *chip = link->priv; |
| 281 | 281 | ||
| 282 | snd_printdd(KERN_DEBUG "RESUME\n"); | 282 | snd_printdd(KERN_DEBUG "RESUME\n"); |
| 283 | if (DEV_OK(link)) { | 283 | if (pcmcia_dev_present(link)) { |
| 284 | if (chip) { | 284 | if (chip) { |
| 285 | snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n"); | 285 | snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n"); |
| 286 | snd_pdacf_resume(chip); | 286 | snd_pdacf_resume(chip); |
diff --git a/sound/pcmcia/vx/vxpocket.c b/sound/pcmcia/vx/vxpocket.c index f5f4a577a441..7e0cda2b6ef9 100644 --- a/sound/pcmcia/vx/vxpocket.c +++ b/sound/pcmcia/vx/vxpocket.c | |||
| @@ -291,7 +291,7 @@ static int vxp_resume(struct pcmcia_device *link) | |||
| 291 | struct vx_core *chip = link->priv; | 291 | struct vx_core *chip = link->priv; |
| 292 | 292 | ||
| 293 | snd_printdd(KERN_DEBUG "RESUME\n"); | 293 | snd_printdd(KERN_DEBUG "RESUME\n"); |
| 294 | if (DEV_OK(link)) { | 294 | if (pcmcia_dev_present(link)) { |
| 295 | //struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip; | 295 | //struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip; |
| 296 | if (chip) { | 296 | if (chip) { |
| 297 | snd_printdd(KERN_DEBUG "calling snd_vx_resume\n"); | 297 | snd_printdd(KERN_DEBUG "calling snd_vx_resume\n"); |
