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

From: Jamie Iles
Date: Fri Nov 11 2011 - 06:45:27 EST


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@xxxxxxxxxx>
> ---
> 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
--
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/