msm_camera_cci_cline
时间: 2023-06-23 17:44:49 浏览: 211
msm_camera_cci_cline 是 Qualcomm 的相机驱动中一个与 I2C 总线通信有关的函数,用于向相机的 CCI(Camera Control Interface,相机控制接口)寄存器写入数据。
CCI 寄存器是一组寄存器,用于控制相机的各种功能,例如调整曝光时间、设置白平衡、调整对比度等。msm_camera_cci_cline 函数通过 I2C 总线向相机发送 CCI 寄存器的写命令,实现对相机的控制。
函数原型如下:
```c
int msm_camera_cci_cline(struct msm_camera_i2c_ctrl_t *ctrl,
struct msm_camera_i2c_reg_array *reg_setting,
uint16_t size);
```
其中,ctrl 是一个指向 msm_camera_i2c_ctrl_t 结构体的指针,用于指定 I2C 总线的控制信息,例如 I2C 地址、I2C 总线的频率等;reg_setting 是一个指向要写入的寄存器配置数组的指针;size 是要写入的寄存器配置数组的大小。
msm_camera_cci_cline 函数返回 0 表示成功,返回 -1 表示失败。
相关问题
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) { CAM_ERR(CAM_CCI, "failed"); return -EINVAL; } rc = wait_for_completion_timeout( &cci_dev->cci_master_info[master].report_q[queue], 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; cam_cci_flush_queue(cci_dev, master); return rc; } rc = cci_dev->cci_master_info[master].status; if (rc < 0) { CAM_ERR(CAM_CCI, "failed rc %d", rc); return rc; } return 0; }
这段代码是一个名为 `cam_cci_wait` 的函数,它用于等待一个特定的事件完成。函数的参数包括一个 `cci_device` 结构体指针、一个 `master` 枚举值和一个 `queue` 枚举值。
函数首先会检查传入的 `cci_dev` 是否为空,如果是空的话会返回错误码 `-EINVAL`。接下来,它会调用 `wait_for_completion_timeout` 函数来等待指定的事件发生,超时时间为 `CCI_TIMEOUT`。如果等待超时或者出现其他错误,函数会打印错误信息,并返回相应的错误码。如果等待成功,函数会返回 `cci_dev->cci_master_info[master].status` 的值,如果该值小于0,则会打印失败的错误信息。
最后,如果上述条件都不满足,则函数会返回0,表示等待成功。
请注意:上述代码片段可能是从某个具体的代码库中提取的,并且缺少了上下文信息。因此,我无法提供更多关于该代码功能和用途的详细信息。如果您有更多问题,请提供更多上下文或者详细说明您想要了解的内容。
01-01 08:00:20.692 1583 1583 I CAM_ERR : CAM-CCI: cam_cci_read: 1453 CCI1_I2C_M1_Q1 ERROR with Slave 0xa2 01-01 08:00:20.692 1583 1583 I CAM_ERR : CAM-CCI: cam_cci_read_bytes: 1816 CCI1_I2C_M1 Failed to read rc:-22 01-01 08:00:20.692 1583 1583 I CAM_ERR : CAM-CCI: cam_cci_core_cfg: 2023 rc: -22 01-01 08:00:20.692 1583 1583 I CAM_ERR : CAM-EEPROM: cam_eeprom_read_memory: 114 read failed rc -22 01-01 08:00:20.692 1583 1583 I CAM_ERR : CAM-EEPROM: cam_eeprom_pkt_parse: 1329 read_eeprom_memory failed 01-01 08:00:20.696 1583 1583 I CAM_ERR : CAM-EEPROM: cam_eeprom_driver_cmd: 1540 Failed in eeprom pkt Parsing 01-01 08:00:20.696 1583 1583 I CAM_ERR : CAM-EEPROM: cam_eeprom_subdev_ioctl: 70 Failed in Driver cmd: -22 , 这段kernel log 的含义
这段内核日志中的错误信息涉及相机的 CCI(Camera Control Interface)和 EEPROM(Electrically Erasable Programmable Read-Only Memory)模块。根据日志信息,可以看出发生了以下错误:
1. CAM-CCI: cam_cci_read: 1453 CCI1_I2C_M1_Q1 ERROR with Slave 0xa2
这个错误表示在与从设备地址为0xa2的设备进行通信时发生了错误。
2. CAM-CCI: cam_cci_read_bytes: 1816 CCI1_I2C_M1 Failed to read rc:-22
这个错误表示在读取数据时发生了错误,返回值为-22。
3. CAM-CCI: cam_cci_core_cfg: 2023 rc: -22
这个错误表示在配置相机控制接口时发生了错误,返回值为-22。
4. CAM-EEPROM: cam_eeprom_read_memory: 114 read failed rc -22
这个错误表示在读取 EEPROM 存储器中的数据时发生了错误,返回值为-22。
5. CAM-EEPROM: cam_eeprom_pkt_parse: 1329 read_eeprom_memory failed
这个错误表示在解析 EEPROM 数据包时发生了错误。
6. CAM-EEPROM: cam_eeprom_driver_cmd: 1540 Failed in eeprom pkt Parsing
这个错误表示在 EEPROM 驱动程序命令中解析数据包时发生了错误。
7. CAM-EEPROM: cam_eeprom_subdev_ioctl: 70 Failed in Driver cmd: -22
这个错误表示在 EEPROM 子设备的 IOCTL 命令中发生了错误,返回值为-22。
总体来说,这些错误都与相机的 CCI 和 EEPROM 模块的读取、配置和通信有关。可能的原因包括硬件故障、驱动程序问题或通信问题。你可能需要仔细检查相关的硬件连接、驱动程序和配置,以解决这些错误。
阅读全文