Re: [PATCH] ARM: OMAP: Modified omap_mux_init_signal() to take inconst char *

From: Tim Nordell
Date: Thu Oct 21 2010 - 15:10:54 EST


On 10/21/10 13:50, Tim Nordell wrote:
> If one does the following line twice with the old code:
>
> omap_mux_init_signal("uart3_rts_sd.gpio_164", OMAP_PIN_INPUT);
> omap_mux_init_signal("uart3_rts_sd.gpio_164", OMAP_PIN_INPUT);
>
> the compiler optimizes the two const strings into one string
> internally in the compiler. The old code would modify the string
> by inserting a NULL effectively making the second call become:
>
> omap_mux_init_signal("uart3_rts_sd", OMAP_PIN_INPUT);
>
> Since the code changes _all_ uart3_rts_sd signals over to this,
> it'll cause unknown behavior, as well as making it more
> difficult to track down the reason since the string
> "uart3_rts_sd" by itself may not actually exist in your
> normal mux initialization sequence.
>

Gah. I just realized there was a patch in the linux-omap tree to do the
same thing.

http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commitdiff;h=5a3b2f7a5a79082dd3a5f2294cbd85fc3b173d98;hp=7ad0e386d46e9edff64705ab25337ad9130baf63

It looks like by inspection that there could be a couple of things wrong
with that patch however. Namely, on the comparison of muxname to
m0_entry, if they have the same string up to mode0_len, such as
"dss_data1" and "dss_data12" it'd match there prematurely as it'd stop
comparing. Also, a minor display issue on the printk of the new muxname.

- Tim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/