[U-Boot] [PATCH V3] OMAP5: reset: Use cold reset in case of 5430ES1.0

Menon, Nishanth nm at ti.com
Wed Mar 7 19:22:16 CET 2012


On Wed, Mar 7, 2012 at 00:52, R Sricharan <r.sricharan at ti.com> wrote:
> Warm reset is not functional in case of omap5430ES1.0.
> So use cold reset instead.
>
> Signed-off-by: R Sricharan <r.sricharan at ti.com>
> ---
>  [v3]
>     Addressed Tom Rini's comments.<trini at ti.com>
>
>  arch/arm/cpu/armv7/omap-common/reset.S |    3 +++
>  arch/arm/cpu/armv7/omap5/hwinit.c      |   15 +++++++++++++++
>  2 files changed, 18 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/omap-common/reset.S b/arch/arm/cpu/armv7/omap-common/reset.S
> index 838b122..f2a522a 100644
> --- a/arch/arm/cpu/armv7/omap-common/reset.S
> +++ b/arch/arm/cpu/armv7/omap-common/reset.S
> @@ -23,6 +23,8 @@
>
>  #include <config.h>
>
> +#ifndef CONFIG_OMAP54XX
> +.type  reset_cpu, %function
>  .global reset_cpu
>  reset_cpu:
>        ldr     r1, rstctl                      @ get addr for global reset
> @@ -36,3 +38,4 @@ rstctl:
>        .word   PRM_RSTCTRL
>  rstbit:
>        .word   PRM_RSTCTRL_RESET
> +#endif

instead of doing the #ifdeffery, why not make this a C file with weak
and override it in omap5 as needed?

> diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c
> index 7da7075..d03e746 100644
> --- a/arch/arm/cpu/armv7/omap5/hwinit.c
> +++ b/arch/arm/cpu/armv7/omap5/hwinit.c
> @@ -35,6 +35,7 @@
>  #include <asm/sizes.h>
>  #include <asm/utils.h>
>  #include <asm/arch/gpio.h>
> +#include <linux/compiler.h>
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -160,3 +161,17 @@ void init_omap_revision(void)
>                *omap_si_rev = OMAP5430_SILICON_ID_INVALID;
>        }
>  }
> +
> +void __weak reset_cpu(ulong addr)
> +{
> +       u32 omap_rev = omap_revision();
> +
> +       /*
> +        * WARM reset is not functional in case of OMAP5430 ES1.0 soc.
> +        * So use cold reset in case instead.
> +        */
> +       if (omap_rev == OMAP5430_ES1_0)
> +               writel(PRM_RSTCTRL_RESET << 0x1, PRM_RSTCTRL);
> +       else
> +               writel(PRM_RSTCTRL_RESET, PRM_RSTCTRL);
> +}

Regards,
Nishanth Menon


More information about the U-Boot mailing list