[U-Boot] [PATCH V2 4/7] Tegra30: Add common CPU (shared) files

Stephen Warren
2012-12-05T21:38:43Z

On 12/05/2012 02:32 PM, Tom Warren wrote:
> On Wed, Dec 5, 2012 at 1:37 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 12/03/2012 04:45 PM, Tom Warren wrote:
>>> These files are used by both SPL and main U-Boot.
>>> Also made minor changes to shared Tegra code to support
>>> T30 differences.
...
>>> diff --git a/arch/arm/cpu/tegra-common/sys_info.c b/arch/arm/cpu/tegra-common/sys_info.c
...
>>> /* Print CPU information */
>>> int print_cpuinfo(void)
>>> {
>>> +#if defined(CONFIG_TEGRA20)
>>> puts("TEGRA20\n");
>>> -
>>> +#else /* Tegra30 */
>>> + puts("TEGRA30\n");
>>> +#endif
>>
>> This is fine, but the following wouldn't require editing again for
>> future chips:
>>
>> puts(CONFIG_SYS_SOC);
>> puts("\n");
>>
>> (although it ends up being all lower-case; perhaps there's some other
>> variable that is upper-case?)
>
> How about this:
>
> #include <common.h>
> #include <linux/ctype.h>
>
> #ifdef CONFIG_DISPLAY_CPUINFO
> void upstring(char *s)
> {
> while(*s) {
> *s = toupper(*s);
> s++;
> }
> }
>
> /* Print CPU information */
> int print_cpuinfo(void)
> {
> upstring(CONFIG_SYS_SOC);
> puts(CONFIG_SYS_SOC);
> puts("\n");
>
> return 0;
> )
> #endif
>
> What do you think?

CONFIG_SYS_SOC is presumably stored in a read-only segment, so that
might not even work, although I dare say memory protection isn't enabled
to prevent this. That would also end up modifying the string itself,
which is probably used elsewhere, where such modification might not be
desirable.

If you called upstring() on a copy of the string e.g. on the stack, that
seems reasonable.