diff mbox series

[v2,1/3] riscv: sophgo: milkv_duo: initial support added

Message ID 20240114180741.2114-2-seashell11234455@gmail.com
State Superseded
Delegated to: Andes
Headers show
Series riscv: sophgo: milkv_duo: add support for Milk-V Duo board | expand

Commit Message

Kongyang Liu Jan. 14, 2024, 6:07 p.m. UTC
Add support for Sophgo's Milk-V Duo board, only minimal device tree and
serial console are enabled, and it can boot via vendor first stage
bootloader.

Signed-off-by: Kongyang Liu <seashell11234455@gmail.com>

---

Changes in v2:
- Fold the defconfig patch to first patch
- Remove unnecessary environment settings of consoledev and baudrate in
config

 arch/riscv/Kconfig                 |  4 ++++
 board/sophgo/milkv_duo/Kconfig     | 28 ++++++++++++++++++++++++++++
 board/sophgo/milkv_duo/MAINTAINERS |  6 ++++++
 board/sophgo/milkv_duo/Makefile    |  5 +++++
 board/sophgo/milkv_duo/board.c     |  9 +++++++++
 configs/milkv_duo_defconfig        | 24 ++++++++++++++++++++++++
 include/configs/milkv_duo.h        | 12 ++++++++++++
 7 files changed, 88 insertions(+)
 create mode 100644 board/sophgo/milkv_duo/Kconfig
 create mode 100644 board/sophgo/milkv_duo/MAINTAINERS
 create mode 100644 board/sophgo/milkv_duo/Makefile
 create mode 100644 board/sophgo/milkv_duo/board.c
 create mode 100644 configs/milkv_duo_defconfig
 create mode 100644 include/configs/milkv_duo.h

Comments

Heinrich Schuchardt Jan. 14, 2024, 9:57 p.m. UTC | #1
On 1/14/24 19:07, Kongyang Liu wrote:
> Add support for Sophgo's Milk-V Duo board, only minimal device tree and
> serial console are enabled, and it can boot via vendor first stage
> bootloader.
>
> Signed-off-by: Kongyang Liu <seashell11234455@gmail.com>

The sequence of patches seems to be wrong.

We expect that after each single patch building succeeds. But the
device-tree is neither in this patch nor in a preceding patch. Please,
swap patch 1 and 2.

make[2]: *** No rule to make target
'arch/riscv/dts/cv1800b-milkv-duo.dtb', needed by 'dtbs'.


>
> ---
>
> Changes in v2:
> - Fold the defconfig patch to first patch
> - Remove unnecessary environment settings of consoledev and baudrate in
> config
>
>   arch/riscv/Kconfig                 |  4 ++++
>   board/sophgo/milkv_duo/Kconfig     | 28 ++++++++++++++++++++++++++++
>   board/sophgo/milkv_duo/MAINTAINERS |  6 ++++++
>   board/sophgo/milkv_duo/Makefile    |  5 +++++
>   board/sophgo/milkv_duo/board.c     |  9 +++++++++
>   configs/milkv_duo_defconfig        | 24 ++++++++++++++++++++++++
>   include/configs/milkv_duo.h        | 12 ++++++++++++
>   7 files changed, 88 insertions(+)
>   create mode 100644 board/sophgo/milkv_duo/Kconfig
>   create mode 100644 board/sophgo/milkv_duo/MAINTAINERS
>   create mode 100644 board/sophgo/milkv_duo/Makefile
>   create mode 100644 board/sophgo/milkv_duo/board.c
>   create mode 100644 configs/milkv_duo_defconfig
>   create mode 100644 include/configs/milkv_duo.h
>
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 6d0d812ddb..de99ce3a28 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -14,6 +14,9 @@ config TARGET_ANDES_AE350
>   config TARGET_MICROCHIP_ICICLE
>   	bool "Support Microchip PolarFire-SoC Icicle Board"
>
> +config TARGET_MILKV_DUO
> +	bool "Support Milk-v Duo Board"
> +
>   config TARGET_OPENPITON_RISCV64
>   	bool "Support RISC-V cores on OpenPiton SoC"
>
> @@ -80,6 +83,7 @@ source "board/openpiton/riscv64/Kconfig"
>   source "board/sifive/unleashed/Kconfig"
>   source "board/sifive/unmatched/Kconfig"
>   source "board/sipeed/maix/Kconfig"
> +source "board/sophgo/milkv_duo/Kconfig"
>   source "board/starfive/visionfive2/Kconfig"
>   source "board/thead/th1520_lpi4a/Kconfig"

