diff mbox

[U-Boot,4/8,v2] powerpc/85xx: add TPL_BOOT support

Message ID 1291218463-4211-1-git-send-email-Haiying.Wang@freescale.com
State Superseded
Delegated to: Kumar Gala
Headers show

Commit Message

Haiying Wang Dec. 1, 2010, 3:47 p.m. UTC
From: Haiying Wang <Haiying.Wang@freescale.com>

Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
---
Splitted from TPL patch to only address 85xx changes
 arch/powerpc/cpu/mpc85xx/cpu_init_nand.c |   34 ++++++++++-
 arch/powerpc/cpu/mpc85xx/start.S         |   12 ++--
 arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds  |   99 ++++++++++++++++++++++++++++++
 3 files changed, 137 insertions(+), 8 deletions(-)
 create mode 100644 arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds

Comments

Kumar Gala Jan. 21, 2011, 8:14 a.m. UTC | #1
On Dec 1, 2010, at 9:47 AM, <Haiying.Wang@freescale.com> <Haiying.Wang@freescale.com> wrote:

> From: Haiying Wang <Haiying.Wang@freescale.com>
> 
> Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
> ---
> Splitted from TPL patch to only address 85xx changes
> arch/powerpc/cpu/mpc85xx/cpu_init_nand.c |   34 ++++++++++-
> arch/powerpc/cpu/mpc85xx/start.S         |   12 ++--
> arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds  |   99 ++++++++++++++++++++++++++++++
> 3 files changed, 137 insertions(+), 8 deletions(-)
> create mode 100644 arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds

Did you plan on review this patch?

- k
Wolfgang Denk Jan. 22, 2011, 10:12 p.m. UTC | #2
Dear Haiying.Wang@freescale.com,

In message <1291218463-4211-1-git-send-email-Haiying.Wang@freescale.com> you wrote:
> From: Haiying Wang <Haiying.Wang@freescale.com>
> 
> Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
> ---
> Splitted from TPL patch to only address 85xx changes
>  arch/powerpc/cpu/mpc85xx/cpu_init_nand.c |   34 ++++++++++-
>  arch/powerpc/cpu/mpc85xx/start.S         |   12 ++--
>  arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds  |   99 ++++++++++++++++++++++++++++++
>  3 files changed, 137 insertions(+), 8 deletions(-)
>  create mode 100644 arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds
...
> - * Copyright 2009 Freescale Semiconductor, Inc.
> + * Copyright 2010 Freescale Semiconductor, Inc.

You should not undo a previous copyright.  I guess you mean:

  Copyright 2009-2010 Freescale Semiconductor, Inc.

?

> +DECLARE_GLOBAL_DATA_PTR;

Please move this up to top of file.

