[PATCH] pcmcia: convert DEV_OK to pcmcia_dev_present
authorDominik Brodowski <linux@dominikbrodowski.net>
Sun, 5 Mar 2006 10:04:33 +0000 (11:04 +0100)
committerDominik Brodowski <linux@dominikbrodowski.net>
Fri, 31 Mar 2006 15:26:57 +0000 (17:26 +0200)
Instead of the DEV_OK macro, drivers should use pcmcia_dev_present().

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
21 files changed:
drivers/char/pcmcia/cm4000_cs.c
drivers/char/pcmcia/cm4040_cs.c
drivers/net/pcmcia/3c574_cs.c
drivers/net/pcmcia/3c589_cs.c
drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia/fmvj18x_cs.c
drivers/net/pcmcia/nmclan_cs.c
drivers/net/pcmcia/pcnet_cs.c
drivers/net/pcmcia/smc91c92_cs.c
drivers/net/pcmcia/xirc2ps_cs.c
drivers/net/wireless/atmel_cs.c
drivers/net/wireless/hostap/hostap_cs.c
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/ray_cs.c
drivers/net/wireless/wl3501_cs.c
drivers/pcmcia/ds.c
drivers/serial/serial_cs.c
include/pcmcia/cs.h
include/pcmcia/ds.h
sound/pcmcia/pdaudiocf/pdaudiocf.c
sound/pcmcia/vx/vxpocket.c

index 16e105d8d70c9d802c22cd050b91fbd343f8a086..02114a0bd0d9d4aadc5a7df96fb93801c6acbfbc 100644 (file)
@@ -1458,7 +1458,7 @@ static int cmm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
               iminor(inode), ioctl_names[_IOC_NR(cmd)]);
 
        link = dev_table[iminor(inode)];
