diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-02-26 06:23:23 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-02-26 06:23:23 +0000 |
commit | 89a668b52a7df45e2dfdb02014dc4c30a8f996ef (patch) | |
tree | be66fc0b8bafc2a1b9e0bda0271d74adea35f4cb /target/linux | |
parent | 13556da59a1bc11afb4eac2fcc14b81acfe0c103 (diff) | |
download | master-31e0f0ae-89a668b52a7df45e2dfdb02014dc4c30a8f996ef.tar.gz master-31e0f0ae-89a668b52a7df45e2dfdb02014dc4c30a8f996ef.tar.bz2 master-31e0f0ae-89a668b52a7df45e2dfdb02014dc4c30a8f996ef.zip |
ixp4xx: fix the i2c pld driver for 2.6.37 - i2c uses a rt_mutex instead of a mutex now
SVN-Revision: 25725
Diffstat (limited to 'target/linux')
-rw-r--r-- | target/linux/ixp4xx/patches-2.6.37/020-gateworks_i2c_pld.patch | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.37/020-gateworks_i2c_pld.patch b/target/linux/ixp4xx/patches-2.6.37/020-gateworks_i2c_pld.patch index 6c93c44661..c4904b721e 100644 --- a/target/linux/ixp4xx/patches-2.6.37/020-gateworks_i2c_pld.patch +++ b/target/linux/ixp4xx/patches-2.6.37/020-gateworks_i2c_pld.patch @@ -51,7 +51,7 @@ +/* + * The Gateworks I2C PLD chip does not properly send the acknowledge bit + * thus we cannot use standard i2c_smbus functions. We have recreated -+ * our own here, but we still use the mutex_lock to lock the i2c_bus ++ * our own here, but we still use the rt_mutex_lock to lock the i2c_bus + * as the device still exists on the I2C bus. +*/ + @@ -179,21 +179,21 @@ + int ret; + struct gw_i2c_pld *gpio = container_of(chip, struct gw_i2c_pld, chip); + struct i2c_adapter *adap = gpio->client->adapter; -+ ++ + if (in_atomic() || irqs_disabled()) { -+ ret = mutex_trylock(&adap->bus_lock); ++ ret = rt_mutex_trylock(&adap->bus_lock); + if (!ret) + /* I2C activity is ongoing. */ + return -EAGAIN; + } else { -+ mutex_lock_nested(&adap->bus_lock, adap->level); ++ rt_mutex_lock(&adap->bus_lock); + } + + gpio->out |= (1 << offset); + + ret = i2c_pld_write_byte(gpio->client->addr, gpio->out); + -+ mutex_unlock(&adap->bus_lock); ++ rt_mutex_unlock(&adap->bus_lock); + + return ret; +} @@ -204,19 +204,19 @@ + s32 value; + struct gw_i2c_pld *gpio = container_of(chip, struct gw_i2c_pld, chip); + struct i2c_adapter *adap = gpio->client->adapter; -+ ++ + if (in_atomic() || irqs_disabled()) { -+ ret = mutex_trylock(&adap->bus_lock); ++ ret = rt_mutex_trylock(&adap->bus_lock); + if (!ret) + /* I2C activity is ongoing. */ + return -EAGAIN; + } else { -+ mutex_lock_nested(&adap->bus_lock, adap->level); ++ rt_mutex_lock(&adap->bus_lock); + } + + value = i2c_pld_read_byte(gpio->client->addr); + -+ mutex_unlock(&adap->bus_lock); ++ rt_mutex_unlock(&adap->bus_lock); + + return (value < 0) ? 0 : (value & (1 << offset)); +} @@ -229,14 +229,14 @@ + struct i2c_adapter *adap = gpio->client->adapter; + + unsigned bit = 1 << offset; -+ ++ + if (in_atomic() || irqs_disabled()) { -+ ret = mutex_trylock(&adap->bus_lock); ++ ret = rt_mutex_trylock(&adap->bus_lock); + if (!ret) + /* I2C activity is ongoing. */ + return -EAGAIN; + } else { -+ mutex_lock_nested(&adap->bus_lock, adap->level); ++ rt_mutex_lock(&adap->bus_lock); + } + + @@ -247,7 +247,7 @@ + + ret = i2c_pld_write_byte(gpio->client->addr, gpio->out); + -+ mutex_unlock(&adap->bus_lock); ++ rt_mutex_unlock(&adap->bus_lock); + + return ret; +} |