diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2012-09-07 14:31:45 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-10 11:13:16 -0700 |
commit | b53d657d84f530e5d83f34ff1b81ceedad3faa31 (patch) | |
tree | f7921ce311aca66d7f42031e3a6e0cd31a808ea9 /include/linux/bcd.h | |
parent | 8a424bf40d772fedacc91862ecc86f10541fabb3 (diff) | |
download | linux-stable-b53d657d84f530e5d83f34ff1b81ceedad3faa31.tar.gz linux-stable-b53d657d84f530e5d83f34ff1b81ceedad3faa31.tar.bz2 linux-stable-b53d657d84f530e5d83f34ff1b81ceedad3faa31.zip |
usb/core: use bin2bcd() for bcdDevice in RH
The kernel's version number is used as decimal in the bcdDevice field of
the RH descriptor. For kernel version v3.12 we would see 3.0c in lsusb.
I am not sure how important it is to stick with bcd values since this is
this way since we started git history and nobody complained (however back
then we reported only 2.6).
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/bcd.h')
-rw-r--r-- | include/linux/bcd.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/include/linux/bcd.h b/include/linux/bcd.h index 22ea563ba3eb..18fff11fb3ea 100644 --- a/include/linux/bcd.h +++ b/include/linux/bcd.h @@ -3,7 +3,20 @@ #include <linux/compiler.h> -unsigned bcd2bin(unsigned char val) __attribute_const__; -unsigned char bin2bcd(unsigned val) __attribute_const__; +#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 */ |