diff mbox series

platform: kendryte/k210: fixup FDT

Message ID 20200818154837.4190-1-xypron.glpk@gmx.de
State Accepted
Headers show
Series platform: kendryte/k210: fixup FDT | expand

Commit Message

Heinrich Schuchardt Aug. 18, 2020, 3:48 p.m. UTC
When passing the device tree to the next stage we should apply necessary
device tree fix-ups first. These include:

* fix up the CPU node in the device tree
* fix up the PLIC node in the device tree
* fix up the reserved memory node in the device tree

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 platform/kendryte/k210/platform.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

--
2.28.0

Comments

Atish Patra Aug. 18, 2020, 5:16 p.m. UTC | #1
On Tue, Aug 18, 2020 at 8:54 AM Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> When passing the device tree to the next stage we should apply necessary
> device tree fix-ups first. These include:
>
> * fix up the CPU node in the device tree
> * fix up the PLIC node in the device tree
> * fix up the reserved memory node in the device tree
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
>  platform/kendryte/k210/platform.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c
> index 5c28fd9..75883ed 100644
> --- a/platform/kendryte/k210/platform.c
> +++ b/platform/kendryte/k210/platform.c
> @@ -12,6 +12,7 @@
>  #include <sbi/sbi_console.h>
>  #include <sbi/sbi_const.h>
>  #include <sbi/sbi_platform.h>
> +#include <sbi_utils/fdt/fdt_fixup.h>
>  #include <sbi_utils/irqchip/plic.h>
>  #include <sbi_utils/serial/sifive-uart.h>
>  #include <sbi_utils/sys/clint.h>
> @@ -67,6 +68,21 @@ static u32 k210_get_clk_freq(void)
>         return pll0_freq / div;
>  }
>
> +static int k210_final_init(bool cold_boot)
> +{
> +       void *fdt;
> +
> +       if (!cold_boot)
> +               return 0;
> +
> +       fdt = sbi_scratch_thishart_arg1_ptr();
> +
> +       fdt_cpu_fixup(fdt);
> +       fdt_fixups(fdt);
> +
> +       return 0;
> +}
> +
>  static int k210_console_init(void)
>  {
>         return sifive_uart_init(K210_UART_BASE_ADDR, k210_get_clk_freq(),
> @@ -122,6 +138,8 @@ static int k210_system_reset(u32 type)
>  }
>
>  const struct sbi_platform_operations platform_ops = {
> +       .final_init     = k210_final_init,
> +
>         .console_init   = k210_console_init,
>         .console_putc   = sifive_uart_putc,
>         .console_getc   = sifive_uart_getc,
> --
> 2.28.0
>
>
> --
> opensbi mailing list
> opensbi@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi

Reviewed-by: Atish Patra <atish.patra@wdc.com>
Anup Patel Aug. 20, 2020, 11:39 a.m. UTC | #2
> -----Original Message-----
> From: Atish Patra <atishp@atishpatra.org>
> Sent: 18 August 2020 22:47
> To: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Cc: Anup Patel <Anup.Patel@wdc.com>; Atish Patra
> <Atish.Patra@wdc.com>; Damien Le Moal <Damien.LeMoal@wdc.com>; Bin
> Meng <bmeng.cn@gmail.com>; OpenSBI list <opensbi@lists.infradead.org>
> Subject: Re: [PATCH] platform: kendryte/k210: fixup FDT
> 
> On Tue, Aug 18, 2020 at 8:54 AM Heinrich Schuchardt <xypron.glpk@gmx.de>
> wrote:
> >
> > When passing the device tree to the next stage we should apply
> > necessary device tree fix-ups first. These include:
> >
> > * fix up the CPU node in the device tree
> > * fix up the PLIC node in the device tree
> > * fix up the reserved memory node in the device tree
> >
> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > ---
> >  platform/kendryte/k210/platform.c | 18 ++++++++++++++++++
> >  1 file changed, 18 insertions(+)
> >
> > diff --git a/platform/kendryte/k210/platform.c
> > b/platform/kendryte/k210/platform.c
> > index 5c28fd9..75883ed 100644
> > --- a/platform/kendryte/k210/platform.c
> > +++ b/platform/kendryte/k210/platform.c
> > @@ -12,6 +12,7 @@
> >  #include <sbi/sbi_console.h>
> >  #include <sbi/sbi_const.h>
> >  #include <sbi/sbi_platform.h>
> > +#include <sbi_utils/fdt/fdt_fixup.h>
> >  #include <sbi_utils/irqchip/plic.h>
> >  #include <sbi_utils/serial/sifive-uart.h>  #include
> > <sbi_utils/sys/clint.h> @@ -67,6 +68,21 @@ static u32
> > k210_get_clk_freq(void)
> >         return pll0_freq / div;
> >  }
> >
> > +static int k210_final_init(bool cold_boot) {
> > +       void *fdt;
> > +
> > +       if (!cold_boot)
> > +               return 0;
> > +
> > +       fdt = sbi_scratch_thishart_arg1_ptr();
> > +
> > +       fdt_cpu_fixup(fdt);
> > +       fdt_fixups(fdt);
> > +
> > +       return 0;
> > +}
> > +
> >  static int k210_console_init(void)
> >  {
> >         return sifive_uart_init(K210_UART_BASE_ADDR,
> > k210_get_clk_freq(), @@ -122,6 +138,8 @@ static int
> > k210_system_reset(u32 type)  }
> >
> >  const struct sbi_platform_operations platform_ops = {
> > +       .final_init     = k210_final_init,
> > +
> >         .console_init   = k210_console_init,
> >         .console_putc   = sifive_uart_putc,
> >         .console_getc   = sifive_uart_getc,
> > --
> > 2.28.0
> >
> >
> > --
> > opensbi mailing list
> > opensbi@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/opensbi
> 
> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> 

Applied this patch to the riscv/opensbi repo

Regards,
Anup
diff mbox series

Patch

diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c
index 5c28fd9..75883ed 100644
--- a/platform/kendryte/k210/platform.c
+++ b/platform/kendryte/k210/platform.c
@@ -12,6 +12,7 @@ 
 #include <sbi/sbi_console.h>
 #include <sbi/sbi_const.h>
 #include <sbi/sbi_platform.h>
+#include <sbi_utils/fdt/fdt_fixup.h>
 #include <sbi_utils/irqchip/plic.h>
 #include <sbi_utils/serial/sifive-uart.h>
 #include <sbi_utils/sys/clint.h>
@@ -67,6 +68,21 @@  static u32 k210_get_clk_freq(void)
 	return pll0_freq / div;
 }

+static int k210_final_init(bool cold_boot)
+{
+	void *fdt;
+
+	if (!cold_boot)
+		return 0;
+
+	fdt = sbi_scratch_thishart_arg1_ptr();
+
+	fdt_cpu_fixup(fdt);
+	fdt_fixups(fdt);
+
+	return 0;
+}
+
 static int k210_console_init(void)
 {
 	return sifive_uart_init(K210_UART_BASE_ADDR, k210_get_clk_freq(),
@@ -122,6 +138,8 @@  static int k210_system_reset(u32 type)
 }

 const struct sbi_platform_operations platform_ops = {
+	.final_init	= k210_final_init,
+
 	.console_init	= k210_console_init,
 	.console_putc	= sifive_uart_putc,
 	.console_getc	= sifive_uart_getc,