summaryrefslogtreecommitdiffstats
path: root/drivers/char/ipmi/ipmi_si_hardcode.c
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2021-04-02 20:43:30 +0300
committerCorey Minyard <cminyard@mvista.com>2021-04-02 12:53:32 -0500
commit59cdb2e7c849656a1509b8c20cab2be1743631b2 (patch)
tree92834eb554ebffd2a20497c6ddd1cdc3c459e1b2 /drivers/char/ipmi/ipmi_si_hardcode.c
parent649a7d46d0840fc44d181cc6b3e608b46c77a86d (diff)
downloadlinux-59cdb2e7c849656a1509b8c20cab2be1743631b2.tar.bz2
ipmi_si: Reuse si_to_str[] array in ipmi_hardcode_init_one()
Instead of making the comparison one by one, reuse si_to_str[] array in ipmi_hardcode_init_one() in conjunction with match_string() API. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Message-Id: <20210402174334.13466-7-andriy.shevchenko@linux.intel.com> Signed-off-by: Corey Minyard <cminyard@mvista.com>
Diffstat (limited to 'drivers/char/ipmi/ipmi_si_hardcode.c')
-rw-r--r--drivers/char/ipmi/ipmi_si_hardcode.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/char/ipmi/ipmi_si_hardcode.c b/drivers/char/ipmi/ipmi_si_hardcode.c
index f6ece7569504..bbcf7483d569 100644
--- a/drivers/char/ipmi/ipmi_si_hardcode.c
+++ b/drivers/char/ipmi/ipmi_si_hardcode.c
@@ -80,26 +80,21 @@ static void __init ipmi_hardcode_init_one(const char *si_type_str,
enum ipmi_addr_space addr_space)
{
struct ipmi_plat_data p;
+ int t;
memset(&p, 0, sizeof(p));
p.iftype = IPMI_PLAT_IF_SI;
- if (!si_type_str || !*si_type_str || strcmp(si_type_str, "kcs") == 0) {
+ if (!si_type_str || !*si_type_str) {
p.type = SI_KCS;
- } else if (strcmp(si_type_str, "smic") == 0) {
- p.type = SI_SMIC;
- } else if (strcmp(si_type_str, "bt") == 0) {
- p.type = SI_BT;
- } else if (strcmp(si_type_str, "invalid") == 0) {
- /*
- * Allow a firmware-specified interface to be
- * disabled.
- */
- p.type = SI_TYPE_INVALID;
} else {
- pr_warn("Interface type specified for interface %d, was invalid: %s\n",
- i, si_type_str);
- return;
+ t = match_string(si_to_str, -1, si_type_str);
+ if (t < 0) {
+ pr_warn("Interface type specified for interface %d, was invalid: %s\n",
+ i, si_type_str);
+ return;
+ }
+ p.type = t;
}
p.regsize = regsizes[i];