diff options
author | Trent Piepho <tpiepho@kymetacorp.com> | 2016-05-31 19:58:56 +0000 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-06-07 08:06:43 +0200 |
commit | edb96cf3d72920d428cef39a80dffb131d67e696 (patch) | |
tree | e1f2fb6e12974d0238147dbcffb1268abc02d3a5 /drivers/mci | |
parent | 17f77702e5546021c1a5c55de31d2559c9abae50 (diff) | |
download | barebox-edb96cf3d72920d428cef39a80dffb131d67e696.tar.gz barebox-edb96cf3d72920d428cef39a80dffb131d67e696.tar.xz |
mci: Fix version numbers again
The SD and eMMC version numbers are a pain to print and sort, since
they are inconsistent in if a two digit minor version shdoulde be
treated as a single number or as minor and micro version numbers.
This allows version 1.10 and 4.5 and 4.41, where 41 is less than 5.
Signed-off-by: Trent Piepho <tpiepho@kymetacorp.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci')
-rw-r--r-- | drivers/mci/mci-core.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c index 59f66757d9..42dde06c3c 100644 --- a/drivers/mci/mci-core.c +++ b/drivers/mci/mci-core.c @@ -949,14 +949,18 @@ out: static char *mci_version_string(struct mci *mci) { - static char version[sizeof("x.xx")]; - unsigned major, minor; + static char version[sizeof("xx.xxx")]; + unsigned major, minor, micro; + int n; major = (mci->version >> 8) & 0xf; - minor = mci->version & 0xff; + minor = (mci->version >> 4) & 0xf; + micro = mci->version & 0xf; - /* Shift off last digit of minor if it's 0 */ - sprintf(version, "%u.%x", major, minor & 0xf ? minor : minor >> 4); + n = sprintf(version, "%u.%u", major, minor); + /* Omit zero micro versions */ + if (micro) + sprintf(version + n, "%u", micro); return version; } |