error: patch failed: arch/riscv/Kconfig:80

Please, rebase.


>
> diff --git a/board/sophgo/milkv_duo/Kconfig b/board/sophgo/milkv_duo/Kconfig
> new file mode 100644
> index 0000000000..2a458f291c
> --- /dev/null
> +++ b/board/sophgo/milkv_duo/Kconfig
> @@ -0,0 +1,28 @@
> +if TARGET_MILKV_DUO
> +
> +config SYS_BOARD
> +	default "milkv_duo"
> +
> +config SYS_VENDOR
> +	default "sophgo"
> +
> +config SYS_CPU
> +	default "generic"
> +
> +config SYS_CONFIG_NAME
> +	default "milkv_duo"
> +
> +config TEXT_BASE
> +	default 0x80200000
> +
> +config ENV_SIZE
> +	default 0x20000
> +
> +config ENV_SECT_SIZE
> +	default 0x40000
> +
> +config BOARD_SPECIFIC_OPTIONS
> +	def_bool y
> +	select GENERIC_RISCV
> +
> +endif
> diff --git a/board/sophgo/milkv_duo/MAINTAINERS b/board/sophgo/milkv_duo/MAINTAINERS
> new file mode 100644
> index 0000000000..651a0592f7
> --- /dev/null
> +++ b/board/sophgo/milkv_duo/MAINTAINERS
> @@ -0,0 +1,6 @@
> +Milk-V Duo
> +M:	Kongyang Liu <seashell11234455@gmail.com>
> +S:	Maintained
> +F:	board/sophgo/milkv_duo/
> +F:	configs/milkv_duo_defconfig
> +F:	doc/board/sophgo/milkv_duo.rst
> diff --git a/board/sophgo/milkv_duo/Makefile b/board/sophgo/milkv_duo/Makefile
> new file mode 100644
> index 0000000000..a087013f5c
> --- /dev/null
> +++ b/board/sophgo/milkv_duo/Makefile
> @@ -0,0 +1,5 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +# Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
> +
> +obj-y := board.o
> diff --git a/board/sophgo/milkv_duo/board.c b/board/sophgo/milkv_duo/board.c
> new file mode 100644
> index 0000000000..eaa47be173
> --- /dev/null
> +++ b/board/sophgo/milkv_duo/board.c
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
> + */
> +
> +int board_init(void)
> +{
> +	return 0;
> +}
> diff --git a/configs/milkv_duo_defconfig b/configs/milkv_duo_defconfig
> new file mode 100644
> index 0000000000..c4782639ef
> --- /dev/null
> +++ b/configs/milkv_duo_defconfig
> @@ -0,0 +1,24 @@
> +CONFIG_RISCV=y
> +CONFIG_SYS_MALLOC_LEN=0x820000
> +CONFIG_SYS_MALLOC_F_LEN=0x2000
> +CONFIG_NR_DRAM_BANKS=1
> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x82300000
> +CONFIG_DEFAULT_DEVICE_TREE="cv1800b-milkv-duo"
> +CONFIG_IDENT_STRING="milkv_duo"
> +CONFIG_SYS_LOAD_ADDR=0x80080000
> +CONFIG_TARGET_MILKV_DUO=y
> +CONFIG_ARCH_RV64I=y
> +CONFIG_RISCV_SMODE=y
> +CONFIG_FIT=y
> +CONFIG_SUPPORT_RAW_INITRD=y
> +CONFIG_HUSH_PARSER=y
> +CONFIG_SYS_PROMPT="milkv_duo# "
> +CONFIG_SYS_MAXARGS=64
> +CONFIG_SYS_CBSIZE=512
> +CONFIG_SYS_PBSIZE=544
> +CONFIG_SYS_BOOTM_LEN=0x4000000
> +CONFIG_ENV_OVERWRITE=y
> +CONFIG_SYS_NS16550=y
> +CONFIG_SYS_NS16550_MEM32=y
> +# CONFIG_EFI_LOADER is not set

Is there a limitation on the size of the binary or why are you excluding
this option?

With the loady command you should be able to load an EFI binary via the
UART and then launch it. U-Boot comes with some EFI test applications
that you could run like smbiosdump.efi.

Best regards

Heinrich

