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 { change_proximity_default_threshold(data); 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; }
int proximity_open_lcd_ldi(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(LCD_LDI_FILE_PATH, O_RDONLY, 0660); if (IS_ERR(cancel_filp)) { iRet = PTR_ERR(cancel_filp); if (iRet != -ENOENT) pr_err("[SSP]: %s - Can't open lcd ldi file\n", __func__); set_fs(old_fs); data->chLcdLdi[0] = 0; data->chLcdLdi[1] = 0; goto exit; } iRet = cancel_filp->f_op->read(cancel_filp, (u8 *)data->chLcdLdi, sizeof(u8) * 2, &cancel_filp->f_pos); if (iRet != (sizeof(u8) * 2)) { pr_err("[SSP]: %s - Can't read the lcd ldi data\n", __func__); iRet = -EIO; } ssp_dbg("[SSP]: %s - %c%c\n", __func__, data->chLcdLdi[0], data->chLcdLdi[1]); filp_close(cancel_filp, current->files); set_fs(old_fs); exit: change_proximity_default_threshold(data); return iRet; }