diff options
Diffstat (limited to 'drivers/net/irda/vlsi_ir.c')
-rw-r--r-- | drivers/net/irda/vlsi_ir.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c index bf78ef1120ad..0538ca9ce058 100644 --- a/drivers/net/irda/vlsi_ir.c +++ b/drivers/net/irda/vlsi_ir.c | |||
@@ -44,6 +44,7 @@ MODULE_LICENSE("GPL"); | |||
44 | #include <linux/time.h> | 44 | #include <linux/time.h> |
45 | #include <linux/proc_fs.h> | 45 | #include <linux/proc_fs.h> |
46 | #include <linux/seq_file.h> | 46 | #include <linux/seq_file.h> |
47 | #include <linux/mutex.h> | ||
47 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
48 | #include <asm/byteorder.h> | 49 | #include <asm/byteorder.h> |
49 | 50 | ||
@@ -1660,8 +1661,8 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1660 | idev = ndev->priv; | 1661 | idev = ndev->priv; |
1661 | 1662 | ||
1662 | spin_lock_init(&idev->lock); | 1663 | spin_lock_init(&idev->lock); |
1663 | init_MUTEX(&idev->sem); | 1664 | mutex_init(&idev->mtx); |
1664 | down(&idev->sem); | 1665 | mutex_lock(&idev->mtx); |
1665 | idev->pdev = pdev; | 1666 | idev->pdev = pdev; |
1666 | 1667 | ||
1667 | if (vlsi_irda_init(ndev) < 0) | 1668 | if (vlsi_irda_init(ndev) < 0) |
@@ -1689,12 +1690,12 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1689 | IRDA_MESSAGE("%s: registered device %s\n", drivername, ndev->name); | 1690 | IRDA_MESSAGE("%s: registered device %s\n", drivername, ndev->name); |
1690 | 1691 | ||
1691 | pci_set_drvdata(pdev, ndev); | 1692 | pci_set_drvdata(pdev, ndev); |
1692 | up(&idev->sem); | 1693 | mutex_unlock(&idev->mtx); |
1693 | 1694 | ||
1694 | return 0; | 1695 | return 0; |
1695 | 1696 | ||
1696 | out_freedev: | 1697 | out_freedev: |
1697 | up(&idev->sem); | 1698 | mutex_unlock(&idev->mtx); |
1698 | free_netdev(ndev); | 1699 | free_netdev(ndev); |
1699 | out_disable: | 1700 | out_disable: |
1700 | pci_disable_device(pdev); | 1701 | pci_disable_device(pdev); |
@@ -1716,12 +1717,12 @@ static void __devexit vlsi_irda_remove(struct pci_dev *pdev) | |||
1716 | unregister_netdev(ndev); | 1717 | unregister_netdev(ndev); |
1717 | 1718 | ||
1718 | idev = ndev->priv; | 1719 | idev = ndev->priv; |
1719 | down(&idev->sem); | 1720 | mutex_lock(&idev->mtx); |
1720 | if (idev->proc_entry) { | 1721 | if (idev->proc_entry) { |
1721 | remove_proc_entry(ndev->name, vlsi_proc_root); | 1722 | remove_proc_entry(ndev->name, vlsi_proc_root); |
1722 | idev->proc_entry = NULL; | 1723 | idev->proc_entry = NULL; |
1723 | } | 1724 | } |
1724 | up(&idev->sem); | 1725 | mutex_unlock(&idev->mtx); |
1725 | 1726 | ||
1726 | free_netdev(ndev); | 1727 | free_netdev(ndev); |
1727 | 1728 | ||
@@ -1751,7 +1752,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1751 | return 0; | 1752 | return 0; |
1752 | } | 1753 | } |
1753 | idev = ndev->priv; | 1754 | idev = ndev->priv; |
1754 | down(&idev->sem); | 1755 | mutex_lock(&idev->mtx); |
1755 | if (pdev->current_state != 0) { /* already suspended */ | 1756 | if (pdev->current_state != 0) { /* already suspended */ |
1756 | if (state.event > pdev->current_state) { /* simply go deeper */ | 1757 | if (state.event > pdev->current_state) { /* simply go deeper */ |
1757 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); | 1758 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); |
@@ -1759,7 +1760,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1759 | } | 1760 | } |
1760 | else | 1761 | else |
1761 | IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, pci_name(pdev), pdev->current_state, state.event); | 1762 | IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, pci_name(pdev), pdev->current_state, state.event); |
1762 | up(&idev->sem); | 1763 | mutex_unlock(&idev->mtx); |
1763 | return 0; | 1764 | return 0; |
1764 | } | 1765 | } |
1765 | 1766 | ||
@@ -1775,7 +1776,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1775 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); | 1776 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); |
1776 | pdev->current_state = state.event; | 1777 | pdev->current_state = state.event; |
1777 | idev->resume_ok = 1; | 1778 | idev->resume_ok = 1; |
1778 | up(&idev->sem); | 1779 | mutex_unlock(&idev->mtx); |
1779 | return 0; | 1780 | return 0; |
1780 | } | 1781 | } |
1781 | 1782 | ||
@@ -1790,9 +1791,9 @@ static int vlsi_irda_resume(struct pci_dev *pdev) | |||
1790 | return 0; | 1791 | return 0; |
1791 | } | 1792 | } |
1792 | idev = ndev->priv; | 1793 | idev = ndev->priv; |
1793 | down(&idev->sem); | 1794 | mutex_lock(&idev->mtx); |
1794 | if (pdev->current_state == 0) { | 1795 | if (pdev->current_state == 0) { |
1795 | up(&idev->sem); | 1796 | mutex_unlock(&idev->mtx); |
1796 | IRDA_WARNING("%s - %s: already resumed\n", | 1797 | IRDA_WARNING("%s - %s: already resumed\n", |
1797 | __FUNCTION__, pci_name(pdev)); | 1798 | __FUNCTION__, pci_name(pdev)); |
1798 | return 0; | 1799 | return 0; |
@@ -1814,7 +1815,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev) | |||
1814 | * device and independently resume_ok should catch any garbage config. | 1815 | * device and independently resume_ok should catch any garbage config. |
1815 | */ | 1816 | */ |
1816 | IRDA_WARNING("%s - hm, nothing to resume?\n", __FUNCTION__); | 1817 | IRDA_WARNING("%s - hm, nothing to resume?\n", __FUNCTION__); |
1817 | up(&idev->sem); | 1818 | mutex_unlock(&idev->mtx); |
1818 | return 0; | 1819 | return 0; |
1819 | } | 1820 | } |
1820 | 1821 | ||
@@ -1824,7 +1825,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev) | |||
1824 | netif_device_attach(ndev); | 1825 | netif_device_attach(ndev); |
1825 | } | 1826 | } |
1826 | idev->resume_ok = 0; | 1827 | idev->resume_ok = 0; |
1827 | up(&idev->sem); | 1828 | mutex_unlock(&idev->mtx); |
1828 | return 0; | 1829 | return 0; |
1829 | } | 1830 | } |
1830 | 1831 | ||