> diff --git a/include/configs/milkv_duo.h b/include/configs/milkv_duo.h
> new file mode 100644
> index 0000000000..0b4109dc1f
> --- /dev/null
> +++ b/include/configs/milkv_duo.h
> @@ -0,0 +1,12 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
> + *
> + */
> +
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +#define CFG_SYS_SDRAM_BASE         0x80000000
> +
> +#endif /* __CONFIG_H */
Kongyang Liu Jan. 16, 2024, 4:05 p.m. UTC | #2
Heinrich Schuchardt <xypron.glpk@gmx.de> 于2024年1月15日周一 05:57写道:
>
> On 1/14/24 19:07, Kongyang Liu wrote:
> > Add support for Sophgo's Milk-V Duo board, only minimal device tree and
> > serial console are enabled, and it can boot via vendor first stage
> > bootloader.
> >
> > Signed-off-by: Kongyang Liu <seashell11234455@gmail.com>
>
> The sequence of patches seems to be wrong.
>
> We expect that after each single patch building succeeds. But the
> device-tree is neither in this patch nor in a preceding patch. Please,
> swap patch 1 and 2.
>
> make[2]: *** No rule to make target
> 'arch/riscv/dts/cv1800b-milkv-duo.dtb', needed by 'dtbs'.
>
>
I forgot defconfig relies on dts files, I will swap patch 1 and 2.

> >
> > ---
> >
> > Changes in v2:
> > - Fold the defconfig patch to first patch
> > - Remove unnecessary environment settings of consoledev and baudrate in
> > config
> >
> >   arch/riscv/Kconfig                 |  4 ++++
> >   board/sophgo/milkv_duo/Kconfig     | 28 ++++++++++++++++++++++++++++
> >   board/sophgo/milkv_duo/MAINTAINERS |  6 ++++++
> >   board/sophgo/milkv_duo/Makefile    |  5 +++++
> >   board/sophgo/milkv_duo/board.c     |  9 +++++++++
> >   configs/milkv_duo_defconfig        | 24 ++++++++++++++++++++++++
> >   include/configs/milkv_duo.h        | 12 ++++++++++++
> >   7 files changed, 88 insertions(+)
> >   create mode 100644 board/sophgo/milkv_duo/Kconfig
> >   create mode 100644 board/sophgo/milkv_duo/MAINTAINERS
> >   create mode 100644 board/sophgo/milkv_duo/Makefile
> >   create mode 100644 board/sophgo/milkv_duo/board.c
> >   create mode 100644 configs/milkv_duo_defconfig
> >   create mode 100644 include/configs/milkv_duo.h
> >
> > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> > index 6d0d812ddb..de99ce3a28 100644
> > --- a/arch/riscv/Kconfig
> > +++ b/arch/riscv/Kconfig
> > @@ -14,6 +14,9 @@ config TARGET_ANDES_AE350
> >   config TARGET_MICROCHIP_ICICLE
> >       bool "Support Microchip PolarFire-SoC Icicle Board"
> >
> > +config TARGET_MILKV_DUO
> > +     bool "Support Milk-v Duo Board"
> > +
> >   config TARGET_OPENPITON_RISCV64
> >       bool "Support RISC-V cores on OpenPiton SoC"
> >
> > @@ -80,6 +83,7 @@ source "board/openpiton/riscv64/Kconfig"
> >   source "board/sifive/unleashed/Kconfig"
> >   source "board/sifive/unmatched/Kconfig"
> >   source "board/sipeed/maix/Kconfig"
> > +source "board/sophgo/milkv_duo/Kconfig"
> >   source "board/starfive/visionfive2/Kconfig"
> >   source "board/thead/th1520_lpi4a/Kconfig"
>
> error: patch failed: arch/riscv/Kconfig:80
>
> Please, rebase.
>
>
I will rebase it.

