On Fri, Sep 10, 2010 at 11:27:37AM -0700, tma...@apm.com wrote:
>From: Tirumala Marri <tma...@apm.com>
>
>This patch adds CPU, device tree, defconfig and bluestone board
>support for APM821xx SoC.
>
>Signed-off-by: Tirumala R Marri <tma...@apm.com>
>+      cpus {
>+              #address-cells = <1>;
>+              #size-cells = <0>;
>+
>+              c...@0 {
>+                      device_type = "cpu";
>+              model = "PowerPC,464";

Let's just keep this as it was in your first patch for now.  See why in
later comments.  (Also, the whitespace is odd here anyway.)

>+                      reg = <0x00000000>;
>+                      clock-frequency = <0>; /* Filled in by U-Boot */

Out of curiosity, which version of U-Boot has (or will have) this support?

>diff --git a/arch/powerpc/configs/44x/bluestone_defconfig 
>b/arch/powerpc/configs/44x/bluestone_defconfig
>new file mode 100644
>index 0000000..ac65b48
>--- /dev/null
>+++ b/arch/powerpc/configs/44x/bluestone_defconfig

This defconfig is much better.  Thanks.

>diff --git a/arch/powerpc/kernel/cpu_setup_44x.S 
>b/arch/powerpc/kernel/cpu_setup_44x.S
>index 7d606f8..549f482 100644
>--- a/arch/powerpc/kernel/cpu_setup_44x.S
>+++ b/arch/powerpc/kernel/cpu_setup_44x.S
>@@ -35,6 +35,7 @@ _GLOBAL(__setup_cpu_440grx)
> _GLOBAL(__setup_cpu_460ex)
> _GLOBAL(__setup_cpu_460gt)
> _GLOBAL(__setup_cpu_460sx)
>+_GLOBAL(__setup_cpu_464)
>       mflr    r4
>       bl      __init_fpu_44x
>       bl      __fixup_440A_mcheck

This doesn't look correct.  Not all 464 cores will have an FPU.
Additionally, if this were correct then you could just replace all of
the 460xx setup functions with a single one instead of adding one for
464 cores and ignoring those.

>diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
>index 1f9123f..89e55b1 100644
>--- a/arch/powerpc/kernel/cputable.c
>+++ b/arch/powerpc/kernel/cputable.c
>@@ -48,6 +48,7 @@ extern void __setup_cpu_440x5(unsigned long offset, struct 
>cpu_spec* spec);
> extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec);
> extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec);
> extern void __setup_cpu_460sx(unsigned long offset, struct cpu_spec *spec);
>+extern void __setup_cpu_464(unsigned long offset, struct cpu_spec *spec);
> extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
> extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
> extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
>@@ -1805,6 +1806,20 @@ static struct cpu_spec __initdata cpu_specs[] = {
>               .machine_check          = machine_check_440A,
>               .platform               = "ppc440",
>       },
>+      { /* 464 in APM821xx */
>+              .pvr_mask               = 0xffffff00,
>+              .pvr_value              = 0x12C41C80,
>+              .cpu_name               = "464 in APM821xx",

That's a bit of an odd cpu_name.  Let's just stick with the SoC name for
this, as the PVR really identifies the SoC on 4xx, not the core.  I'd
suggest just creating the __setup_cpu_apm821xx function for now.  We can
sort out how to break out the 4xx core inside the SoC later.

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

Reply via email to