static ssize_t _mtk_cl_bcct_proc_write(struct file *file, const char *buffer, unsigned long count, void *data) { int len = 0; char desc[128]; int klog_on, limit0, limit1, limit2; len = (count < (sizeof(desc) - 1)) ? count : (sizeof(desc) - 1); if (copy_from_user(desc, buffer, len)) { return 0; } desc[len] = '\0'; /** * sscanf format <klog_on> <mtk-cl-bcct00 limit> <mtk-cl-bcct01 limit> ... * <klog_on> can only be 0 or 1 * <mtk-cl-bcct00 limit> can only be positive integer or -1 to denote no limit */ if (NULL == data) { mtk_cooler_bcct_dprintk("[_mtk_cl_bcct_proc_write] null data\n"); return -EINVAL; } // WARNING: Modify here if MTK_THERMAL_MONITOR_COOLER_MAX_EXTRA_CONDITIONS is changed to other than 3 #if (3 == MAX_NUM_INSTANCE_MTK_COOLER_BCCT) MTK_CL_BCCT_SET_LIMIT(-1, cl_bcct_state[0]); MTK_CL_BCCT_SET_LIMIT(-1, cl_bcct_state[1]); MTK_CL_BCCT_SET_LIMIT(-1, cl_bcct_state[2]); if (1 <= sscanf(desc, "%d %d %d %d", &klog_on, &limit0, &limit1, &limit2)) { if (klog_on == 0 || klog_on == 1) { cl_bcct_klog_on = klog_on; } if (limit0 >= -1) MTK_CL_BCCT_SET_LIMIT(limit0, cl_bcct_state[0]); if (limit1 >= -1) MTK_CL_BCCT_SET_LIMIT(limit1, cl_bcct_state[1]); if (limit2 >= -1) MTK_CL_BCCT_SET_LIMIT(limit2, cl_bcct_state[2]); return count; } else #else #error "Change correspondent part when changing MAX_NUM_INSTANCE_MTK_COOLER_BCCT!" #endif { mtk_cooler_bcct_dprintk("[_mtk_cl_bcct_proc_write] bad argument\n"); } return -EINVAL; }
static ssize_t _cl_bcct_write(struct file *filp, const char __user *buf, size_t len, loff_t *data) { //int ret = 0; char tmp[128] = {0}; int klog_on, limit0, limit1, limit2; /* write data to the buffer */ if ( copy_from_user(tmp, buf, len) ) { return -EFAULT; } /** * sscanf format <klog_on> <mtk-cl-bcct00 limit> <mtk-cl-bcct01 limit> ... * <klog_on> can only be 0 or 1 * <mtk-cl-bcct00 limit> can only be positive integer or -1 to denote no limit */ if (NULL == data) { mtk_cooler_bcct_dprintk("[_mtk_cl_bcct_proc_write] null data\n"); return -EINVAL; } // WARNING: Modify here if MTK_THERMAL_MONITOR_COOLER_MAX_EXTRA_CONDITIONS is changed to other than 3 #if (3 == MAX_NUM_INSTANCE_MTK_COOLER_BCCT) MTK_CL_BCCT_SET_LIMIT(-1, cl_bcct_state[0]); MTK_CL_BCCT_SET_LIMIT(-1, cl_bcct_state[1]); MTK_CL_BCCT_SET_LIMIT(-1, cl_bcct_state[2]); if (1 <= sscanf(tmp, "%d %d %d %d", &klog_on, &limit0, &limit1, &limit2)) { if (klog_on == 0 || klog_on == 1) { cl_bcct_klog_on = klog_on; } if (limit0 >= -1) MTK_CL_BCCT_SET_LIMIT(limit0, cl_bcct_state[0]); if (limit1 >= -1) MTK_CL_BCCT_SET_LIMIT(limit1, cl_bcct_state[1]); if (limit2 >= -1) MTK_CL_BCCT_SET_LIMIT(limit2, cl_bcct_state[2]); return len; } else #else #error "Change correspondent part when changing MAX_NUM_INSTANCE_MTK_COOLER_BCCT!" #endif { mtk_cooler_bcct_dprintk("[_mtk_cl_bcct_proc_write] bad argument\n"); } return -EINVAL; }