Re: [U-Boot] [PATCH 3/8] ARMv8/fsl-lsch3: Refactor spin-table code

2014-10-27 Thread arnab.b...@freescale.com
Hi Albert

 -Original Message-
 From: Albert ARIBAUD [mailto:albert.u.b...@aribaud.net]
 Sent: Monday, October 27, 2014 2:36 AM
 To: Basu Arnab-B45036
 Cc: marc.zyng...@arm.com; mark.rutl...@arm.com; Sun York-R58495; Yoder
 Stuart-B08248; u-boot@lists.denx.de
 Subject: Re: [U-Boot] [PATCH 3/8] ARMv8/fsl-lsch3: Refactor spin-table
 code
 
 Hello Arnab,
 
 On Thu, 28 Aug 2014 01:59:56 +0530, Arnab Basu arnab.b...@freescale.com
 wrote:
  This creates the function cpu_update_dt for ARMv8 which currently
  patches the cpu node in the device table and sets enable-method to
  spin-table.
 
  Signed-off-by: Arnab Basu arnab.b...@freescale.com
  Reviewed-by: Bhupesh Sharma bhupesh.sha...@freescale.com
  Cc: York Sun york...@freescale.com
  ---
 
 This patch fails to apply cleanly. Can you please rebase the series on
 top of current u-boot/master?

Yes, in fact I need to rework some of the other patches in the series too.
I got a little side tracked, hence the delay. I will get on this..

Thanks
Arnab

 
 Amicalement,
 --
 Albert.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 3/8] ARMv8/fsl-lsch3: Refactor spin-table code

2014-10-26 Thread Albert ARIBAUD
Hello Arnab,

On Thu, 28 Aug 2014 01:59:56 +0530, Arnab Basu
arnab.b...@freescale.com wrote:
 This creates the function cpu_update_dt for ARMv8 which currently
 patches the cpu node in the device table and sets enable-method to
 spin-table.
 
 Signed-off-by: Arnab Basu arnab.b...@freescale.com
 Reviewed-by: Bhupesh Sharma bhupesh.sha...@freescale.com
 Cc: York Sun york...@freescale.com
 ---

This patch fails to apply cleanly. Can you please rebase the series on
top of current u-boot/master?

Amicalement,
-- 
Albert.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 3/8] ARMv8/fsl-lsch3: Refactor spin-table code

2014-08-27 Thread Arnab Basu
This creates the function cpu_update_dt for ARMv8 which currently patches
the cpu node in the device table and sets enable-method to spin-table.

Signed-off-by: Arnab Basu arnab.b...@freescale.com
Reviewed-by: Bhupesh Sharma bhupesh.sha...@freescale.com
Cc: York Sun york...@freescale.com
---
 arch/arm/cpu/armv8/Makefile  |1 +
 arch/arm/cpu/armv8/{fsl-lsch3/fdt.c = cpu-dt.c} |   37 ++
 arch/arm/cpu/armv8/fsl-lsch3/fdt.c   |   46 --
 3 files changed, 38 insertions(+), 46 deletions(-)
 copy arch/arm/cpu/armv8/{fsl-lsch3/fdt.c = cpu-dt.c} (62%)

diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile
index 7d93f59..4f0ea87 100644
--- a/arch/arm/cpu/armv8/Makefile
+++ b/arch/arm/cpu/armv8/Makefile
@@ -14,3 +14,4 @@ obj-y += exceptions.o
 obj-y  += cache.o
 obj-y  += tlb.o
 obj-y  += transition.o
+obj-y  += cpu-dt.o
diff --git a/arch/arm/cpu/armv8/fsl-lsch3/fdt.c b/arch/arm/cpu/armv8/cpu-dt.c
similarity index 62%
copy from arch/arm/cpu/armv8/fsl-lsch3/fdt.c
copy to arch/arm/cpu/armv8/cpu-dt.c
index 2dbcdcb..9792bc0 100644
--- a/arch/arm/cpu/armv8/fsl-lsch3/fdt.c
+++ b/arch/arm/cpu/armv8/cpu-dt.c
@@ -7,17 +7,24 @@
 #include common.h
 #include libfdt.h
 #include fdt_support.h
-#include mp.h
 
 #ifdef CONFIG_MP
