static ssize_t proximity_thresh_low_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { u16 uNewThresh; int iRet = 0; struct ssp_data *data = dev_get_drvdata(dev); iRet = kstrtou16(buf, 10, &uNewThresh); if (iRet < 0) pr_err("[SSP]: %s - kstrtoint failed.(%d)\n", __func__, iRet); else { if(uNewThresh & 0xfc00) pr_err("[SSP]: %s - allow 10bits.(%d)\n", __func__, uNewThresh); else { uNewThresh &= 0x03ff; data->uProxLoThresh = uNewThresh; set_proximity_threshold(data, data->uProxHiThresh, data->uProxLoThresh); } } ssp_dbg("[SSP]: %s - new prox threshold : hi - %u, lo - %u\n", __func__, data->uProxHiThresh, data->uProxLoThresh); return size; }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[9] = {0,}; unsigned int uSensorCnt; int iRet = 0; iRet = set_gyro_cal(data); if (iRet < 0) ssp_errf("set_gyro_cal failed"); iRet = set_accel_cal(data); if (iRet < 0) ssp_errf("set_accel_cal failed"); udelay(10); for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) { if (atomic64_read(&data->aSensorEnable) & (1 << uSensorCnt)) { s32 dMsDelay = get_msdelay(data->adDelayBuf[uSensorCnt]); memcpy(&uBuf[0], &dMsDelay, 4); memcpy(&uBuf[4], &data->batchLatencyBuf[uSensorCnt], 4); uBuf[8] = data->batchOptBuf[uSensorCnt]; send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 9); udelay(10); } } if (data->bProximityRawEnabled == true) { s32 dMsDelay = 20; memcpy(&uBuf[0], &dMsDelay, 4); send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 4); } set_proximity_threshold(data, data->uProxHiThresh, data->uProxLoThresh); data->buf[PROXIMITY_SENSOR].prox = 0; report_sensordata(data, PROXIMITY_SENSOR, &data->buf[PROXIMITY_SENSOR]); #if 1 if(sec_debug_get_debug_level() > 0) { data->bMcuDumpMode = true; ssp_info("Mcu Dump Enabled"); } iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE, data->bMcuDumpMode); if (iRet < 0) ssp_errf("MSG2SSP_AP_MCU_SET_DUMPMODE failed"); #else #if CONFIG_SEC_DEBUG data->bMcuDumpMode = sec_debug_is_enabled(); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE, data->bMcuDumpMode); if (iRet < 0) ssp_errf("MSG2SSP_AP_MCU_SET_DUMPMODE failed"); #endif #endif }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[9] = {0,}; unsigned int uSensorCnt; int iRet = 0; iRet = set_gyro_cal(data); if (iRet < 0) pr_err("[SSP]: %s - set_gyro_cal failed\n", __func__); iRet = set_accel_cal(data); if (iRet < 0) pr_err("[SSP]: %s - set_accel_cal failed\n", __func__); #ifdef CONFIG_SENSORS_SSP_SX9306 if (atomic_read(&data->aSensorEnable) & (1 << GRIP_SENSOR)) { open_grip_caldata(data); set_grip_calibration(data, true); } #endif udelay(10); for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) { mutex_lock(&data->enable_mutex); if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { s32 dMsDelay = get_msdelay(data->adDelayBuf[uSensorCnt]); memcpy(&uBuf[0], &dMsDelay, 4); memcpy(&uBuf[4], &data->batchLatencyBuf[uSensorCnt], 4); uBuf[8] = data->batchOptBuf[uSensorCnt]; send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 9); udelay(10); } mutex_unlock(&data->enable_mutex); } if (data->bProximityRawEnabled == true) { s32 dMsDelay = 20; memcpy(&uBuf[0], &dMsDelay, 4); send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 4); } set_proximity_threshold(data, data->uProxHiThresh,data->uProxLoThresh); data->bMcuDumpMode = ssp_check_sec_dump_mode(); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE, data->bMcuDumpMode); if (iRet < 0) pr_err("[SSP]: %s - MSG2SSP_AP_MCU_SET_DUMPMODE failed\n", __func__); }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[9] = {0,}; unsigned int uSensorCnt; int iRet = 0; #ifdef CONFIG_SENSORS_SSP_YAS532 iRet = set_hw_offset(data); if (iRet < 0) { pr_err("[SSP]: %s - set_hw_offset failed\n", __func__); } #endif iRet = set_gyro_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_gyro_cal failed\n", __func__); } iRet = set_accel_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_accel_cal failed\n", __func__); } udelay(10); for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) { if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { s32 dMsDelay = get_msdelay(data->adDelayBuf[uSensorCnt]); memcpy(&uBuf[0], &dMsDelay, 4); memcpy(&uBuf[4], &data->batchLatencyBuf[uSensorCnt], 4); uBuf[8] = data->batchOptBuf[uSensorCnt]; send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 9); udelay(10); } } if (data->bProximityRawEnabled == true) { s32 dMsDelay = 20; memcpy(&uBuf[0], &dMsDelay, 4); send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 4); } set_proximity_threshold(data, data->uProxHiThresh,data->uProxLoThresh); #if SSP_SEC_DEBUG data->bMcuDumpMode = sec_debug_is_enabled(); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE,data->bMcuDumpMode); if (iRet < 0) { pr_err("[SSP]: %s - MSG2SSP_AP_MCU_SET_DUMPMODE failed\n", __func__); } #endif }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[2] = {0,}; unsigned int uSensorCnt; int iRet = 0; iRet = set_hw_offset(data); if (iRet < 0) { pr_err("[SSP]: %s - set_hw_offset failed\n", __func__); } iRet = set_gyro_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_gyro_cal failed\n", __func__); } iRet = set_accel_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_accel_cal failed\n", __func__); } udelay(10); for (uSensorCnt = 0; uSensorCnt < (SENSOR_MAX - 1); uSensorCnt++) { if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { uBuf[1] = (u8)get_msdelay(data->adDelayBuf[uSensorCnt]); uBuf[0] = (u8)get_delay_cmd(uBuf[1]); send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 2); udelay(10); } } if (data->bProximityRawEnabled == true) { uBuf[0] = 1; uBuf[1] = 20; send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 2); } set_proximity_threshold(data, data->uProxHiThresh,data->uProxLoThresh); data->bMcuDumpMode = sec_debug_is_enabled(); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE,data->bMcuDumpMode); if (iRet < 0) { pr_err("[SSP]: %s - MSG2SSP_AP_MCU_SET_DUMPMODE failed\n", __func__); } }
static ssize_t proximity_thresh_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { struct ssp_data *data = dev_get_drvdata(dev); u8 uNewThresh = 0x09; int iRet = 0; iRet = kstrtou8(buf, 10, &uNewThresh); if (iRet < 0) pr_err("[SSP]: %s - kstrtoint failed.", __func__); data->uProxThresh = uNewThresh; set_proximity_threshold(data); ssp_dbg("[SSP]: %s - new prox threshold = 0x%x\n", __func__, data->uProxThresh); return size; }
static int proximity_store_cancelation(struct ssp_data *data, int iCalCMD) { int iRet = 0; mm_segment_t old_fs; struct file *cancel_filp = NULL; if (iCalCMD) { data->uCrosstalk = get_proximity_rawdata(data); iRet = get_proximity_threshold(data); } else { data->uProxHiThresh = data->uProxHiThresh_default; data->uProxLoThresh = data->uProxLoThresh_default; data->uProxCanc = 0; } if (iRet != ERROR) set_proximity_threshold(data, data->uProxHiThresh, data->uProxLoThresh); old_fs = get_fs(); set_fs(KERNEL_DS); cancel_filp = filp_open(CANCELATION_FILE_PATH, O_CREAT | O_TRUNC | O_WRONLY | O_SYNC, 0660); if (IS_ERR(cancel_filp)) { pr_err("%s: Can't open cancelation file\n", __func__); set_fs(old_fs); iRet = PTR_ERR(cancel_filp); return iRet; } iRet = cancel_filp->f_op->write(cancel_filp, (u8 *)&data->uProxCanc, sizeof(unsigned int), &cancel_filp->f_pos); if (iRet != sizeof(unsigned int)) { pr_err("%s: Can't write the cancel data to file\n", __func__); iRet = -EIO; } filp_close(cancel_filp, current->files); set_fs(old_fs); return iRet; }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[2] = {0,}; unsigned int uSensorCnt; set_proximity_threshold(data); udelay(10); for (uSensorCnt = 0; uSensorCnt < (SENSOR_MAX - 1); uSensorCnt++) { if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { uBuf[1] = (u8)get_msdelay(data->adDelayBuf[uSensorCnt]); uBuf[0] = (u8)get_delay_cmd(uBuf[1]); send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 2); udelay(10); } } data->uTimeOutCnt = 0; data->uBusyCnt = 0; }
int proximity_open_calibration(struct ssp_data *data) { int iRet = 0; mm_segment_t old_fs; struct file *cancel_filp = NULL; old_fs = get_fs(); set_fs(KERNEL_DS); cancel_filp = filp_open(CANCELATION_FILE_PATH, O_RDONLY, 0666); if (IS_ERR(cancel_filp)) { iRet = PTR_ERR(cancel_filp); if (iRet != -ENOENT) pr_err("[SSP]: %s - Can't open cancelation file\n", __func__); set_fs(old_fs); goto exit; } iRet = cancel_filp->f_op->read(cancel_filp, (u8 *)&data->uProxCanc, sizeof(u8), &cancel_filp->f_pos); if (iRet != sizeof(u8)) { pr_err("[SSP]: %s - Can't read the cancel data\n", __func__); iRet = -EIO; } if (data->uProxCanc != 0) /*If there is an offset cal data. */ data->uProxThresh = CANCELATION_THRESHOLD; pr_info("%s: proximity ps_canc = %d, ps_thresh = %d\n", __func__, data->uProxCanc, data->uProxThresh); filp_close(cancel_filp, current->files); set_fs(old_fs); exit: set_proximity_threshold(data); return iRet; }
static int proximity_store_cancelation(struct ssp_data *data, int iCalCMD) { int iRet = 0; mm_segment_t old_fs; struct file *cancel_filp = NULL; if (iCalCMD) { data->uProxThresh = CANCELATION_THRESHOLD; data->uProxCanc = get_proximity_rawdata(data); } else { data->uProxThresh = DEFUALT_THRESHOLD; data->uProxCanc = 0; } set_proximity_threshold(data); old_fs = get_fs(); set_fs(KERNEL_DS); cancel_filp = filp_open(CANCELATION_FILE_PATH, O_CREAT | O_TRUNC | O_WRONLY, 0666); if (IS_ERR(cancel_filp)) { pr_err("%s: Can't open cancelation file\n", __func__); set_fs(old_fs); iRet = PTR_ERR(cancel_filp); return iRet; } iRet = cancel_filp->f_op->write(cancel_filp, (u8 *)&data->uProxCanc, sizeof(u8), &cancel_filp->f_pos); if (iRet != sizeof(u8)) { pr_err("%s: Can't write the cancel data to file\n", __func__); iRet = -EIO; } filp_close(cancel_filp, current->files); set_fs(old_fs); return iRet; }