-       if (!(DEV_OK(link))) {
+       if (!pcmcia_dev_present(link)) {
                DEBUGP(4, dev, "DEV_OK false\n");
                return -ENODEV;
        }
@@ -1667,7 +1667,7 @@ static int cmm_open(struct inode *inode, struct file *filp)
                return -ENODEV;
 
        link = dev_table[minor];
-       if (link == NULL || !(DEV_OK(link)))
+       if (link == NULL || !pcmcia_dev_present(link))
                return -ENODEV;
 
        if (link->open)
index 74609c3b2b5fbd33c1bfed4ffc12ac33d5150c4e..29efa64580a89bf11d8d88050ac471575884cc9e 100644 (file)
@@ -452,7 +452,7 @@ static int cm4040_open(struct inode *inode, struct file *filp)
                return -ENODEV;
 
        link = dev_table[minor];
-       if (link == NULL || !(DEV_OK(link)))
+       if (link == NULL || !pcmcia_dev_present(link))
                return -ENODEV;
 
        if (link->open)
index 70e3cca09787dbab892da22b24e5971c9dfa3df5..fab93360f01700266b7a83a0049f0d4a817c895a 100644 (file)
@@ -728,7 +728,7 @@ static int el3_open(struct net_device *dev)
        struct el3_private *lp = netdev_priv(dev);
        struct pcmcia_device *link = lp->p_dev;
 
-       if (!DEV_OK(link))
+       if (!pcmcia_dev_present(link))
                return -ENODEV;
        
        link->open++;
@@ -1176,7 +1176,7 @@ static int el3_close(struct net_device *dev)
 
        DEBUG(2, "%s: shutting down ethercard.\n", dev->name);
        
-       if (DEV_OK(link)) {
+       if (pcmcia_dev_present(link)) {
                unsigned long flags;
 
                /* Turn off statistics ASAP.  We update lp->stats below. */
index 3d05f66e9c706fde61c821787cf92383d81aa485..875a0fe251e7bfab9ef409893a9216835855d992 100644 (file)
@@ -557,7 +557,7 @@ static int el3_open(struct net_device *dev)
     struct el3_private *lp = netdev_priv(dev);
     struct pcmcia_device *link = lp->p_dev;
     
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
 
     link->open++;
@@ -818,7 +818,7 @@ static struct net_device_stats *el3_get_stats(struct net_device *dev)
     unsigned long flags;
     struct pcmcia_device *link = lp->p_dev;
 
-    if (DEV_OK(link)) {
+    if (pcmcia_dev_present(link)) {
        spin_lock_irqsave(&lp->lock, flags);
        update_stats(dev);
        spin_unlock_irqrestore(&lp->lock, flags);
@@ -922,7 +922,7 @@ static void set_multicast_list(struct net_device *dev)
     kio_addr_t ioaddr = dev->base_addr;
     u16 opts = SetRxFilter | RxStation | RxBroadcast;
 
-    if (!(DEV_OK(link))) return;
+    if (!pcmcia_dev_present(link)) return;
     if (dev->flags & IFF_PROMISC)
        opts |= RxMulticast | RxProm;
     else if (dev->mc_count || (dev->flags & IFF_ALLMULTI))
@@ -938,7 +938,7 @@ static int el3_close(struct net_device *dev)
     
     DEBUG(1, "%s: shutting down ethercard.\n", dev->name);
 
-    if (DEV_OK(link)) {
+    if (pcmcia_dev_present(link)) {
        /* Turn off statistics ASAP.  We update lp->stats below. */
        outw(StatsDisable, ioaddr + EL3_CMD);
        
index 0f1219c11853fe4b268414cdf5eec18b393e0033..56233afcb2b3db0334e88a1275c4f8ca41011dbf 100644 (file)
@@ -530,7 +530,7 @@ static int axnet_open(struct net_device *dev)
     
     DEBUG(2, "axnet_open('%s')\n", dev->name);
 
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
 
     link->open++;
index 7cb20b6b9348be86abb23ac0fd02669555c1ddab..09b11761cdfabf6a4acf700cc2b4dfca0791391c 100644 (file)
@@ -1112,7 +1112,7 @@ static int fjn_open(struct net_device *dev)
 
     DEBUG(4, "fjn_open('%s').\n", dev->name);
 
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
     
     link->open++;
index fd191143cb2faf3feafa3d284b1f7e9773da3685..4260c2128f4722c61cc267fc6a0290ebde330be9 100644 (file)
@@ -853,7 +853,7 @@ static int mace_open(struct net_device *dev)
   mace_private *lp = netdev_priv(dev);
   struct pcmcia_device *link = lp->p_dev;
 
-  if (!DEV_OK(link))
+  if (!pcmcia_dev_present(link))
     return -ENODEV;
 
   link->open++;
index d9661410f2ff5e161d6276175786b4cbffe32bfe..506e777c5f06a1fc37a480451fc1ec8d1c6ce19b 100644 (file)
@@ -992,7 +992,7 @@ static int pcnet_open(struct net_device *dev)
 
     DEBUG(2, "pcnet_open('%s')\n", dev->name);
 
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
 
     link->open++;
index 7d565f26a3bf56a343aaa272d31d5283b8cf0a0a..e74bf5014ef6b5cf1dbc0694e50a6a10f0da8485 100644 (file)
@@ -1259,7 +1259,7 @@ static int smc_open(struct net_device *dev)
 #endif
 
     /* Check that the PCMCIA card is still here. */
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
     /* Physical device present signature. */
     if (check_sig(link) < 0) {
index 0141c5037f41d10fdae3ca0e9b9d4e2e140cd502..a92a3134c8336944802576e0638dab76371c9485 100644 (file)
@@ -1525,7 +1525,7 @@ do_open(struct net_device *dev)
 
     /* Check that the PCMCIA card is still here. */
     /* Physical device present signature. */
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
 
     /* okay */
index 25fb919b37919fb5db29224f28c15f4de93becb5..26bf1127524df2f147f5e517d87a3e8101d58949 100644 (file)
@@ -216,13 +216,12 @@ do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
 /* Call-back function to interrogate PCMCIA-specific information
    about the current existance of the card */
 static int card_present(void *arg)
-{ 
+{
        struct pcmcia_device *link = (struct pcmcia_device *)arg;
-       if (link->suspended)
-               return 0;
-       else if (pcmcia_dev_present(link))
+
+       if (pcmcia_dev_present(link))
                return 1;
-       
+
        return 0;
 }
 
index a2cb9b0fa3d6b6c20c89bfb75491be41abd042a2..55bed923fbe9fcc6104588303166ab60111c7b70 100644 (file)
@@ -210,7 +210,7 @@ static int prism2_config(struct pcmcia_device *link);
 static int prism2_pccard_card_present(local_info_t *local)
 {
        struct hostap_cs_priv *hw_priv = local->hw_priv;
-       if (hw_priv != NULL && hw_priv->link != NULL && DEV_OK(hw_priv->link))
+       if (hw_priv != NULL && hw_priv->link != NULL && pcmcia_dev_present(hw_priv->link))
                return 1;
        return 0;
 }
index fbc8595cde39ec08e1eb87b7d2dbf13d6371f767..9343d970537beca857ac12242580e099218d2689 100644 (file)
@@ -1107,7 +1107,7 @@ static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs
        
         status = inb(iobase + NETWAVE_REG_ASR);
                
-       if (!DEV_OK(link)) {
+       if (!pcmcia_dev_present(link)) {
            DEBUG(1, "netwave_interrupt: Interrupt with status 0x%x "
                  "from removed or suspended card!\n", status);
            break;
@@ -1346,7 +1346,7 @@ static int netwave_open(struct net_device *dev) {
 
     DEBUG(1, "netwave_open: starting.\n");
     
-    if (!DEV_OK(link))
+    if (!pcmcia_dev_present(link))
        return -ENODEV;
 
     link->open++;
index 85712ffb842a52b24855cc62d366153c6ad0efd9..879eb427607ca772f9406b8c83bb4e253434f850 100644 (file)
@@ -1961,7 +1961,7 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id, struct pt_regs * regs)
 
     local = (ray_dev_t *)dev->priv;
     link = (struct pcmcia_device *)local->finder;
-    if (!(pcmcia_dev_present(link))  || link->suspended ) {
+    if (!pcmcia_dev_present(link)) {
         DEBUG(2,"ray_cs interrupt from device not present or suspended.\n");
         return IRQ_NONE;
     }
index b6578059de346c946a25dccab210af6dd5024735..e52a650f6737a91089ffe60cb2bc71f22489bc27 100644 (file)
@@ -1387,7 +1387,7 @@ static int wl3501_open(struct net_device *dev)
        link = this->p_dev;
 
        spin_lock_irqsave(&this->lock, flags);
-       if (!DEV_OK(link))
+       if (!pcmcia_dev_present(link))
                goto out;
        netif_device_attach(dev);
        link->open++;
index 8c87343707cfe213ff5e529a956d4a2951fb0bcf..677105e3575902134a1e50c8de5015aa14fa9bc2 100644 (file)
@@ -469,6 +469,7 @@ static void pcmcia_card_remove(struct pcmcia_socket *s)
                }
                p_dev = list_entry((&s->devices_list)->next, struct pcmcia_device, socket_device_list);
                list_del(&p_dev->socket_device_list);
+               p_dev->_removed=1;
                spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags);
 
                device_unregister(&p_dev->dev);
@@ -1163,6 +1164,32 @@ static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
 } /* ds_event */
 
 
+struct pcmcia_device * pcmcia_dev_present(struct pcmcia_device *_p_dev)
+{
+       struct pcmcia_device *p_dev;
+       struct pcmcia_device *ret = NULL;
+
+       p_dev = pcmcia_get_dev(_p_dev);
+       if (!p_dev)
+               return NULL;
+
+       if (!p_dev->socket->pcmcia_state.present)
+               goto out;
+
+       if (p_dev->_removed)
+               goto out;
+
+       if (p_dev->suspended)
+               goto out;
+
+       ret = p_dev;
+ out:
+       pcmcia_put_dev(p_dev);
+       return ret;
+}
+EXPORT_SYMBOL(pcmcia_dev_present);
+
+
 static struct pcmcia_callback pcmcia_bus_callback = {
        .owner = THIS_MODULE,
        .event = ds_event,
index eec05a0a86f6d122e53dc2f7119030c2ac6b6059..389d847cd1b4a04ece07fc7a38bb25ca21d17e7f 100644 (file)
@@ -155,7 +155,7 @@ static int serial_suspend(struct pcmcia_device *link)
 
 static int serial_resume(struct pcmcia_device *link)
 {
-       if (DEV_OK(link)) {
+       if (pcmcia_dev_present(link)) {
                struct serial_info *info = link->priv;
                int i;
 
index e0835d612b7a2f6794eb07ea32cdfa0e06298db4..d5838c30d20f716cf69c7adc7183b6f580a30640 100644 (file)
@@ -390,6 +390,7 @@ int pcmcia_eject_card(struct pcmcia_socket *skt);
 int pcmcia_insert_card(struct pcmcia_socket *skt);
 int pccard_reset_card(struct pcmcia_socket *skt);
 
+struct pcmcia_device * pcmcia_dev_present(struct pcmcia_device *p_dev);
 void pcmcia_disable_device(struct pcmcia_device *p_dev);
 
 struct pcmcia_socket * pcmcia_get_socket(struct pcmcia_socket *skt);
index a8ce8fc115146efd02b52613e3788d77a475fe14..8c339f5678cf94c2288b331347a23ed9ddecc494 100644 (file)
@@ -104,12 +104,6 @@ typedef struct dev_node_t {
     struct dev_node_t  *next;
 } dev_node_t;
 
-#define pcmcia_dev_present(p_dev) \
-    (p_dev->socket->pcmcia_state.present)
-
-#define DEV_OK(l) \
-    ((l) && (!l->suspended) && pcmcia_dev_present(l))
-
 
 struct pcmcia_socket;
 struct config_t;
@@ -155,8 +149,10 @@ struct pcmcia_device {
        config_req_t            conf;
        window_handle_t         win;
 
-       /* Is the device suspended? */
+       /* Is the device suspended, or in the process of
+        * being removed? */
        u16                     suspended:1;
+       u16                     _removed:1;
 
        /* Flags whether io, irq, win configurations were
         * requested, and whether the configuration is "locked" */
@@ -174,7 +170,7 @@ struct pcmcia_device {
        u16                     has_card_id:1;
        u16                     has_func_id:1;
 
-       u16                     reserved:4;
+       u16                     reserved:3;
 
        u8                      func_id;
        u16                     manf_id;
index a1333fa236acd931ab51622e8573027800140678..adfdce7499d1c40418e05b025de9bf4f6ef32b93 100644 (file)
@@ -280,7 +280,7 @@ static int pdacf_resume(struct pcmcia_device *link)
        struct snd_pdacf *chip = link->priv;
 
        snd_printdd(KERN_DEBUG "RESUME\n");
-       if (DEV_OK(link)) {
+       if (pcmcia_dev_present(link)) {
                if (chip) {
                        snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n");
                        snd_pdacf_resume(chip);
index f5f4a577a44131716db70d246fb54a3cff829ec8..7e0cda2b6ef9af174e94e5732fc2e33c26636aca 100644 (file)
@@ -291,7 +291,7 @@ static int vxp_resume(struct pcmcia_device *link)
        struct vx_core *chip = link->priv;
 
        snd_printdd(KERN_DEBUG "RESUME\n");
-       if (DEV_OK(link)) {
+       if (pcmcia_dev_present(link)) {
                //struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip;
                if (chip) {
                        snd_printdd(KERN_DEBUG "calling snd_vx_resume\n");