kernel: add i2c mangle hook
This commit is contained in:
parent
e86bc1fc87
commit
98e0d6d0e2
@ -1072,7 +1072,7 @@ module_exit(i2c_exit);
|
|||||||
* Note that there is no requirement that each message be sent to
|
* Note that there is no requirement that each message be sent to
|
||||||
* the same slave address, although that is the most common model.
|
* the same slave address, although that is the most common model.
|
||||||
*/
|
*/
|
||||||
int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
|
int i2c_transfer2(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
|
||||||
{
|
{
|
||||||
unsigned long orig_jiffies;
|
unsigned long orig_jiffies;
|
||||||
int ret, try;
|
int ret, try;
|
||||||
@ -1103,15 +1103,6 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
|
|||||||
(msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
|
(msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if 0
|
|
||||||
for (ret = 0; ret < num; ret++) {
|
|
||||||
printk("i2c master_xfer[%d] %c, addr=0x%02x, "
|
|
||||||
"len=%d%s, flags=0x%x\n", ret, (msgs[ret].flags & I2C_M_RD)
|
|
||||||
? 'R' : 'W', msgs[ret].addr, msgs[ret].len,
|
|
||||||
(msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "",
|
|
||||||
msgs[ret].flags);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (in_atomic() || irqs_disabled()) {
|
if (in_atomic() || irqs_disabled()) {
|
||||||
ret = mutex_trylock(&adap->bus_lock);
|
ret = mutex_trylock(&adap->bus_lock);
|
||||||
@ -1139,6 +1130,17 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(i2c_transfer2);
|
||||||
|
|
||||||
|
int (*i2c_transfer_mangle)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num);
|
||||||
|
EXPORT_SYMBOL(i2c_transfer_mangle);
|
||||||
|
|
||||||
|
int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
|
||||||
|
{
|
||||||
|
if (i2c_transfer_mangle)
|
||||||
|
return i2c_transfer_mangle(adap, msgs, num);
|
||||||
|
return i2c_transfer2(adap, msgs, num);
|
||||||
|
}
|
||||||
EXPORT_SYMBOL(i2c_transfer);
|
EXPORT_SYMBOL(i2c_transfer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,6 +60,8 @@ extern int i2c_master_recv(struct i2c_client *client, char *buf, int count);
|
|||||||
|
|
||||||
/* Transfer num messages.
|
/* Transfer num messages.
|
||||||
*/
|
*/
|
||||||
|
extern int (*i2c_transfer_mangle)
|
||||||
|
(struct i2c_adapter *adap, struct i2c_msg *msgs, int num);
|
||||||
extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
|
extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
|
||||||
int num);
|
int num);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user