int32_t msm_camera_eeprom_read_tbl(struct msm_camera_eeprom_client *ectrl, struct msm_camera_eeprom_read_t *read_tbl, uint16_t tbl_size) { int i, rc = 0; CDBG("%s: open", __func__); if (read_tbl == NULL) return rc; for (i = 0; i < tbl_size; i++) { rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { CDBG("%s: read failed\n", __func__); return rc; } } CDBG("%s: done", __func__); return rc; }
int32_t msm_camera_eeprom_read_tbl_hi542(struct msm_eeprom_ctrl_t *ectrl, struct msm_camera_eeprom_read_t *read_tbl, uint16_t tbl_size) { int i, rc = 0; uint16_t read_flag; pr_err("%s: open\n", __func__); if (read_tbl == NULL) return rc; //otp_cfg1 timing setting msm_camera_i2c_write(&ectrl->i2c_client,0x0740,0x1A,MSM_CAMERA_I2C_BYTE_DATA); //otp_cfg8 msm_camera_i2c_write(&ectrl->i2c_client,0x0747,0x06,MSM_CAMERA_I2C_BYTE_DATA); //otp_cf12 control register setting msm_camera_i2c_write(&ectrl->i2c_client,0x0711,0x81,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_h address setting 0x0381 //msm_camera_i2c_write(&ectrl->i2c_client,0x0720,0x03,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_l //msm_camera_i2c_write(&ectrl->i2c_client,0x0721,0x81,MSM_CAMERA_I2C_BYTE_DATA); for (i = 0; i < 1; i++) { //opt_addr_h address setting 0x0381 msm_camera_i2c_write(&ectrl->i2c_client,0x0720,0x03,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_l msm_camera_i2c_write(&ectrl->i2c_client,0x0721,0x81,MSM_CAMERA_I2C_BYTE_DATA); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); return rc; } } for (i = 1; i < 2; i++) { //opt_addr_h address setting 0x0381 msm_camera_i2c_write(&ectrl->i2c_client,0x0720,0x03,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_l msm_camera_i2c_write(&ectrl->i2c_client,0x0721,0x8f,MSM_CAMERA_I2C_BYTE_DATA); msm_camera_i2c_read(&ectrl->i2c_client, 0x0722, &read_flag, MSM_CAMERA_I2C_BYTE_DATA); pr_err("msm_camera_eeprom_read00 %s read_flag0 =0x%x ",__func__,read_flag); if(read_flag==1) { //opt_addr_h address setting 0x0381 msm_camera_i2c_write(&ectrl->i2c_client,0x0720,0x03,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_l msm_camera_i2c_write(&ectrl->i2c_client,0x0721,0x90,MSM_CAMERA_I2C_BYTE_DATA); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); return rc; } } else if(read_flag==3) { //opt_addr_h address setting 0x0381 msm_camera_i2c_write(&ectrl->i2c_client,0x0720,0x03,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_l msm_camera_i2c_write(&ectrl->i2c_client,0x0721,0x92,MSM_CAMERA_I2C_BYTE_DATA); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); return rc; } } else if(read_flag==7){ //opt_addr_h address setting 0x0381 msm_camera_i2c_write(&ectrl->i2c_client,0x0720,0x03,MSM_CAMERA_I2C_BYTE_DATA); //opt_addr_l msm_camera_i2c_write(&ectrl->i2c_client,0x0721,0x94,MSM_CAMERA_I2C_BYTE_DATA); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); return rc; } } } msm_camera_i2c_write(&ectrl->i2c_client, 0x0711,0x00,MSM_CAMERA_I2C_BYTE_DATA);//opt_ctl2 pr_err("%s: done\n", __func__); return rc; }
int32_t msm_camera_eeprom_read_tbl_ar0542(struct msm_eeprom_ctrl_t *ectrl, struct msm_camera_eeprom_read_t *read_tbl, uint16_t tbl_size) { uint16_t temp = 0; int i, rc = 0; pr_err("%s: open\n", __func__); if (read_tbl == NULL) return rc; if(ar0542_check_EEPROM_status(ectrl,0x30)) { for (i = 0; i < 1; i++) { msm_camera_i2c_read(&ectrl->i2c_client,0x3800,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3800 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3801,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3801 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3802,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3802 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3803,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3803 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3804,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3804 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3805,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3805 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3806,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3806 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3807,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3807 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3808,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3808 = 0x%x\n",__func__,temp); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); return rc; } } } if(ar0542_check_EEPROM_status(ectrl,0x31)) { for (i = 0; i < 1; i++) { msm_camera_i2c_read(&ectrl->i2c_client,0x3800,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3800 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3801,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3801 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3802,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3802 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3803,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3803 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3804,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3804 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3805,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3805 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3806,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3806 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3807,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3807 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x3808,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x3808 = 0x%x\n",__func__,temp); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); return rc; } } } if(ar0542_check_EEPROM_status(ectrl,0x32)) { for (i = 1; i < 2; i++) { msm_camera_i2c_read(&ectrl->i2c_client,0x38d5,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d5 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38d6,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d6 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38d7,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d7 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38d8,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d8 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38da,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38da = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38dc,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38dc = 0x%x\n",__func__,temp); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); } } } if(ar0542_check_EEPROM_status(ectrl,0x33)) { for (i = 1; i < 2; i++) { msm_camera_i2c_read(&ectrl->i2c_client,0x38d5,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d5 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38d6,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d6 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38d7,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d7 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38d8,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38d8 = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38da,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38da = 0x%x\n",__func__,temp); msm_camera_i2c_read(&ectrl->i2c_client,0x38dc,&temp, MSM_CAMERA_I2C_WORD_DATA); pr_err("%s: 0x38dc = 0x%x\n",__func__,temp); rc = msm_camera_eeprom_read (ectrl, read_tbl[i].reg_addr, read_tbl[i].dest_ptr, read_tbl[i].num_byte, read_tbl[i].convert_endian); if (rc < 0) { pr_err("%s: read failed\n", __func__); } } } CDBG("%s: done\n", __func__); return rc; }