ixp4xx: fix the i2c pld driver for 2.6.37 - i2c uses a rt_mutex instead of a mutex now
authorFelix Fietkau <nbd@openwrt.org>
Sat, 26 Feb 2011 06:23:23 +0000 (06:23 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 26 Feb 2011 06:23:23 +0000 (06:23 +0000)
SVN-Revision: 25725

target/linux/ixp4xx/patches-2.6.37/020-gateworks_i2c_pld.patch

index 6c93c44..c4904b7 100644 (file)
@@ -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
 +/*
 + * 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.
 +*/
 +
 + * as the device still exists on the I2C bus.
 +*/
 +
 +      int ret;
 +      struct gw_i2c_pld *gpio = container_of(chip, struct gw_i2c_pld, chip);
 +      struct i2c_adapter *adap = gpio->client->adapter;
 +      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()) {
 +      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 {
 +              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);
 +
 +      }
 +
 +      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;
 +}
 +
 +      return ret;
 +}
 +      s32     value;
 +      struct gw_i2c_pld *gpio = container_of(chip, struct gw_i2c_pld, chip);
 +      struct i2c_adapter *adap = gpio->client->adapter;
 +      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()) {
 +      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 {
 +              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);
 +
 +      }
 +
 +      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));
 +}
 +
 +      return (value < 0) ? 0 : (value & (1 << offset));
 +}
 +      struct i2c_adapter *adap = gpio->client->adapter;
 +
 +      unsigned bit = 1 << offset;
 +      struct i2c_adapter *adap = gpio->client->adapter;
 +
 +      unsigned bit = 1 << offset;
-+      
++
 +      if (in_atomic() || irqs_disabled()) {
 +      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 {
 +              if (!ret)
 +                      /* I2C activity is ongoing. */
 +                      return -EAGAIN;
 +      } else {
-+              mutex_lock_nested(&adap->bus_lock, adap->level);
++              rt_mutex_lock(&adap->bus_lock);
 +      }
 +
 +
 +      }
 +
 +
 +
 +      ret = i2c_pld_write_byte(gpio->client->addr, gpio->out);
 +
 +
 +      ret = i2c_pld_write_byte(gpio->client->addr, gpio->out);
 +
-+      mutex_unlock(&adap->bus_lock);
++      rt_mutex_unlock(&adap->bus_lock);
 +
 +      return ret;
 +}
 +
 +      return ret;
 +}