> >
> > diff --git a/board/sophgo/milkv_duo/Kconfig b/board/sophgo/milkv_duo/Kconfig
> > new file mode 100644
> > index 0000000000..2a458f291c
> > --- /dev/null
> > +++ b/board/sophgo/milkv_duo/Kconfig
> > @@ -0,0 +1,28 @@
> > +if TARGET_MILKV_DUO
> > +
> > +config SYS_BOARD
> > +     default "milkv_duo"
> > +
> > +config SYS_VENDOR
> > +     default "sophgo"
> > +
> > +config SYS_CPU
> > +     default "generic"
> > +
> > +config SYS_CONFIG_NAME
> > +     default "milkv_duo"
> > +
> > +config TEXT_BASE
> > +     default 0x80200000
> > +
> > +config ENV_SIZE
> > +     default 0x20000
> > +
> > +config ENV_SECT_SIZE
> > +     default 0x40000
> > +
> > +config BOARD_SPECIFIC_OPTIONS
> > +     def_bool y
> > +     select GENERIC_RISCV
> > +
> > +endif
> > diff --git a/board/sophgo/milkv_duo/MAINTAINERS b/board/sophgo/milkv_duo/MAINTAINERS
> > new file mode 100644
> > index 0000000000..651a0592f7
> > --- /dev/null
> > +++ b/board/sophgo/milkv_duo/MAINTAINERS
> > @@ -0,0 +1,6 @@
> > +Milk-V Duo
> > +M:   Kongyang Liu <seashell11234455@gmail.com>
> > +S:   Maintained
> > +F:   board/sophgo/milkv_duo/
> > +F:   configs/milkv_duo_defconfig
> > +F:   doc/board/sophgo/milkv_duo.rst
> > diff --git a/board/sophgo/milkv_duo/Makefile b/board/sophgo/milkv_duo/Makefile
> > new file mode 100644
> > index 0000000000..a087013f5c
> > --- /dev/null
> > +++ b/board/sophgo/milkv_duo/Makefile
> > @@ -0,0 +1,5 @@
> > +# SPDX-License-Identifier: GPL-2.0+
> > +#
> > +# Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
> > +
> > +obj-y := board.o
> > diff --git a/board/sophgo/milkv_duo/board.c b/board/sophgo/milkv_duo/board.c
> > new file mode 100644
> > index 0000000000..eaa47be173
> > --- /dev/null
> > +++ b/board/sophgo/milkv_duo/board.c
> > @@ -0,0 +1,9 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
> > + */
> > +
> > +int board_init(void)
> > +{
> > +     return 0;
> > +}
> > diff --git a/configs/milkv_duo_defconfig b/configs/milkv_duo_defconfig
> > new file mode 100644
> > index 0000000000..c4782639ef
> > --- /dev/null
> > +++ b/configs/milkv_duo_defconfig
> > @@ -0,0 +1,24 @@
> > +CONFIG_RISCV=y
> > +CONFIG_SYS_MALLOC_LEN=0x820000
> > +CONFIG_SYS_MALLOC_F_LEN=0x2000
> > +CONFIG_NR_DRAM_BANKS=1
> > +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> > +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x82300000
> > +CONFIG_DEFAULT_DEVICE_TREE="cv1800b-milkv-duo"
> > +CONFIG_IDENT_STRING="milkv_duo"
> > +CONFIG_SYS_LOAD_ADDR=0x80080000
> > +CONFIG_TARGET_MILKV_DUO=y
> > +CONFIG_ARCH_RV64I=y
> > +CONFIG_RISCV_SMODE=y
> > +CONFIG_FIT=y
> > +CONFIG_SUPPORT_RAW_INITRD=y
> > +CONFIG_HUSH_PARSER=y
> > +CONFIG_SYS_PROMPT="milkv_duo# "
> > +CONFIG_SYS_MAXARGS=64
> > +CONFIG_SYS_CBSIZE=512
> > +CONFIG_SYS_PBSIZE=544
> > +CONFIG_SYS_BOOTM_LEN=0x4000000
> > +CONFIG_ENV_OVERWRITE=y
> > +CONFIG_SYS_NS16550=y
> > +CONFIG_SYS_NS16550_MEM32=y
> > +# CONFIG_EFI_LOADER is not set
>
> Is there a limitation on the size of the binary or why are you excluding
> this option?
>
> With the loady command you should be able to load an EFI binary via the
> UART and then launch it. U-Boot comes with some EFI test applications
> that you could run like smbiosdump.efi.
>
In my memory, enabling the CONFIG_EFI_LOADER option resulted in some
errors on this board, but I forgot what those errors were. I will
verify it, and if
there are no issues, I will enable this option.

Best regards
Kongyang Liu

> Best regards
>
> Heinrich
>
> > diff --git a/include/configs/milkv_duo.h b/include/configs/milkv_duo.h
> > new file mode 100644
> > index 0000000000..0b4109dc1f
> > --- /dev/null
> > +++ b/include/configs/milkv_duo.h
> > @@ -0,0 +1,12 @@
> > +/* SPDX-License-Identifier: GPL-2.0+ */
> > +/*
> > + * Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
> > + *
> > + */
> > +
> > +#ifndef __CONFIG_H
> > +#define __CONFIG_H
> > +
> > +#define CFG_SYS_SDRAM_BASE         0x80000000
> > +
> > +#endif /* __CONFIG_H */
>
diff mbox series

Patch

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 6d0d812ddb..de99ce3a28 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -14,6 +14,9 @@  config TARGET_ANDES_AE350
 config TARGET_MICROCHIP_ICICLE
 	bool "Support Microchip PolarFire-SoC Icicle Board"
 
