mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-24 09:13:20 -05:00
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: Corey Minyard <cminyard@mvista.com>
This commit is contained in:
parent
d467f7a405
commit
b0e9aaa99d
2 changed files with 26 additions and 4 deletions
|
@ -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 = {
|
||||||
.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 @@ restart:
|
||||||
/* 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)
|
||||||
} 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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue