On 12/12/2013 06:24 AM, Laxman Dewangan wrote: > Add of_property_read_s32() to read the signed 32bit number > from dt property value. This supports to pass the -ve numbers > from dt. Use 2's complement method for represnting negative number > and passed as u32 from dts. When reading back the value, again > converted to 2's complement if msb shows as 1. > diff --git a/include/linux/of.h b/include/linux/of.h > +static inline int of_property_read_s32(const struct device_node *np, > + const char *propname, > + s32 *out_value) > +{ > + u32 val; > + int ret; > + > + ret = of_property_read_u32(np, propname, &val); > + if (ret < 0) > + return ret; > + > + /* 2's complement if MSB is 1 */ > + *out_value = (val & 0x80000000U) ? -((val ^ 0xFFFFFFFFU) + 1) : val; I may not be thinking straight today since I have a cold, but doesn't patch 2/2 encode negative values as 2's complement, and an s32 variable in the kernel is also encoded as 2's complement, so all you need here is a cast: *out_value = (s32)val; ... since the cast doesn't change the binary representation? -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html