|
@@ -39,10 +39,12 @@ static ssize_t store_pc0event(struct device *dev,
|
|
|
size_t count)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
- char *endp;
|
|
|
+ int ret;
|
|
|
|
|
|
- val = simple_strtoul(buf, &endp, 0);
|
|
|
- if (endp == buf || val > 0x3f)
|
|
|
+ ret = kstrtoul(buf, 0, &val);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ if (val > 0x3f)
|
|
|
return -EINVAL;
|
|
|
val = (val << 12) | (sysreg_read(PCCR) & 0xfffc0fff);
|
|
|
sysreg_write(PCCR, val);
|
|
@@ -61,11 +63,11 @@ static ssize_t store_pc0count(struct device *dev,
|
|
|
const char *buf, size_t count)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
- char *endp;
|
|
|
+ int ret;
|
|
|
|
|
|
- val = simple_strtoul(buf, &endp, 0);
|
|
|
- if (endp == buf)
|
|
|
- return -EINVAL;
|
|
|
+ ret = kstrtoul(buf, 0, &val);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
sysreg_write(PCNT0, val);
|
|
|
|
|
|
return count;
|
|
@@ -84,10 +86,12 @@ static ssize_t store_pc1event(struct device *dev,
|
|
|
size_t count)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
- char *endp;
|
|
|
+ int ret;
|
|
|
|
|
|
- val = simple_strtoul(buf, &endp, 0);
|
|
|
- if (endp == buf || val > 0x3f)
|
|
|
+ ret = kstrtoul(buf, 0, &val);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ if (val > 0x3f)
|
|
|
return -EINVAL;
|
|
|
val = (val << 18) | (sysreg_read(PCCR) & 0xff03ffff);
|
|
|
sysreg_write(PCCR, val);
|
|
@@ -106,11 +110,11 @@ static ssize_t store_pc1count(struct device *dev,
|
|
|
size_t count)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
- char *endp;
|
|
|
+ int ret;
|
|
|
|
|
|
- val = simple_strtoul(buf, &endp, 0);
|
|
|
- if (endp == buf)
|
|
|
- return -EINVAL;
|
|
|
+ ret = kstrtoul(buf, 0, &val);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
sysreg_write(PCNT1, val);
|
|
|
|
|
|
return count;
|
|
@@ -129,11 +133,11 @@ static ssize_t store_pccycles(struct device *dev,
|
|
|
size_t count)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
- char *endp;
|
|
|
+ int ret;
|
|
|
|
|
|
- val = simple_strtoul(buf, &endp, 0);
|
|
|
- if (endp == buf)
|
|
|
- return -EINVAL;
|
|
|
+ ret = kstrtoul(buf, 0, &val);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
sysreg_write(PCCNT, val);
|
|
|
|
|
|
return count;
|
|
@@ -152,11 +156,11 @@ static ssize_t store_pcenable(struct device *dev,
|
|
|
size_t count)
|
|
|
{
|
|
|
unsigned long pccr, val;
|
|
|
- char *endp;
|
|
|
+ int ret;
|
|
|
|
|
|
- val = simple_strtoul(buf, &endp, 0);
|
|
|
- if (endp == buf)
|
|
|
- return -EINVAL;
|
|
|
+ ret = kstrtoul(buf, 0, &val);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
if (val)
|
|
|
val = 1;
|
|
|
|