[PATCH v4 04/10] arm/tegra: prepare early init for multiple tegra variants

Jamie Iles jamie at jamieiles.com
Fri Nov 11 06:45:21 EST 2011


Hi Peter,

On Fri, Nov 11, 2011 at 01:22:10PM +0200, Peter De Schrijver wrote:
> This patch splits the early init code in a common and a tegra20 specific part.
> L2 cache initialization is generalized and discovers the cache associativity
> at runtime. Also use arm_pm_restart instead of arm_arch_reset and reset the
> the system using the PMC reset feature rather then the CAR system reset.
> 
> Signed-off-by: Peter De Schrijver <pdeschrijver at nvidia.com>
> ---
>  arch/arm/mach-tegra/board-dt.c        |   21 ++++++++++++++
>  arch/arm/mach-tegra/board-harmony.c   |    2 +-
>  arch/arm/mach-tegra/board-paz00.c     |    2 +-
>  arch/arm/mach-tegra/board-seaboard.c  |    6 ++--
>  arch/arm/mach-tegra/board-trimslice.c |    2 +-
>  arch/arm/mach-tegra/board.h           |    6 ++--
>  arch/arm/mach-tegra/clock.c           |    5 ---
>  arch/arm/mach-tegra/common.c          |   47 ++++++++++++++++++++++----------
>  8 files changed, 62 insertions(+), 29 deletions(-)
> 
> diff --git a/arch/arm/mach-tegra/board-dt.c b/arch/arm/mach-tegra/board-dt.c
> index d368f8d..15ee974 100644
> --- a/arch/arm/mach-tegra/board-dt.c
> +++ b/arch/arm/mach-tegra/board-dt.c
> @@ -118,6 +118,27 @@ static void __init tegra_dt_init(void)
>  	of_platform_populate(NULL, tegra_dt_match_table, tegra20_auxdata_lookup, NULL);
>  }
>  
> +static struct {
> +	const char *machine;
> +	void (*init)(void);
> +} early_init[] __initdata = {
> +#ifdef CONFIG_ARCH_TEGRA_2x_SOC
> +	{ "nvidia,tegra20", tegra20_init_early },
> +#endif
> +};
> +
> +static void __init tegra_init_early(void)
> +{
> +
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(early_init); i++)
> +		if (of_machine_is_compatible(early_init[i].machine))
> +			return early_init[i].init();
> +
> +	pr_warn("Unknown platform detected\n");
> +}

Wouldn't it be better just to have separate machine descs for tegra20 
and tegra30 and have a different .init_early for each?  I'm not sure 
that this extra indirection buys us much, especially if we had to repeat 
it for any of the other entries.

Jamie



More information about the linux-arm-kernel mailing list