git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
i2c
/
busses
/
i2c-amd756-s4882.c
diff --git
a/drivers/i2c/busses/i2c-amd756-s4882.c
b/drivers/i2c/busses/i2c-amd756-s4882.c
index
4e553e8
..
08e9157
100644
(file)
--- a/
drivers/i2c/busses/i2c-amd756-s4882.c
+++ b/
drivers/i2c/busses/i2c-amd756-s4882.c
@@
-38,6
+38,7
@@
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/i2c.h>
+#include <linux/mutex.h>
extern struct i2c_adapter amd756_smbus;
extern struct i2c_adapter amd756_smbus;
@@
-45,7
+46,7
@@
static struct i2c_adapter *s4882_adapter;
static struct i2c_algorithm *s4882_algo;
/* Wrapper access functions for multiplexed SMBus */
static struct i2c_algorithm *s4882_algo;
/* Wrapper access functions for multiplexed SMBus */
-static
struct semaphore amd756_lock
;
+static
DEFINE_MUTEX(amd756_lock)
;
static s32 amd756_access_virt0(struct i2c_adapter * adap, u16 addr,
unsigned short flags, char read_write,
static s32 amd756_access_virt0(struct i2c_adapter * adap, u16 addr,
unsigned short flags, char read_write,
@@
-59,12
+60,12
@@
static s32 amd756_access_virt0(struct i2c_adapter * adap, u16 addr,
|| addr == 0x18)
return -1;
|| addr == 0x18)
return -1;
-
down
(&amd756_lock);
+
mutex_lock
(&amd756_lock);
error = amd756_smbus.algo->smbus_xfer(adap, addr, flags, read_write,
command, size, data);
error = amd756_smbus.algo->smbus_xfer(adap, addr, flags, read_write,
command, size, data);
-
up
(&amd756_lock);
+
mutex_unlock
(&amd756_lock);
return error;
}
return error;
}
@@
-87,7
+88,7
@@
static inline s32 amd756_access_channel(struct i2c_adapter * adap, u16 addr,
if (addr != 0x4c && (addr & 0xfc) != 0x50 && (addr & 0xfc) != 0x30)
return -1;
if (addr != 0x4c && (addr & 0xfc) != 0x50 && (addr & 0xfc) != 0x30)
return -1;
-
down
(&amd756_lock);
+
mutex_lock
(&amd756_lock);
if (last_channels != channels) {
union i2c_smbus_data mplxdata;
if (last_channels != channels) {
union i2c_smbus_data mplxdata;
@@
-105,7
+106,7
@@
static inline s32 amd756_access_channel(struct i2c_adapter * adap, u16 addr,
command, size, data);
UNLOCK:
command, size, data);
UNLOCK:
-
up
(&amd756_lock);
+
mutex_unlock
(&amd756_lock);
return error;
}
return error;
}
@@
-166,15
+167,13
@@
static int __init amd756_s4882_init(void)
}
printk(KERN_INFO "Enabling SMBus multiplexing for Tyan S4882\n");
}
printk(KERN_INFO "Enabling SMBus multiplexing for Tyan S4882\n");
- init_MUTEX(&amd756_lock);
-
/* Define the 5 virtual adapters and algorithms structures */
/* Define the 5 virtual adapters and algorithms structures */
- if (!(s4882_adapter = k
m
alloc(5 * sizeof(struct i2c_adapter),
+ if (!(s4882_adapter = k
z
alloc(5 * sizeof(struct i2c_adapter),
GFP_KERNEL))) {
error = -ENOMEM;
goto ERROR1;
}
GFP_KERNEL))) {
error = -ENOMEM;
goto ERROR1;
}
- if (!(s4882_algo = k
m
alloc(5 * sizeof(struct i2c_algorithm),
+ if (!(s4882_algo = k
z
alloc(5 * sizeof(struct i2c_algorithm),
GFP_KERNEL))) {
error = -ENOMEM;
goto ERROR2;
GFP_KERNEL))) {
error = -ENOMEM;
goto ERROR2;
@@
-245,10
+244,8
@@
static void __exit amd756_s4882_exit(void)
kfree(s4882_adapter);
s4882_adapter = NULL;
}
kfree(s4882_adapter);
s4882_adapter = NULL;
}
- if (s4882_algo) {
- kfree(s4882_algo);
- s4882_algo = NULL;
- }
+ kfree(s4882_algo);
+ s4882_algo = NULL;
/* Restore physical bus */
if (i2c_add_adapter(&amd756_smbus))
/* Restore physical bus */
if (i2c_add_adapter(&amd756_smbus))