]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/irda/ali-ircc.c
Pull misc-for-upstream into release branch
[linux-2.6-omap-h63xx.git] / drivers / net / irda / ali-ircc.c
index bf1fca5a3fa056b3298be53d8119c27c45dd787b..cebf8c374bc57521fa93325fd531e3d127bccf3b 100644 (file)
@@ -146,7 +146,7 @@ static int __init ali_ircc_init(void)
 {
        ali_chip_t *chip;
        chipio_t info;
-       int ret = -ENODEV;
+       int ret;
        int cfg, cfg_base;
        int reg, revision;
        int i = 0;
@@ -160,6 +160,7 @@ static int __init ali_ircc_init(void)
                 return ret;
         }
 
+       ret = -ENODEV;
        
        /* Probe for all the ALi chipsets we know about */
        for (chip= chips; chip->name; chip++, i++) 
@@ -248,7 +249,7 @@ static void __exit ali_ircc_cleanup(void)
 
        IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); 
 
-       for (i=0; i < 4; i++) {
+       for (i=0; i < ARRAY_SIZE(dev_self); i++) {
                if (dev_self[i])
                        ali_ircc_close(dev_self[i]);
        }
@@ -272,6 +273,12 @@ static int ali_ircc_open(int i, chipio_t *info)
        int err;
                        
        IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); 
+
+       if (i >= ARRAY_SIZE(dev_self)) {
+               IRDA_ERROR("%s(), maximum number of supported chips reached!\n",
+                          __FUNCTION__);
+               return -ENOMEM;
+       }
        
        /* Set FIR FIFO and DMA Threshold */
        if ((ali_ircc_setup(info)) == -1)
@@ -653,22 +660,15 @@ static int ali_ircc_read_dongle_id (int i, chipio_t *info)
  *    An interrupt from the chip has arrived. Time to do some work
  *
  */
-static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id,
-                                       struct pt_regs *regs)
+static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id)
 {
-       struct net_device *dev = (struct net_device *) dev_id;
+       struct net_device *dev = dev_id;
        struct ali_ircc_cb *self;
        int ret;
                
        IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
                
-       if (!dev) {
-               IRDA_WARNING("%s: irq %d for unknown device.\n",
-                            ALI_IRCC_DRIVER_NAME, irq);
-               return IRQ_NONE;
-       }       
-       
-       self = (struct ali_ircc_cb *) dev->priv;
+       self = dev->priv;
        
        spin_lock(&self->lock);