-void ft_fixup_cpu(void *blob)
+
+__weak u64 arch_get_release_addr(u64 cpu_id)
+{
+   return 0;
+}
+
+__weak void arch_spin_table_reserve_mem(void *fdt)
+{
+}
+
+static void cpu_update_dt_spin_table(void *blob)
 {
int off;
-   __maybe_unused u64 spin_tbl_addr = (u64)get_spin_tbl_addr();
-   fdt32_t *reg;
+   __maybe_unused u64 val;
int addr_cells;
-   u64 val;
-   size_t *boot_code_size = (__secondary_boot_code_size);
+   __maybe_unused fdt32_t *reg;
 
off = fdt_node_offset_by_prop_value(blob, -1, device_type, cpus, 4);
of_bus_default_count_cells(blob, off, addr_cells, NULL);
@@ -26,31 +33,29 @@ void ft_fixup_cpu(void *blob)
while (off != -FDT_ERR_NOTFOUND) {
reg = (fdt32_t *)fdt_getprop(blob, off, reg, 0);
if (reg) {
-   val = spin_tbl_addr;
-#ifndef CONFIG_FSL_SMP_RELEASE_ALL
-   val += id_to_core(of_read_number(reg, addr_cells))
-   * SPIN_TABLE_ELEM_SIZE;
-#endif
+   val = arch_get_release_addr(
+   of_read_number(reg, addr_cells));
val = cpu_to_fdt64(val);
fdt_setprop_string(blob, off, enable-method,
   spin-table);
fdt_setprop(blob, off, cpu-release-addr,
val, sizeof(val));
} else {
-   puts(cpu NULL\n);
+   puts(Unable to read reg property\n);
}
+
off = fdt_node_offset_by_prop_value(blob, off, device_type,
cpu, 4);
}
 
-   fdt_add_mem_rsv(blob, (uintptr_t)secondary_boot_code,
-   *boot_code_size);
+   arch_spin_table_reserve_mem(blob);
 }
 #endif
 
-void ft_cpu_setup(void *blob, bd_t *bd)
+int cpu_update_dt(void *fdt)
 {
 #ifdef CONFIG_MP
-   ft_fixup_cpu(blob);
+   cpu_update_dt_spin_table(fdt);
 #endif
+   return 0;
 }
diff --git a/arch/arm/cpu/armv8/fsl-lsch3/fdt.c 
b/arch/arm/cpu/armv8/fsl-lsch3/fdt.c
index 2dbcdcb..bb35393 100644
--- a/arch/arm/cpu/armv8/fsl-lsch3/fdt.c
+++ b/arch/arm/cpu/armv8/fsl-lsch3/fdt.c
@@ -10,42 +10,28 @@
 #include mp.h
 
 #ifdef CONFIG_MP
-void ft_fixup_cpu(void *blob)
+u64 arch_get_release_addr(u64 cpu_id)
 {
-   int off;
-   __maybe_unused u64 spin_tbl_addr = (u64)get_spin_tbl_addr();
-   fdt32_t *reg;
-   int addr_cells;
u64 val;
+
+   val = (u64)get_spin_tbl_addr();
+   val += id_to_core(cpu_id) * SPIN_TABLE_ELEM_SIZE;
+
+   return val;
+}
+
+void arch_spin_table_reserve_mem(void *fdt)
+{
size_t *boot_code_size = (__secondary_boot_code_size);
 
-   off = fdt_node_offset_by_prop_value(blob, -1, device_type, cpus, 4);
-   of_bus_default_count_cells(blob, off, addr_cells, NULL);
-
-   off = fdt_node_offset_by_prop_value(blob, -1, device_type, cpu, 4);
-   while (off != -FDT_ERR_NOTFOUND) {
-   reg = (fdt32_t *)fdt_getprop(blob, off, reg, 0);
-   if (reg) {
-   val = spin_tbl_addr;
-#ifndef CONFIG_FSL_SMP_RELEASE_ALL
-   val += id_to_core(of_read_number(reg, addr_cells))
-   * SPIN_TABLE_ELEM_SIZE;
-#endif
-   val = cpu_to_fdt64(val);
-   fdt_setprop_string(blob, off, enable-method,
-  spin-table);
-   fdt_setprop(blob, off, cpu-release-addr,
-   val,