Commit 7e1be8a5 authored by Al Viro's avatar Al Viro

silicom: helper functions are often useful...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e784788d
...@@ -7541,22 +7541,17 @@ get_wd_set_caps_pfs(char *page, char **start, off_t off, int count, ...@@ -7541,22 +7541,17 @@ get_wd_set_caps_pfs(char *page, char **start, off_t off, int count,
return len; return len;
} }
int static int user_on_off(const void __user *buffer, size_t count)
set_bypass_pfs(struct file *file, const char *buffer,
unsigned long count, void *data)
{ {
char kbuf[256]; char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; int length = 0;
int bypass_param = 0, length = 0;
if (count > (sizeof(kbuf) - 1)) if (count > (sizeof(kbuf) - 1))
return -1; return -1;
if (copy_from_user(&kbuf, buffer, count)) { if (copy_from_user(&kbuf, buffer, count))
return -1; return -1;
}
kbuf[count] = '\0'; kbuf[count] = '\0';
length = strlen(kbuf); length = strlen(kbuf);
...@@ -7564,12 +7559,22 @@ set_bypass_pfs(struct file *file, const char *buffer, ...@@ -7564,12 +7559,22 @@ set_bypass_pfs(struct file *file, const char *buffer,
kbuf[--length] = '\0'; kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0) if (strcmp(kbuf, "on") == 0)
bypass_param = 1; return 1;
else if (strcmp(kbuf, "off") == 0) if (strcmp(kbuf, "off") == 0)
bypass_param = 0; return 0;
return 0;
}
set_bypass_fn(pbp_device_block, bypass_param); int
set_bypass_pfs(struct file *file, const char *buffer,
unsigned long count, void *data)
{
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int bypass_param = user_on_off(buffer, count);
if (bypass_param < 0)
return -1;
set_bypass_fn(pbp_device_block, bypass_param);
return count; return count;
} }
...@@ -7578,30 +7583,12 @@ set_tap_pfs(struct file *file, const char *buffer, ...@@ -7578,30 +7583,12 @@ set_tap_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tap_param = user_on_off(buffer, count);
int tap_param = 0, length = 0; if (tap_param < 0)
if (count > (sizeof(kbuf) - 1))
return -1; return -1;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tap_param = 1;
else if (strcmp(kbuf, "off") == 0)
tap_param = 0;
set_tap_fn(pbp_device_block, tap_param); set_tap_fn(pbp_device_block, tap_param);
return count; return count;
} }
...@@ -7610,30 +7597,12 @@ set_disc_pfs(struct file *file, const char *buffer, ...@@ -7610,30 +7597,12 @@ set_disc_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tap_param = user_on_off(buffer, count);
int tap_param = 0, length = 0; if (tap_param < 0)
if (count > (sizeof(kbuf) - 1))
return -1; return -1;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tap_param = 1;
else if (strcmp(kbuf, "off") == 0)
tap_param = 0;
set_disc_fn(pbp_device_block, tap_param); set_disc_fn(pbp_device_block, tap_param);
return count; return count;
} }
...@@ -7914,30 +7883,12 @@ set_dis_bypass_pfs(struct file *file, const char *buffer, ...@@ -7914,30 +7883,12 @@ set_dis_bypass_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int bypass_param = user_on_off(buffer, count);
int bypass_param = 0, length = 0; if (bypass_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
bypass_param = 1;
else if (strcmp(kbuf, "off") == 0)
bypass_param = 0;
set_dis_bypass_fn(pbp_device_block, bypass_param); set_dis_bypass_fn(pbp_device_block, bypass_param);
return count; return count;
} }
...@@ -7946,30 +7897,12 @@ set_dis_tap_pfs(struct file *file, const char *buffer, ...@@ -7946,30 +7897,12 @@ set_dis_tap_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tap_param = user_on_off(buffer, count);
int tap_param = 0, length = 0; if (tap_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tap_param = 1;
else if (strcmp(kbuf, "off") == 0)
tap_param = 0;
set_dis_tap_fn(pbp_device_block, tap_param); set_dis_tap_fn(pbp_device_block, tap_param);
return count; return count;
} }
...@@ -7978,30 +7911,12 @@ set_dis_disc_pfs(struct file *file, const char *buffer, ...@@ -7978,30 +7911,12 @@ set_dis_disc_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tap_param = user_on_off(buffer, count);
int tap_param = 0, length = 0; if (tap_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tap_param = 1;
else if (strcmp(kbuf, "off") == 0)
tap_param = 0;
set_dis_disc_fn(pbp_device_block, tap_param); set_dis_disc_fn(pbp_device_block, tap_param);
return count; return count;
} }
...@@ -8069,31 +7984,12 @@ int ...@@ -8069,31 +7984,12 @@ int
set_bypass_pwup_pfs(struct file *file, const char *buffer, set_bypass_pwup_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int bypass_param = user_on_off(buffer, count);
int bypass_param = 0, length = 0; if (bypass_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
bypass_param = 1;
else if (strcmp(kbuf, "off") == 0)
bypass_param = 0;
set_bypass_pwup_fn(pbp_device_block, bypass_param); set_bypass_pwup_fn(pbp_device_block, bypass_param);
return count; return count;
} }
...@@ -8101,31 +7997,12 @@ int ...@@ -8101,31 +7997,12 @@ int
set_bypass_pwoff_pfs(struct file *file, const char *buffer, set_bypass_pwoff_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int bypass_param = user_on_off(buffer, count);
int bypass_param = 0, length = 0; if (bypass_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
bypass_param = 1;
else if (strcmp(kbuf, "off") == 0)
bypass_param = 0;
set_bypass_pwoff_fn(pbp_device_block, bypass_param); set_bypass_pwoff_fn(pbp_device_block, bypass_param);
return count; return count;
} }
...@@ -8133,31 +8010,12 @@ int ...@@ -8133,31 +8010,12 @@ int
set_tap_pwup_pfs(struct file *file, const char *buffer, set_tap_pwup_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tap_param = user_on_off(buffer, count);
int tap_param = 0, length = 0; if (tap_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tap_param = 1;
else if (strcmp(kbuf, "off") == 0)
tap_param = 0;
set_tap_pwup_fn(pbp_device_block, tap_param); set_tap_pwup_fn(pbp_device_block, tap_param);
return count; return count;
} }
...@@ -8165,31 +8023,12 @@ int ...@@ -8165,31 +8023,12 @@ int
set_disc_pwup_pfs(struct file *file, const char *buffer, set_disc_pwup_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tap_param = user_on_off(buffer, count);
int tap_param = 0, length = 0; if (tap_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tap_param = 1;
else if (strcmp(kbuf, "off") == 0)
tap_param = 0;
set_disc_pwup_fn(pbp_device_block, tap_param); set_disc_pwup_fn(pbp_device_block, tap_param);
return count; return count;
} }
...@@ -8277,31 +8116,12 @@ int ...@@ -8277,31 +8116,12 @@ int
set_std_nic_pfs(struct file *file, const char *buffer, set_std_nic_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int bypass_param = user_on_off(buffer, count);
int bypass_param = 0, length = 0; if (bypass_param < 0)
if (count >= sizeof(kbuf))
return -EINVAL; return -EINVAL;
if (copy_from_user(&kbuf, buffer, count)) {
return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
bypass_param = 1;
else if (strcmp(kbuf, "off") == 0)
bypass_param = 0;
set_std_nic_fn(pbp_device_block, bypass_param); set_std_nic_fn(pbp_device_block, bypass_param);
return count; return count;
} }
...@@ -8420,31 +8240,12 @@ int ...@@ -8420,31 +8240,12 @@ int
set_tpl_pfs(struct file *file, const char *buffer, set_tpl_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tpl_param = user_on_off(buffer, count);
int tpl_param = 0, length = 0; if (tpl_param < 0)
if (count > (sizeof(kbuf) - 1))
return -1;
if (copy_from_user(&kbuf, buffer, count)) {
return -1; return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tpl_param = 1;
else if (strcmp(kbuf, "off") == 0)
tpl_param = 0;
set_tpl_fn(pbp_device_block, tpl_param); set_tpl_fn(pbp_device_block, tpl_param);
return count; return count;
} }
...@@ -8453,31 +8254,12 @@ int ...@@ -8453,31 +8254,12 @@ int
set_wait_at_pwup_pfs(struct file *file, const char *buffer, set_wait_at_pwup_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tpl_param = user_on_off(buffer, count);
int tpl_param = 0, length = 0; if (tpl_param < 0)
if (count > (sizeof(kbuf) - 1))
return -1;
if (copy_from_user(&kbuf, buffer, count)) {
return -1; return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tpl_param = 1;
else if (strcmp(kbuf, "off") == 0)
tpl_param = 0;
set_bp_wait_at_pwup_fn(pbp_device_block, tpl_param); set_bp_wait_at_pwup_fn(pbp_device_block, tpl_param);
return count; return count;
} }
...@@ -8485,31 +8267,12 @@ int ...@@ -8485,31 +8267,12 @@ int
set_hw_reset_pfs(struct file *file, const char *buffer, set_hw_reset_pfs(struct file *file, const char *buffer,
unsigned long count, void *data) unsigned long count, void *data)
{ {
char kbuf[256];
bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data; bpctl_dev_t *pbp_device_block = (bpctl_dev_t *) data;
int tpl_param = user_on_off(buffer, count);
int tpl_param = 0, length = 0; if (tpl_param < 0)
if (count > (sizeof(kbuf) - 1))
return -1;
if (copy_from_user(&kbuf, buffer, count)) {
return -1; return -1;
}
kbuf[count] = '\0';
length = strlen(kbuf);
if (kbuf[length - 1] == '\n')
kbuf[--length] = '\0';
if (strcmp(kbuf, "on") == 0)
tpl_param = 1;
else if (strcmp(kbuf, "off") == 0)
tpl_param = 0;
set_bp_hw_reset_fn(pbp_device_block, tpl_param); set_bp_hw_reset_fn(pbp_device_block, tpl_param);
return count; return count;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment