Edit online

接口设计

3 Apr 2024
Read time: 4 minute(s)
1. i2c_handle_tx_abort
函数原型 int i2c_handle_tx_abort(struct aic_i2c_dev *i2c_dev)
功能说明 打印 c 发生 abort 的原因,并返回相应的 error 值
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值 根据不同的 abort 原因,返回不同的 error 值
注意事项 -
2. i2c_scl_cnt
函数原型 int i2c_scl_cnt(u32 ic_clk, enum aic_i2c_speed aic_speed, u16 *hcnt, u16 *lcnt)
功能说明 根据 c 模块工作的时钟频率和 i2c 的传输速率,返回需要设置的 hcnt 值和 lcnt 值
参数定义 ic_clk:i2c 模块工作的时钟频率,以 KHz 为单位 speed:表示 c 的传输速率,是标准模式还是快速模式 hcnt:指向需要设置的 hcnt 值的指针 lcnt:指向需要设置的 lcnt 值的指针
返回值 0:函数执行成功-EINVAL:hcnt 或 lcnt 为空指针
注意事项 -
3. i2c_set_timmings_master
函数原型 static int i2c_set_timmings_master(struct aic_i2c_dev *i2c_dev)
功能说明 设置 master 产生 SCL 时钟的时序参数
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值 0:函数执行成功-EINVAL:参数非法
注意事项 若在 DTS 中有设置 i2c 的时序参数 ns 或 ns,则会由 timings 对 DTS 进行解析,在此函数中不再调用 cnt 进行设置
4. i2c_init_master
函数原型 static void i2c_init_master(struct aic_i2c_dev *i2c_dev)
功能说明 初始化 master 模式下的参数设置,写入 hcnt 和 lcnt,配置 TXFIFO 和 RXFIFO 阈值,将 c 配置为主模式
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值
注意事项 -
5. i2c_xfer_msg_init
函数原型 static void i2c_xfer_msg_init(struct aic_i2c_dev *i2c_dev)
功能说明 在传输每个 msg 前进行的初始化,主要是将指示每个 msg 状态的变量设置为初始值,并设置传输的从地址设置,使能中断
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值
注意事项 -
6. i2c_xfer_msg
函数原型 static int i2c_xfer_msg(struct aic_i2c_dev *i2c_dev, struct i2c_msg *msg, bool is_first, bool is_last)
功能说明 单个 msg 的传输函数,若当前 msg 是第一个 msg,则会等待总线空闲,然后执行 init 进行 msg 传输前的初始化工作,等待当前 msg 传输完成
参数定义 i2c_dev:指向自定义的 dev 结构体 msg:指向当前将要传输的 first:指示当前 msg 是否是第一个 last:指示当前 msg 是否是最后一个 msg
返回值 0:执行成功<0:执行过程中发生错误
注意事项 -
7. i2c_xfer
函数原型 static int i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num)
功能说明 i2c 的传输函数,该函数可完成多个 msg 的传输,使用该函数完成对 algorithm 中 master_xfer 函数指针的填充
参数定义 i2c_dev:指向自定义的 dev 结构体 msgs:指向 msg 数组的指针 num:需要传输的 msg 个数
返回值 0:执行成功<0:执行过程中发生错误
注意事项 -
8. i2c_handle_read
函数原型 static void i2c_handle_read(struct aic_i2c_dev *i2c_dev)
功能说明 当触发 FULL 中断时,调用该函数读取接收到的数据,若完成当前 msg 的接收,则释放完成量。该函数在中断中调用
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值
注意事项 -
9. i2c_handle_write
函数原型 static void i2c_handle_write(struct aic_i2c_dev *i2c_dev)
功能说明 当触发 EMPTY 中断时,调用该函数。若是读 msg,则调用该函数发送读命令,若是写 msg,则调用该函数发送数据
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值
注意事项 -
10. i2c_init_slave
函数原型 static void i2c_init_slave(struct aic_i2c_dev *i2c_dev)
功能说明 初始化 slave 模式下的参数设置,配置 TXFIFO 和 RXFIFO 阈值,设置 c 为 slave 模式
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值
注意事项 -
11. i2c_reg_slave
函数原型 static int i2c_reg_slave(struct i2c_client *slave)
功能说明 初始化 slave 模式下的参数设置,配置 slave 是 10bit 寻址还是 7bit 寻址,设置从机的地址
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值 0:执行成功-EBUSY:忙等待
注意事项 -
12. i2c_unreg_slave
函数原型 static int i2c_unreg_slave(struct i2c_client *slave)
功能说明 与 slave 功能相反
参数定义 i2c_dev:指向自定义的 dev 结构体
返回值 0:执行成功
注意事项 -