Am Mittwoch, den 02.10.2013, 21:30 +0200 schrieb Jan Luebbe:
> The function am33xx_get_cpu_rev may be called before barebox_arm_entry(),
> so we need to avoid switch statements. 

Uhm, could you please be more verbose on _why_ we need to avoid switch
statements at this stage? I might be running into the same failure with
Tegra at some point if there's a real issue.

Thanks,
Lucas

> One example is the BeagleBone,
> where we use this function to differenciate between the white and black
> variants.
> 
> Signed-off-by: Jan Luebbe <[email protected]>
> ---
>  arch/arm/mach-omap/am33xx_generic.c |   31 +++++++++++--------------------
>  1 file changed, 11 insertions(+), 20 deletions(-)
> 
> diff --git a/arch/arm/mach-omap/am33xx_generic.c 
> b/arch/arm/mach-omap/am33xx_generic.c
> index 3690ce1..251c8d4 100644
> --- a/arch/arm/mach-omap/am33xx_generic.c
> +++ b/arch/arm/mach-omap/am33xx_generic.c
> @@ -43,30 +43,21 @@ void __noreturn reset_cpu(unsigned long addr)
>   * The significance of the CPU revision depends upon the cpu type.
>   * Latest known revision is considered default.
>   *
> + * This function is called before barebox_arm_entry(), so avoid switch
> + * statements.
> + *
>   * @return silicon version
>   */
>  u32 am33xx_get_cpu_rev(void)
>  {
> -     u32 version, retval;
> -
> -     version = (readl(AM33XX_IDCODE_REG) >> 28) & 0xF;
> -
> -     switch (version) {
> -     case 0:
> -             retval = AM335X_ES1_0;
> -             break;
> -     case 1:
> -             retval = AM335X_ES2_0;
> -             break;
> -     case 2:
> -             /*
> -              * Fall through the default case.
> -              */
> -     default:
> -             retval = AM335X_ES2_1;
> -     }
> -
> -     return retval;
> +     u32 version = (readl(AM33XX_IDCODE_REG) >> 28) & 0xF;
> +
> +     if (version == 0)
> +             return AM335X_ES1_0;
> +     else if (version == 1)
> +             return AM335X_ES2_0;
> +     else
> +             return AM335X_ES2_1;
>  }
>  
>  /**



_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to