Commit 461e6667 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Paul Mackerras

[POWERPC] mv64x60: Use mutex instead of semaphore

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarMark A. Greer <mgreer@mvista.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent adff093d
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/mutex.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/mv643xx.h> #include <linux/mv643xx.h>
...@@ -2359,7 +2360,7 @@ mv64460_chip_specific_init(struct mv64x60_handle *bh, ...@@ -2359,7 +2360,7 @@ mv64460_chip_specific_init(struct mv64x60_handle *bh,
/* Export the hotswap register via sysfs for enum event monitoring */ /* Export the hotswap register via sysfs for enum event monitoring */
#define VAL_LEN_MAX 11 /* 32-bit hex or dec stringified number + '\n' */ #define VAL_LEN_MAX 11 /* 32-bit hex or dec stringified number + '\n' */
DECLARE_MUTEX(mv64xxx_hs_lock); static DEFINE_MUTEX(mv64xxx_hs_lock);
static ssize_t static ssize_t
mv64xxx_hs_reg_read(struct kobject *kobj, char *buf, loff_t off, size_t count) mv64xxx_hs_reg_read(struct kobject *kobj, char *buf, loff_t off, size_t count)
...@@ -2372,14 +2373,14 @@ mv64xxx_hs_reg_read(struct kobject *kobj, char *buf, loff_t off, size_t count) ...@@ -2372,14 +2373,14 @@ mv64xxx_hs_reg_read(struct kobject *kobj, char *buf, loff_t off, size_t count)
if (count < VAL_LEN_MAX) if (count < VAL_LEN_MAX)
return -EINVAL; return -EINVAL;
if (down_interruptible(&mv64xxx_hs_lock)) if (mutex_lock_interruptible(&mv64xxx_hs_lock))
return -ERESTARTSYS; return -ERESTARTSYS;
save_exclude = mv64x60_pci_exclude_bridge; save_exclude = mv64x60_pci_exclude_bridge;
mv64x60_pci_exclude_bridge = 0; mv64x60_pci_exclude_bridge = 0;
early_read_config_dword(&sysfs_hose_a, 0, PCI_DEVFN(0, 0), early_read_config_dword(&sysfs_hose_a, 0, PCI_DEVFN(0, 0),
MV64360_PCICFG_CPCI_HOTSWAP, &v); MV64360_PCICFG_CPCI_HOTSWAP, &v);
mv64x60_pci_exclude_bridge = save_exclude; mv64x60_pci_exclude_bridge = save_exclude;
up(&mv64xxx_hs_lock); mutex_unlock(&mv64xxx_hs_lock);
return sprintf(buf, "0x%08x\n", v); return sprintf(buf, "0x%08x\n", v);
} }
...@@ -2396,14 +2397,14 @@ mv64xxx_hs_reg_write(struct kobject *kobj, char *buf, loff_t off, size_t count) ...@@ -2396,14 +2397,14 @@ mv64xxx_hs_reg_write(struct kobject *kobj, char *buf, loff_t off, size_t count)
return -EINVAL; return -EINVAL;
if (sscanf(buf, "%i", &v) == 1) { if (sscanf(buf, "%i", &v) == 1) {
if (down_interruptible(&mv64xxx_hs_lock)) if (mutex_lock_interruptible(&mv64xxx_hs_lock))
return -ERESTARTSYS; return -ERESTARTSYS;
save_exclude = mv64x60_pci_exclude_bridge; save_exclude = mv64x60_pci_exclude_bridge;
mv64x60_pci_exclude_bridge = 0; mv64x60_pci_exclude_bridge = 0;
early_write_config_dword(&sysfs_hose_a, 0, PCI_DEVFN(0, 0), early_write_config_dword(&sysfs_hose_a, 0, PCI_DEVFN(0, 0),
MV64360_PCICFG_CPCI_HOTSWAP, v); MV64360_PCICFG_CPCI_HOTSWAP, v);
mv64x60_pci_exclude_bridge = save_exclude; mv64x60_pci_exclude_bridge = save_exclude;
up(&mv64xxx_hs_lock); mutex_unlock(&mv64xxx_hs_lock);
} }
else else
count = -EINVAL; count = -EINVAL;
...@@ -2433,10 +2434,10 @@ mv64xxx_hs_reg_valid_show(struct device *dev, struct device_attribute *attr, ...@@ -2433,10 +2434,10 @@ mv64xxx_hs_reg_valid_show(struct device *dev, struct device_attribute *attr,
pdev = container_of(dev, struct platform_device, dev); pdev = container_of(dev, struct platform_device, dev);
pdp = (struct mv64xxx_pdata *)pdev->dev.platform_data; pdp = (struct mv64xxx_pdata *)pdev->dev.platform_data;
if (down_interruptible(&mv64xxx_hs_lock)) if (mutex_lock_interruptible(&mv64xxx_hs_lock))
return -ERESTARTSYS; return -ERESTARTSYS;
v = pdp->hs_reg_valid; v = pdp->hs_reg_valid;
up(&mv64xxx_hs_lock); mutex_unlock(&mv64xxx_hs_lock);
return sprintf(buf, "%i\n", v); return sprintf(buf, "%i\n", v);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment