static ssize_t proximity_state_show(struct device *dev, struct device_attribute *attr, char *buf) { struct ssp_data *data = dev_get_drvdata(dev); return sprintf(buf, "%u\n", get_proximity_rawdata(data)); }
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; }
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; }