请在每行代码后面写注释
时间: 2024-04-16 16:23:47 浏览: 19
好的,以下是对每行代码的注释:
```c
static uint32_t cam_cci_wait(struct cci_device *cci_dev,
enum cci_i2c_master_t master,
enum cci_i2c_queue_t queue)
{
int32_t rc = 0;
if (!cci_dev) { // 检查 cci_dev 是否为空
CAM_ERR(CAM_CCI, "failed"); // 打印错误信息
return -EINVAL; // 返回 -EINVAL 错误码
}
rc = wait_for_completion_timeout(
&cci_dev->cci_master_info[master].report_q[queue], CCI_TIMEOUT); // 等待指定事件完成,超时时间为 CCI_TIMEOUT
CAM_DBG(CAM_CCI, "wait DONE_for_completion_timeout"); // 打印调试信息
if (rc <= 0) { // 如果等待超时或出现其他错误
cam_cci_dump_registers(cci_dev, master, queue); // 打印寄存器信息
CAM_ERR(CAM_CCI, "wait for queue: %d", queue); // 打印错误信息
if (rc == 0)
rc = -ETIMEDOUT; // 如果等待超时,则返回 -ETIMEDOUT 错误码
cam_cci_flush_queue(cci_dev, master); // 清空队列
return rc; // 返回错误码
}
rc = cci_dev->cci_master_info[master].status; // 获取状态值
if (rc < 0) { // 如果状态值小于0
CAM_ERR(CAM_CCI, "failed rc %d", rc); // 打印错误信息
return rc; // 返回错误码
}
return 0; // 返回0,表示等待成功
}
```
请注意,上述注释是根据代码的语义进行推断的,并可能不准确。如果您有更多上下文或者更详细的代码说明,我可以提供更准确的注释。