Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[POWERPC] mv64x60: Use mutex instead of semaphore

parent adff093d
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/string.h>
#include <linux/spinlock.h>
#include <linux/mv643xx.h>
@@ -2359,7 +2360,7 @@ mv64460_chip_specific_init(struct mv64x60_handle *bh,
/* Export the hotswap register via sysfs for enum event monitoring */
#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
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)
		return -EINVAL;

	if (down_interruptible(&mv64xxx_hs_lock))
	if (mutex_lock_interruptible(&mv64xxx_hs_lock))
		return -ERESTARTSYS;
	save_exclude = mv64x60_pci_exclude_bridge;
	mv64x60_pci_exclude_bridge = 0;
	early_read_config_dword(&sysfs_hose_a, 0, PCI_DEVFN(0, 0),
			MV64360_PCICFG_CPCI_HOTSWAP, &v);
	mv64x60_pci_exclude_bridge = save_exclude;
	up(&mv64xxx_hs_lock);
	mutex_unlock(&mv64xxx_hs_lock);

	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)
		return -EINVAL;

	if (sscanf(buf, "%i", &v) == 1) {
		if (down_interruptible(&mv64xxx_hs_lock))
		if (mutex_lock_interruptible(&mv64xxx_hs_lock))
			return -ERESTARTSYS;
		save_exclude = mv64x60_pci_exclude_bridge;
		mv64x60_pci_exclude_bridge = 0;
		early_write_config_dword(&sysfs_hose_a, 0, PCI_DEVFN(0, 0),
				MV64360_PCICFG_CPCI_HOTSWAP, v);
		mv64x60_pci_exclude_bridge = save_exclude;
		up(&mv64xxx_hs_lock);
		mutex_unlock(&mv64xxx_hs_lock);
	}
	else
		count = -EINVAL;
@@ -2433,10 +2434,10 @@ mv64xxx_hs_reg_valid_show(struct device *dev, struct device_attribute *attr,
	pdev = container_of(dev, struct platform_device, dev);
	pdp = (struct mv64xxx_pdata *)pdev->dev.platform_data;

	if (down_interruptible(&mv64xxx_hs_lock))
	if (mutex_lock_interruptible(&mv64xxx_hs_lock))
		return -ERESTARTSYS;
	v = pdp->hs_reg_valid;
	up(&mv64xxx_hs_lock);
	mutex_unlock(&mv64xxx_hs_lock);

	return sprintf(buf, "%i\n", v);
}