void imx135_set_dev_addr(struct msm_eeprom_ctrl_t *ectrl, uint32_t *reg_addr) { int32_t rc = 0; rc = msm_camera_i2c_write(&ectrl->i2c_client, 0x3B02, (*reg_addr) >> 16, MSM_CAMERA_I2C_BYTE_DATA); if (rc != 0) pr_err("%s: Page write error\n", __func__); rc = msm_camera_i2c_write(&ectrl->i2c_client, 0x3B00, 0x01, MSM_CAMERA_I2C_BYTE_DATA); if (rc != 0) pr_err("%s: Turn ON read mode write error\n", __func__); rc = msm_camera_i2c_poll(&ectrl->i2c_client, 0x3B01, 0x01, MSM_CAMERA_I2C_BYTE_DATA); if (rc != 0) pr_err("%s: Ready ready poll error\n", __func__); }
int32_t hi351_camera_i2c_write_tbl(struct msm_camera_i2c_client *client, struct msm_camera_i2c_reg_conf *reg_conf_tbl, uint16_t size, enum msm_camera_i2c_data_type data_type) { int i; int32_t rc = -EFAULT; for (i = 0; i < size; i++) { enum msm_camera_i2c_data_type dt; if (reg_conf_tbl->cmd_type == MSM_CAMERA_I2C_CMD_POLL) { rc = msm_camera_i2c_poll(client, reg_conf_tbl->reg_addr, reg_conf_tbl->reg_data, reg_conf_tbl->dt); } else { if (reg_conf_tbl->dt == 0) dt = data_type; else dt = reg_conf_tbl->dt; switch (dt) { case MSM_CAMERA_I2C_BYTE_DATA: case MSM_CAMERA_I2C_WORD_DATA: rc = msm_camera_i2c_write( client, reg_conf_tbl->reg_addr, reg_conf_tbl->reg_data, dt); break; default: pr_err("%s: Unsupport data type: %d\n", __func__, dt); break; } } if (rc < 0) break; reg_conf_tbl++; } return rc; }