diff --git a/drivers/pwm/pwm.c b/drivers/pwm/pwm.c
index 5622f54b4dc7a2ab3acf867f8ec53561c56e1e96..b23b260c32787fad4449b68a4ea482a6c99532ba 100644 (file)
--- a/drivers/pwm/pwm.c
+++ b/drivers/pwm/pwm.c
const char *buf, size_t len)
{
struct pwm_device *p = dev_get_drvdata(dev);
+ int ret;
+
if (sysfs_streq(buf, "1"))
- pwm_start(p);
+ ret = pwm_start(p);
else if (sysfs_streq(buf, "0"))
- pwm_stop(p);
+ ret = pwm_stop(p);
+ else
+ ret = -EINVAL;
+
+ if (ret < 0)
+ return ret;
return len;
}
static DEVICE_ATTR(run, S_IRUGO | S_IWUSR, pwm_run_show, pwm_run_store);
{
unsigned long duty_ns;
struct pwm_device *p = dev_get_drvdata(dev);
+ int ret;
+
+ if (!kstrtoul(buf, 10, &duty_ns)) {
+ ret = pwm_set_duty_ns(p, duty_ns);
+
+ if (ret < 0)
+ return ret;
+ }
- if (!kstrtoul(buf, 10, &duty_ns))
- pwm_set_duty_ns(p, duty_ns);
return len;
}
static DEVICE_ATTR(duty_ns, S_IRUGO | S_IWUSR, pwm_duty_ns_show,
{
unsigned long duty_ns;
struct pwm_device *p = dev_get_drvdata(dev);
+ int ret;
+
+ if (!kstrtoul(buf, 10, &duty_ns)) {
+ ret = pwm_set_duty_percent(p, duty_ns);
+
+ if (ret < 0)
+ return ret;
+ }
- if (!kstrtoul(buf, 10, &duty_ns))
- pwm_set_duty_percent(p, duty_ns);
return len;
}
{
unsigned long period_ns;
struct pwm_device *p = dev_get_drvdata(dev);
+ int ret;
+
+ if (!kstrtoul(buf, 10, &period_ns)) {
+ ret = pwm_set_period_ns(p, period_ns);
+
+ if (ret < 0)
+ return ret;
+ }
- if (!kstrtoul(buf, 10, &period_ns))
- pwm_set_period_ns(p, period_ns);
return len;
}
static DEVICE_ATTR(period_ns, S_IRUGO | S_IWUSR, pwm_period_ns_show,
size_t len)
{
unsigned long freq_hz;
+ int ret;
struct pwm_device *p = dev_get_drvdata(dev);
- if (!kstrtoul(buf, 10, &freq_hz))
- pwm_set_frequency(p, freq_hz);
+ if (!kstrtoul(buf, 10, &freq_hz)) {
+ ret = pwm_set_frequency(p, freq_hz);
+
+ if (ret < 0)
+ return ret;
+ }
return len;
}
{
unsigned long polarity;
struct pwm_device *p = dev_get_drvdata(dev);
+ int ret;
+
+ if (!kstrtoul(buf, 10, &polarity)) {
+ ret = pwm_set_polarity(p, polarity);
+
+ if (ret < 0)
+ return ret;
+ }
- if (!kstrtoul(buf, 10, &polarity))
- pwm_set_polarity(p, polarity);
return len;
}
static DEVICE_ATTR(polarity, S_IRUGO | S_IWUSR, pwm_polarity_show,