[PATCH 04/11] [POWERPC] Add generic support for MPC5200 based boards

Grant Likely grant.likely at secretlab.ca
Thu Oct 25 00:03:36 EST 2007


On 10/23/07, Marian Balakowicz <m8 at semihalf.com> wrote:
> This patch adds support for 'generic-mpc5200' compatible
> boards which do not need a platform specific setup.
>
> Signed-off-by: Marian Balakowicz <m8 at semihalf.com>

I like this patch and I think it will make it easier to support
multiple 5200 based boards.  However, we must be very clear here what
'generic-mpc5200' is (in fact, my suggestion of the name
"generic-mpc5200" might be a bad one.  "mpc5200-simple-platform" might
be a better name).

Please add documentation to both the Kconfig and the generic_mpc5200.c
files describing exactly the assumptions which are made for this
platform.  For example:
- port_config and clocking are setup correctly by firmware,
- if the fsl,has-wdt property is present in one of the gpt nodes, then
it is safe to use it to reset the board
etc.

Cheers,
g.

> ---
>
>  arch/powerpc/platforms/52xx/Kconfig           |    8 ++-
>  arch/powerpc/platforms/52xx/Makefile          |    1
>  arch/powerpc/platforms/52xx/generic_mpc5200.c |   63 +++++++++++++++++++++++++
>  3 files changed, 70 insertions(+), 2 deletions(-)
>  create mode 100644 arch/powerpc/platforms/52xx/generic_mpc5200.c
>
>
> diff --git a/arch/powerpc/platforms/52xx/Kconfig b/arch/powerpc/platforms/52xx/Kconfig
> index 2938d49..59c67b5 100644
> --- a/arch/powerpc/platforms/52xx/Kconfig
> +++ b/arch/powerpc/platforms/52xx/Kconfig
> @@ -19,6 +19,12 @@ config PPC_MPC5200_BUGFIX
>
>           It is safe to say 'Y' here
>
> +config PPC_GENERIC_MPC5200
> +       bool "Generic support for MPC5200 based boards"
> +       depends on PPC_MULTIPLATFORM && PPC32
> +       select PPC_MPC5200
> +       default n
> +
>  config PPC_EFIKA
>         bool "bPlan Efika 5k2. MPC5200B based computer"
>         depends on PPC_MULTIPLATFORM && PPC32
> @@ -34,5 +40,3 @@ config PPC_LITE5200
>         select WANT_DEVICE_TREE
>         select PPC_MPC5200
>         default n
> -
> -
> diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile
> index 307dbc1..bea05df 100644
> --- a/arch/powerpc/platforms/52xx/Makefile
> +++ b/arch/powerpc/platforms/52xx/Makefile
> @@ -6,6 +6,7 @@ obj-y                           += mpc52xx_pic.o mpc52xx_common.o
>  obj-$(CONFIG_PCI)              += mpc52xx_pci.o
>  endif
>
> +obj-$(CONFIG_PPC_GENERIC_MPC5200) += generic_mpc5200.o
>  obj-$(CONFIG_PPC_EFIKA)                += efika.o
>  obj-$(CONFIG_PPC_LITE5200)     += lite5200.o
>
> diff --git a/arch/powerpc/platforms/52xx/generic_mpc5200.c b/arch/powerpc/platforms/52xx/generic_mpc5200.c
> new file mode 100644
> index 0000000..a4ec899
> --- /dev/null
> +++ b/arch/powerpc/platforms/52xx/generic_mpc5200.c
> @@ -0,0 +1,63 @@
> +/*
> + * Support for 'generic-mpc5200' compatible platforms.
> + *
> + * Written by Marian Balakowicz <m8 at semihalf.com>
> + * Copyright (C) 2007 Semihalf
> + *
> + * This program is free software; you can redistribute  it and/or modify it
> + * under  the terms of  the GNU General  Public License as published by the
> + * Free Software Foundation;  either version 2 of the  License, or (at your
> + * option) any later version.
> + */
> +
> +#undef DEBUG
> +#include <linux/init.h>
> +#include <linux/pci.h>
> +#include <linux/of.h>
> +#include <asm/time.h>
> +#include <asm/io.h>
> +#include <asm/machdep.h>
> +#include <asm/prom.h>
> +#include <asm/mpc52xx.h>
> +
> +/*
> + * Setup the architecture
> + */
> +static void __init generic_mpc5200_setup_arch(void)
> +{
> +       if (ppc_md.progress)
> +               ppc_md.progress("generic_mpc5200_setup_arch()", 0);
> +
> +       /* Some mpc5200 & mpc5200b related configuration */
> +       mpc5200_setup_xlb_arbiter();
> +
> +       /* Map wdt for mpc52xx_restart() */
> +       mpc52xx_map_wdt();
> +
> +#ifdef CONFIG_PCI
> +       mpc52xx_setup_pci();
> +#endif
> +}
> +
> +/*
> + * Called very early, MMU is off, device-tree isn't unflattened
> + */
> +static int __init generic_mpc5200_probe(void)
> +{
> +       unsigned long node = of_get_flat_dt_root();
> +
> +       if (!of_flat_dt_is_compatible(node, "generic-mpc5200"))
> +               return 0;
> +       return 1;
> +}
> +
> +define_machine(generic_mpc5200) {
> +       .name           = "generic-mpc5200",
> +       .probe          = generic_mpc5200_probe,
> +       .setup_arch     = generic_mpc5200_setup_arch,
> +       .init           = mpc52xx_declare_of_platform_devices,
> +       .init_IRQ       = mpc52xx_init_irq,
> +       .get_irq        = mpc52xx_get_irq,
> +       .restart        = mpc52xx_restart,
> +       .calibrate_decr = generic_calibrate_decr,
> +};
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>


-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195



More information about the Linuxppc-dev mailing list