diff options
-rw-r--r-- | arch/riscv/cpu/u-boot-spl.lds | 2 | ||||
-rw-r--r-- | arch/riscv/cpu/u-boot.lds | 3 | ||||
-rw-r--r-- | arch/riscv/dts/binman.dtsi | 2 | ||||
-rw-r--r-- | arch/riscv/dts/k1-bananapi-f3.dts | 3 | ||||
-rw-r--r-- | arch/riscv/dts/k1-pinctrl.dtsi | 19 | ||||
-rw-r--r-- | arch/riscv/dts/k1.dtsi | 8 | ||||
-rw-r--r-- | arch/riscv/dts/starfive-visionfive2-binman.dtsi | 1 | ||||
-rw-r--r-- | arch/riscv/lib/Makefile | 1 | ||||
-rw-r--r-- | arch/riscv/lib/board.c | 19 | ||||
-rw-r--r-- | board/emulation/qemu-riscv/qemu-riscv.c | 8 | ||||
-rw-r--r-- | board/sifive/unleashed/unleashed.c | 11 | ||||
-rw-r--r-- | board/sifive/unmatched/unmatched.c | 10 | ||||
-rw-r--r-- | board/starfive/visionfive2/MAINTAINERS | 2 | ||||
-rw-r--r-- | board/starfive/visionfive2/spl.c | 21 | ||||
-rw-r--r-- | board/starfive/visionfive2/starfive_visionfive2.c | 10 | ||||
-rw-r--r-- | configs/bananapi-f3_defconfig | 2 | ||||
-rw-r--r-- | doc/board/starfive/visionfive2.rst | 1 |
17 files changed, 79 insertions, 44 deletions
diff --git a/arch/riscv/cpu/u-boot-spl.lds b/arch/riscv/cpu/u-boot-spl.lds index 907094620bd..0717833df55 100644 --- a/arch/riscv/cpu/u-boot-spl.lds +++ b/arch/riscv/cpu/u-boot-spl.lds @@ -16,6 +16,7 @@ ENTRY(_start) SECTIONS { . = ALIGN(4); + __image_copy_start = ADDR(.text); .text : { arch/riscv/cpu/start.o (.text) *(.text*) @@ -46,6 +47,7 @@ SECTIONS _end = .; _image_binary_end = .; + __image_copy_end = .; .bss : { __bss_start = .; diff --git a/arch/riscv/cpu/u-boot.lds b/arch/riscv/cpu/u-boot.lds index 2ffe6ba3c8f..b11ea8b56d2 100644 --- a/arch/riscv/cpu/u-boot.lds +++ b/arch/riscv/cpu/u-boot.lds @@ -10,6 +10,7 @@ ENTRY(_start) SECTIONS { . = ALIGN(4); + __image_copy_start = ADDR(.text); .text : { arch/riscv/cpu/start.o (.text) } @@ -57,6 +58,8 @@ SECTIONS __efi_runtime_rel_stop = .; } + __image_copy_end = .; + /DISCARD/ : { *(.rela.plt*) } .rela.dyn : { __rel_dyn_start = .; diff --git a/arch/riscv/dts/binman.dtsi b/arch/riscv/dts/binman.dtsi index ceb916b74a7..5aeeeddb59f 100644 --- a/arch/riscv/dts/binman.dtsi +++ b/arch/riscv/dts/binman.dtsi @@ -35,7 +35,7 @@ compression = "none"; load = /bits/ 64 <CONFIG_TEXT_BASE>; - uboot_blob: blob-ext { + uboot_blob: u-boot-nodtb { filename = "u-boot-nodtb.bin"; }; }; diff --git a/arch/riscv/dts/k1-bananapi-f3.dts b/arch/riscv/dts/k1-bananapi-f3.dts index d2486f70906..6b5b83bcdb9 100644 --- a/arch/riscv/dts/k1-bananapi-f3.dts +++ b/arch/riscv/dts/k1-bananapi-f3.dts @@ -5,6 +5,7 @@ #include "k1.dtsi" #include "binman.dtsi" +#include "k1-pinctrl.dtsi" / { model = "Banana Pi BPI-F3"; @@ -21,5 +22,7 @@ }; &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_2_cfg>; status = "okay"; }; diff --git a/arch/riscv/dts/k1-pinctrl.dtsi b/arch/riscv/dts/k1-pinctrl.dtsi new file mode 100644 index 00000000000..14e7096fbcf --- /dev/null +++ b/arch/riscv/dts/k1-pinctrl.dtsi @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Copyright (C) 2022 Spacemit Inc. + * Copyright (C) 2025 Yixun Lan <dlan@gentoo.org> + */ + +#define K1_PADCONF(pin, func) (((pin) << 16) | (func)) + +&pinctrl { + uart0_2_cfg: uart0-2-cfg { + uart0-2-pins { + pinmux = <K1_PADCONF(68, 2)>, + <K1_PADCONF(69, 2)>; + + bias-pull-up = <0>; + drive-strength = <32>; + }; + }; +}; diff --git a/arch/riscv/dts/k1.dtsi b/arch/riscv/dts/k1.dtsi index 7c0f1b928e2..a633e43da32 100644 --- a/arch/riscv/dts/k1.dtsi +++ b/arch/riscv/dts/k1.dtsi @@ -470,5 +470,11 @@ #reset-cells = <1>; status = "disabled"; }; + + pinctrl: pinctrl@d401e000 { + compatible = "spacemit,k1-pinctrl", "pinctrl-single"; + reg = <0x0 0xd401e000 0x0 0x400>; + pinctrl-single,register-width = <32>; + }; }; -};
\ No newline at end of file +}; diff --git a/arch/riscv/dts/starfive-visionfive2-binman.dtsi b/arch/riscv/dts/starfive-visionfive2-binman.dtsi index 05787bdb92d..6e083bf0537 100644 --- a/arch/riscv/dts/starfive-visionfive2-binman.dtsi +++ b/arch/riscv/dts/starfive-visionfive2-binman.dtsi @@ -20,6 +20,7 @@ args = "-T sfspl"; u-boot-spl { + no-write-symbols; }; }; }; diff --git a/arch/riscv/lib/Makefile b/arch/riscv/lib/Makefile index 22b675ffe82..189b35c24d3 100644 --- a/arch/riscv/lib/Makefile +++ b/arch/riscv/lib/Makefile @@ -27,6 +27,7 @@ obj-$(CONFIG_$(PHASE_)SMP) += smp.o obj-$(CONFIG_XPL_BUILD) += spl.o obj-y += fdt_fixup.o obj-$(CONFIG_$(SPL)CMD_BDI) += bdinfo.o +obj-$(CONFIG_OF_BOARD) += board.o # For building EFI apps CFLAGS_NON_EFI := -fstack-protector-strong diff --git a/arch/riscv/lib/board.c b/arch/riscv/lib/board.c new file mode 100644 index 00000000000..624c4eaaf4d --- /dev/null +++ b/arch/riscv/lib/board.c @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * RISC-V-specific handling of firmware FDT + */ + +#include <asm/global_data.h> +#include <linux/errno.h> + +DECLARE_GLOBAL_DATA_PTR; + +__weak int board_fdt_blob_setup(void **fdtp) +{ + if (!gd->arch.firmware_fdt_addr) + return -EEXIST; + + *fdtp = (ulong *)(uintptr_t)gd->arch.firmware_fdt_addr; + + return 0; +} diff --git a/board/emulation/qemu-riscv/qemu-riscv.c b/board/emulation/qemu-riscv/qemu-riscv.c index a90222ea6a4..70190ebe8fc 100644 --- a/board/emulation/qemu-riscv/qemu-riscv.c +++ b/board/emulation/qemu-riscv/qemu-riscv.c @@ -63,11 +63,3 @@ int board_fit_config_name_match(const char *name) return 0; } #endif - -int board_fdt_blob_setup(void **fdtp) -{ - /* Stored the DTB address there during our init */ - *fdtp = (void *)(ulong)gd->arch.firmware_fdt_addr; - - return 0; -} diff --git a/board/sifive/unleashed/unleashed.c b/board/sifive/unleashed/unleashed.c index c1c374610c3..f5da289b836 100644 --- a/board/sifive/unleashed/unleashed.c +++ b/board/sifive/unleashed/unleashed.c @@ -114,17 +114,6 @@ int misc_init_r(void) #endif -int board_fdt_blob_setup(void **fdtp) -{ - if (gd->arch.firmware_fdt_addr) { - *fdtp = (ulong *)(uintptr_t)gd->arch.firmware_fdt_addr; - - return 0; - } - - return -EEXIST; -} - int board_init(void) { /* enable all cache ways */ diff --git a/board/sifive/unmatched/unmatched.c b/board/sifive/unmatched/unmatched.c index 23e03e145ee..a57ce1f10fe 100644 --- a/board/sifive/unmatched/unmatched.c +++ b/board/sifive/unmatched/unmatched.c @@ -10,16 +10,6 @@ #include <dm.h> #include <asm/sections.h> -int board_fdt_blob_setup(void **fdtp) -{ - if (gd->arch.firmware_fdt_addr) { - *fdtp = (ulong *)(uintptr_t)gd->arch.firmware_fdt_addr; - return 0; - } - - return -EEXIST; -} - int board_init(void) { /* enable all cache ways */ diff --git a/board/starfive/visionfive2/MAINTAINERS b/board/starfive/visionfive2/MAINTAINERS index 898e284ce2c..9d348c4b067 100644 --- a/board/starfive/visionfive2/MAINTAINERS +++ b/board/starfive/visionfive2/MAINTAINERS @@ -2,6 +2,6 @@ STARFIVE JH7110 VISIONFIVE2 BOARD M: Minda Chen <minda.chen@starfivetech.com> M: Hal Feng <hal.feng@starfivetech.com> S: Maintained -F: drivers/ram/starfive/ +N: starfive N: jh7110 N: visionfive2 diff --git a/board/starfive/visionfive2/spl.c b/board/starfive/visionfive2/spl.c index 9a3081ef06f..353313b9e88 100644 --- a/board/starfive/visionfive2/spl.c +++ b/board/starfive/visionfive2/spl.c @@ -140,9 +140,26 @@ int board_fit_config_name_match(const char *name) } else if (!strncmp(product_id, "MARS", 4) && !strcmp(name, "jh7110-milkv-mars")) { return 0; - } else if (!strncmp(product_id, "STAR64", 6) && - !strcmp(name, "jh7110-pine64-star64")) { + } else if (!strcmp(name, "starfive/jh7110-milkv-mars") && + !strncmp(get_product_id_from_eeprom(), "MARS", 4)) { return 0; + } else if ((!strcmp(name, "starfive/jh7110-pine64-star64")) && + !strncmp(get_product_id_from_eeprom(), "STAR64", 6)) { + return 0; + } else if ((!strcmp(name, "starfive/jh7110-starfive-visionfive-2-v1.2a")) && + !strncmp(get_product_id_from_eeprom(), "VF7110", 6)) { + switch (get_pcb_revision_from_eeprom()) { + case 'a': + case 'A': + return 0; + } + } else if ((!strcmp(name, "starfive/jh7110-starfive-visionfive-2-v1.2b")) && + !strncmp(get_product_id_from_eeprom(), "VF7110", 6)) { + switch (get_pcb_revision_from_eeprom()) { + case 'b': + case 'B': + return 0; + } } return -EINVAL; diff --git a/board/starfive/visionfive2/starfive_visionfive2.c b/board/starfive/visionfive2/starfive_visionfive2.c index 5fe888d4072..4b273e52e9a 100644 --- a/board/starfive/visionfive2/starfive_visionfive2.c +++ b/board/starfive/visionfive2/starfive_visionfive2.c @@ -110,16 +110,6 @@ int board_late_init(void) return 0; } -int board_fdt_blob_setup(void **fdtp) -{ - if (gd->arch.firmware_fdt_addr) { - *fdtp = (ulong *)(uintptr_t)gd->arch.firmware_fdt_addr; - return 0; - } - - return -EEXIST; -} - int ft_board_setup(void *blob, struct bd_info *bd) { return fdt_fixup_memory(blob, 0x40000000, gd->ram_size); diff --git a/configs/bananapi-f3_defconfig b/configs/bananapi-f3_defconfig index 7483f128bae..30c4f8af62f 100644 --- a/configs/bananapi-f3_defconfig +++ b/configs/bananapi-f3_defconfig @@ -19,3 +19,5 @@ CONFIG_ENV_OVERWRITE=y CONFIG_SYS_NS16550=y CONFIG_SYS_NS16550_MEM32=y CONFIG_RESET_SPACEMIT_K1=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_SINGLE=y diff --git a/doc/board/starfive/visionfive2.rst b/doc/board/starfive/visionfive2.rst index 6f3c572f1f8..11121a1751a 100644 --- a/doc/board/starfive/visionfive2.rst +++ b/doc/board/starfive/visionfive2.rst @@ -116,6 +116,7 @@ Format the SD card (make sure the disk has GPT, otherwise use gdisk to switch) --new=2:8192:16383 --change-name=2:uboot --typecode=2:BC13C2FF-59E6-4262-A352-B275FD6F7172 \ --new=3:16384:1654784 --change-name=3:system --typecode=3:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 \ /dev/sdb + sudo mkfs.vfat -F32 /dev/sdb3 Program the SD card |