diff options
author | Antony Pavlov <antonynpavlov@gmail.com> | 2014-07-30 00:10:17 +0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-07-31 07:30:51 +0200 |
commit | 6d3fc76b7720c6eeb5f38cce32290cbbe28ae146 (patch) | |
tree | 2feef0ee70652d07ae3cb4491c06873d73e8aa8d /include | |
parent | 2fd4f0fbe93ec7e6e10b3475257521dd8418f8e7 (diff) | |
download | barebox-6d3fc76b7720c6eeb5f38cce32290cbbe28ae146.tar.gz barebox-6d3fc76b7720c6eeb5f38cce32290cbbe28ae146.tar.xz |
lib: import 'bcd' from linux-3.15
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/bcd.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/bcd.h b/include/linux/bcd.h new file mode 100644 index 0000000000..18fff11fb3 --- /dev/null +++ b/include/linux/bcd.h @@ -0,0 +1,22 @@ +#ifndef _BCD_H +#define _BCD_H + +#include <linux/compiler.h> + +#define bcd2bin(x) \ + (__builtin_constant_p((u8 )(x)) ? \ + const_bcd2bin(x) : \ + _bcd2bin(x)) + +#define bin2bcd(x) \ + (__builtin_constant_p((u8 )(x)) ? \ + const_bin2bcd(x) : \ + _bin2bcd(x)) + +#define const_bcd2bin(x) (((x) & 0x0f) + ((x) >> 4) * 10) +#define const_bin2bcd(x) ((((x) / 10) << 4) + (x) % 10) + +unsigned _bcd2bin(unsigned char val) __attribute_const__; +unsigned char _bin2bcd(unsigned val) __attribute_const__; + +#endif /* _BCD_H */ |