[PATCHv2 13/15] ARM: mvebu: add core support for Armada 39x
Gregory CLEMENT
gregory.clement at free-electrons.com
Mon Feb 23 10:16:07 PST 2015
Hi Thomas,
On 20/02/2015 18:04, Thomas Petazzoni wrote:
> This commit adds the core support for Armada 39x, which is quite
> simple:
>
> - a new Kconfig option which selects the appropriate clock and
> pinctrl drivers as well as other common features (GIC, L2 cache,
> SMP, etc.)
>
> - a new DT_MACHINE_START which references the top-level compatible
> strings supported for the Marvell Armada 39x.
>
> - a new SMP enable-method. The mechanism to enable CPUs for Armada
> 39x appears to be the same as Armada 38x. However, we do not want
> to use marvell,armada-380-smp in the Device Tree, in the case of
> the discovery of a subtle difference in the future, which would
> require changing the Device Tree. And the enable-method isn't a
> compatible string: you can't specify several values and expect a
> fallback on the second string if the first one isn't
> supported. Therefore, we simply declare the SMP enable method
> "marvell,armada-390-smp" as doing the same thing as the
> "marvell,armada-380-smp" one.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
> arch/arm/mach-mvebu/Kconfig | 14 ++++++++++++++
> arch/arm/mach-mvebu/board-v7.c | 14 ++++++++++++++
> arch/arm/mach-mvebu/platsmp-a9.c | 2 ++
> 3 files changed, 30 insertions(+)
>
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index c1e4567..9747316 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -64,6 +64,20 @@ config MACH_ARMADA_38X
> Say 'Y' here if you want your kernel to support boards based
> on the Marvell Armada 380/385 SoC with device tree.
>
> +config MACH_ARMADA_39X
> + bool "Marvell Armada 39x boards" if ARCH_MULTI_V7
As you don't select it by default we should update the mvebu_v7_defconfig
with this symbol.
Thanks,
Gregory
> + select ARM_GIC
> + select ARMADA_39X_CLK
> + select CACHE_L2X0
> + select HAVE_ARM_SCU
> + select HAVE_ARM_TWD if SMP
> + select HAVE_SMP
> + select MACH_MVEBU_V7
> + select PINCTRL_ARMADA_39X
> + help
> + Say 'Y' here if you want your kernel to support boards based
> + on the Marvell Armada 39x SoC with device tree.
> +
> config MACH_ARMADA_XP
> bool "Marvell Armada XP boards" if ARCH_MULTI_V7
> select ARMADA_XP_CLK
> diff --git a/arch/arm/mach-mvebu/board-v7.c b/arch/arm/mach-mvebu/board-v7.c
> index 31b66f2..afee908 100644
> --- a/arch/arm/mach-mvebu/board-v7.c
> +++ b/arch/arm/mach-mvebu/board-v7.c
> @@ -232,3 +232,17 @@ DT_MACHINE_START(ARMADA_38X_DT, "Marvell Armada 380/385 (Device Tree)")
> .restart = mvebu_restart,
> .dt_compat = armada_38x_dt_compat,
> MACHINE_END
> +
> +static const char * const armada_39x_dt_compat[] __initconst = {
> + "marvell,armada390",
> + "marvell,armada398",
> + NULL,
> +};
> +
> +DT_MACHINE_START(ARMADA_39X_DT, "Marvell Armada 39x (Device Tree)")
> + .l2c_aux_val = 0,
> + .l2c_aux_mask = ~0,
> + .init_irq = mvebu_init_irq,
> + .restart = mvebu_restart,
> + .dt_compat = armada_39x_dt_compat,
> +MACHINE_END
> diff --git a/arch/arm/mach-mvebu/platsmp-a9.c b/arch/arm/mach-mvebu/platsmp-a9.c
> index 2ec1a42..df0a9cc 100644
> --- a/arch/arm/mach-mvebu/platsmp-a9.c
> +++ b/arch/arm/mach-mvebu/platsmp-a9.c
> @@ -110,3 +110,5 @@ CPU_METHOD_OF_DECLARE(mvebu_armada_375_smp, "marvell,armada-375-smp",
> &mvebu_cortex_a9_smp_ops);
> CPU_METHOD_OF_DECLARE(mvebu_armada_380_smp, "marvell,armada-380-smp",
> &armada_38x_smp_ops);
> +CPU_METHOD_OF_DECLARE(mvebu_armada_390_smp, "marvell,armada-390-smp",
> + &armada_38x_smp_ops);
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the linux-arm-kernel
mailing list