xref: /linux-6.15/lib/bcd.c (revision cbf164cd)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2d3de851aSDavid Brownell #include <linux/bcd.h>
38bc3bcc9SPaul Gortmaker #include <linux/export.h>
4d3de851aSDavid Brownell 
_bcd2bin(unsigned char val)5b53d657dSSebastian Andrzej Siewior unsigned _bcd2bin(unsigned char val)
6d3de851aSDavid Brownell {
7d3de851aSDavid Brownell 	return (val & 0x0f) + (val >> 4) * 10;
8d3de851aSDavid Brownell }
9b53d657dSSebastian Andrzej Siewior EXPORT_SYMBOL(_bcd2bin);
10d3de851aSDavid Brownell 
_bin2bcd(unsigned val)11b53d657dSSebastian Andrzej Siewior unsigned char _bin2bcd(unsigned val)
12d3de851aSDavid Brownell {
13*cbf164cdSKuan-Wei Chiu 	const unsigned int t = (val * 103) >> 10;
14*cbf164cdSKuan-Wei Chiu 
15*cbf164cdSKuan-Wei Chiu 	return (t << 4) | (val - t * 10);
16d3de851aSDavid Brownell }
17b53d657dSSebastian Andrzej Siewior EXPORT_SYMBOL(_bin2bcd);
18