提交 5a3b2f7a 编写于 作者: T Tony Lindgren

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: NTony Lindgren <tony@atomide.com>
上级 7ad0e386
...@@ -127,17 +127,16 @@ int __init omap_mux_init_gpio(int gpio, int val) ...@@ -127,17 +127,16 @@ int __init omap_mux_init_gpio(int gpio, int val)
return 0; 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; struct omap_mux_entry *e;
char *m0_name = NULL, *mode_name = NULL; const char *mode_name;
int found = 0; int found = 0, mode0_len = 0;
mode_name = strchr(muxname, '.'); mode_name = strchr(muxname, '.');
if (mode_name) { if (mode_name) {
*mode_name = '\0'; mode0_len = strlen(muxname) - strlen(mode_name);
mode_name++; mode_name++;
m0_name = muxname;
} else { } else {
mode_name = muxname; mode_name = muxname;
} }
...@@ -147,9 +146,11 @@ int __init omap_mux_init_signal(char *muxname, int val) ...@@ -147,9 +146,11 @@ int __init omap_mux_init_signal(char *muxname, int val)
char *m0_entry = m->muxnames[0]; char *m0_entry = m->muxnames[0];
int i; 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; continue;
/* Then check for muxmode only */
for (i = 0; i < OMAP_MUX_NR_MODES; i++) { for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
char *mode_cur = m->muxnames[i]; char *mode_cur = m->muxnames[i];
......
...@@ -120,7 +120,7 @@ int omap_mux_init_gpio(int gpio, int val); ...@@ -120,7 +120,7 @@ int omap_mux_init_gpio(int gpio, int val);
* @muxname: Mux name in mode0_name.signal_name format * @muxname: Mux name in mode0_name.signal_name format
* @val: Options for the mux register value * @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 #else
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册