Commit b0e9aaa9 authored by Corey Minyard's avatar Corey Minyard

ipmi:ssif: Ignore spaces when comparing I2C adapter names

Some of the adapters have spaces in their names, but that's really
hard to pass in as a module or kernel parameters.  So ignore the
spaces.
Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
parent d467f7a4
...@@ -505,7 +505,10 @@ at module load time (for a module) with: ...@@ -505,7 +505,10 @@ at module load time (for a module) with:
The addresses are normal I2C addresses. The adapter is the string The addresses are normal I2C addresses. The adapter is the string
name of the adapter, as shown in /sys/class/i2c-adapter/i2c-<n>/name. name of the adapter, as shown in /sys/class/i2c-adapter/i2c-<n>/name.
It is *NOT* i2c-<n> itself. It is *NOT* i2c-<n> itself. Also, the comparison is done ignoring
spaces, so if the name is "This is an I2C chip" you can say
adapter_name=ThisisanI2cchip. This is because it's hard to pass in
spaces in kernel parameters.
The debug flags are bit flags for each BMC found, they are: The debug flags are bit flags for each BMC found, they are:
IPMI messages: 1, driver state: 2, timing: 4, I2C probe: 8 IPMI messages: 1, driver state: 2, timing: 4, I2C probe: 8
......
...@@ -1258,6 +1258,23 @@ static const struct file_operations smi_stats_proc_ops = { ...@@ -1258,6 +1258,23 @@ static const struct file_operations smi_stats_proc_ops = {
.release = single_release, .release = single_release,
}; };
static int strcmp_nospace(char *s1, char *s2)
{
while (*s1 && *s2) {
while (isspace(*s1))
s1++;
while (isspace(*s2))
s2++;
if (*s1 > *s2)
return 1;
if (*s1 < *s2)
return -1;
s1++;
s2++;
}
return 0;
}
static struct ssif_addr_info *ssif_info_find(unsigned short addr, static struct ssif_addr_info *ssif_info_find(unsigned short addr,
char *adapter_name, char *adapter_name,
bool match_null_name) bool match_null_name)
...@@ -1272,8 +1289,10 @@ static struct ssif_addr_info *ssif_info_find(unsigned short addr, ...@@ -1272,8 +1289,10 @@ static struct ssif_addr_info *ssif_info_find(unsigned short addr,
/* One is NULL and one is not */ /* One is NULL and one is not */
continue; continue;
} }
if (strcmp(info->adapter_name, adapter_name)) if (adapter_name &&
/* Names to not match */ strcmp_nospace(info->adapter_name,
adapter_name))
/* Names do not match */
continue; continue;
} }
found = info; found = info;
...@@ -1407,7 +1426,7 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id) ...@@ -1407,7 +1426,7 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)
} else { } else {
no_support: no_support:
/* Assume no multi-part or PEC support */ /* Assume no multi-part or PEC support */
pr_info(PFX "Error fetching SSIF: %d %d %2.2x, your system probably doesn't support this command so using defaults\n", pr_info(PFX "Error fetching SSIF: %d %d %2.2x, your system probably doesn't support this command so using defaults\n",
rv, len, resp[2]); rv, len, resp[2]);
ssif_info->max_xmit_msg_size = 32; ssif_info->max_xmit_msg_size = 32;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment