|
@@ -1479,7 +1479,6 @@ static ssize_t ab8500_bank_write(struct file *file,
|
|
|
unsigned long user_bank;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
err = kstrtoul_from_user(user_buf, count, 0, &user_bank);
|
|
|
if (err)
|
|
|
return err;
|
|
@@ -1512,7 +1511,6 @@ static ssize_t ab8500_address_write(struct file *file,
|
|
|
unsigned long user_address;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
err = kstrtoul_from_user(user_buf, count, 0, &user_address);
|
|
|
if (err)
|
|
|
return err;
|
|
@@ -1522,6 +1520,7 @@ static ssize_t ab8500_address_write(struct file *file,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
debug_address = user_address;
|
|
|
+
|
|
|
return count;
|
|
|
}
|
|
|
|
|
@@ -1556,7 +1555,6 @@ static ssize_t ab8500_val_write(struct file *file,
|
|
|
unsigned long user_val;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
err = kstrtoul_from_user(user_buf, count, 0, &user_val);
|
|
|
if (err)
|
|
|
return err;
|
|
@@ -2418,20 +2416,13 @@ static ssize_t ab8500_gpadc_avg_sample_write(struct file *file,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
struct device *dev = ((struct seq_file *)(file->private_data))->private;
|
|
|
- char buf[32];
|
|
|
- int buf_size;
|
|
|
unsigned long user_avg_sample;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
- buf_size = min(count, (sizeof(buf) - 1));
|
|
|
- if (copy_from_user(buf, user_buf, buf_size))
|
|
|
- return -EFAULT;
|
|
|
- buf[buf_size] = 0;
|
|
|
-
|
|
|
- err = strict_strtoul(buf, 0, &user_avg_sample);
|
|
|
+ err = kstrtoul_from_user(user_buf, count, 0, &user_avg_sample);
|
|
|
if (err)
|
|
|
- return -EINVAL;
|
|
|
+ return err;
|
|
|
+
|
|
|
if ((user_avg_sample == SAMPLE_1) || (user_avg_sample == SAMPLE_4)
|
|
|
|| (user_avg_sample == SAMPLE_8)
|
|
|
|| (user_avg_sample == SAMPLE_16)) {
|
|
@@ -2441,7 +2432,8 @@ static ssize_t ab8500_gpadc_avg_sample_write(struct file *file,
|
|
|
"should be egal to 1, 4, 8 or 16\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
- return buf_size;
|
|
|
+
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
static const struct file_operations ab8500_gpadc_avg_sample_fops = {
|
|
@@ -2469,20 +2461,13 @@ static ssize_t ab8500_gpadc_trig_edge_write(struct file *file,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
struct device *dev = ((struct seq_file *)(file->private_data))->private;
|
|
|
- char buf[32];
|
|
|
- int buf_size;
|
|
|
unsigned long user_trig_edge;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
- buf_size = min(count, (sizeof(buf) - 1));
|
|
|
- if (copy_from_user(buf, user_buf, buf_size))
|
|
|
- return -EFAULT;
|
|
|
- buf[buf_size] = 0;
|
|
|
-
|
|
|
- err = strict_strtoul(buf, 0, &user_trig_edge);
|
|
|
+ err = kstrtoul_from_user(user_buf, count, 0, &user_trig_edge);
|
|
|
if (err)
|
|
|
- return -EINVAL;
|
|
|
+ return err;
|
|
|
+
|
|
|
if ((user_trig_edge == RISING_EDGE)
|
|
|
|| (user_trig_edge == FALLING_EDGE)) {
|
|
|
trig_edge = (u8) user_trig_edge;
|
|
@@ -2492,7 +2477,8 @@ static ssize_t ab8500_gpadc_trig_edge_write(struct file *file,
|
|
|
"Enter 1. Falling edge\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
- return buf_size;
|
|
|
+
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
static const struct file_operations ab8500_gpadc_trig_edge_fops = {
|
|
@@ -2520,20 +2506,13 @@ static ssize_t ab8500_gpadc_trig_timer_write(struct file *file,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
struct device *dev = ((struct seq_file *)(file->private_data))->private;
|
|
|
- char buf[32];
|
|
|
- int buf_size;
|
|
|
unsigned long user_trig_timer;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
- buf_size = min(count, (sizeof(buf) - 1));
|
|
|
- if (copy_from_user(buf, user_buf, buf_size))
|
|
|
- return -EFAULT;
|
|
|
- buf[buf_size] = 0;
|
|
|
-
|
|
|
- err = strict_strtoul(buf, 0, &user_trig_timer);
|
|
|
+ err = kstrtoul_from_user(user_buf, count, 0, &user_trig_timer);
|
|
|
if (err)
|
|
|
- return -EINVAL;
|
|
|
+ return err;
|
|
|
+
|
|
|
if ((user_trig_timer >= 0) && (user_trig_timer <= 255)) {
|
|
|
trig_timer = (u8) user_trig_timer;
|
|
|
} else {
|
|
@@ -2541,7 +2520,8 @@ static ssize_t ab8500_gpadc_trig_timer_write(struct file *file,
|
|
|
"should be beetween 0 to 255\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
- return buf_size;
|
|
|
+
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
static const struct file_operations ab8500_gpadc_trig_timer_fops = {
|
|
@@ -2569,20 +2549,13 @@ static ssize_t ab8500_gpadc_conv_type_write(struct file *file,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
struct device *dev = ((struct seq_file *)(file->private_data))->private;
|
|
|
- char buf[32];
|
|
|
- int buf_size;
|
|
|
unsigned long user_conv_type;
|
|
|
int err;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
- buf_size = min(count, (sizeof(buf) - 1));
|
|
|
- if (copy_from_user(buf, user_buf, buf_size))
|
|
|
- return -EFAULT;
|
|
|
- buf[buf_size] = 0;
|
|
|
-
|
|
|
- err = strict_strtoul(buf, 0, &user_conv_type);
|
|
|
+ err = kstrtoul_from_user(user_buf, count, 0, &user_conv_type);
|
|
|
if (err)
|
|
|
- return -EINVAL;
|
|
|
+ return err;
|
|
|
+
|
|
|
if ((user_conv_type == ADC_SW)
|
|
|
|| (user_conv_type == ADC_HW)) {
|
|
|
conv_type = (u8) user_conv_type;
|
|
@@ -2592,7 +2565,8 @@ static ssize_t ab8500_gpadc_conv_type_write(struct file *file,
|
|
|
"Enter 1. ADC HW conversion\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
- return buf_size;
|
|
|
+
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
static const struct file_operations ab8500_gpadc_conv_type_fops = {
|
|
@@ -2809,21 +2783,14 @@ static ssize_t ab8500_subscribe_write(struct file *file,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
struct device *dev = ((struct seq_file *)(file->private_data))->private;
|
|
|
- char buf[32];
|
|
|
- int buf_size;
|
|
|
unsigned long user_val;
|
|
|
int err;
|
|
|
unsigned int irq_index;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
- buf_size = min(count, (sizeof(buf)-1));
|
|
|
- if (copy_from_user(buf, user_buf, buf_size))
|
|
|
- return -EFAULT;
|
|
|
- buf[buf_size] = 0;
|
|
|
-
|
|
|
- err = strict_strtoul(buf, 0, &user_val);
|
|
|
+ err = kstrtoul_from_user(user_buf, count, 0, &user_val);
|
|
|
if (err)
|
|
|
- return -EINVAL;
|
|
|
+ return err;
|
|
|
+
|
|
|
if (user_val < irq_first) {
|
|
|
dev_err(dev, "debugfs error input < %d\n", irq_first);
|
|
|
return -EINVAL;
|
|
@@ -2843,7 +2810,7 @@ static ssize_t ab8500_subscribe_write(struct file *file,
|
|
|
*/
|
|
|
dev_attr[irq_index] = kmalloc(sizeof(struct device_attribute),
|
|
|
GFP_KERNEL);
|
|
|
- event_name[irq_index] = kmalloc(buf_size, GFP_KERNEL);
|
|
|
+ event_name[irq_index] = kmalloc(count, GFP_KERNEL);
|
|
|
sprintf(event_name[irq_index], "%lu", user_val);
|
|
|
dev_attr[irq_index]->show = show_irq;
|
|
|
dev_attr[irq_index]->store = NULL;
|
|
@@ -2865,7 +2832,7 @@ static ssize_t ab8500_subscribe_write(struct file *file,
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
- return buf_size;
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
static ssize_t ab8500_unsubscribe_write(struct file *file,
|
|
@@ -2873,21 +2840,14 @@ static ssize_t ab8500_unsubscribe_write(struct file *file,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
struct device *dev = ((struct seq_file *)(file->private_data))->private;
|
|
|
- char buf[32];
|
|
|
- int buf_size;
|
|
|
unsigned long user_val;
|
|
|
int err;
|
|
|
unsigned int irq_index;
|
|
|
|
|
|
- /* Get userspace string and assure termination */
|
|
|
- buf_size = min(count, (sizeof(buf)-1));
|
|
|
- if (copy_from_user(buf, user_buf, buf_size))
|
|
|
- return -EFAULT;
|
|
|
- buf[buf_size] = 0;
|
|
|
-
|
|
|
- err = strict_strtoul(buf, 0, &user_val);
|
|
|
+ err = kstrtoul_from_user(user_buf, count, 0, &user_val);
|
|
|
if (err)
|
|
|
- return -EINVAL;
|
|
|
+ return err;
|
|
|
+
|
|
|
if (user_val < irq_first) {
|
|
|
dev_err(dev, "debugfs error input < %d\n", irq_first);
|
|
|
return -EINVAL;
|
|
@@ -2912,7 +2872,7 @@ static ssize_t ab8500_unsubscribe_write(struct file *file,
|
|
|
kfree(event_name[irq_index]);
|
|
|
kfree(dev_attr[irq_index]);
|
|
|
|
|
|
- return buf_size;
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
/*
|