forked from Minki/linux
omap: Fix omap_mux_init_signal not to trash muxname
Otherwise the muxname passed to the function will get truncated. Based on an earlier patch by rockefeller.lin@innocomm.com. Reported-by: rockefeller.lin@innocomm.com Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
7ad0e386d4
commit
5a3b2f7a5a
@ -127,17 +127,16 @@ int __init omap_mux_init_gpio(int gpio, int val)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __init omap_mux_init_signal(char *muxname, int val)
|
||||
int __init omap_mux_init_signal(const char *muxname, int val)
|
||||
{
|
||||
struct omap_mux_entry *e;
|
||||
char *m0_name = NULL, *mode_name = NULL;
|
||||
int found = 0;
|
||||
const char *mode_name;
|
||||
int found = 0, mode0_len = 0;
|
||||
|
||||
mode_name = strchr(muxname, '.');
|
||||
if (mode_name) {
|
||||
*mode_name = '\0';
|
||||
mode0_len = strlen(muxname) - strlen(mode_name);
|
||||
mode_name++;
|
||||
m0_name = muxname;
|
||||
} else {
|
||||
mode_name = muxname;
|
||||
}
|
||||
@ -147,9 +146,11 @@ int __init omap_mux_init_signal(char *muxname, int val)
|
||||
char *m0_entry = m->muxnames[0];
|
||||
int i;
|
||||
|
||||
if (m0_name && strcmp(m0_name, m0_entry))
|
||||
/* First check for full name in mode0.muxmode format */
|
||||
if (mode0_len && strncmp(muxname, m0_entry, mode0_len))
|
||||
continue;
|
||||
|
||||
/* Then check for muxmode only */
|
||||
for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
|
||||
char *mode_cur = m->muxnames[i];
|
||||
|
||||
|
@ -120,7 +120,7 @@ int omap_mux_init_gpio(int gpio, int val);
|
||||
* @muxname: Mux name in mode0_name.signal_name format
|
||||
* @val: Options for the mux register value
|
||||
*/
|
||||
int omap_mux_init_signal(char *muxname, int val);
|
||||
int omap_mux_init_signal(const char *muxname, int val);
|
||||
|
||||
#else
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user