static int msm_eeprom_config(struct msm_eeprom_ctrl_t *e_ctrl, void __user *argp) { struct msm_eeprom_cfg_data *cdata = (struct msm_eeprom_cfg_data *)argp; int rc = 0; CDBG("%s E\n", __func__); switch (cdata->cfgtype) { case CFG_EEPROM_GET_INFO: CDBG("%s E CFG_EEPROM_GET_INFO\n", __func__); cdata->is_supported = e_ctrl->is_supported; memcpy(cdata->cfg.eeprom_name, e_ctrl->eboard_info->eeprom_name, sizeof(cdata->cfg.eeprom_name)); break; case CFG_EEPROM_GET_CAL_DATA: CDBG("%s E CFG_EEPROM_GET_CAL_DATA\n", __func__); cdata->cfg.get_data.num_bytes = e_ctrl->cal_data.num_data; /* + add ljk for otp checksum*/ cdata->cfg.get_data.is_3a_checksumed = is_3a_checksumed; pr_err("%s E CFG_EEPROM_GET_CAL_DATA is_3a_checksumed=%d\n", __func__,cdata->cfg.get_data.is_3a_checksumed); /*+end*/ break; case CFG_EEPROM_READ_CAL_DATA: CDBG("%s E CFG_EEPROM_READ_CAL_DATA\n", __func__); rc = eeprom_config_read_cal_data(e_ctrl, cdata); break; case CFG_EEPROM_GET_MM_INFO: CDBG("%s E CFG_EEPROM_GET_MM_INFO\n", __func__); rc = msm_eeprom_get_mm_data(e_ctrl, cdata); break; default: break; } CDBG("%s X rc: %d\n", __func__, rc); return rc; }
static int msm_eeprom_config(struct msm_eeprom_ctrl_t *e_ctrl, void __user *argp) { struct msm_eeprom_cfg_data *cdata = (struct msm_eeprom_cfg_data *)argp; int rc = 0; CDBG("%s E\n", __func__); switch (cdata->cfgtype) { case CFG_EEPROM_GET_INFO: pr_info("%s E CFG_EEPROM_GET_INFO\n", __func__); cdata->is_supported = e_ctrl->is_supported; memcpy(cdata->cfg.eeprom_name, e_ctrl->eboard_info->eeprom_name, sizeof(cdata->cfg.eeprom_name)); break; case CFG_EEPROM_GET_CAL_DATA: pr_info("%s E CFG_EEPROM_GET_CAL_DATA\n", __func__); cdata->cfg.get_data.num_bytes = e_ctrl->cal_data.num_data; break; case CFG_EEPROM_READ_CAL_DATA: pr_info("%s E CFG_EEPROM_READ_CAL_DATA\n", __func__); rc = eeprom_config_read_cal_data(e_ctrl, cdata); break; case CFG_EEPROM_READ_DATA: CDBG("%s E CFG_EEPROM_READ_DATA\n", __func__); rc = eeprom_config_read_data(e_ctrl, cdata); break; case CFG_EEPROM_READ_COMPRESSED_DATA: rc = eeprom_config_read_compressed_data(e_ctrl, cdata); if (rc < 0) pr_err("%s : eeprom_config_read_compressed_data failed", __func__); break; case CFG_EEPROM_WRITE_DATA: pr_warn("%s E CFG_EEPROM_WRITE_DATA\n", __func__); rc = eeprom_config_write_data(e_ctrl, cdata); break; case CFG_EEPROM_READ_DATA_FROM_HW: e_ctrl->is_supported = 0x01; pr_err ("kernel is supported before%X\n",e_ctrl->is_supported); rc = msm_eeprom_read_eeprom_data(e_ctrl); pr_err ("kernel is supported after%X\n",e_ctrl->is_supported); cdata->is_supported = e_ctrl->is_supported; if (rc < 0) { pr_err("%s:%d failed rc %d\n", __func__, __LINE__, rc); break; } rc = copy_to_user(cdata->cfg.read_data.dbuffer, e_ctrl->cal_data.mapdata, cdata->cfg.read_data.num_bytes); break; case CFG_EEPROM_GET_ERASESIZE: CDBG("%s E CFG_EEPROM_GET_ERASESIZE\n", __func__); cdata->cfg.get_data.num_bytes = e_ctrl->i2c_client.spi_client->erase_size; break; case CFG_EEPROM_ERASE: pr_warn("%s E CFG_EEPROM_ERASE\n", __func__); rc = eeprom_config_erase(e_ctrl, cdata); break; case CFG_EEPROM_POWER_ON: rc = msm_eeprom_power_up(e_ctrl, NULL); if (rc < 0) pr_err("%s : msm_eeprom_power_up failed", __func__); break; case CFG_EEPROM_POWER_OFF: rc = msm_eeprom_power_down(e_ctrl, true); if (rc < 0) pr_err("%s : msm_eeprom_power_down failed", __func__); break; default: break; } CDBG("%s X rc: %d\n", __func__, rc); return rc; }