From: Viresh Kumar Date: Mon, 27 Jun 2016 05:49:23 +0000 (+0530) Subject: greybus: kernel_ver: Add kstrtobool() X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=0ef5be18852d0b044f916fd6194bb228f36e392a;p=linux-beck.git greybus: kernel_ver: Add kstrtobool() It was added in 4.6 and is required for one of the use case, copy it. Signed-off-by: Viresh Kumar Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/greybus/kernel_ver.h b/drivers/staging/greybus/kernel_ver.h index 98e3179cc00d..80ed27c9a650 100644 --- a/drivers/staging/greybus/kernel_ver.h +++ b/drivers/staging/greybus/kernel_ver.h @@ -341,4 +341,52 @@ static inline bool pwm_is_enabled(const struct pwm_device *pwm) } #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) +/** + * kstrtobool - convert common user inputs into boolean values + * @s: input string + * @res: result + * + * This routine returns 0 iff the first character is one of 'Yy1Nn0', or + * [oO][NnFf] for "on" and "off". Otherwise it will return -EINVAL. Value + * pointed to by res is updated upon finding a match. + */ +static inline int kstrtobool(const char *s, bool *res) +{ + if (!s) + return -EINVAL; + + switch (s[0]) { + case 'y': + case 'Y': + case '1': + *res = true; + return 0; + case 'n': + case 'N': + case '0': + *res = false; + return 0; + case 'o': + case 'O': + switch (s[1]) { + case 'n': + case 'N': + *res = true; + return 0; + case 'f': + case 'F': + *res = false; + return 0; + default: + break; + } + default: + break; + } + + return -EINVAL; +} +#endif + #endif /* __GREYBUS_KERNEL_VER_H */