> +unsigned long get_tbclk(void)
> +{
> +#ifdef CONFIG_FSL_CORENET
> +	return (gd->bus_clk + 8) / 16;
> +#else
> +	return (gd->bus_clk + 4UL)/8UL;
> +#endif

This looks inconsistent. Either this should be "... +8UL) / 16UL" or
"... + 4) / 8;"

> -#ifndef CONFIG_NAND_SPL
> +#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_TPL_BOOT)
>  	GOT_ENTRY(_start)
>  	GOT_ENTRY(_start_of_vectors)
>  	GOT_ENTRY(_end_of_vectors)
>  	GOT_ENTRY(transfer_to_handler)
> -#endif
> +#endif /* !CONFIG_TPL_BOOT || !CONFIG_NAND_SPL*/

Should that be

   #endif /* !CONFIG_TPL_BOOT && !CONFIG_NAND_SPL*/

instead?

And can we please make this consistent, i. e. as you do in the
following:

> +#endif  /* !CONFIG_NAND_SPL && !CONFIG_TPL_BOOT */

Best regards,

Wolfgang Denk
Haiying Wang Jan. 24, 2011, 3:45 a.m. UTC | #3
On Sat, 2011-01-22 at 23:12 +0100, Wolfgang Denk wrote:
> You should not undo a previous copyright.  I guess you mean:
> 
>   Copyright 2009-2010 Freescale Semiconductor, Inc.
> 
> ?

Yes. Sorry about it.

> > +DECLARE_GLOBAL_DATA_PTR;
> 
> Please move this up to top of file.
OK.

> > +unsigned long get_tbclk(void)
> > +{
> > +#ifdef CONFIG_FSL_CORENET
> > +	return (gd->bus_clk + 8) / 16;
> > +#else
> > +	return (gd->bus_clk + 4UL)/8UL;
> > +#endif
> 
> This looks inconsistent. Either this should be "... +8UL) / 16UL" or
> "... + 4) / 8;"
This part was copied from arch/powerpc/cpu/mpc85xx/cpu.c, just want too reduce the image size without including that file(cpu.c). Will fix it.

> > -#ifndef CONFIG_NAND_SPL
> > +#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_TPL_BOOT)
> >  	GOT_ENTRY(_start)
> >  	GOT_ENTRY(_start_of_vectors)
> >  	GOT_ENTRY(_end_of_vectors)
> >  	GOT_ENTRY(transfer_to_handler)
> > -#endif
> > +#endif /* !CONFIG_TPL_BOOT || !CONFIG_NAND_SPL*/
> 
> Should that be
> 
>    #endif /* !CONFIG_TPL_BOOT && !CONFIG_NAND_SPL*/
> 
> instead?
Yes. Thanks for pointing out.

> And can we please make this consistent, i. e. as you do in the
> following:
> 
> > +#endif  /* !CONFIG_NAND_SPL && !CONFIG_TPL_BOOT */
> 
OK.

Thanks.

Haiying
Wolfgang Denk Jan. 24, 2011, 12:37 p.m. UTC | #4
Dear Haiying Wang,

In message <1295840749.2196.3.camel@haiying-laptop> you wrote:
>
> > > +#ifdef CONFIG_FSL_CORENET
> > > +	return (gd->bus_clk + 8) / 16;
> > > +#else
> > > +	return (gd->bus_clk + 4UL)/8UL;
> > > +#endif
> > 
> > This looks inconsistent. Either this should be "... +8UL) / 16UL" or
> > "... + 4) / 8;"
> This part was copied from arch/powerpc/cpu/mpc85xx/cpu.c, just want too reduce the image size without including that file(cpu.c). Will fix it.

Instead of copying, can we please move it to some common code?


Best regards,

Wolfgang Denk
diff mbox

Patch

diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c b/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c
index 8fb27ab..decedca 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c
@@ -1,5 +1,5 @@ 
 /*
- * Copyright 2009 Freescale Semiconductor, Inc.
+ * Copyright 2010 Freescale Semiconductor, Inc.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -40,7 +40,8 @@  void cpu_init_f(void)
 #error  CONFIG_NAND_BR_PRELIM, CONFIG_NAND_OR_PRELIM must be defined
 #endif
 
-#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L2_ADDR)
+#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L2_ADDR) \
+	&& !defined(CONFIG_TPL_BOOT)
 	ccsr_l2cache_t *l2cache = (void *)CONFIG_SYS_MPC85xx_L2_ADDR;
 	char *l2srbar;
 	int i;
@@ -60,4 +61,33 @@  void cpu_init_f(void)
 	for (i = 0; i < CONFIG_SYS_L2_SIZE; i++)
 		l2srbar[i] = 0;
 #endif
+#ifdef CONFIG_TPL_BOOT
+	init_used_tlb_cams();
+#endif
+}
+
+#ifdef CONFIG_TPL_BOOT
+/*
+ * Because the primary cpu's info is enough for the 2nd stage,  we define the
+ * cpu number to 1 so as to keep code size for 2nd stage binary as small as
+ * possible.
+ */
+int cpu_numcores()
+{
+	return 1;
+}
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Get timebase clock frequency
+ */
+unsigned long get_tbclk(void)
+{
+#ifdef CONFIG_FSL_CORENET
+	return (gd->bus_clk + 8) / 16;
+#else
+	return (gd->bus_clk + 4UL)/8UL;
+#endif
 }
+#endif /* CONFIG_TPL_BOOT */
diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 945c1b8..12b0ebb 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -58,12 +58,12 @@ 
 	GOT_ENTRY(_GOT2_TABLE_)
 	GOT_ENTRY(_FIXUP_TABLE_)
 
-#ifndef CONFIG_NAND_SPL
+#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_TPL_BOOT)
 	GOT_ENTRY(_start)
 	GOT_ENTRY(_start_of_vectors)
 	GOT_ENTRY(_end_of_vectors)
 	GOT_ENTRY(transfer_to_handler)
-#endif
+#endif /* !CONFIG_TPL_BOOT || !CONFIG_NAND_SPL*/
 
 	GOT_ENTRY(__init_end)
 	GOT_ENTRY(_end)
@@ -435,7 +435,7 @@  _start_cont:
 
 	/* NOTREACHED - board_init_f() does not return */
 
-#ifndef CONFIG_NAND_SPL
+#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_TPL_BOOT)
 	. = EXC_OFF_SYS_RESET
 	.globl	_start_of_vectors
 _start_of_vectors:
@@ -877,7 +877,7 @@  in32:
 in32r:
 	lwbrx	r3,r0,r3
 	blr
-#endif  /* !CONFIG_NAND_SPL */
+#endif  /* !CONFIG_NAND_SPL && !CONFIG_TPL_BOOT */
 
 /*------------------------------------------------------------------------------*/
 
@@ -1067,7 +1067,7 @@  clear_bss:
 	mr	r4,r10		/* Destination Address		*/
 	bl	board_init_r
 
-#ifndef CONFIG_NAND_SPL
+#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_TPL_BOOT)
 	/*
 	 * Copy exception vector code to low memory
 	 *
@@ -1207,4 +1207,4 @@  setup_ivors:
 
 #include "fixed_ivor.S"
 	blr
-#endif /* !CONFIG_NAND_SPL */
+#endif /* !CONFIG_NAND_SPL && !CONFIG_TPL_BOOT */
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds
new file mode 100644
index 0000000..1c17acf
--- /dev/null
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-tpl.lds
@@ -0,0 +1,99 @@ 
+/*
+ * Copyright 2010 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+OUTPUT_ARCH(powerpc)
+PHDRS
+{
+  text PT_LOAD;
+  bss PT_LOAD;
+}
+
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  . = + SIZEOF_HEADERS;
+  .interp : { *(.interp) }
+  .text      :
+  {
+    *(.text*)
+   } :text
+    _etext = .;
+    PROVIDE (etext = .);
+    .rodata    :
+   {
+    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
+  } :text
+
+  /* Read-write section, merged into data segment: */
+  . = (. + 0x00FF) & 0xFFFFFF00;
+  _erotext = .;
+  PROVIDE (erotext = .);
+
+ .reloc   :
+  {
+    KEEP(*(.got))
+    _GOT2_TABLE_ = .;
+    *(.got2)
+    _FIXUP_TABLE_ = .;
+    KEEP(*(.fixup))
+  }
+  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
+  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
+
+  .data    :
+  {
+    *(.data*)
+    *(.sdata*)
+  }
+  _edata  =  .;
+  PROVIDE (edata = .);
+
+  . = .;
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+
+
+  . = ALIGN(256);
+  __init_begin = .;
+  .text.init : { *(.text.init) }
+  .data.init : { *(.data.init) }
+  . = ALIGN(256);
+  __init_end = .;
+
+  .bootpg ADDR(.text) - 0x1000 :
+  {
+    start.o	KEEP(*(.bootpg))
+  } :text = 0xffff
+
+  __bss_start = .;
+  .bss (NOLOAD)       :
+  {
+   *(.sbss*)
+   *(.bss*)
+   *(COMMON)
+  } :bss
+
+  . = ALIGN(4);
+  _end = . ;
+  PROVIDE (end = .);
+}