X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fsungem.c;h=28ce47a02408e9946c2e3941c491b5313ca56db2;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=b70bbd7489789f826fd969262dfa16912b565e65;hpb=3944158a6d33f94668dbd6bdc32ff5c67bb53ec2;p=linux-2.6.git diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index b70bbd748..28ce47a02 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c @@ -55,7 +55,6 @@ #include #include #include -#include #include #include @@ -2220,7 +2219,7 @@ static int gem_do_start(struct net_device *dev) spin_unlock_irqrestore(&gp->lock, flags); if (request_irq(gp->pdev->irq, gem_interrupt, - IRQF_SHARED, dev->name, (void *)dev)) { + SA_SHIRQ, dev->name, (void *)dev)) { printk(KERN_ERR "%s: failed to request irq !\n", gp->dev->name); spin_lock_irqsave(&gp->lock, flags); @@ -2285,7 +2284,7 @@ static void gem_reset_task(void *data) { struct gem *gp = (struct gem *) data; - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); netif_poll_disable(gp->dev); @@ -2312,7 +2311,7 @@ static void gem_reset_task(void *data) netif_poll_enable(gp->dev); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); } @@ -2321,14 +2320,14 @@ static int gem_open(struct net_device *dev) struct gem *gp = dev->priv; int rc = 0; - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); /* We need the cell enabled */ if (!gp->asleep) rc = gem_do_start(dev); gp->opened = (rc == 0); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); return rc; } @@ -2341,13 +2340,13 @@ static int gem_close(struct net_device *dev) * our caller (dev_close) already did it for us */ - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); gp->opened = 0; if (!gp->asleep) gem_do_stop(dev, 0); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); return 0; } @@ -2359,7 +2358,7 @@ static int gem_suspend(struct pci_dev *pdev, pm_message_t state) struct gem *gp = dev->priv; unsigned long flags; - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); netif_poll_disable(dev); @@ -2392,11 +2391,11 @@ static int gem_suspend(struct pci_dev *pdev, pm_message_t state) /* Stop the link timer */ del_timer_sync(&gp->link_timer); - /* Now we release the mutex to not block the reset task who + /* Now we release the semaphore to not block the reset task who * can take it too. We are marked asleep, so there will be no * conflict here */ - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); /* Wait for a pending reset task to complete */ while (gp->reset_task_pending) @@ -2425,7 +2424,7 @@ static int gem_resume(struct pci_dev *pdev) printk(KERN_INFO "%s: resuming\n", dev->name); - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); /* Keep the cell enabled during the entire operation, no need to * take a lock here tho since nothing else can happen while we are @@ -2441,7 +2440,7 @@ static int gem_resume(struct pci_dev *pdev) * still asleep, a new sleep cycle may bring it back */ gem_put_cell(gp); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); return 0; } pci_set_master(gp->pdev); @@ -2487,7 +2486,7 @@ static int gem_resume(struct pci_dev *pdev) netif_poll_enable(dev); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); return 0; } @@ -2592,7 +2591,7 @@ static int gem_change_mtu(struct net_device *dev, int new_mtu) return 0; } - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); spin_lock_irq(&gp->lock); spin_lock(&gp->tx_lock); dev->mtu = new_mtu; @@ -2603,7 +2602,7 @@ static int gem_change_mtu(struct net_device *dev, int new_mtu) } spin_unlock(&gp->tx_lock); spin_unlock_irq(&gp->lock); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); return 0; } @@ -2772,10 +2771,10 @@ static int gem_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) int rc = -EOPNOTSUPP; unsigned long flags; - /* Hold the PM mutex while doing ioctl's or we may collide + /* Hold the PM semaphore while doing ioctl's or we may collide * with power management. */ - mutex_lock(&gp->pm_mutex); + down(&gp->pm_sem); spin_lock_irqsave(&gp->lock, flags); gem_get_cell(gp); @@ -2813,7 +2812,7 @@ static int gem_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) gem_put_cell(gp); spin_unlock_irqrestore(&gp->lock, flags); - mutex_unlock(&gp->pm_mutex); + up(&gp->pm_sem); return rc; } @@ -2880,20 +2879,17 @@ static int __devinit gem_get_device_address(struct gem *gp) #if defined(__sparc__) struct pci_dev *pdev = gp->pdev; struct pcidev_cookie *pcp = pdev->sysdata; - int use_idprom = 1; + int node = -1; if (pcp != NULL) { - unsigned char *addr; - int len; - - addr = of_get_property(pcp->prom_node, "local-mac-address", - &len); - if (addr && len == 6) { - use_idprom = 0; - memcpy(dev->dev_addr, addr, 6); - } + node = pcp->prom_node; + if (prom_getproplen(node, "local-mac-address") == 6) + prom_getproperty(node, "local-mac-address", + dev->dev_addr, 6); + else + node = -1; } - if (use_idprom) + if (node == -1) memcpy(dev->dev_addr, idprom->id_ethaddr, 6); #elif defined(CONFIG_PPC_PMAC) unsigned char *addr; @@ -3037,7 +3033,7 @@ static int __devinit gem_init_one(struct pci_dev *pdev, spin_lock_init(&gp->lock); spin_lock_init(&gp->tx_lock); - mutex_init(&gp->pm_mutex); + init_MUTEX(&gp->pm_sem); init_timer(&gp->link_timer); gp->link_timer.function = gem_link_timer;