了解i2c_check_functionality()

i2c_check_functionality()用来检查设备适配器支持的标志是否要求。

打开“include/linux/i2c.h”

/* Return the functionality mask */

static inline u32 i2c_get_functionality(struct i2c_adapter *adap)

{

return adap->algo->functionality(adap);

//返回该适配器支持的标志

}

/* Return 1 if adapter supports everything we need, 0 if not. */

static inline int i2c_check_functionality(struct i2c_adapter *adap, u32 func)

{

return (func & i2c_get_functionality(adap)) == func;

    //如果I2C适配器支持func,则返回1;

}

举例:

打开“/usr/include/linux/i2c.h”

/* To determine what functionality is present */

#define I2C_FUNC_I2C 0x00000001

#define I2C_FUNC_10BIT_ADDR 0x00000002

#define I2C_FUNC_PROTOCOL_MANGLING 0x00000004 /* I2C_M_IGNORE_NAK etc. */

#define I2C_FUNC_SMBUS_PEC 0x00000008

#define I2C_FUNC_NOSTART 0x00000010 /* I2C_M_NOSTART */

#define I2C_FUNC_SLAVE 0x00000020

#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000 /* SMBus 2.0 */

#define I2C_FUNC_SMBUS_QUICK 0x00010000

#define I2C_FUNC_SMBUS_READ_BYTE 0x00020000

#define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000

#define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000

#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000

#define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000

#define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000

#define I2C_FUNC_SMBUS_PROC_CALL 0x00800000

#define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000

#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000

#define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000 /* I2C-like block xfer  */

#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000 /* w/ 1-byte reg. addr. */

#define I2C_FUNC_SMBUS_HOST_NOTIFY 0x10000000


i2c_check_functionality(client->adapter, I2C_FUNC_I2C);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值