diff options
author | Matthias Kaehlcke <matthias.kaehlcke@gmail.com> | 2007-07-09 16:18:12 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-07-11 01:18:51 -0400 |
commit | aa4291108f434a183207e645379414270118dccb (patch) | |
tree | c4ee6dbcb1225e065742070284ad0af1a5d07a5e /drivers | |
parent | 6f11df8355e8f59f7572bf6ac1f63d692483b0c6 (diff) |
[IRDA]: use mutex instead of semaphore in VLSI 82C147 IrDA controller driver
The VLSI 82C147 IrDA controller driver uses a semaphore as mutex. Use the
mutex API instead of the (binary) semaphore.
Signed-off-by: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/irda/vlsi_ir.c | 27 | ||||
-rw-r--r-- | drivers/net/irda/vlsi_ir.h | 2 |
2 files changed, 15 insertions, 14 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 | ||
diff --git a/drivers/net/irda/vlsi_ir.h b/drivers/net/irda/vlsi_ir.h index 2d3b773d8e35..ca12a6096419 100644 --- a/drivers/net/irda/vlsi_ir.h +++ b/drivers/net/irda/vlsi_ir.h | |||
@@ -728,7 +728,7 @@ typedef struct vlsi_irda_dev { | |||
728 | struct timeval last_rx; | 728 | struct timeval last_rx; |
729 | 729 | ||
730 | spinlock_t lock; | 730 | spinlock_t lock; |
731 | struct semaphore sem; | 731 | struct mutex mtx; |
732 | 732 | ||
733 | u8 resume_ok; | 733 | u8 resume_ok; |
734 | struct proc_dir_entry *proc_entry; | 734 | struct proc_dir_entry *proc_entry; |