diff options
author | Heinrich Schuchardt <heinrich.schuchardt@canonical.com> | 2021-10-25 15:09:35 +0200 |
---|---|---|
committer | Leo Yu-Chi Liang <ycliang@andestech.com> | 2021-11-08 15:35:55 +0800 |
commit | 89a86dcf6191c243ad58950bda9112bd84201a6a (patch) | |
tree | 783f3e62cb72c846354c2e5d79afe264805077a8 | |
parent | afb8e1f06730a35d436c58367f2b15c7dbf90cf1 (diff) | |
download | u-boot-89a86dcf6191c243ad58950bda9112bd84201a6a.zip u-boot-89a86dcf6191c243ad58950bda9112bd84201a6a.tar.gz u-boot-89a86dcf6191c243ad58950bda9112bd84201a6a.tar.bz2 |
cmd: sbi: show SBI implementation version
Let the sbi command show the SBI implementation version
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
Reviewed-by: Rick Chen <rick@andestech.com>
-rw-r--r-- | cmd/riscv/sbi.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 65a2c93..c4a9c84 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -49,24 +49,34 @@ static struct sbi_ext extensions[] = { static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - int i; + int i, impl_id; long ret; ret = sbi_get_spec_version(); if (ret >= 0) - printf("SBI %ld.%ld\n", ret >> 24, ret & 0xffffff); - ret = sbi_get_impl_id(); - if (ret >= 0) { + printf("SBI %ld.%ld", ret >> 24, ret & 0xffffff); + impl_id = sbi_get_impl_id(); + if (impl_id >= 0) { for (i = 0; i < ARRAY_SIZE(implementations); ++i) { - if (ret == implementations[i].id) { - printf("%s\n", implementations[i].name); + if (impl_id == implementations[i].id) { + long vers; + + printf("\n%s ", implementations[i].name); + ret = sbi_get_impl_version(&vers); + if (ret < 0) + break; + if (impl_id == 1) + printf("%ld.%ld", + vers >> 16, vers & 0xffff); + else + printf("0x%lx", vers); break; } } if (i == ARRAY_SIZE(implementations)) - printf("Unknown implementation ID %ld\n", ret); + printf("Unknown implementation ID %ld", ret); } - printf("Extensions:\n"); + printf("\nExtensions:\n"); for (i = 0; i < ARRAY_SIZE(extensions); ++i) { ret = sbi_probe_extension(extensions[i].id); if (ret > 0) |