新路程------hi3516a的i2c_read调用过程

  在/Hi3516A_SDK_V1.0.6.0/osdrv/tools/board/reg-tools-1.0.0/source/tools/i2c_ops.c里有i2c_read的实现

在ret = read(fd, recvbuf, reg_width); 里实现了读取寄存器值

追一下这个过程

之前用了ret = ioctl(fd, I2C_16BIT_REG, 1);所以肯定和ioctl在一个文件,在/driver/i2c/i2c-dev.c里i2cdev_read


调用了ret = i2c_master_recv(client, tmp, count);

接着调用了ret = i2c_master_recv(client, tmp, count);

然后调用了

ret = adap->algo->master_xfer(adap, msgs, num);

这个master_xfer在i2c-hisilicon.c

static const struct i2c_algorithm hi_i2c_algo = {
.master_xfer    = hi_i2c_xfer,
.functionality  = hi_i2c_func,
};

然后static int hi_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
int num)
{
struct hi_i2c *pinfo;
int errorcode;


pinfo = (struct hi_i2c *)i2c_get_adapdata(adap);


pinfo->msgs = msgs;
pinfo->msg_num = num;
pinfo->msg_index = 0;


if (msgs->flags & I2C_M_RD)
errorcode = hi_i2c_read(pinfo);
else
errorcode = hi_i2c_write(pinfo);


return errorcode;
}最后就是调了这两个read和write函数



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值