Jon Loeliger wrote:
> Use cuImage bootwrapper until U-Boot port is completed.
> Derived heavily from Linkstation port.
> 
> Signed-off-by: Andy Wilcox <[EMAIL PROTECTED]>
> Signed-off-by: Jon Loeliger <[EMAIL PROTECTED]>
> ---
> 
> Nope, I have NOT verified that the bd_t file that
> is used here byte-identical to U-Boot's layout yet.
> [ There is _always_ something more to do... ]
> 
>  arch/powerpc/boot/Makefile                      |    3 +-
>  arch/powerpc/boot/cuboot-824x.c                 |   52 ++++++++
>  arch/powerpc/platforms/embedded6xx/Kconfig      |   15 ++-
>  arch/powerpc/platforms/embedded6xx/Makefile     |    2 +
>  arch/powerpc/platforms/embedded6xx/storcenter.c |  158 
> +++++++++++++++++++++++
>  5 files changed, 227 insertions(+), 3 deletions(-)
>  create mode 100644 arch/powerpc/boot/cuboot-824x.c
>  create mode 100644 arch/powerpc/platforms/embedded6xx/storcenter.c
> 
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index d1e625c..a59b176 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -57,7 +57,7 @@ src-wlib := string.S crt0.S stdio.c main.c \
>               4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \
>               cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \
>               fsl-soc.c mpc8xx.c pq2.c
> -src-plat := of.c cuboot-52xx.c cuboot-83xx.c cuboot-85xx.c holly.c \
> +src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c 
> holly.c \
>               cuboot-ebony.c treeboot-ebony.c prpmc2800.c \
>               ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c \
>               cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c 
> \
> @@ -196,6 +196,7 @@ image-$(CONFIG_PPC_EP88XC)                += zImage.ep88xc
>  image-$(CONFIG_EP405)                        += zImage.ep405
>  image-$(CONFIG_8260)                 += cuImage.pq2
>  image-$(CONFIG_PPC_MPC52xx)          += cuImage.52xx
> +image-$(CONFIG_STORCENTER)           += cuImage.824x
>  image-$(CONFIG_PPC_83xx)             += cuImage.83xx
>  image-$(CONFIG_PPC_85xx)             += cuImage.85xx
>  image-$(CONFIG_MPC7448HPC2)          += cuImage.hpc2
> diff --git a/arch/powerpc/boot/cuboot-824x.c b/arch/powerpc/boot/cuboot-824x.c
> new file mode 100644
> index 0000000..4aa3eee
> --- /dev/null
> +++ b/arch/powerpc/boot/cuboot-824x.c
> @@ -0,0 +1,52 @@
> +/*
> + * Old U-boot compatibility for 824x
> + *
> + * Copyright (c) 2007 Freescale Semiconductor, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published
> + * by the Free Software Foundation.
> + */
> +
> +#include "ops.h"
> +#include "stdio.h"
> +#include "cuboot.h"
> +
> +#define TARGET_824x
> +#include "ppcboot.h"
> +
> +static bd_t bd;
> +
> +static void platform_fixups(void)
> +{
> +     void *soc;
> +
> +     dt_fixup_memory(bd.bi_memstart, bd.bi_memsize);
> +     dt_fixup_mac_addresses(bd.bi_enetaddr);
> +     dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq);
> +
> +     soc = find_node_by_devtype(NULL, "soc");
> +     if (soc) {
> +             void *serial = NULL;
> +
> +             setprop(soc, "bus-frequency", &bd.bi_busfreq,
> +                     sizeof(bd.bi_busfreq));
> +
> +             while ((serial = find_node_by_devtype(serial, "serial"))) {
> +                     if (get_parent(serial) != soc)
> +                             continue;
> +
> +                     setprop(serial, "clock-frequency", &bd.bi_busfreq,
> +                             sizeof(bd.bi_busfreq));
> +             }
> +     }
> +}
> +
> +void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
> +                   unsigned long r6, unsigned long r7)
> +{
> +     CUBOOT_INIT();
> +     fdt_init(_dtb_start);
> +     serial_console_init();
> +     platform_ops.fixups = platform_fixups;
> +}
> diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig 
> b/arch/powerpc/platforms/embedded6xx/Kconfig
> index 8924095..be5cdd2 100644
> --- a/arch/powerpc/platforms/embedded6xx/Kconfig
> +++ b/arch/powerpc/platforms/embedded6xx/Kconfig
> @@ -16,6 +16,17 @@ config LINKSTATION
>         Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based
>         Terastation systems should be supported too.
>  
> +config STORCENTER
> +     bool "IOMEGA StorCenter"
> +     depends on EMBEDDED6xx
> +     select MPIC
> +     select FSL_SOC
> +     select PPC_UDBG_16550 if SERIAL_8250
> +     select WANT_DEVICE_TREE
> +     help
> +       Select STORCENTER if configuring for the iomega StorCenter
> +       with an 8241 CPU in it.
> +
>  config MPC7448HPC2
>       bool "Freescale MPC7448HPC2(Taiga)"
>       depends on EMBEDDED6xx
> @@ -56,7 +67,7 @@ config TSI108_BRIDGE
>  
>  config MPC10X_BRIDGE
>       bool
> -     depends on LINKSTATION
> +     depends on LINKSTATION || STORCENTER
>       select PPC_INDIRECT_PCI
>       default y
>  
> @@ -67,7 +78,7 @@ config MV64X60
>  
>  config MPC10X_OPENPIC
>       bool
> -     depends on LINKSTATION
> +     depends on LINKSTATION || STORCENTER
>       default y

There are many boards out there with mpc10x chips; we really don't want 
to maintain a huge list of them in the dependency list of these options.

Can we take out the dependencies and the default y, and just select them 
in the individual board configs?

> +#ifdef CONFIG_PCI
> +     int len;
> +     struct pci_controller *hose;
> +     const int *bus_range;
> +
> +     printk("Adding PCI host bridge %s\n", dev->full_name);
> +
> +     bus_range = of_get_property(dev, "bus-range", &len);
> +     if (bus_range == NULL || len < 2 * sizeof(int))
> +             printk(KERN_WARNING "Can't get bus-range for %s, assume"
> +                             " bus 0\n", dev->full_name);

This warning should probably go away.  Does this board even have 
multiple PCI host buses?  Why is this done from board-specific code, anyway?

> +static void storcenter_restart(char *cmd)
> +{
> +     /* Insert restart-stuff */
> +}
> +
> +static void storcenter_power_off(void)
> +{
> +     /* Insert powerdown-stuff */
> +}

Shouldn't these be omitted until they actually do something, so that the 
generic infinite loop implementations can be used?

> +static void storcenter_show_cpuinfo(struct seq_file *m)
> +{
> +     seq_printf(m, "vendor\t\t: IOMEGA\n");
> +     seq_printf(m, "machine\t\t: StorCenter\n");
> +}

ppc_md.name is printed by the generic cpuinfo handler; this is redundant.

-Scott

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to