+config TARGET_MILKV_DUO
+	bool "Support Milk-v Duo Board"
+
 config TARGET_OPENPITON_RISCV64
 	bool "Support RISC-V cores on OpenPiton SoC"
 
@@ -80,6 +83,7 @@  source "board/openpiton/riscv64/Kconfig"
 source "board/sifive/unleashed/Kconfig"
 source "board/sifive/unmatched/Kconfig"
 source "board/sipeed/maix/Kconfig"
+source "board/sophgo/milkv_duo/Kconfig"
 source "board/starfive/visionfive2/Kconfig"
 source "board/thead/th1520_lpi4a/Kconfig"
 
diff --git a/board/sophgo/milkv_duo/Kconfig b/board/sophgo/milkv_duo/Kconfig
new file mode 100644
index 0000000000..2a458f291c
--- /dev/null
+++ b/board/sophgo/milkv_duo/Kconfig
@@ -0,0 +1,28 @@ 
+if TARGET_MILKV_DUO
+
+config SYS_BOARD
+	default "milkv_duo"
+
+config SYS_VENDOR
+	default "sophgo"
+
+config SYS_CPU
+	default "generic"
+
+config SYS_CONFIG_NAME
+	default "milkv_duo"
+
+config TEXT_BASE
+	default 0x80200000
+
+config ENV_SIZE
+	default 0x20000
+
+config ENV_SECT_SIZE
+	default 0x40000
+
+config BOARD_SPECIFIC_OPTIONS
+	def_bool y
+	select GENERIC_RISCV
+
+endif
diff --git a/board/sophgo/milkv_duo/MAINTAINERS b/board/sophgo/milkv_duo/MAINTAINERS
new file mode 100644
index 0000000000..651a0592f7
--- /dev/null
+++ b/board/sophgo/milkv_duo/MAINTAINERS
@@ -0,0 +1,6 @@ 
+Milk-V Duo
+M:	Kongyang Liu <seashell11234455@gmail.com>
+S:	Maintained
+F:	board/sophgo/milkv_duo/
+F:	configs/milkv_duo_defconfig
+F:	doc/board/sophgo/milkv_duo.rst
diff --git a/board/sophgo/milkv_duo/Makefile b/board/sophgo/milkv_duo/Makefile
new file mode 100644
index 0000000000..a087013f5c
--- /dev/null
+++ b/board/sophgo/milkv_duo/Makefile
@@ -0,0 +1,5 @@ 
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
+
+obj-y := board.o
diff --git a/board/sophgo/milkv_duo/board.c b/board/sophgo/milkv_duo/board.c
new file mode 100644
index 0000000000..eaa47be173
--- /dev/null
+++ b/board/sophgo/milkv_duo/board.c
@@ -0,0 +1,9 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
+ */
+
+int board_init(void)
+{
+	return 0;
+}
diff --git a/configs/milkv_duo_defconfig b/configs/milkv_duo_defconfig
new file mode 100644
index 0000000000..c4782639ef
--- /dev/null
+++ b/configs/milkv_duo_defconfig
@@ -0,0 +1,24 @@ 
+CONFIG_RISCV=y
+CONFIG_SYS_MALLOC_LEN=0x820000
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x82300000
+CONFIG_DEFAULT_DEVICE_TREE="cv1800b-milkv-duo"
+CONFIG_IDENT_STRING="milkv_duo"
+CONFIG_SYS_LOAD_ADDR=0x80080000
+CONFIG_TARGET_MILKV_DUO=y
+CONFIG_ARCH_RV64I=y
+CONFIG_RISCV_SMODE=y
+CONFIG_FIT=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="milkv_duo# "
+CONFIG_SYS_MAXARGS=64
+CONFIG_SYS_CBSIZE=512
+CONFIG_SYS_PBSIZE=544
+CONFIG_SYS_BOOTM_LEN=0x4000000
+CONFIG_ENV_OVERWRITE=y
+CONFIG_SYS_NS16550=y
+CONFIG_SYS_NS16550_MEM32=y
+# CONFIG_EFI_LOADER is not set
diff --git a/include/configs/milkv_duo.h b/include/configs/milkv_duo.h
new file mode 100644
index 0000000000..0b4109dc1f
--- /dev/null
+++ b/include/configs/milkv_duo.h
@@ -0,0 +1,12 @@ 
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (c) 2024, Kongyang Liu <seashell11234455@gmail.com>
+ *
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CFG_SYS_SDRAM_BASE         0x80000000
+
+#endif /* __CONFIG_H */