int rt5025_reg_read(struct i2c_client *i2c, int reg)
{
- struct rt5025_chip *chip = i2c_get_clientdata(i2c);
int ret;
RTINFO("I2C Read (client : 0x%x) reg = 0x%x\n",
(unsigned int) i2c, (unsigned int) reg);
- mutex_lock(&chip->io_lock);
ret = i2c_smbus_read_byte_data(i2c, reg);
- mutex_unlock(&chip->io_lock);
return ret;
}
EXPORT_SYMBOL(rt5025_reg_read);
int rt5025_reg_write(struct i2c_client *i2c, int reg, unsigned char data)
{
- struct rt5025_chip *chip = i2c_get_clientdata(i2c);
int ret;
RTINFO("I2C Write (client : 0x%x) reg = 0x%x, data = 0x%x\n",
(unsigned int) i2c, (unsigned int) reg, (unsigned int) data);
- mutex_lock(&chip->io_lock);
ret = i2c_smbus_write_byte_data(i2c, reg, data);
- mutex_unlock(&chip->io_lock);
return ret;
}
EXPORT_SYMBOL(rt5025_reg_write);
int rt5025_assign_bits(struct i2c_client *i2c, int reg,
unsigned char mask, unsigned char data)
{
- struct rt5025_chip *chip = i2c_get_clientdata(i2c);
unsigned char value;
int ret;
- mutex_lock(&chip->io_lock);
-
ret = rt5025_read_device(i2c, reg, 1, &value);
if (ret < 0)
value |= (data&mask);
ret = i2c_smbus_write_byte_data(i2c, reg, value);
out:
- mutex_unlock(&chip->io_lock);
return ret;
}
EXPORT_SYMBOL(rt5025_assign_bits);
int rt5036_reg_read(struct i2c_client *i2c, int reg)
{
- struct rt5036_chip *chip = i2c_get_clientdata(i2c);
int ret;
RTINFO("I2C Read (client : 0x%x) reg = 0x%x\n",
(unsigned int)i2c, (unsigned int)reg);
- mutex_lock(&chip->io_lock);
ret = i2c_smbus_read_byte_data(i2c, reg);
- mutex_unlock(&chip->io_lock);
return ret;
}
EXPORT_SYMBOL(rt5036_reg_read);
int rt5036_reg_write(struct i2c_client *i2c, int reg, unsigned char data)
{
- struct rt5036_chip *chip = i2c_get_clientdata(i2c);
int ret;
RTINFO("I2C Write (client : 0x%x) reg = 0x%x, data = 0x%x\n",
(unsigned int)i2c, (unsigned int)reg, (unsigned int)data);
- mutex_lock(&chip->io_lock);
ret = i2c_smbus_write_byte_data(i2c, reg, data);
- mutex_unlock(&chip->io_lock);
return ret;
}
EXPORT_SYMBOL(rt5036_reg_write);
int rt5036_assign_bits(struct i2c_client *i2c, int reg,
unsigned char mask, unsigned char data)
{
- struct rt5036_chip *chip = i2c_get_clientdata(i2c);
unsigned char value;
int ret;
- mutex_lock(&chip->io_lock);
ret = rt5036_read_device(i2c, reg, 1, &value);
if (ret < 0)
value |= (data & mask);
ret = i2c_smbus_write_byte_data(i2c, reg, value);
out:
- mutex_unlock(&chip->io_lock);
return ret;
}
EXPORT_SYMBOL(rt5036_assign_bits);