Mostly looks good, but a few comments below. On Fri, Jun 20, 2008 at 10:58:36AM -0600, John Rigby wrote: > Move shared code from mpc5121_ads.c to mpc512x_shared.c. > Add new generic board setup mpc5121_generic.c > > Signed-off-by: John Rigby <[EMAIL PROTECTED]> > --- > arch/powerpc/platforms/512x/Kconfig | 15 ++++- > arch/powerpc/platforms/512x/Makefile | 3 +- > arch/powerpc/platforms/512x/mpc5121_ads.c | 45 +--------------- > arch/powerpc/platforms/512x/mpc5121_generic.c | 72 > +++++++++++++++++++++++++ > arch/powerpc/platforms/512x/mpc512x.h | 14 +++++ > arch/powerpc/platforms/512x/mpc512x_shared.c | 66 ++++++++++++++++++++++ > 6 files changed, 168 insertions(+), 47 deletions(-) > create mode 100644 arch/powerpc/platforms/512x/mpc5121_generic.c > create mode 100644 arch/powerpc/platforms/512x/mpc512x.h > create mode 100644 arch/powerpc/platforms/512x/mpc512x_shared.c > > diff --git a/arch/powerpc/platforms/512x/Kconfig > b/arch/powerpc/platforms/512x/Kconfig > index 4c0da0c..f9a04da 100644 > --- a/arch/powerpc/platforms/512x/Kconfig > +++ b/arch/powerpc/platforms/512x/Kconfig > @@ -2,12 +2,10 @@ config PPC_MPC512x > bool > select FSL_SOC > select IPIC > - default n > > config PPC_MPC5121 > bool > select PPC_MPC512x > - default n > > config MPC5121_ADS > bool "Freescale MPC5121E ADS" > @@ -16,4 +14,15 @@ config MPC5121_ADS > select PPC_MPC5121 > help > This option enables support for the MPC5121E ADS board. > - default n > + > +config MPC5121_GENERIC > + bool "Generic support for simple MPC5121 based boards" > + depends on PPC_MULTIPLATFORM && PPC32 > + select DEFAULT_UIMAGE > + select PPC_MPC5121 > + help > + This option enables support for simple MPC5121 based boards > + which do not need custome platform specific setup.
typo > + > + Compatible boards include: Protonic LVT base boards (ZANMCU > + and VICVT2). > diff --git a/arch/powerpc/platforms/512x/Makefile > b/arch/powerpc/platforms/512x/Makefile > index ef6c925..e6674c8 100644 > --- a/arch/powerpc/platforms/512x/Makefile > +++ b/arch/powerpc/platforms/512x/Makefile > @@ -1,5 +1,6 @@ > # > # Makefile for the Freescale PowerPC 512x linux kernel. > # > -obj-y := clock.o > +obj-y := clock.o mpc512x_shared.o > obj-$(CONFIG_MPC5121_ADS) += mpc5121_ads.o > +obj-$(CONFIG_MPC5121_GENERIC) += mpc5121_generic.o > diff --git a/arch/powerpc/platforms/512x/mpc5121_ads.c > b/arch/powerpc/platforms/512x/mpc5121_ads.c > index 50bd3a3..45bb2ef 100644 > --- a/arch/powerpc/platforms/512x/mpc5121_ads.c > +++ b/arch/powerpc/platforms/512x/mpc5121_ads.c > @@ -68,20 +40,7 @@ static void __init > mpc5121_ads_declare_of_platform_devices(void) > > static void __init mpc5121_ads_init_IRQ(void) > { > - struct device_node *np; > - > - np = of_find_compatible_node(NULL, NULL, "fsl,ipic"); > - if (!np) > - return; > - > - ipic_init(np, 0); > - of_node_put(np); > - > - /* > - * Initialize the default interrupt mapping priorities, > - * in case the boot rom changed something on us. > - */ > - ipic_set_default_priority(); > + mpc512x_init_IRQ(); > } Why not just put mpc512x_init_IRQ directly into the machine structure? > > /* > diff --git a/arch/powerpc/platforms/512x/mpc5121_generic.c > b/arch/powerpc/platforms/512x/mpc5121_generic.c > new file mode 100644 > index 0000000..0111a98 > --- /dev/null > +++ b/arch/powerpc/platforms/512x/mpc5121_generic.c > @@ -0,0 +1,72 @@ > +/* > + * Copyright (C) 2007,2008 Freescale Semiconductor, Inc. All rights reserved. > + * > + * Author: John Rigby, <[EMAIL PROTECTED]> > + * > + * Description: > + * MPC5121 SoC setup > + * > + * This 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. > + * > + */ > + > +#include <linux/kernel.h> > +#include <linux/of_platform.h> > + > +#include <asm/machdep.h> > +#include <asm/ipic.h> > +#include <asm/prom.h> > +#include <asm/time.h> > + > +#include "mpc512x.h" > + > +static struct of_device_id __initdata of_bus_ids[] = { > + { .name = "soc", }, > + { .name = "localbus", }, Ugh. Not good. Bind against compatible, not name or type. > + {}, > +}; > + > +static void __init mpc5121_generic_declare_of_platform_devices(void) > +{ > + /* Find every child of the SOC node and add it to of_platform */ > + if (of_platform_bus_probe(NULL, of_bus_ids, NULL)) > + printk(KERN_ERR __FILE__ ": " > + "Error while probing of_platform bus\n"); > +} > + > +/* > + * list of supported boards > + */ > +static char *board[] __initdata = { > + "prt,prtlvt", > + NULL > +}; > + > +/* > + * Called very early, MMU is off, device-tree isn't unflattened > + */ > +static int __init mpc5121_generic_probe(void) > +{ > + unsigned long node = of_get_flat_dt_root(); > + int i = 0; > + > + while (board[i]) { > + if (of_flat_dt_is_compatible(node, board[i])) > + break; > + i++; > + } > + > + return board[i] != NULL; > +} > + > +define_machine(mpc5121_generic) { > + .name = "MPC5121 generic", > + .probe = mpc5121_generic_probe, > + .init = mpc5121_generic_declare_of_platform_devices, > + .init_IRQ = mpc512x_init_IRQ, > + .get_irq = ipic_get_irq, > + .calibrate_decr = generic_calibrate_decr, > +}; > diff --git a/arch/powerpc/platforms/512x/mpc512x.h > b/arch/powerpc/platforms/512x/mpc512x.h > new file mode 100644 > index 0000000..789b817 > --- /dev/null > +++ b/arch/powerpc/platforms/512x/mpc512x.h > @@ -0,0 +1,14 @@ > +/* > + * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved. > + * > + * 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. > + */ Should probably state what this file is for in the header block. > diff --git a/arch/powerpc/platforms/512x/mpc512x_shared.c > b/arch/powerpc/platforms/512x/mpc512x_shared.c > new file mode 100644 > index 0000000..4b8fe6a > --- /dev/null > +++ b/arch/powerpc/platforms/512x/mpc512x_shared.c > @@ -0,0 +1,66 @@ > +/* > + * Copyright (C) 2007,2008 Freescale Semiconductor, Inc. All rights reserved. > + * > + * Author: John Rigby <[EMAIL PROTECTED]> > + * > + * Description: > + * MPC512x Shared code > + * > + * This 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. > + */ > + > +#include <linux/kernel.h> > +#include <linux/io.h> > +#include <linux/irq.h> > +#include <linux/of_platform.h> > + > +#include <asm/machdep.h> > +#include <asm/ipic.h> > +#include <asm/prom.h> > +#include <asm/time.h> > + > +#include "mpc512x.h" > + > +unsigned long > +mpc512x_find_ips_freq(struct device_node *node) > +{ > + struct device_node *np; > + const unsigned int *p_ips_freq = NULL; > + > + of_node_get(node); > + while (node) { > + p_ips_freq = of_get_property(node, "bus-frequency", NULL); > + if (p_ips_freq) > + break; > + > + np = of_get_parent(node); > + of_node_put(node); > + node = np; > + } > + if (node) > + of_node_put(node); > + > + return p_ips_freq ? *p_ips_freq : 0; > +} > +EXPORT_SYMBOL(mpc512x_find_ips_freq); This looks identical to the 52xx version. Perhaps they should be merged... I wouldn't bother for getting this mainlined, but it is something to think about for the future. g. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev