OSDN Git Service

drm/i915/params: support bool values for int and uint params
authorJani Nikula <jani.nikula@intel.com>
Thu, 5 Dec 2019 15:43:41 +0000 (17:43 +0200)
committerJani Nikula <jani.nikula@intel.com>
Wed, 15 Jan 2020 13:10:45 +0000 (15:10 +0200)
It's not uncommon for us to switch param types between bools and ints,
often having otherwise bool semantics but -1 value for platform
default. Allow bool values (such as YyNn) for ints.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/c945ac7b08e0eb0827cf647609885f4abdb84f1d.1575560168.git.jani.nikula@intel.com
drivers/gpu/drm/i915/i915_debugfs_params.c

index 7f1af5a..12cbdbd 100644 (file)
@@ -32,6 +32,14 @@ static ssize_t i915_param_int_write(struct file *file,
        int ret;
 
        ret = kstrtoint_from_user(ubuf, len, 0, value);
+       if (ret) {
+               /* support boolean values too */
+               bool b;
+
+               ret = kstrtobool_from_user(ubuf, len, &b);
+               if (!ret)
+                       *value = b;
+       }
 
        return ret ?: len;
 }
@@ -77,6 +85,14 @@ static ssize_t i915_param_uint_write(struct file *file,
        int ret;
 
        ret = kstrtouint_from_user(ubuf, len, 0, value);
+       if (ret) {
+               /* support boolean values too */
+               bool b;
+
+               ret = kstrtobool_from_user(ubuf, len, &b);
+               if (!ret)
+                       *value = b;
+       }
 
        return ret ?: len;
 }