diff options
163 files changed, 1927 insertions, 322 deletions
diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 8a63b1f434..02cd8e4169 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -428,6 +428,8 @@ stages: matrix: arc_microblaze_xtensa: BUILDMAN: "arc microblaze xtensa" + amlogic: + BUILDMAN: "amlogic" arm11_arm7_arm920t_arm946es: BUILDMAN: "arm11 arm7 arm920t arm946es" arm926ejs: @@ -457,9 +459,9 @@ stages: imx6: BUILDMAN: "mx6 -x boundary,engicam,freescale,technexion,toradex" imx: - BUILDMAN: "mx -x mx6,freescale,technexion,toradex" - imx8: - BUILDMAN: "imx8" + BUILDMAN: "mx -x mx6,imx8,freescale,technexion,toradex" + imx8_imx9: + BUILDMAN: "imx8 imx9" keystone2_keystone3: BUILDMAN: "k2 k3" sandbox_asan: @@ -513,9 +515,11 @@ stages: uniphier: BUILDMAN: "uniphier" aarch64_catch_all: - BUILDMAN: "aarch64 -x bcm,imx8,k3,tegra,ls1,ls2,lx216,mvebu,uniphier,renesas,sunxi,samsung,socfpga,rk,versal,zynq" - rockchip: - BUILDMAN: "rk" + BUILDMAN: "aarch64 -x amlogic,bcm,imx8,imx9,k3,tegra,ls1,ls2,lx216,mvebu,uniphier,renesas,sunxi,samsung,socfpga,rk,versal,zynq" + rockchip_32bit: + BUILDMAN: "rk -x aarch64" + rockchip_64bit: + BUILDMAN: "rk&aarch64" renesas: BUILDMAN: "renesas" zynq: @@ -3,7 +3,7 @@ VERSION = 2023 PATCHLEVEL = 01 SUBLEVEL = -EXTRAVERSION = -rc4 +EXTRAVERSION = NAME = # *DOCUMENTATION* @@ -2366,7 +2366,7 @@ tcheck: # Documentation targets # --------------------------------------------------------------------------- DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs \ - linkcheckdocs dochelp refcheckdocs + linkcheckdocs dochelp refcheckdocs texinfodocs infodocs PHONY += $(DOC_TARGETS) $(DOC_TARGETS): scripts_basic FORCE $(Q)$(MAKE) $(build)=doc $@ diff --git a/arch/arm/dts/imx7d-pico-u-boot.dtsi b/arch/arm/dts/imx7d-pico-pi-u-boot.dtsi index 7307fbaf68..7307fbaf68 100644 --- a/arch/arm/dts/imx7d-pico-u-boot.dtsi +++ b/arch/arm/dts/imx7d-pico-pi-u-boot.dtsi diff --git a/arch/arm/dts/rz-g2-beacon-u-boot.dtsi b/arch/arm/dts/rz-g2-beacon-u-boot.dtsi index 4d17854918..da1c3b0939 100644 --- a/arch/arm/dts/rz-g2-beacon-u-boot.dtsi +++ b/arch/arm/dts/rz-g2-beacon-u-boot.dtsi @@ -45,7 +45,6 @@ }; &rpc { - compatible = "renesas,rcar-gen3-rpc"; pinctrl-0 = <&qspi_pins>; pinctrl-names = "default"; num-cs = <1>; diff --git a/arch/arm/lib/crt0_aarch64_efi.S b/arch/arm/lib/crt0_aarch64_efi.S index 7f38465359..3c2cef6ec7 100644 --- a/arch/arm/lib/crt0_aarch64_efi.S +++ b/arch/arm/lib/crt0_aarch64_efi.S @@ -25,7 +25,7 @@ pe_header: .long IMAGE_NT_SIGNATURE /* 'PE' */ coff_header: .short IMAGE_FILE_MACHINE_ARM64 /* AArch64 */ - .short 2 /* nr_sections */ + .short 3 /* nr_sections */ .long 0 /* TimeDateStamp */ .long 0 /* PointerToSymbolTable */ .long 0 /* NumberOfSymbols */ @@ -34,12 +34,13 @@ coff_header: .short (IMAGE_FILE_EXECUTABLE_IMAGE | \ IMAGE_FILE_LINE_NUMS_STRIPPED | \ IMAGE_FILE_LOCAL_SYMS_STRIPPED | \ + IMAGE_FILE_LARGE_ADDRESS_AWARE | \ IMAGE_FILE_DEBUG_STRIPPED) optional_header: .short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */ .byte 0x02 /* MajorLinkerVersion */ .byte 0x14 /* MinorLinkerVersion */ - .long _edata - _start /* SizeOfCode */ + .long _etext - _start /* SizeOfCode */ .long 0 /* SizeOfInitializedData */ .long 0 /* SizeOfUninitializedData */ .long _start - ImageBase /* AddressOfEntryPoint */ @@ -47,7 +48,7 @@ optional_header: extra_header_fields: .quad 0 /* ImageBase */ - .long 0x200 /* SectionAlignment */ + .long 0x1000 /* SectionAlignment */ .long 0x200 /* FileAlignment */ .short 0 /* MajorOperatingSystemVersion */ .short 0 /* MinorOperatingSystemVersion */ @@ -99,25 +100,46 @@ section_table: .long 0 /* PointerToLineNumbers */ .short 0 /* NumberOfRelocations */ .short 0 /* NumberOfLineNumbers */ - .long 0x42100040 /* Characteristics (section flags) */ - + /* Characteristics (section flags) */ + .long (IMAGE_SCN_MEM_READ | \ + IMAGE_SCN_MEM_DISCARDABLE | \ + IMAGE_SCN_CNT_INITIALIZED_DATA) .ascii ".text" .byte 0 .byte 0 .byte 0 /* end of 0 padding of section name */ - .long _edata - _start /* VirtualSize */ + .long _etext - _start /* VirtualSize */ .long _start - ImageBase /* VirtualAddress */ - .long _edata - _start /* SizeOfRawData */ + .long _etext - _start /* SizeOfRawData */ .long _start - ImageBase /* PointerToRawData */ + .long 0 /* PointerToRelocations */ + .long 0 /* PointerToLineNumbers */ + .short 0 /* NumberOfRelocations */ + .short 0 /* NumberOfLineNumbers */ + /* Characteristics (section flags) */ + .long (IMAGE_SCN_MEM_READ | \ + IMAGE_SCN_MEM_EXECUTE | \ + IMAGE_SCN_CNT_CODE) - .long 0 /* PointerToRelocations (0 for executables) */ - .long 0 /* PointerToLineNumbers (0 for executables) */ - .short 0 /* NumberOfRelocations (0 for executables) */ - .short 0 /* NumberOfLineNumbers (0 for executables) */ - .long 0xe0500020 /* Characteristics (section flags) */ + .ascii ".data" + .byte 0 + .byte 0 + .byte 0 /* end of 0 padding of section name */ + .long _data_size /* VirtualSize */ + .long _data - ImageBase /* VirtualAddress */ + .long _data_size /* SizeOfRawData */ + .long _data - ImageBase /* PointerToRawData */ + .long 0 /* PointerToRelocations */ + .long 0 /* PointerToLineNumbers */ + .short 0 /* NumberOfRelocations */ + .short 0 /* NumberOfLineNumbers */ + /* Characteristics (section flags) */ + .long (IMAGE_SCN_MEM_WRITE | \ + IMAGE_SCN_MEM_READ | \ + IMAGE_SCN_CNT_INITIALIZED_DATA) - .align 9 + .align 12 _start: stp x29, x30, [sp, #-32]! mov x29, sp diff --git a/arch/arm/lib/elf_aarch64_efi.lds b/arch/arm/lib/elf_aarch64_efi.lds index c0604dad46..3e3da47d6a 100644 --- a/arch/arm/lib/elf_aarch64_efi.lds +++ b/arch/arm/lib/elf_aarch64_efi.lds @@ -7,6 +7,12 @@ OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64") OUTPUT_ARCH(aarch64) + +PHDRS +{ + data PT_LOAD FLAGS(3); /* SHF_WRITE | SHF_ALLOC */ +} + ENTRY(_start) SECTIONS { @@ -18,11 +24,13 @@ SECTIONS *(.gnu.linkonce.t.*) *(.srodata) *(.rodata*) + . = ALIGN(16); + *(.dynamic); . = ALIGN(512); } _etext = .; _text_size = . - _text; - .dynamic : { *(.dynamic) } + . = ALIGN(4096); .data : { _data = .; *(.sdata) @@ -47,12 +55,12 @@ SECTIONS . = ALIGN(512); _bss_end = .; _edata = .; - } + } :data + _data_size = _edata - _data; .rela.dyn : { *(.rela.dyn) } .rela.plt : { *(.rela.plt) } .rela.got : { *(.rela.got) } .rela.data : { *(.rela.data) *(.rela.data*) } - _data_size = . - _etext; . = ALIGN(4096); .dynsym : { *(.dynsym) } diff --git a/arch/arm/mach-stm32mp/dram_init.c b/arch/arm/mach-stm32mp/dram_init.c index 9346fa8546..80ba5c2774 100644 --- a/arch/arm/mach-stm32mp/dram_init.c +++ b/arch/arm/mach-stm32mp/dram_init.c @@ -51,7 +51,7 @@ phys_size_t board_get_usable_ram_top(phys_size_t total_size) /* found enough not-reserved memory to relocated U-Boot */ lmb_init(&lmb); - lmb_add(&lmb, gd->ram_base, gd->ram_size); + lmb_add(&lmb, gd->ram_base, get_effective_memsize()); boot_fdt_add_mem_rsv_regions(&lmb, (void *)gd->fdt_blob); /* add 8M for reserved memory for display, fdt, gd,... */ size = ALIGN(SZ_8M + CONFIG_SYS_MALLOC_LEN + total_size, MMU_SECTION_SIZE), diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig index 6ab8a5249a..1b180481a4 100644 --- a/arch/powerpc/cpu/mpc85xx/Kconfig +++ b/arch/powerpc/cpu/mpc85xx/Kconfig @@ -85,6 +85,7 @@ choice config TARGET_SOCRATES bool "Support socrates" select ARCH_MPC8544 + select BINMAN config TARGET_P3041DS bool "Support P3041DS" @@ -1498,14 +1499,14 @@ config SYS_FSL_USB_DUAL_PHY_ENABLE config SYS_MPC85XX_NO_RESETVEC bool "Discard resetvec section and move bootpg section up" - depends on MPC85xx + depends on MPC85xx && !MPC85XX_HAVE_RESET_VECTOR help If this variable is specified, the section .resetvec is not kept and the section .bootpg is placed in the previous 4k of the .text section. config SPL_SYS_MPC85XX_NO_RESETVEC bool "Discard resetvec section and move bootpg section up, in SPL" - depends on MPC85xx && SPL + depends on MPC85xx && SPL && !MPC85XX_HAVE_RESET_VECTOR help If this variable is specified, the section .resetvec is not kept and the section .bootpg is placed in the previous 4k of the .text section, @@ -1513,7 +1514,7 @@ config SPL_SYS_MPC85XX_NO_RESETVEC config TPL_SYS_MPC85XX_NO_RESETVEC bool "Discard resetvec section and move bootpg section up, in TPL" - depends on MPC85xx && TPL + depends on MPC85xx && TPL && !MPC85XX_HAVE_RESET_VECTOR help If this variable is specified, the section .resetvec is not kept and the section .bootpg is placed in the previous 4k of the .text section, diff --git a/arch/powerpc/cpu/mpc85xx/config.mk b/arch/powerpc/cpu/mpc85xx/config.mk index 7a1d81cf2d..71a98f05c9 100644 --- a/arch/powerpc/cpu/mpc85xx/config.mk +++ b/arch/powerpc/cpu/mpc85xx/config.mk @@ -3,11 +3,26 @@ # (C) Copyright 2002,2003 Motorola Inc. # Xianghua Xiao, X.Xiao@motorola.com -PLATFORM_CPPFLAGS += -Wa,-me500 -msoft-float -mno-string +PLATFORM_CPPFLAGS += -msoft-float -mno-string PLATFORM_RELFLAGS += -msingle-pic-base -fno-jump-tables -# -mspe=yes is needed to have -mno-spe accepted by a buggy GCC; +# No SPE instruction when building u-boot +# (We use all available options to help semi-broken compilers) # see "[PATCH,rs6000] make -mno-spe work as expected" on # http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00311.html -PLATFORM_CPPFLAGS += $(call cc-option,-mspe=yes) \ - $(call cc-option,-mno-spe) +PLATFORM_CPPFLAGS += $(call cc-option,-mno-spe) \ + $(call cc-option,-mspe=no) + +# No AltiVec or VSX instructions when building u-boot +PLATFORM_CPPFLAGS += $(call cc-option,-mno-altivec) +PLATFORM_CPPFLAGS += $(call cc-option,-mno-vsx) + +ifdef CONFIG_E6500 +PLATFORM_CPPFLAGS += -mcpu=e6500 +else ifdef CONFIG_E5500 +PLATFORM_CPPFLAGS += -mcpu=e5500 +else ifdef CONFIG_E500MC +PLATFORM_CPPFLAGS += -mcpu=e500mc +else +PLATFORM_CPPFLAGS += -mcpu=8540 +endif diff --git a/arch/riscv/lib/crt0_riscv_efi.S b/arch/riscv/lib/crt0_riscv_efi.S index a01e08a3c6..793eefdd88 100644 --- a/arch/riscv/lib/crt0_riscv_efi.S +++ b/arch/riscv/lib/crt0_riscv_efi.S @@ -16,12 +16,23 @@ #define LOAD_LONG(reg, idx) ld reg, (idx*SIZE_LONG)(sp) #define PE_MACHINE IMAGE_FILE_MACHINE_RISCV64 #define PE_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC +#define IMG_CHARACTERISTICS \ + (IMAGE_FILE_EXECUTABLE_IMAGE | \ + IMAGE_FILE_LINE_NUMS_STRIPPED | \ + IMAGE_FILE_LOCAL_SYMS_STRIPPED | \ + IMAGE_FILE_LARGE_ADDRESS_AWARE | \ + IMAGE_FILE_DEBUG_STRIPPED) #else #define SIZE_LONG 4 #define SAVE_LONG(reg, idx) sw reg, (idx*SIZE_LONG)(sp) #define LOAD_LONG(reg, idx) lw reg, (idx*SIZE_LONG)(sp) #define PE_MACHINE IMAGE_FILE_MACHINE_RISCV32 #define PE_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC +#define IMG_CHARACTERISTICS \ + (IMAGE_FILE_EXECUTABLE_IMAGE | \ + IMAGE_FILE_LINE_NUMS_STRIPPED | \ + IMAGE_FILE_LOCAL_SYMS_STRIPPED | \ + IMAGE_FILE_DEBUG_STRIPPED) #endif @@ -47,11 +58,7 @@ coff_header: .long 0 /* PointerToSymbolTable */ .long 0 /* NumberOfSymbols */ .short section_table - optional_header /* SizeOfOptionalHeader */ - /* Characteristics */ - .short (IMAGE_FILE_EXECUTABLE_IMAGE | \ - IMAGE_FILE_LINE_NUMS_STRIPPED | \ - IMAGE_FILE_LOCAL_SYMS_STRIPPED | \ - IMAGE_FILE_DEBUG_STRIPPED) + .short IMG_CHARACTERISTICS /* Characteristics */ optional_header: .short PE_MAGIC /* PE32(+) format */ .byte 0x02 /* MajorLinkerVersion */ diff --git a/boot/Kconfig b/boot/Kconfig index 65613a0149..30bc182fcd 100644 --- a/boot/Kconfig +++ b/boot/Kconfig @@ -725,16 +725,19 @@ config RAMBOOT_PBL For more details refer to doc/README.pblimage choice - prompt "Freescale PBL load location" + prompt "Freescale PBL (or predecessor) load location" depends on RAMBOOT_PBL || ((TARGET_P1010RDB_PA || TARGET_P1010RDB_PB \ || TARGET_P1020RDB_PC || TARGET_P1020RDB_PD || TARGET_P2020RDB) \ && !CMD_NAND) config SDCARD - bool "Freescale PBL is found on SD card" + bool "Freescale PBL (or similar) is found on SD card" config SPIFLASH - bool "Freescale PBL is found on SPI flash" + bool "Freescale PBL (or similar) is found on SPI flash" + +config NO_PBL + bool "Freescale PBL (or similar) is not used in this case" endchoice diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c index ec5af4215e..3a1e50f2b1 100644 --- a/boot/pxe_utils.c +++ b/boot/pxe_utils.c @@ -618,7 +618,10 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label) * Scenario 2: If there is an fdt_addr specified, pass it along to * bootm, and adjust argc appropriately. * - * Scenario 3: fdt blob is not available. + * Scenario 3: If there is an fdtcontroladdr specified, pass it along to + * bootm, and adjust argc appropriately, unless the image type is fitImage. + * + * Scenario 4: fdt blob is not available. */ bootm_argv[3] = env_get("fdt_addr_r"); @@ -726,14 +729,18 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label) if (!bootm_argv[3]) bootm_argv[3] = env_get("fdt_addr"); + kernel_addr_r = genimg_get_kernel_addr(kernel_addr); + buf = map_sysmem(kernel_addr_r, 0); + + if (!bootm_argv[3] && genimg_get_format(buf) != IMAGE_FORMAT_FIT) + bootm_argv[3] = env_get("fdtcontroladdr"); + if (bootm_argv[3]) { if (!bootm_argv[2]) bootm_argv[2] = "-"; bootm_argc = 4; } - kernel_addr_r = genimg_get_kernel_addr(kernel_addr); - buf = map_sysmem(kernel_addr_r, 0); /* Try bootm for legacy and FIT format image */ if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID && IS_ENABLED(CONFIG_CMD_BOOTM)) diff --git a/cmd/Kconfig b/cmd/Kconfig index 47d2ef04a2..199a55383e 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1818,7 +1818,7 @@ config SYS_DISABLE_AUTOLOAD config CMD_WGET bool "wget" - select TCP + select PROT_TCP help wget is a simple command to download kernel, or other files, from a http server over TCP. diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c index 394ae67cce..ce7175a566 100644 --- a/cmd/eficonfig.c +++ b/cmd/eficonfig.c @@ -1683,7 +1683,7 @@ static efi_status_t eficonfig_show_boot_selection(unsigned int *selected) u32 i; u16 *bootorder; efi_status_t ret; - u16 *var_name16 = NULL, *p; + u16 *var_name16 = NULL; efi_uintn_t num, size, buf_size; struct efimenu *efi_menu; struct list_head *pos, *n; @@ -1718,24 +1718,12 @@ static efi_status_t eficonfig_show_boot_selection(unsigned int *selected) int index; efi_guid_t guid; - size = buf_size; - ret = efi_get_next_variable_name_int(&size, var_name16, &guid); + ret = efi_next_variable_name(&buf_size, &var_name16, &guid); if (ret == EFI_NOT_FOUND) break; - if (ret == EFI_BUFFER_TOO_SMALL) { - buf_size = size; - p = realloc(var_name16, buf_size); - if (!p) { - free(var_name16); - return EFI_OUT_OF_RESOURCES; - } - var_name16 = p; - ret = efi_get_next_variable_name_int(&size, var_name16, &guid); - } - if (ret != EFI_SUCCESS) { - free(var_name16); - return ret; - } + if (ret != EFI_SUCCESS) + goto out; + if (efi_varname_is_load_option(var_name16, &index)) { /* If the index is included in the BootOrder, skip it */ if (search_bootorder(bootorder, num, index, NULL)) @@ -2026,7 +2014,7 @@ static efi_status_t eficonfig_create_change_boot_order_entry(struct efimenu *efi u32 i; char *title; efi_status_t ret; - u16 *var_name16 = NULL, *p; + u16 *var_name16 = NULL; efi_uintn_t size, buf_size; /* list the load option in the order of BootOrder variable */ @@ -2054,19 +2042,9 @@ static efi_status_t eficonfig_create_change_boot_order_entry(struct efimenu *efi break; size = buf_size; - ret = efi_get_next_variable_name_int(&size, var_name16, &guid); + ret = efi_next_variable_name(&buf_size, &var_name16, &guid); if (ret == EFI_NOT_FOUND) break; - if (ret == EFI_BUFFER_TOO_SMALL) { - buf_size = size; - p = realloc(var_name16, buf_size); - if (!p) { - ret = EFI_OUT_OF_RESOURCES; - goto out; - } - var_name16 = p; - ret = efi_get_next_variable_name_int(&size, var_name16, &guid); - } if (ret != EFI_SUCCESS) goto out; @@ -2332,14 +2310,15 @@ out: efi_status_t eficonfig_delete_invalid_boot_option(struct eficonfig_media_boot_option *opt, efi_status_t count) { - u32 i; efi_uintn_t size; void *load_option; + u32 i, list_size = 0; struct efi_load_option lo; - u16 *var_name16 = NULL, *p; + u16 *var_name16 = NULL; u16 varname[] = u"Boot####"; efi_status_t ret = EFI_SUCCESS; - efi_uintn_t varname_size, buf_size; + u16 *delete_index_list = NULL, *p; + efi_uintn_t buf_size; buf_size = 128; var_name16 = malloc(buf_size); @@ -2352,24 +2331,18 @@ efi_status_t eficonfig_delete_invalid_boot_option(struct eficonfig_media_boot_op efi_guid_t guid; efi_uintn_t tmp; - varname_size = buf_size; - ret = efi_get_next_variable_name_int(&varname_size, var_name16, &guid); - if (ret == EFI_NOT_FOUND) + ret = efi_next_variable_name(&buf_size, &var_name16, &guid); + if (ret == EFI_NOT_FOUND) { + /* + * EFI_NOT_FOUND indicates we retrieved all EFI variables. + * This should be treated as success. + */ + ret = EFI_SUCCESS; break; - if (ret == EFI_BUFFER_TOO_SMALL) { - buf_size = varname_size; - p = realloc(var_name16, buf_size); - if (!p) { - free(var_name16); - return EFI_OUT_OF_RESOURCES; - } - var_name16 = p; - ret = efi_get_next_variable_name_int(&varname_size, var_name16, &guid); - } - if (ret != EFI_SUCCESS) { - free(var_name16); - return ret; } + if (ret != EFI_SUCCESS) + goto out; + if (!efi_varname_is_load_option(var_name16, &index)) continue; @@ -2383,30 +2356,47 @@ efi_status_t eficonfig_delete_invalid_boot_option(struct eficonfig_media_boot_op if (ret != EFI_SUCCESS) goto next; - if (size >= sizeof(efi_guid_bootmenu_auto_generated)) { - if (guidcmp(lo.optional_data, &efi_guid_bootmenu_auto_generated) == 0) { - for (i = 0; i < count; i++) { - if (opt[i].size == tmp && - memcmp(opt[i].lo, load_option, tmp) == 0) { - opt[i].exist = true; - break; - } + if (size >= sizeof(efi_guid_bootmenu_auto_generated) && + !guidcmp(lo.optional_data, &efi_guid_bootmenu_auto_generated)) { + for (i = 0; i < count; i++) { + if (opt[i].size == tmp && + memcmp(opt[i].lo, load_option, tmp) == 0) { + opt[i].exist = true; + break; } + } - if (i == count) { - ret = delete_boot_option(i); - if (ret != EFI_SUCCESS) { - free(load_option); - goto out; - } + /* + * The entire list of variables must be retrieved by + * efi_get_next_variable_name_int() before deleting the invalid + * boot option, just save the index here. + */ + if (i == count) { + p = realloc(delete_index_list, sizeof(u32) * + (list_size + 1)); + if (!p) { + ret = EFI_OUT_OF_RESOURCES; + goto out; } + delete_index_list = p; + delete_index_list[list_size++] = index; } } next: free(load_option); } + /* delete all invalid boot options */ + for (i = 0; i < list_size; i++) { + ret = delete_boot_option(delete_index_list[i]); + if (ret != EFI_SUCCESS) + goto out; + } + out: + free(var_name16); + free(delete_index_list); + return ret; } diff --git a/cmd/eficonfig_sbkey.c b/cmd/eficonfig_sbkey.c index 6e0bebf1d4..ed39aab081 100644 --- a/cmd/eficonfig_sbkey.c +++ b/cmd/eficonfig_sbkey.c @@ -73,6 +73,28 @@ static bool file_have_auth_header(void *buf, efi_uintn_t size) } /** + * file_is_null_key() - check the file is an authenticated and signed null key + * + * @auth: pointer to the file + * @size: file size + * @null_key: pointer to store the result + * Return: status code + */ +static efi_status_t file_is_null_key(struct efi_variable_authentication_2 *auth, + efi_uintn_t size, bool *null_key) +{ + efi_uintn_t auth_size = + sizeof(auth->time_stamp) + auth->auth_info.hdr.dwLength; + + if (size < auth_size) + return EFI_INVALID_PARAMETER; + + *null_key = (size == auth_size); + + return EFI_SUCCESS; +} + +/** * eficonfig_process_enroll_key() - enroll key into signature database * * @data: pointer to the data for each entry @@ -84,6 +106,7 @@ static efi_status_t eficonfig_process_enroll_key(void *data) char *buf = NULL; efi_uintn_t size; efi_status_t ret; + bool null_key = false; struct efi_file_handle *f = NULL; struct efi_device_path *full_dp = NULL; struct eficonfig_select_file_info file_info; @@ -149,13 +172,24 @@ static efi_status_t eficonfig_process_enroll_key(void *data) goto out; } + ret = file_is_null_key((struct efi_variable_authentication_2 *)buf, + size, &null_key); + if (ret != EFI_SUCCESS) { + eficonfig_print_msg("ERROR! Invalid file format."); + goto out; + } + attr = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS; - /* PK can enroll only one certificate */ - if (u16_strcmp(data, u"PK")) { + /* + * PK can enroll only one certificate. + * The signed null key is used to clear KEK, db and dbx. + * EFI_VARIABLE_APPEND_WRITE attribute must not be set in these cases. + */ + if (u16_strcmp(data, u"PK") && !null_key) { efi_uintn_t db_size = 0; /* check the variable exists. If exists, add APPEND_WRITE attribute */ diff --git a/cmd/efidebug.c b/cmd/efidebug.c index 569003ae2e..e6959ede93 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -591,25 +591,15 @@ static void print_memory_attributes(u64 attributes) static int do_efi_show_memmap(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - struct efi_mem_desc *memmap = NULL, *map; - efi_uintn_t map_size = 0; + struct efi_mem_desc *memmap, *map; + efi_uintn_t map_size; const char *type; int i; efi_status_t ret; - ret = efi_get_memory_map(&map_size, memmap, NULL, NULL, NULL); - if (ret == EFI_BUFFER_TOO_SMALL) { - map_size += sizeof(struct efi_mem_desc); /* for my own */ - ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, map_size, - (void *)&memmap); - if (ret != EFI_SUCCESS) - return CMD_RET_FAILURE; - ret = efi_get_memory_map(&map_size, memmap, NULL, NULL, NULL); - } - if (ret != EFI_SUCCESS) { - efi_free_pool(memmap); + ret = efi_get_memory_map_alloc(&map_size, &memmap); + if (ret != EFI_SUCCESS) return CMD_RET_FAILURE; - } printf("Type Start%.*s End%.*s Attributes\n", EFI_PHYS_ADDR_WIDTH - 5, spc, EFI_PHYS_ADDR_WIDTH - 3, spc); diff --git a/cmd/sound.c b/cmd/sound.c index 20ac3f758e..0b7f959971 100644 --- a/cmd/sound.c +++ b/cmd/sound.c @@ -39,26 +39,39 @@ static int do_play(struct cmd_tbl *cmdtp, int flag, int argc, int ret = 0; int msec = 1000; int freq = 400; - - if (argc > 1) - msec = dectoul(argv[1], NULL); - if (argc > 2) - freq = dectoul(argv[2], NULL); + bool first = true; ret = uclass_first_device_err(UCLASS_SOUND, &dev); - if (!ret) + if (ret) + goto err; + --argc; + ++argv; + while (argc || first) { + first = false; + if (argc) { + msec = dectoul(argv[0], NULL); + --argc; + ++argv; + } + if (argc) { + freq = dectoul(argv[0], NULL); + --argc; + ++argv; + } ret = sound_beep(dev, msec, freq); - if (ret) { - printf("Sound device failed to play (err=%d)\n", ret); - return CMD_RET_FAILURE; + if (ret) + goto err; } - return 0; + +err: + printf("Sound device failed to play (err=%d)\n", ret); + return CMD_RET_FAILURE; } static struct cmd_tbl cmd_sound_sub[] = { U_BOOT_CMD_MKENT(init, 0, 1, do_init, "", ""), - U_BOOT_CMD_MKENT(play, 2, 1, do_play, "", ""), + U_BOOT_CMD_MKENT(play, INT_MAX, 1, do_play, "", ""), }; /* process sound command */ @@ -83,8 +96,10 @@ static int do_sound(struct cmd_tbl *cmdtp, int flag, int argc, } U_BOOT_CMD( - sound, 4, 1, do_sound, + sound, INT_MAX, 1, do_sound, "sound sub-system", "init - initialise the sound driver\n" - "sound play [len [freq]] - play a sound for len ms at freq Hz\n" + "sound play [[[-q|-s] len [freq]] ...] - play sounds\n" + " len - duration in ms\n" + " freq - frequency in Hz\n" ); diff --git a/common/memsize.c b/common/memsize.c index ad9ddf67ac..66d5be6a1f 100644 --- a/common/memsize.c +++ b/common/memsize.c @@ -96,6 +96,7 @@ phys_size_t __weak get_effective_memsize(void) { phys_size_t ram_size = gd->ram_size; +#ifdef CONFIG_MPC85xx /* * Check for overflow and limit ram size to some representable value. * It is required that ram_base + ram_size must be representable by @@ -105,6 +106,7 @@ phys_size_t __weak get_effective_memsize(void) */ if (gd->ram_base + ram_size < gd->ram_base) ram_size = ((phys_size_t)~0xfffULL) - gd->ram_base; +#endif #ifndef CFG_MAX_MEM_MAPPED return ram_size; diff --git a/common/spl/Kconfig b/common/spl/Kconfig index f0f7acead7..a25d8fd2e0 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -1486,6 +1486,7 @@ config SPL_AM33XX_ENABLE_RTC32K_OSC config SPL_OPTEE_IMAGE bool "Support OP-TEE Trusted OS image in SPL" depends on ARM + depends on SPL_LOAD_FIT || SPL_LOAD_FIT_FULL help OP-TEE is an open source Trusted OS which is loaded by SPL. More detail at: https://github.com/OP-TEE/optee_os diff --git a/configs/P1010RDB-PA_36BIT_NOR_defconfig b/configs/P1010RDB-PA_36BIT_NOR_defconfig index 6a320713eb..71e17d90ec 100644 --- a/configs/P1010RDB-PA_36BIT_NOR_defconfig +++ b/configs/P1010RDB-PA_36BIT_NOR_defconfig @@ -11,7 +11,6 @@ CONFIG_TARGET_P1010RDB_PA=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -21,7 +20,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr" diff --git a/configs/P1010RDB-PA_NOR_defconfig b/configs/P1010RDB-PA_NOR_defconfig index 071123362f..5807e8bdaa 100644 --- a/configs/P1010RDB-PA_NOR_defconfig +++ b/configs/P1010RDB-PA_NOR_defconfig @@ -11,7 +11,6 @@ CONFIG_TARGET_P1010RDB_PA=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -20,7 +19,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr" diff --git a/configs/P1010RDB-PB_36BIT_NOR_defconfig b/configs/P1010RDB-PB_36BIT_NOR_defconfig index bf7078015e..7328c142f9 100644 --- a/configs/P1010RDB-PB_36BIT_NOR_defconfig +++ b/configs/P1010RDB-PB_36BIT_NOR_defconfig @@ -11,7 +11,6 @@ CONFIG_TARGET_P1010RDB_PB=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -21,7 +20,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr" diff --git a/configs/P1010RDB-PB_NOR_defconfig b/configs/P1010RDB-PB_NOR_defconfig index 985243cebd..0f109c514c 100644 --- a/configs/P1010RDB-PB_NOR_defconfig +++ b/configs/P1010RDB-PB_NOR_defconfig @@ -11,7 +11,6 @@ CONFIG_TARGET_P1010RDB_PB=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -20,7 +19,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs ramdisk_size=$ramdisk_size;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr" diff --git a/configs/P1020RDB-PC_36BIT_defconfig b/configs/P1020RDB-PC_36BIT_defconfig index 58f2475571..e2373d04d7 100644 --- a/configs/P1020RDB-PC_36BIT_defconfig +++ b/configs/P1020RDB-PC_36BIT_defconfig @@ -12,7 +12,6 @@ CONFIG_TARGET_P1020RDB_PC=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -23,7 +22,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr" diff --git a/configs/P1020RDB-PC_defconfig b/configs/P1020RDB-PC_defconfig index 17bde92263..ca828eac03 100644 --- a/configs/P1020RDB-PC_defconfig +++ b/configs/P1020RDB-PC_defconfig @@ -12,7 +12,6 @@ CONFIG_TARGET_P1020RDB_PC=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -22,7 +21,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr" diff --git a/configs/P1020RDB-PD_defconfig b/configs/P1020RDB-PD_defconfig index b0ccaa1cfd..5377aba4ef 100644 --- a/configs/P1020RDB-PD_defconfig +++ b/configs/P1020RDB-PD_defconfig @@ -12,7 +12,6 @@ CONFIG_TARGET_P1020RDB_PD=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -22,7 +21,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr" diff --git a/configs/P2020RDB-PC_36BIT_defconfig b/configs/P2020RDB-PC_36BIT_defconfig index bb5df66c74..d266ce82a5 100644 --- a/configs/P2020RDB-PC_36BIT_defconfig +++ b/configs/P2020RDB-PC_36BIT_defconfig @@ -12,7 +12,6 @@ CONFIG_TARGET_P2020RDB=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -23,7 +22,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr" diff --git a/configs/P2020RDB-PC_defconfig b/configs/P2020RDB-PC_defconfig index 2afef4a5eb..4d5569c554 100644 --- a/configs/P2020RDB-PC_defconfig +++ b/configs/P2020RDB-PC_defconfig @@ -12,7 +12,6 @@ CONFIG_TARGET_P2020RDB=y CONFIG_MPC85XX_HAVE_RESET_VECTOR=y CONFIG_L2_CACHE=y CONFIG_ENABLE_36BIT_PHYS=y -CONFIG_SYS_MPC85XX_NO_RESETVEC=y CONFIG_USE_UBOOTPATH=y CONFIG_PCIE1=y CONFIG_PCIE2=y @@ -22,7 +21,7 @@ CONFIG_FIT=y CONFIG_FIT_VERBOSE=y CONFIG_OF_BOARD_SETUP=y CONFIG_OF_STDOUT_VIA_ALIAS=y -CONFIG_FSL_FIXED_MMC_LOCATION=y +CONFIG_NO_PBL=y CONFIG_BOOTDELAY=10 CONFIG_USE_BOOTCOMMAND=y CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/$bdev rw rootdelay=30 console=$consoledev,$baudrate $othbootargs;usb start;ext2load usb 0:1 $loadaddr /boot/$bootfile;ext2load usb 0:1 $fdtaddr /boot/$fdtfile;bootm $loadaddr - $fdtaddr" diff --git a/configs/evb-rk3288_defconfig b/configs/evb-rk3288_defconfig index 8f8d34c703..fcfb6aac1e 100644 --- a/configs/evb-rk3288_defconfig +++ b/configs/evb-rk3288_defconfig @@ -80,6 +80,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/configs/evb-rk3568_defconfig b/configs/evb-rk3568_defconfig index 7374ee42fb..a76d924d38 100644 --- a/configs/evb-rk3568_defconfig +++ b/configs/evb-rk3568_defconfig @@ -65,4 +65,5 @@ CONFIG_BAUDRATE=1500000 CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y +# CONFIG_BINMAN_FDT is not set CONFIG_ERRNO_STR=y diff --git a/configs/firefly-rk3288_defconfig b/configs/firefly-rk3288_defconfig index 26967a67cc..434c9113b5 100644 --- a/configs/firefly-rk3288_defconfig +++ b/configs/firefly-rk3288_defconfig @@ -77,6 +77,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/configs/ge_b1x5v2_defconfig b/configs/ge_b1x5v2_defconfig index 353942dd78..e644137c03 100644 --- a/configs/ge_b1x5v2_defconfig +++ b/configs/ge_b1x5v2_defconfig @@ -65,7 +65,6 @@ CONFIG_CMD_DNS=y CONFIG_CMD_BMP=y CONFIG_CMD_BOOTCOUNT=y CONFIG_CMD_CACHE=y -CONFIG_CMD_CLS=y CONFIG_CMD_TIME=y CONFIG_CMD_PMIC=y CONFIG_CMD_REGULATOR=y diff --git a/configs/ge_bx50v3_defconfig b/configs/ge_bx50v3_defconfig index e35788fd85..82f6cc3f82 100644 --- a/configs/ge_bx50v3_defconfig +++ b/configs/ge_bx50v3_defconfig @@ -36,7 +36,6 @@ CONFIG_CMD_PCI=y CONFIG_CMD_BMP=y CONFIG_CMD_BOOTCOUNT=y CONFIG_CMD_CACHE=y -CONFIG_CMD_CLS=y CONFIG_CMD_EXT2=y CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y diff --git a/configs/miqi-rk3288_defconfig b/configs/miqi-rk3288_defconfig index 9346cafc64..652e418ff3 100644 --- a/configs/miqi-rk3288_defconfig +++ b/configs/miqi-rk3288_defconfig @@ -74,6 +74,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/configs/mx53ppd_defconfig b/configs/mx53ppd_defconfig index d8cb654a59..055dbcb033 100644 --- a/configs/mx53ppd_defconfig +++ b/configs/mx53ppd_defconfig @@ -34,7 +34,6 @@ CONFIG_CMD_DHCP=y CONFIG_CMD_MII=y CONFIG_CMD_PING=y CONFIG_CMD_BOOTCOUNT=y -CONFIG_CMD_CLS=y CONFIG_CMD_EXT2=y CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig index 6cde762eed..3e58db07da 100644 --- a/configs/roc-pc-rk3399_defconfig +++ b/configs/roc-pc-rk3399_defconfig @@ -45,7 +45,6 @@ CONFIG_CMD_TIME=y CONFIG_SPL_OF_CONTROL=y CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" CONFIG_ENV_IS_IN_SPI_FLASH=y -CONFIG_ENV_SPI_MAX_HZ=30000000 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SPL_DM_SEQ_ALIAS=y CONFIG_ROCKCHIP_GPIO=y @@ -83,7 +82,6 @@ CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_GENERIC=y CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_GENERIC=y -CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS=2 CONFIG_USB_DWC3=y CONFIG_USB_DWC3_GENERIC=y CONFIG_USB_KEYBOARD=y diff --git a/configs/rock-pi-4-rk3399_defconfig b/configs/rock-pi-4-rk3399_defconfig index 17a65fffa5..7c49ccd064 100644 --- a/configs/rock-pi-4-rk3399_defconfig +++ b/configs/rock-pi-4-rk3399_defconfig @@ -30,6 +30,7 @@ CONFIG_SPL_STACK_R=y CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 CONFIG_TPL=y CONFIG_CMD_BOOTZ=y +CONFIG_CMD_NVEDIT_EFI=y CONFIG_CMD_DFU=y CONFIG_CMD_GPT=y CONFIG_CMD_MMC=y @@ -38,6 +39,7 @@ CONFIG_CMD_USB=y CONFIG_CMD_ROCKUSB=y CONFIG_CMD_USB_MASS_STORAGE=y # CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_EFIDEBUG=y CONFIG_CMD_TIME=y CONFIG_SPL_OF_CONTROL=y CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" @@ -91,9 +93,5 @@ CONFIG_DISPLAY_ROCKCHIP_HDMI=y CONFIG_SPL_TINY_MEMSET=y CONFIG_ERRNO_STR=y CONFIG_OF_LIBFDT_OVERLAY=y -CONFIG_CMD_NVEDIT_EFI=y -CONFIG_CMD_EFIDEBUG=y -CONFIG_TOOLS_MKEFICAPSULE=y -CONFIG_HEXDUMP=y CONFIG_EFI_CAPSULE_ON_DISK=y CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y diff --git a/configs/rock-pi-4c-rk3399_defconfig b/configs/rock-pi-4c-rk3399_defconfig index 5e93d5ac32..4f61a0ff66 100644 --- a/configs/rock-pi-4c-rk3399_defconfig +++ b/configs/rock-pi-4c-rk3399_defconfig @@ -30,6 +30,7 @@ CONFIG_SPL_STACK_R=y CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000 CONFIG_TPL=y CONFIG_CMD_BOOTZ=y +CONFIG_CMD_NVEDIT_EFI=y CONFIG_CMD_DFU=y CONFIG_CMD_GPT=y CONFIG_CMD_MMC=y @@ -38,6 +39,7 @@ CONFIG_CMD_USB=y CONFIG_CMD_ROCKUSB=y CONFIG_CMD_USB_MASS_STORAGE=y # CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_EFIDEBUG=y CONFIG_CMD_TIME=y CONFIG_SPL_OF_CONTROL=y CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" @@ -91,9 +93,5 @@ CONFIG_DISPLAY_ROCKCHIP_HDMI=y CONFIG_SPL_TINY_MEMSET=y CONFIG_ERRNO_STR=y CONFIG_OF_LIBFDT_OVERLAY=y -CONFIG_CMD_NVEDIT_EFI=y -CONFIG_CMD_EFIDEBUG=y -CONFIG_TOOLS_MKEFICAPSULE=y -CONFIG_HEXDUMP=y CONFIG_EFI_CAPSULE_ON_DISK=y CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y diff --git a/configs/rock-pi-n8-rk3288_defconfig b/configs/rock-pi-n8-rk3288_defconfig index 18c6d1b922..612663845c 100644 --- a/configs/rock-pi-n8-rk3288_defconfig +++ b/configs/rock-pi-n8-rk3288_defconfig @@ -73,6 +73,7 @@ CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y # CONFIG_RAM_ROCKCHIP_DEBUG is not set +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/configs/rzg2_beacon_defconfig b/configs/rzg2_beacon_defconfig index 36787057a2..b4ea6c630a 100644 --- a/configs/rzg2_beacon_defconfig +++ b/configs/rzg2_beacon_defconfig @@ -68,6 +68,8 @@ CONFIG_SPI_FLASH_WINBOND=y CONFIG_BITBANGMII=y CONFIG_BITBANGMII_MULTI=y CONFIG_PHY_ATHEROS=y +CONFIG_PHY_MICREL=y +CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_RENESAS_RAVB=y CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig index b69e053126..ba45ac0b71 100644 --- a/configs/sandbox64_defconfig +++ b/configs/sandbox64_defconfig @@ -101,6 +101,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y CONFIG_NETCONSOLE=y CONFIG_IP_DEFRAG=y CONFIG_BOOTP_SERVERIP=y +CONFIG_IPV6=y CONFIG_DM_DMA=y CONFIG_REGMAP=y CONFIG_SYSCON=y @@ -258,4 +259,3 @@ CONFIG_FWU_MULTI_BANK_UPDATE=y CONFIG_UNIT_TEST=y CONFIG_UT_TIME=y CONFIG_UT_DM=y -CONFIG_IPV6=y diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index f9c996b429..de799b5cea 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -135,6 +135,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y CONFIG_NETCONSOLE=y CONFIG_IP_DEFRAG=y CONFIG_BOOTP_SERVERIP=y +CONFIG_IPV6=y CONFIG_DM_DMA=y CONFIG_DEVRES=y CONFIG_DEBUG_DEVRES=y @@ -266,6 +267,7 @@ CONFIG_RESET_SYSCON=y CONFIG_RESET_SCMI=y CONFIG_DM_RTC=y CONFIG_RTC_RV8803=y +CONFIG_RTC_HT1380=y CONFIG_SCSI=y CONFIG_DM_SCSI=y CONFIG_SANDBOX_SERIAL=y @@ -333,5 +335,3 @@ CONFIG_TEST_FDTDEC=y CONFIG_UNIT_TEST=y CONFIG_UT_TIME=y CONFIG_UT_DM=y -CONFIG_IPV6=y -CONFIG_RTC_HT1380=y diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig index 7237efe685..88aaddfa4a 100644 --- a/configs/sandbox_flattree_defconfig +++ b/configs/sandbox_flattree_defconfig @@ -78,6 +78,7 @@ CONFIG_BOOTP_SEND_HOSTNAME=y CONFIG_NETCONSOLE=y CONFIG_IP_DEFRAG=y CONFIG_BOOTP_SERVERIP=y +CONFIG_IPV6=y CONFIG_DM_DMA=y CONFIG_REGMAP=y CONFIG_SYSCON=y @@ -216,4 +217,3 @@ CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y CONFIG_UNIT_TEST=y CONFIG_UT_TIME=y CONFIG_UT_DM=y -CONFIG_IPV6=y diff --git a/configs/stm32mp15_dhcom_basic_defconfig b/configs/stm32mp15_dhcom_basic_defconfig index 7db562c542..4ea80ad441 100644 --- a/configs/stm32mp15_dhcom_basic_defconfig +++ b/configs/stm32mp15_dhcom_basic_defconfig @@ -72,10 +72,8 @@ CONFIG_CMD_CLK=y CONFIG_CMD_DFU=y CONFIG_CMD_FUSE=y CONFIG_CMD_GPIO=y -CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y -CONFIG_CMD_MTD=y CONFIG_CMD_REMOTEPROC=y CONFIG_CMD_SPI=y CONFIG_CMD_USB=y @@ -112,9 +110,6 @@ CONFIG_STM32_ADC=y CONFIG_SPL_BLOCK_CACHE=y CONFIG_BOOTCOUNT_LIMIT=y CONFIG_SYS_BOOTCOUNT_MAGIC=0xB0C40000 -CONFIG_DFU_MMC=y -CONFIG_DFU_MTD=y -CONFIG_DFU_RAM=y CONFIG_GPIO_HOG=y CONFIG_DM_HWSPINLOCK=y CONFIG_HWSPINLOCK_STM32=y diff --git a/configs/stm32mp15_dhcor_basic_defconfig b/configs/stm32mp15_dhcor_basic_defconfig index c94f03569f..668e9ccf93 100644 --- a/configs/stm32mp15_dhcor_basic_defconfig +++ b/configs/stm32mp15_dhcor_basic_defconfig @@ -70,10 +70,8 @@ CONFIG_CMD_CLK=y CONFIG_CMD_DFU=y CONFIG_CMD_FUSE=y CONFIG_CMD_GPIO=y -CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y -CONFIG_CMD_MTD=y CONFIG_CMD_REMOTEPROC=y CONFIG_CMD_SPI=y CONFIG_CMD_USB=y @@ -109,9 +107,6 @@ CONFIG_STM32_ADC=y CONFIG_SPL_BLOCK_CACHE=y CONFIG_BOOTCOUNT_LIMIT=y CONFIG_SYS_BOOTCOUNT_MAGIC=0xB0C40000 -CONFIG_DFU_MMC=y -CONFIG_DFU_MTD=y -CONFIG_DFU_RAM=y CONFIG_GPIO_HOG=y CONFIG_DM_HWSPINLOCK=y CONFIG_HWSPINLOCK_STM32=y diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig index 5976a84491..c03256a0bf 100644 --- a/configs/tinker-rk3288_defconfig +++ b/configs/tinker-rk3288_defconfig @@ -82,6 +82,7 @@ CONFIG_REGULATOR_RK8XX=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/configs/tinker-s-rk3288_defconfig b/configs/tinker-s-rk3288_defconfig index 078f829c2d..294e5b1071 100644 --- a/configs/tinker-s-rk3288_defconfig +++ b/configs/tinker-s-rk3288_defconfig @@ -82,6 +82,7 @@ CONFIG_REGULATOR_RK8XX=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/configs/vyasa-rk3288_defconfig b/configs/vyasa-rk3288_defconfig index 0c9d61b805..47ccd708fc 100644 --- a/configs/vyasa-rk3288_defconfig +++ b/configs/vyasa-rk3288_defconfig @@ -82,6 +82,7 @@ CONFIG_REGULATOR_RK8XX=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_SPL_RAM=y +CONFIG_DM_RESET=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYS_NS16550_MEM32=y CONFIG_SYSRESET=y diff --git a/doc/Makefile b/doc/Makefile index f5de65e927..d0904a9f99 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -69,6 +69,14 @@ quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(BUILDDIR)/$3/$4) htmldocs: @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var))) +texinfodocs: + @+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,texinfo,$(var),texinfo,$(var))) + +# Note: the 'info' Make target is generated by sphinx itself when +# running the texinfodocs target defined above. +infodocs: texinfodocs + $(MAKE) -C $(BUILDDIR)/texinfo info + linkcheckdocs: @$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,linkcheck,$(var),,$(var))) @@ -109,6 +117,8 @@ cleandocs: dochelp: @echo ' U-Boot documentation in different formats from ReST:' @echo ' htmldocs - HTML' + @echo ' texinfodocs - Texinfo' + @echo ' infodocs - Info' @echo ' latexdocs - LaTeX' @echo ' pdfdocs - PDF' @echo ' epubdocs - EPUB' diff --git a/doc/board/emulation/qemu-ppce500.rst b/doc/board/emulation/qemu-ppce500.rst index 5de0aaf55d..82b50a01de 100644 --- a/doc/board/emulation/qemu-ppce500.rst +++ b/doc/board/emulation/qemu-ppce500.rst @@ -7,7 +7,7 @@ QEMU PPC E500 QEMU for PPC supports a special 'ppce500' machine designed for emulation and virtualization purposes. This document describes how to run U-Boot under it. -The QEMU ppce500 machine models a generic PowerPC E500 virtual machine with +The QEMU ppce500 machine models a generic PowerPC e500 virtual machine with support for the VirtIO standard networking device connected to the built-in PCI host controller. Some common devices in the CCSBAR space are modeled, including MPIC, 16550A UART devices, GPIO, I2C and PCI host controller with @@ -39,6 +39,7 @@ embedded DTB created by QEMU reflects the new setting. Both qemu-system-ppc and qemu-system-ppc64 provide emulation for the following 32-bit PowerPC CPUs: +* e500v1 * e500v2 * e500mc @@ -61,8 +62,9 @@ When U-Boot boots, you will notice the following:: This is because we only specified a core name to QEMU and it does not have a meaningful SVR value which represents an actual SoC that integrates such core. You can specify a real world SoC device that QEMU has built-in support but all -these SoCs are e500v2 based MPC85xx series, hence you cannot test anything -built for P4080 (e500mc), P5020 (e5500) and T2080 (e6500). +these SoCs are e500v1/e500v2 based MPC85xx series, hence you cannot test anything +built for P10xx/P2010/P2020 (e500v2), P204x/P304x/P40xx (e500mc), P50xx/T10xx (e5500) +and T208x/T4080/T4160/T4240 (e6500). By default a VirtIO standard PCI networking device is connected as an ethernet interface at PCI address 0.1.0, but we can switch that to an e1000 NIC by:: diff --git a/doc/board/ti/am335x_evm.rst b/doc/board/ti/am335x_evm.rst index 0b230cf7c7..ee4faec37c 100644 --- a/doc/board/ti/am335x_evm.rst +++ b/doc/board/ti/am335x_evm.rst @@ -1,8 +1,11 @@ .. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause .. sectionauthor:: Tom Rini <trini@konsulko.com> +AM335x Generation +================= + Summary -======= +------- This document covers various features of the `am335x_evm` default configuration, some of the related defconfigs, and how to enable hardware diff --git a/doc/board/ti/am62x_sk.rst b/doc/board/ti/am62x_sk.rst index 4e68c2018a..b1b7d99bef 100644 --- a/doc/board/ti/am62x_sk.rst +++ b/doc/board/ti/am62x_sk.rst @@ -1,8 +1,8 @@ .. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause .. sectionauthor:: Vignesh Raghavendra <vigneshr@ti.com> -Texas Instruments AM62 Platforms -================================ +AM62 Platforms +=============== Introduction: ------------- diff --git a/doc/board/ti/index.rst b/doc/board/ti/index.rst index 250d9242e8..89d537d195 100644 --- a/doc/board/ti/index.rst +++ b/doc/board/ti/index.rst @@ -1,11 +1,10 @@ .. SPDX-License-Identifier: GPL-2.0+ Texas Instruments -================= +################# .. toctree:: :maxdepth: 2 am335x_evm - j721e_evm - am62x_sk + k3 diff --git a/doc/board/ti/j721e_evm.rst b/doc/board/ti/j721e_evm.rst index ad70f15b7a..e898601c41 100644 --- a/doc/board/ti/j721e_evm.rst +++ b/doc/board/ti/j721e_evm.rst @@ -1,8 +1,8 @@ .. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause .. sectionauthor:: Lokesh Vutla <lokeshvutla@ti.com> -Texas Instruments K3 Platforms -============================== +J721E Platforms +=============== Introduction: ------------- diff --git a/doc/board/ti/k3.rst b/doc/board/ti/k3.rst new file mode 100644 index 0000000000..b49a60caf1 --- /dev/null +++ b/doc/board/ti/k3.rst @@ -0,0 +1,274 @@ +.. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause +.. sectionauthor:: Bryan Brattlof <bb@ti.com> + +K3 Generation +============= + +Summary +------- + +Texas Instrument's K3 family of SoCs utilize a heterogeneous multicore +and highly integrated device architecture targeted to maximize +performance and power efficiency for a wide range of industrial, +automotive and other broad market segments. + +Typically the processing cores and the peripherals for these devices are +partitioned into three functional domains to provide ultra-low power +modes as well as accommodating application and industrial safety systems +on the same SoC. These functional domains are typically called the: + +* Wakeup (WKUP) domain +* Micro-controller (MCU) domain +* Main domain + +For a more detailed view of what peripherals are attached to each +domain, consult the device specific documentation. + +K3 Based SoCs +------------- + +.. toctree:: + :maxdepth: 1 + + j721e_evm + am62x_sk + +Boot Flow Overview +------------------ + +For all K3 SoCs the first core started will be inside the Security +Management Subsystem (SMS) which will secure the device and start a core +in the wakeup domain to run the ROM code. ROM will then initialize the +boot media needed to load the binaries packaged inside `tiboot3.bin`, +including a 32bit U-Boot SPL, (called the wakup SPL) that ROM will jump +to after it has finished loading everything into internal SRAM. + +.. code-block:: text + + | WKUP Domain + ROM -> WKUP SPL -> + +The wakeup SPL, running on a wakeup domain core, will initialize DDR and +any peripherals needed load the larger binaries inside the `tispl.bin` +into DDR. Once loaded the wakeup SPL will start one of the 'big' +application cores inside the main domain to initialize the main domain, +starting with ARM Trusted Firmware (ATF), before moving on to start +OPTEE and the main domain's U-Boot SPL. + +.. code-block:: text + + | WKUP Domain | Main Domain -> + ROM -> WKUP SPL -> ATF -> OPTEE -> Main SPL + +The main domain's SPL, running on a 64bit application core, has +virtually unlimited space (billions of bytes now that DDR is working) to +initialize even more peripherals needed to load in the `u-boot.img` +which loads more firmware into the micro-controller & wakeup domains and +finally prepare the main domain to run Linux. + +.. code-block:: text + + | WKUP Domain | Main Domain -> + ROM -> WKUP SPL -> ATF -> OPTEE -> Main SPL -> UBoot -> Linux + +This is the typical boot flow for all K3 based SoCs, however this flow +offers quite a lot in the terms of flexibility, especially on High +Security (HS) SoCs. + +Boot Flow Variations +^^^^^^^^^^^^^^^^^^^^ + +All K3 SoCs will generally use the above boot flow with two main +differences depending on the capabilities of the boot ROM and the number +of cores inside the device. These differences split the bootflow into +essentially 4 unique but very similar flows: + +* Split binary with a combined firmware: (eg: AM65) +* Combined binary with a combined firmware: (eg: AM64) +* Split binary with a split firmware: (eg: J721E) +* Combined binary with a split firmware: (eg: AM62) + +For devices that utilize the split binary approach, ROM is not capable +of loading the firmware into the SoC requiring the wakeup domain's +U-Boot SPL to load the firmware. + +Devices with a split firmware will have two firmwares loaded into the +device at different times during the bootup process. TI's Foundational +Security (TIFS), needed to operate the Security Management Subsystem, +will either be loaded by ROM or the WKUP U-Boot SPL, then once the +wakeup U-Boot SPL has completed, the second Device Management (DM) +firmware can be loaded on the now free core in the wakeup domain. + +For more information on the bootup process of your SoC, consult the +device specific boot flow documentation. + +Software Sources +---------------- + +All scripts and code needed to build the `tiboot3.bin`, `tispl.bin` and +`u-boot.img` for all K3 SoCs can be located at the following places +online + +* **Das U-Boot** + + | **source:** https://source.denx.de/u-boot/u-boot.git + | **branch:** master + +* **K3 Image Gen** + + | **source:** https://git.ti.com/git/k3-image-gen/k3-image-gen.git + | **branch:** master + +* **ARM Trusted Firmware (ATF)** + + | **source:** https://github.com/ARM-software/arm-trusted-firmware.git + | **branch:** master + +* **Open Portable Trusted Execution Environment (OPTEE)** + + | **source:** https://github.com/OP-TEE/optee_os.git + | **branch:** master + +* **TI Firmware (TIFS, DM, DSMC)** + + | **source:** https://git.ti.com/git/processor-firmware/ti-linux-firmware.git + | **branch:** ti-linux-firmware + +* **TI's Security Development Tools** + + | **source:** https://git.ti.com/git/security-development-tools/core-secdev-k3.git + | **branch:** master + +Build Procedure +--------------- + +Depending on the specifics of your device, you will need three or more +binaries to boot your SoC. + +* `tiboot3.bin` (bootloader for the wakeup domain) +* `tispl.bin` (bootloader for the main domain) +* `u-boot.img` + +During the bootup process, both the 32bit wakeup domain and the 64bit +main domains will be involved. This means everything inside the +`tiboot3.bin` running in the wakeup domain will need to be compiled for +32bit cores and most binaries in the `tispl.bin` will need to be +compiled for 64bit main domain CPU cores. + +All of that to say you will need both a 32bit and 64bit cross compiler +(assuming you're using an x86 desktop) + +.. code-block:: bash + + export CC32=arm-linux-gnueabihf- + export CC64=aarch64-linux-gnu- + +Building tiboot3.bin +^^^^^^^^^^^^^^^^^^^^^ + +1. To generate the U-Boot SPL for the wakeup domain, use the following + commands, substituting :code:`{SOC}` for the name of your device (eg: + am62x) + +.. code-block:: bash + + # inside u-boot source + make ARCH=arm O=build/wkup CROSS_COMPILE=$CC32 {SOC}_evm_r5_defconfig + make ARCH=arm O=build/wkup CROSS_COMPILE=$CC32 + +2. Next we will use the K3 Image Gen scripts to package the various + firmware and the wakeup UBoot SPL into the final `tiboot3.bin` + binary. (or the `sysfw.itb` if your device uses the split binary + flow) + +.. code-block:: bash + + # inside k3-image-gen source + make CROSS_COMPILE=$CC32 SOC={SOC} SOC_TYPE={hs,gp} \ + TI_SECURE_DEV_PKG=<path/to/securit-development-tools> \ + SYSFW_PATH=<path/to/ti-sysfw/ti-fs-firmware-{SOC}-{hs|gp}.bin> \ + SYSFW_HS_INNER_CERT_PATH=<path/to/ti-sysfw/ti-fs-firmware-{SOC}-hs-cert.bin + +For devices that use the *combined binary flow*, you will also need to +supply the location of the SPL we created in step 1 above, so it can be +packaged into the final `tiboot3.bin`. + +.. code-block:: bash + + SBL=<path/to/wakeup/u-boot-spl.bin> + +At this point you should have all the needed binaries to boot the wakeup +domain of your K3 SoC. + +**Combined Binary Boot Flow** (eg: am62x, am64x, ... ) + + `k3-image-gen/tiboot3-{SOC}-{hs,gp}-evm.bin` + +**Split Binary Boot Flow** (eg: j721e, am65x) + + | `u-boot/build/wkup/tiboot3.bin` + | `k3-image-gen/sysfw-{SOC}-evm.bin` + +.. note :: + + It's important to rename the generated `tiboot3.bin` and `sysfw.itb` + to match exactly `tiboot3.bin` and `sysfw.itb` as ROM and the wakeup + UBoot SPL will only look for and load the files with these names. + +Building tispl.bin +^^^^^^^^^^^^^^^^^^^ + +The `tispl.bin` is a standard fitImage combining the firmware need for +the main domain to function properly as well as Device Management (DM) +firmware if your device using a split firmware. + +3. We will first need ATF, as it's the first thing to run on the 'big' + application cores on the main domain. + +.. code-block:: bash + + # inside arm-trusted-firmware source + make CROSS_COMPILE=$CC64 ARCH=aarch64 PLAT=k3 \ + TARGET_BOARD={lite|generic} \ + SPD=opteed \ + +Typically all `j7*` devices will use `TARGET_BOARD=generic` while all +Sitara (`am6*`) devices use the `lite` option. + +4. The Open Portable Trusted Execution Environment (OPTEE) is designed + to run as a companion to a non-secure Linux kernel for Cortex-A cores + using the TrustZone technology built into the core. + +.. code-block:: bash + + # inside optee_os source + make CROSS_COMPILE=$CC32 CROSS_COMPILE64=$CC64 \ + PLATFORM=k3 CFG_ARM64_core=y + +5. Finally, after ATF has initialized the main domain and OPTEE has + finished, we can jump back into U-Boot again, this time running on a + 64bit core in the main domain. + +.. code-block:: bash + + # inside u-boot source + make ARCH=arm O=build/main CROSS_COMPILE=$CC64 {SOC}_evm_a{53,72}_defconfig + make ARCH=arm O=build/main CROSS_COMPILE=$CC64 \ + ATF=<path/to/atf/bl31.bin \ + TEE=<path/to/optee/tee-pager_v2.bin + +If your device uses a split firmware, you will also need to supply the +path to the Device Management (DM) Firmware to be included in the final +`tispl.bin` binary + +.. code-block:: bash + + DM=<path/to/ti-linux-firmware/ti-dm/ipc_echo_testb_mcu1_0_release_strip.xer5f> + +At this point you should have every binary needed initialize both the +wakeup and main domain and to boot to the U-Boot prompt + +**Main Domain Bootloader** + + | `u-boot/build/main/tispl.bin` + | `u-boot/build/main/u-boot.img` diff --git a/doc/build/documentation.rst b/doc/build/documentation.rst new file mode 100644 index 0000000000..896264dd7c --- /dev/null +++ b/doc/build/documentation.rst @@ -0,0 +1,90 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +Building documentation +====================== + +The U-Boot documentation is based on the Sphinx documentation generator. + +HTML documentation +------------------ + +The *htmldocs* target is used to build the HTML documentation. It uses the +`Read the Docs Sphinx theme <https://sphinx-rtd-theme.readthedocs.io/en/stable/>`_. + +.. code-block:: bash + + # Create Python environment 'myenv' + python3 -m venv myenv + # Activate the Python environment + . myenv/bin/activate + # Install build requirements + python3 -m pip install -r doc/sphinx/requirements.txt + # Build the documentation + make htmldocs + # Deactivate the Python environment + deactivate + # Display the documentation in a graphical web browser + x-www-browser doc/output/index.html + +Infodoc documentation +--------------------- + +The *infodocs* target builds both a texinfo and an info file: + +.. code-block:: bash + + # Create Python environment 'myenv' + python3 -m venv myenv + # Activate the Python environment + . myenv/bin/activate + # Install build requirements + python3 -m pip install -r doc/sphinx/requirements.txt + # Build the documentation + make infodocs + # Deactivate the Python environment + deactivate + # Display the documentation + info doc/output/texinfo/u-boot.info + +PDF documentation +----------------- + +The *pdfdocs* target is meant to be used to build PDF documenation. +As v2023.01 it fails with 'LaTeX Error: Too deeply nested'. + +We can use texi2pdf instead: + +.. code-block:: bash + + # Create Python environment 'myenv' + python3 -m venv myenv + # Activate the Python environment + . myenv/bin/activate + # Install build requirements + python3 -m pip install -r doc/sphinx/requirements.txt + # Build the documentation + make texinfodocs + # Deactivate the Python environment + deactivate + # Convert to PDF + texi2pdf doc/output/texinfo/u-boot.texi + +Texinfo documentation +--------------------- + +To build only the texinfo documentation the *texinfodocs* target is used: + +.. code-block:: bash + + # Create Python environment 'myenv' + python3 -m venv myenv + # Activate the Python environment + . myenv/bin/activate + # Install build requirements + python3 -m pip install -r doc/sphinx/requirements.txt + # Build the documentation + make texinfodocs + # Deactivate the Python environment + deactivate + +The output is in file *doc/output/texinfo/u-boot.texi*. diff --git a/doc/build/index.rst b/doc/build/index.rst index 9a8105db21..dc9cde4001 100644 --- a/doc/build/index.rst +++ b/doc/build/index.rst @@ -12,3 +12,4 @@ Build U-Boot docker tools buildman + documentation diff --git a/doc/conf.py b/doc/conf.py index 62c8d31270..3db70f80c1 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -449,7 +449,7 @@ for fn in os.listdir('.'): # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'dasuboot', 'The U-Boot Documentation', + (master_doc, 'u-boot', 'The U-Boot Documentation', [author], 1) ] @@ -463,8 +463,8 @@ man_pages = [ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'DasUBoot', 'The U-Boot Documentation', - author, 'DasUBoot', 'One line description of project.', + (master_doc, 'u-boot', 'The U-Boot Documentation', + author, 'U-Boot', 'Boot loader for embedded systems', 'Miscellaneous'), ] diff --git a/doc/develop/release_cycle.rst b/doc/develop/release_cycle.rst index 9af63731cd..16fb4a6288 100644 --- a/doc/develop/release_cycle.rst +++ b/doc/develop/release_cycle.rst @@ -48,12 +48,12 @@ Examples:: Current Status -------------- -* U-Boot v2022.10 was released on Mon 03 October 2022. +* U-Boot v2023.01 was released on Mon 09 January 2023. -* The Merge Window for the next release (v2023.01) is **open** until -rc1 - release on Mon 24 October 2022. +* The Merge Window for the next release (v2023.04) is **open** until -rc1 + release on Mon 30 January 2023. -* Release "v2023.01" is scheduled for 09 January 2023. +* Release "v2023.04" is scheduled for 03 April 2023. Future Releases --------------- @@ -61,31 +61,29 @@ Future Releases .. The following commented out dates are for when release candidates are planned to be tagged. -For the next scheduled release, release candidates were made on:: +.. For the next scheduled release, release candidates were made on:: -* U-Boot v2023.01-rc1 was released on Mon 07 November 2022. +.. * U-Boot v2023.04-rc1 was released on Mon 30 January 2023. -* U-Boot v2023.01-rc2 was released on Mon 21 November 2022. +.. * U-Boot v2023.04-rc2 was released on Mon 13 February 2023. -* U-Boot v2023.01-rc3 was released on Mon 05 December 2022. +.. * U-Boot v2023.04-rc3 was released on Mon 27 February 2023. -* U-Boot v2023.01-rc4 was released on Mon 19 December 2022. +.. * U-Boot v2023.04-rc4 was released on Mon 13 March 2023. -.. * U-Boot v2023.01-rc5 was released on Mon 19 December 2022. - -.. * U-Boot v2023.01-rc6 was released on Mon 02 January 2023. +.. * U-Boot v2023.04-rc5 was released on Mon 27 March 2023. Please note that the following dates are planned only and may be deviated from as needed. -* "v2023.01": end of MW = Mon, Oct 24, 2022; release = Mon, Jan 09, 2023 - * "v2023.04": end of MW = Mon, Jan 30, 2022; release = Mon, Apr 03, 2023 * "v2023.07": end of MW = Mon, Apr 24, 2023; release = Mon, Jul 03, 2023 * "v2023.10": end of MW = Mon, Jul 24, 2023; release = Mon, Oct 02, 2023 +* "v2024.01": end of MW = Mon, Oct 23, 2023; release = Mon, Jan 08, 2024 + Previous Releases ----------------- @@ -93,6 +91,8 @@ Note: these statistics are generated by our fork of `gitdm <https://source.denx.de/u-boot/gitdm>`_, which was originally created by Jonathan Corbet. +* :doc:`statistics/u-boot-stats-v2023.01` which was released on 09 January 2023. + * :doc:`statistics/u-boot-stats-v2022.10` which was released on 03 October 2022. * :doc:`statistics/u-boot-stats-v2022.07` which was released on 11 July 2022. diff --git a/doc/develop/statistics/u-boot-stats-v1.3.0.rst b/doc/develop/statistics/u-boot-stats-v1.3.0.rst index c891468f2a..cbf433f453 100644 --- a/doc/develop/statistics/u-boot-stats-v1.3.0.rst +++ b/doc/develop/statistics/u-boot-stats-v1.3.0.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v1.3.0 ==================================== -* Processed 1153 csets from 102 developers +* Processed 1153 changesets from 102 developers * 38 employers found diff --git a/doc/develop/statistics/u-boot-stats-v1.3.1.rst b/doc/develop/statistics/u-boot-stats-v1.3.1.rst index e6ddd5460c..6a5c592b00 100644 --- a/doc/develop/statistics/u-boot-stats-v1.3.1.rst +++ b/doc/develop/statistics/u-boot-stats-v1.3.1.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v1.3.1 ==================================== -* Processed 40 csets from 5 developers +* Processed 40 changesets from 5 developers * 5 employers found diff --git a/doc/develop/statistics/u-boot-stats-v1.3.2.rst b/doc/develop/statistics/u-boot-stats-v1.3.2.rst index f050558fb4..21fc2df09a 100644 --- a/doc/develop/statistics/u-boot-stats-v1.3.2.rst +++ b/doc/develop/statistics/u-boot-stats-v1.3.2.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v1.3.2 ==================================== -* Processed 744 csets from 79 developers +* Processed 744 changesets from 79 developers * 38 employers found diff --git a/doc/develop/statistics/u-boot-stats-v1.3.3.rst b/doc/develop/statistics/u-boot-stats-v1.3.3.rst index c381a73e96..0464275424 100644 --- a/doc/develop/statistics/u-boot-stats-v1.3.3.rst +++ b/doc/develop/statistics/u-boot-stats-v1.3.3.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v1.3.3 ==================================== -* Processed 646 csets from 75 developers +* Processed 646 changesets from 75 developers * 38 employers found diff --git a/doc/develop/statistics/u-boot-stats-v1.3.4.rst b/doc/develop/statistics/u-boot-stats-v1.3.4.rst index 125de241f7..33ef9895f0 100644 --- a/doc/develop/statistics/u-boot-stats-v1.3.4.rst +++ b/doc/develop/statistics/u-boot-stats-v1.3.4.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v1.3.4 ==================================== -* Processed 511 csets from 86 developers +* Processed 511 changesets from 86 developers * 46 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2008.10.rst b/doc/develop/statistics/u-boot-stats-v2008.10.rst index b163a5cb48..0370c70745 100644 --- a/doc/develop/statistics/u-boot-stats-v2008.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2008.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2008.10 ====================================== -* Processed 2498 csets from 174 developers +* Processed 2498 changesets from 174 developers * 85 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2009.01.rst b/doc/develop/statistics/u-boot-stats-v2009.01.rst index 94c9bda436..3495b6dada 100644 --- a/doc/develop/statistics/u-boot-stats-v2009.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2009.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2009.01 ====================================== -* Processed 464 csets from 69 developers +* Processed 464 changesets from 69 developers * 33 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2009.03.rst b/doc/develop/statistics/u-boot-stats-v2009.03.rst index 8c8a10ef91..bff94f0730 100644 --- a/doc/develop/statistics/u-boot-stats-v2009.03.rst +++ b/doc/develop/statistics/u-boot-stats-v2009.03.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2009.03 ====================================== -* Processed 489 csets from 90 developers +* Processed 489 changesets from 90 developers * 46 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2009.06.rst b/doc/develop/statistics/u-boot-stats-v2009.06.rst index 192d85f02d..9e2f3ba725 100644 --- a/doc/develop/statistics/u-boot-stats-v2009.06.rst +++ b/doc/develop/statistics/u-boot-stats-v2009.06.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2009.06 ====================================== -* Processed 433 csets from 74 developers +* Processed 433 changesets from 74 developers * 27 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2009.08.rst b/doc/develop/statistics/u-boot-stats-v2009.08.rst index 57c044ac0e..f9711b833e 100644 --- a/doc/develop/statistics/u-boot-stats-v2009.08.rst +++ b/doc/develop/statistics/u-boot-stats-v2009.08.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2009.08 ====================================== -* Processed 657 csets from 96 developers +* Processed 657 changesets from 96 developers * 35 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2009.11.rst b/doc/develop/statistics/u-boot-stats-v2009.11.rst index b9f64b1c94..2e1b2ea71e 100644 --- a/doc/develop/statistics/u-boot-stats-v2009.11.rst +++ b/doc/develop/statistics/u-boot-stats-v2009.11.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2009.11 ====================================== -* Processed 531 csets from 90 developers +* Processed 531 changesets from 90 developers * 39 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2010.03.rst b/doc/develop/statistics/u-boot-stats-v2010.03.rst index 15b5741ea3..5a8b0d6b8a 100644 --- a/doc/develop/statistics/u-boot-stats-v2010.03.rst +++ b/doc/develop/statistics/u-boot-stats-v2010.03.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2010.03 ====================================== -* Processed 468 csets from 92 developers +* Processed 468 changesets from 92 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2010.06.rst b/doc/develop/statistics/u-boot-stats-v2010.06.rst index 72348746fb..ddd59ee7c0 100644 --- a/doc/develop/statistics/u-boot-stats-v2010.06.rst +++ b/doc/develop/statistics/u-boot-stats-v2010.06.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2010.06 ====================================== -* Processed 402 csets from 100 developers +* Processed 402 changesets from 100 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2010.09.rst b/doc/develop/statistics/u-boot-stats-v2010.09.rst index acdab5bf15..6a0def0c6e 100644 --- a/doc/develop/statistics/u-boot-stats-v2010.09.rst +++ b/doc/develop/statistics/u-boot-stats-v2010.09.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2010.09 ====================================== -* Processed 402 csets from 100 developers +* Processed 402 changesets from 100 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2010.12.rst b/doc/develop/statistics/u-boot-stats-v2010.12.rst index 324752676c..2127adf1e9 100644 --- a/doc/develop/statistics/u-boot-stats-v2010.12.rst +++ b/doc/develop/statistics/u-boot-stats-v2010.12.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2010.12 ====================================== -* Processed 777 csets from 111 developers +* Processed 777 changesets from 111 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2011.03.rst b/doc/develop/statistics/u-boot-stats-v2011.03.rst index 404a83c673..5242471446 100644 --- a/doc/develop/statistics/u-boot-stats-v2011.03.rst +++ b/doc/develop/statistics/u-boot-stats-v2011.03.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2011.03 ====================================== -* Processed 451 csets from 80 developers +* Processed 451 changesets from 80 developers * 25 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2011.06.rst b/doc/develop/statistics/u-boot-stats-v2011.06.rst index 4edc09174d..e1b00e96a3 100644 --- a/doc/develop/statistics/u-boot-stats-v2011.06.rst +++ b/doc/develop/statistics/u-boot-stats-v2011.06.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2011.06 ====================================== -* Processed 636 csets from 134 developers +* Processed 636 changesets from 134 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2011.09.rst b/doc/develop/statistics/u-boot-stats-v2011.09.rst index c135a48225..9e2538e1e0 100644 --- a/doc/develop/statistics/u-boot-stats-v2011.09.rst +++ b/doc/develop/statistics/u-boot-stats-v2011.09.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2011.09 ====================================== -* Processed 645 csets from 120 developers +* Processed 645 changesets from 120 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2011.12.rst b/doc/develop/statistics/u-boot-stats-v2011.12.rst index cb9244f841..3d2fdcd06b 100644 --- a/doc/develop/statistics/u-boot-stats-v2011.12.rst +++ b/doc/develop/statistics/u-boot-stats-v2011.12.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2011.12 ====================================== -* Processed 1530 csets from 146 developers +* Processed 1530 changesets from 146 developers * 34 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2012.04.rst b/doc/develop/statistics/u-boot-stats-v2012.04.rst index f0324d991f..1fe67b31ce 100644 --- a/doc/develop/statistics/u-boot-stats-v2012.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2012.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2012.04 ====================================== -* Processed 773 csets from 126 developers +* Processed 773 changesets from 126 developers * 36 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2012.07.rst b/doc/develop/statistics/u-boot-stats-v2012.07.rst index 040ddab69b..7bcf81a4f4 100644 --- a/doc/develop/statistics/u-boot-stats-v2012.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2012.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2012.07 ====================================== -* Processed 775 csets from 114 developers +* Processed 775 changesets from 114 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2012.10.rst b/doc/develop/statistics/u-boot-stats-v2012.10.rst index ec06b574fb..715ec34255 100644 --- a/doc/develop/statistics/u-boot-stats-v2012.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2012.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2012.12 ====================================== -* Processed 925 csets from 134 developers +* Processed 925 changesets from 134 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2013.07.rst b/doc/develop/statistics/u-boot-stats-v2013.07.rst index b0ee57c6fd..61b90a53ef 100644 --- a/doc/develop/statistics/u-boot-stats-v2013.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2013.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2013.07 ====================================== -* Processed 948 csets from 162 developers +* Processed 948 changesets from 162 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2013.10.rst b/doc/develop/statistics/u-boot-stats-v2013.10.rst index 55a5856d19..4088020166 100644 --- a/doc/develop/statistics/u-boot-stats-v2013.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2013.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2013.10 ====================================== -* Processed 710 csets from 135 developers +* Processed 710 changesets from 135 developers * 28 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2014.01.rst b/doc/develop/statistics/u-boot-stats-v2014.01.rst index 809f3ff013..584226904d 100644 --- a/doc/develop/statistics/u-boot-stats-v2014.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2014.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2014.01 ====================================== -* Processed 980 csets from 154 developers +* Processed 980 changesets from 154 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2014.04.rst b/doc/develop/statistics/u-boot-stats-v2014.04.rst index 47d331464e..a794b113e9 100644 --- a/doc/develop/statistics/u-boot-stats-v2014.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2014.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2014.04 ====================================== -* Processed 769 csets from 109 developers +* Processed 769 changesets from 109 developers * 26 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2014.07.rst b/doc/develop/statistics/u-boot-stats-v2014.07.rst index d931ca028d..d3b47f6a74 100644 --- a/doc/develop/statistics/u-boot-stats-v2014.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2014.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2014.07 ====================================== -* Processed 1074 csets from 146 developers +* Processed 1074 changesets from 146 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2014.10.rst b/doc/develop/statistics/u-boot-stats-v2014.10.rst index ef33126845..b5c794ad05 100644 --- a/doc/develop/statistics/u-boot-stats-v2014.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2014.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2014.10 ====================================== -* Processed 1111 csets from 145 developers +* Processed 1111 changesets from 145 developers * 24 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2015.01.rst b/doc/develop/statistics/u-boot-stats-v2015.01.rst index d81afd5b42..73b6d77847 100644 --- a/doc/develop/statistics/u-boot-stats-v2015.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2015.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2015.01 ====================================== -* Processed 1588 csets from 162 developers +* Processed 1588 changesets from 162 developers * 35 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2015.04.rst b/doc/develop/statistics/u-boot-stats-v2015.04.rst index a16da2ee4d..75a0215af7 100644 --- a/doc/develop/statistics/u-boot-stats-v2015.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2015.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2015.04 ====================================== -* Processed 1585 csets from 169 developers +* Processed 1585 changesets from 169 developers * 36 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2015.07.rst b/doc/develop/statistics/u-boot-stats-v2015.07.rst index 7999b27fe3..ed6baee6b3 100644 --- a/doc/develop/statistics/u-boot-stats-v2015.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2015.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2015.07 ====================================== -* Processed 1563 csets from 156 developers +* Processed 1563 changesets from 156 developers * 28 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2015.10.rst b/doc/develop/statistics/u-boot-stats-v2015.10.rst index 1e9c98d5b8..6936b36f87 100644 --- a/doc/develop/statistics/u-boot-stats-v2015.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2015.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2015.10 ====================================== -* Processed 2069 csets from 182 developers +* Processed 2069 changesets from 182 developers * 32 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2016.01.rst b/doc/develop/statistics/u-boot-stats-v2016.01.rst index 8a7bcb7d07..95ed8d11b6 100644 --- a/doc/develop/statistics/u-boot-stats-v2016.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2016.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2016.01 ====================================== -* Processed 1513 csets from 149 developers +* Processed 1513 changesets from 149 developers * 33 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2016.03.rst b/doc/develop/statistics/u-boot-stats-v2016.03.rst index 6fe2219281..f66aa028e8 100644 --- a/doc/develop/statistics/u-boot-stats-v2016.03.rst +++ b/doc/develop/statistics/u-boot-stats-v2016.03.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2016.03 ====================================== -* Processed 1375 csets from 126 developers +* Processed 1375 changesets from 126 developers * 26 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2016.05.rst b/doc/develop/statistics/u-boot-stats-v2016.05.rst index a40c51fed4..792b3328a0 100644 --- a/doc/develop/statistics/u-boot-stats-v2016.05.rst +++ b/doc/develop/statistics/u-boot-stats-v2016.05.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2016.05 ====================================== -* Processed 1043 csets from 133 developers +* Processed 1043 changesets from 133 developers * 23 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2016.07.rst b/doc/develop/statistics/u-boot-stats-v2016.07.rst index d55e63e03b..d62729a678 100644 --- a/doc/develop/statistics/u-boot-stats-v2016.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2016.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2016.07 ====================================== -* Processed 1078 csets from 133 developers +* Processed 1078 changesets from 133 developers * 27 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2016.09.rst b/doc/develop/statistics/u-boot-stats-v2016.09.rst index dabd187214..75c033264a 100644 --- a/doc/develop/statistics/u-boot-stats-v2016.09.rst +++ b/doc/develop/statistics/u-boot-stats-v2016.09.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2016.09 ====================================== -* Processed 987 csets from 129 developers +* Processed 987 changesets from 129 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2016.11.rst b/doc/develop/statistics/u-boot-stats-v2016.11.rst index 3bf61d5530..9fb6e3e526 100644 --- a/doc/develop/statistics/u-boot-stats-v2016.11.rst +++ b/doc/develop/statistics/u-boot-stats-v2016.11.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2016.11 ====================================== -* Processed 1031 csets from 114 developers +* Processed 1031 changesets from 114 developers * 26 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2017.01.rst b/doc/develop/statistics/u-boot-stats-v2017.01.rst index 4a996eab1c..6f14d7e1c3 100644 --- a/doc/develop/statistics/u-boot-stats-v2017.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2017.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2017.01 ====================================== -* Processed 883 csets from 137 developers +* Processed 883 changesets from 137 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2017.03.rst b/doc/develop/statistics/u-boot-stats-v2017.03.rst index 733c9752de..bce2fe1709 100644 --- a/doc/develop/statistics/u-boot-stats-v2017.03.rst +++ b/doc/develop/statistics/u-boot-stats-v2017.03.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2017.03 ====================================== -* Processed 664 csets from 126 developers +* Processed 664 changesets from 126 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2017.05.rst b/doc/develop/statistics/u-boot-stats-v2017.05.rst index bae478837b..39e76846a7 100644 --- a/doc/develop/statistics/u-boot-stats-v2017.05.rst +++ b/doc/develop/statistics/u-boot-stats-v2017.05.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2017.05 ====================================== -* Processed 915 csets from 139 developers +* Processed 915 changesets from 139 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2017.07.rst b/doc/develop/statistics/u-boot-stats-v2017.07.rst index 9956378407..3999d625cf 100644 --- a/doc/develop/statistics/u-boot-stats-v2017.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2017.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2017.07 ====================================== -* Processed 1371 csets from 129 developers +* Processed 1371 changesets from 129 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2017.09.rst b/doc/develop/statistics/u-boot-stats-v2017.09.rst index 09b4bf8903..a6768da6e3 100644 --- a/doc/develop/statistics/u-boot-stats-v2017.09.rst +++ b/doc/develop/statistics/u-boot-stats-v2017.09.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2017.09 ====================================== -* Processed 1308 csets from 130 developers +* Processed 1308 changesets from 130 developers * 27 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2017.11.rst b/doc/develop/statistics/u-boot-stats-v2017.11.rst index 700e09d70f..ba2f9e3ba6 100644 --- a/doc/develop/statistics/u-boot-stats-v2017.11.rst +++ b/doc/develop/statistics/u-boot-stats-v2017.11.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2017.11 ====================================== -* Processed 989 csets from 123 developers +* Processed 989 changesets from 123 developers * 28 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2018.01.rst b/doc/develop/statistics/u-boot-stats-v2018.01.rst index b2b3d0f05f..a5c68e7641 100644 --- a/doc/develop/statistics/u-boot-stats-v2018.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2018.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2018.01 ====================================== -* Processed 785 csets from 132 developers +* Processed 785 changesets from 132 developers * 32 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2018.03.rst b/doc/develop/statistics/u-boot-stats-v2018.03.rst index f79c7b6888..7453aa177b 100644 --- a/doc/develop/statistics/u-boot-stats-v2018.03.rst +++ b/doc/develop/statistics/u-boot-stats-v2018.03.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2018.03 ====================================== -* Processed 1193 csets from 151 developers +* Processed 1193 changesets from 151 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2018.05.rst b/doc/develop/statistics/u-boot-stats-v2018.05.rst index 57a3d837e9..648832a47c 100644 --- a/doc/develop/statistics/u-boot-stats-v2018.05.rst +++ b/doc/develop/statistics/u-boot-stats-v2018.05.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2018.05 ====================================== -* Processed 977 csets from 128 developers +* Processed 977 changesets from 128 developers * 26 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2018.07.rst b/doc/develop/statistics/u-boot-stats-v2018.07.rst index c17b214190..da1b8aa1a4 100644 --- a/doc/develop/statistics/u-boot-stats-v2018.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2018.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2018.07 ====================================== -* Processed 1055 csets from 141 developers +* Processed 1055 changesets from 141 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2018.09.rst b/doc/develop/statistics/u-boot-stats-v2018.09.rst index 2a5a979049..d360b9a891 100644 --- a/doc/develop/statistics/u-boot-stats-v2018.09.rst +++ b/doc/develop/statistics/u-boot-stats-v2018.09.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2018.09 ====================================== -* Processed 983 csets from 138 developers +* Processed 983 changesets from 138 developers * 32 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2018.11.rst b/doc/develop/statistics/u-boot-stats-v2018.11.rst index 8c84bb83b3..6ce39b9ae9 100644 --- a/doc/develop/statistics/u-boot-stats-v2018.11.rst +++ b/doc/develop/statistics/u-boot-stats-v2018.11.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2018.11 ====================================== -* Processed 1105 csets from 130 developers +* Processed 1105 changesets from 130 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2019.01.rst b/doc/develop/statistics/u-boot-stats-v2019.01.rst index bcec3e8086..32b7cca4c0 100644 --- a/doc/develop/statistics/u-boot-stats-v2019.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2019.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2019.01 ====================================== -* Processed 1149 csets from 140 developers +* Processed 1149 changesets from 140 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2019.04.rst b/doc/develop/statistics/u-boot-stats-v2019.04.rst index 6d76e0e92d..24920b6f24 100644 --- a/doc/develop/statistics/u-boot-stats-v2019.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2019.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2019.04 ====================================== -* Processed 1193 csets from 182 developers +* Processed 1193 changesets from 182 developers * 28 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2019.07.rst b/doc/develop/statistics/u-boot-stats-v2019.07.rst index 25af8ad909..eb2ff5ffc0 100644 --- a/doc/develop/statistics/u-boot-stats-v2019.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2019.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2019.07 ====================================== -* Processed 2047 csets from 215 developers +* Processed 2047 changesets from 215 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2019.10.rst b/doc/develop/statistics/u-boot-stats-v2019.10.rst index 367b93236d..bd3eead6fa 100644 --- a/doc/develop/statistics/u-boot-stats-v2019.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2019.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2019.10 ====================================== -* Processed 2007 csets from 190 developers +* Processed 2007 changesets from 190 developers * 32 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2020.01.rst b/doc/develop/statistics/u-boot-stats-v2020.01.rst index 35b1721588..8aa9dc4006 100644 --- a/doc/develop/statistics/u-boot-stats-v2020.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2020.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2020.01 ====================================== -* Processed 1826 csets from 192 developers +* Processed 1826 changesets from 192 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2020.04.rst b/doc/develop/statistics/u-boot-stats-v2020.04.rst index 6650ad3bf0..c3f839f898 100644 --- a/doc/develop/statistics/u-boot-stats-v2020.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2020.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2020.04 ====================================== -* Processed 1639 csets from 189 developers +* Processed 1639 changesets from 189 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2020.07.rst b/doc/develop/statistics/u-boot-stats-v2020.07.rst index ea99c59ed0..8218f976a6 100644 --- a/doc/develop/statistics/u-boot-stats-v2020.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2020.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2020.07 ====================================== -* Processed 1918 csets from 203 developers +* Processed 1918 changesets from 203 developers * 32 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2020.10.rst b/doc/develop/statistics/u-boot-stats-v2020.10.rst index 0c0ccbebcd..fbd7e05ce2 100644 --- a/doc/develop/statistics/u-boot-stats-v2020.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2020.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2020.10 ====================================== -* Processed 2048 csets from 227 developers +* Processed 2048 changesets from 227 developers * 31 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2021.01.rst b/doc/develop/statistics/u-boot-stats-v2021.01.rst index f8193bb6ff..41fb193202 100644 --- a/doc/develop/statistics/u-boot-stats-v2021.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2021.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2021.01 ====================================== -* Processed 1694 csets from 163 developers +* Processed 1694 changesets from 163 developers * 27 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2021.04.rst b/doc/develop/statistics/u-boot-stats-v2021.04.rst index 2f5df964de..e47b6fc759 100644 --- a/doc/develop/statistics/u-boot-stats-v2021.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2021.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2021.04 ====================================== -* Processed 1675 csets from 194 developers +* Processed 1675 changesets from 194 developers * 28 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2021.07.rst b/doc/develop/statistics/u-boot-stats-v2021.07.rst index e086220806..b41d2e3e51 100644 --- a/doc/develop/statistics/u-boot-stats-v2021.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2021.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2021.07 ====================================== -* Processed 1730 csets from 187 developers +* Processed 1730 changesets from 187 developers * 30 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2021.10.rst b/doc/develop/statistics/u-boot-stats-v2021.10.rst index b2dcffe7d5..63c8f8b6dd 100644 --- a/doc/develop/statistics/u-boot-stats-v2021.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2021.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2021.10 ====================================== -* Processed 1509 csets from 176 developers +* Processed 1509 changesets from 176 developers * 28 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2022.01.rst b/doc/develop/statistics/u-boot-stats-v2022.01.rst index a6d130c0e3..7b60c24a75 100644 --- a/doc/develop/statistics/u-boot-stats-v2022.01.rst +++ b/doc/develop/statistics/u-boot-stats-v2022.01.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2022.01 ====================================== -* Processed 1417 csets from 164 developers +* Processed 1417 changesets from 164 developers * 29 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2022.04.rst b/doc/develop/statistics/u-boot-stats-v2022.04.rst index 5d61832aa8..ef235114a4 100644 --- a/doc/develop/statistics/u-boot-stats-v2022.04.rst +++ b/doc/develop/statistics/u-boot-stats-v2022.04.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2022.04 ====================================== -* Processed 1555 csets from 193 developers +* Processed 1555 changesets from 193 developers * 27 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2022.07.rst b/doc/develop/statistics/u-boot-stats-v2022.07.rst index c1b627cd86..dc54e9a716 100644 --- a/doc/develop/statistics/u-boot-stats-v2022.07.rst +++ b/doc/develop/statistics/u-boot-stats-v2022.07.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2022.07 ====================================== -* Processed 1696 csets from 183 developers +* Processed 1696 changesets from 183 developers * 27 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2022.10.rst b/doc/develop/statistics/u-boot-stats-v2022.10.rst index 0693d686df..6fb71d4753 100644 --- a/doc/develop/statistics/u-boot-stats-v2022.10.rst +++ b/doc/develop/statistics/u-boot-stats-v2022.10.rst @@ -3,7 +3,7 @@ Release Statistics for U-Boot v2022.10 ====================================== -* Processed 1521 csets from 151 developers +* Processed 1521 changesets from 151 developers * 25 employers found diff --git a/doc/develop/statistics/u-boot-stats-v2023.01.rst b/doc/develop/statistics/u-boot-stats-v2023.01.rst new file mode 100644 index 0000000000..2fd34bb5ee --- /dev/null +++ b/doc/develop/statistics/u-boot-stats-v2023.01.rst @@ -0,0 +1,715 @@ +:orphan: + +Release Statistics for U-Boot v2023.01 +====================================== + +* Processed 1396 changesets from 152 developers + +* 23 employers found + +* A total of 91252 lines added, 42422 removed (delta 48830) + +.. table:: Developers with the most changesets + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 266 (19.1%) + Heinrich Schuchardt 103 (7.4%) + Pali Rohár 57 (4.1%) + Tom Rini 48 (3.4%) + Michal Simek 45 (3.2%) + Marek Vasut 39 (2.8%) + Michal Suchanek 35 (2.5%) + Weijie Gao 32 (2.3%) + Stefan Roese 28 (2.0%) + Marcel Ziswiler 28 (2.0%) + Masahisa Kojima 27 (1.9%) + William Zhang 27 (1.9%) + Frieder Schrempf 25 (1.8%) + Andre Przywara 24 (1.7%) + Ashok Reddy Soma 23 (1.6%) + Quentin Schulz 21 (1.5%) + Patrick Delaunay 20 (1.4%) + Viacheslav Mitrofanov 20 (1.4%) + Sughosh Ganu 20 (1.4%) + Tim Harvey 18 (1.3%) + Rasmus Villemoes 18 (1.3%) + Patrice Chotard 17 (1.2%) + Adam Ford 16 (1.1%) + Sumit Garg 15 (1.1%) + Fabio Estevam 14 (1.0%) + Andrew Davis 14 (1.0%) + Chin-Ting Kuo 14 (1.0%) + Venkatesh Yadav Abbarapu 13 (0.9%) + Paul Barker 13 (0.9%) + Roger Quadros 12 (0.9%) + Michael Trimarchi 11 (0.8%) + Ovidiu Panait 11 (0.8%) + Alexander Dahl 11 (0.8%) + Sean Anderson 10 (0.7%) + Ilias Apalodimas 9 (0.6%) + Jim Liu 9 (0.6%) + Johan Jonker 9 (0.6%) + Bin Meng 8 (0.6%) + Conor Dooley 8 (0.6%) + Oliver Graute 8 (0.6%) + Takahiro Kuwano 8 (0.6%) + Dario Binacchi 7 (0.5%) + Chris Packham 7 (0.5%) + Etienne Carriere 6 (0.4%) + John Keeping 6 (0.4%) + Martyn Welch 5 (0.4%) + Robert Marko 5 (0.4%) + Sergiu Moga 5 (0.4%) + Bernhard Messerklinger 5 (0.4%) + Stefan Herbrechtsmeier 5 (0.4%) + Manoj Sai 4 (0.3%) + Daniel Schwierzeck 4 (0.3%) + Yann Gautier 4 (0.3%) + Ying-Chun Liu (PaulLiu) 4 (0.3%) + Padmarao Begari 4 (0.3%) + Sergei Antonov 4 (0.3%) + Cédric Le Goater 4 (0.3%) + Alice Guo 4 (0.3%) + Jay Buddhabhatti 4 (0.3%) + Jagan Teki 3 (0.2%) + Philippe Schenker 3 (0.2%) + Bryan Brattlof 3 (0.2%) + FUKAUMI Naoki 3 (0.2%) + Samuel Holland 3 (0.2%) + Alistair Delva 3 (0.2%) + Rick Chen 3 (0.2%) + Kautuk Consul 3 (0.2%) + Gabriel Fernandez 3 (0.2%) + T Karthik Reddy 3 (0.2%) + Mihai Sain 3 (0.2%) + Dylan Hung 3 (0.2%) + Yu Chien Peter Lin 3 (0.2%) + Andrejs Cainikovs 3 (0.2%) + Ye Li 3 (0.2%) + Mattijs Korpershoek 3 (0.2%) + Samuel Mendoza-Jonas 3 (0.2%) + Philip Oberfichtner 3 (0.2%) + Samuel Obuch 3 (0.2%) + Durai Manickam KR 3 (0.2%) + Dai Okamura 2 (0.1%) + Michael Walle 2 (0.1%) + Vincent Stehlé 2 (0.1%) + Maxim Cournoyer 2 (0.1%) + Olivier Moysan 2 (0.1%) + Andy Chiu 2 (0.1%) + Joel Stanley 2 (0.1%) + Baruch Siach 2 (0.1%) + Edoardo Tomelleri 2 (0.1%) + Stefano Babic 2 (0.1%) + Julien Masson 2 (0.1%) + Francesco Dolcini 2 (0.1%) + Kunihiko Hayashi 2 (0.1%) + Holger Brunck 2 (0.1%) + Soeren Moch 2 (0.1%) + Icenowy Zheng 2 (0.1%) + Dave Gerlach 2 (0.1%) + Roger Knecht 2 (0.1%) + Steven Lawrance 2 (0.1%) + Ravi Gunasekaran 2 (0.1%) + Jassi Brar 2 (0.1%) + Jayesh Choudhary 2 (0.1%) + Kever Yang 1 (0.1%) + Peter Robinson 1 (0.1%) + Mark Kettenis 1 (0.1%) + Derek LaHousse 1 (0.1%) + Szymon Heidrich 1 (0.1%) + Hugo SIMELIERE 1 (0.1%) + Zong Li 1 (0.1%) + Algapally Santosh Sagar 1 (0.1%) + Jan Kiszka 1 (0.1%) + Dhruva Gole 1 (0.1%) + Luca Ceresoli 1 (0.1%) + Lukas Funke 1 (0.1%) + Matthias Brugger 1 (0.1%) + Yaron Micher 1 (0.1%) + Balaji Prakash J 1 (0.1%) + Christian Hewitt 1 (0.1%) + Christian Kohn 1 (0.1%) + Mikhail Ilin 1 (0.1%) + Alexandre Mergnat 1 (0.1%) + Matthias Schiffer 1 (0.1%) + Loic Poulain 1 (0.1%) + Hamish Martin 1 (0.1%) + AKASHI Takahiro 1 (0.1%) + Janne Grunau 1 (0.1%) + Nylon Chen 1 (0.1%) + Christian Gmeiner 1 (0.1%) + Takumi Sueda 1 (0.1%) + Neha Malcom Francis 1 (0.1%) + Benjamin Bara 1 (0.1%) + Ariel D'Alessandro 1 (0.1%) + Andy Yan 1 (0.1%) + Xavier Drudis Ferran 1 (0.1%) + Matt Ranostay 1 (0.1%) + Wei Lu 1 (0.1%) + Ignacio Zamora 1 (0.1%) + Oleksandr Suvorov 1 (0.1%) + Nick Desaulniers 1 (0.1%) + Alexandre Ghiti 1 (0.1%) + Nikita Shubin 1 (0.1%) + Christophe Kerello 1 (0.1%) + Xiang W 1 (0.1%) + Alexander Sowarka 1 (0.1%) + Nathan Barrett-Morrison 1 (0.1%) + Aaron Williams 1 (0.1%) + Piyush Mehta 1 (0.1%) + Harini Katakam 1 (0.1%) + Amit Kumar Mahapatra 1 (0.1%) + Janne Ylalehto 1 (0.1%) + Samuel Dionne-Riel 1 (0.1%) + Matwey V. Kornilov 1 (0.1%) + Davidson K 1 (0.1%) + ==================================== ===== + + +.. table:: Developers with the most changed lines + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 19199 (17.5%) + Weijie Gao 9580 (8.7%) + Marcel Ziswiler 6676 (6.1%) + Tom Rini 6622 (6.0%) + William Zhang 4635 (4.2%) + Masahisa Kojima 4438 (4.0%) + Martyn Welch 3311 (3.0%) + Sughosh Ganu 3208 (2.9%) + Frieder Schrempf 3180 (2.9%) + Manoj Sai 2829 (2.6%) + Holger Brunck 2622 (2.4%) + Jim Liu 2607 (2.4%) + Roger Quadros 2152 (2.0%) + Gabriel Fernandez 2100 (1.9%) + Viacheslav Mitrofanov 1922 (1.8%) + FUKAUMI Naoki 1899 (1.7%) + Chin-Ting Kuo 1877 (1.7%) + Heinrich Schuchardt 1856 (1.7%) + Ying-Chun Liu (PaulLiu) 1850 (1.7%) + Andre Przywara 1550 (1.4%) + Michal Simek 1425 (1.3%) + Bernhard Messerklinger 1404 (1.3%) + Adam Ford 1378 (1.3%) + Chris Packham 1299 (1.2%) + Tim Harvey 1229 (1.1%) + Stefan Roese 1195 (1.1%) + Sumit Garg 1110 (1.0%) + Andy Yan 1025 (0.9%) + Andrew Davis 848 (0.8%) + Johan Jonker 839 (0.8%) + Ashok Reddy Soma 813 (0.7%) + Pali Rohár 788 (0.7%) + Marek Vasut 756 (0.7%) + Sergiu Moga 612 (0.6%) + Padmarao Begari 594 (0.5%) + Patrice Chotard 569 (0.5%) + Patrick Delaunay 533 (0.5%) + Michal Suchanek 476 (0.4%) + Stefan Herbrechtsmeier 419 (0.4%) + Roger Knecht 412 (0.4%) + Jayesh Choudhary 398 (0.4%) + Rasmus Villemoes 385 (0.4%) + Michael Trimarchi 382 (0.3%) + Alice Guo 348 (0.3%) + Oliver Graute 313 (0.3%) + Joel Stanley 308 (0.3%) + Kautuk Consul 305 (0.3%) + Bryan Brattlof 292 (0.3%) + Ravi Gunasekaran 280 (0.3%) + Conor Dooley 278 (0.3%) + Quentin Schulz 275 (0.3%) + Ilias Apalodimas 272 (0.2%) + Alexander Dahl 268 (0.2%) + Dave Gerlach 249 (0.2%) + Etienne Carriere 242 (0.2%) + Robert Marko 239 (0.2%) + Aaron Williams 200 (0.2%) + Paul Barker 160 (0.1%) + Dylan Hung 157 (0.1%) + Samuel Dionne-Riel 143 (0.1%) + Ovidiu Panait 140 (0.1%) + Sergei Antonov 139 (0.1%) + Edoardo Tomelleri 120 (0.1%) + Sean Anderson 114 (0.1%) + Fabio Estevam 113 (0.1%) + Venkatesh Yadav Abbarapu 111 (0.1%) + Daniel Schwierzeck 102 (0.1%) + Samuel Holland 92 (0.1%) + Dario Binacchi 89 (0.1%) + Olivier Moysan 79 (0.1%) + Samuel Mendoza-Jonas 78 (0.1%) + Takahiro Kuwano 74 (0.1%) + Kunihiko Hayashi 72 (0.1%) + Matt Ranostay 72 (0.1%) + Andy Chiu 68 (0.1%) + Steven Lawrance 51 (0.0%) + Wei Lu 50 (0.0%) + Ye Li 48 (0.0%) + Yu Chien Peter Lin 44 (0.0%) + Yaron Micher 39 (0.0%) + AKASHI Takahiro 38 (0.0%) + Julien Masson 37 (0.0%) + Philip Oberfichtner 35 (0.0%) + Jassi Brar 35 (0.0%) + Maxim Cournoyer 34 (0.0%) + Neha Malcom Francis 34 (0.0%) + Balaji Prakash J 33 (0.0%) + Bin Meng 32 (0.0%) + Matwey V. Kornilov 32 (0.0%) + Lukas Funke 29 (0.0%) + Andrejs Cainikovs 28 (0.0%) + Rick Chen 26 (0.0%) + Durai Manickam KR 25 (0.0%) + Nathan Barrett-Morrison 25 (0.0%) + Baruch Siach 22 (0.0%) + Yann Gautier 20 (0.0%) + Christian Gmeiner 20 (0.0%) + Mattijs Korpershoek 18 (0.0%) + Derek LaHousse 17 (0.0%) + John Keeping 16 (0.0%) + Vincent Stehlé 15 (0.0%) + Nikita Shubin 15 (0.0%) + Samuel Obuch 12 (0.0%) + Francesco Dolcini 12 (0.0%) + Alexandre Mergnat 10 (0.0%) + Alexandre Ghiti 10 (0.0%) + Piyush Mehta 10 (0.0%) + Cédric Le Goater 9 (0.0%) + Jagan Teki 9 (0.0%) + Jan Kiszka 9 (0.0%) + Philippe Schenker 8 (0.0%) + Christian Hewitt 7 (0.0%) + Amit Kumar Mahapatra 7 (0.0%) + T Karthik Reddy 6 (0.0%) + Stefano Babic 6 (0.0%) + Soeren Moch 6 (0.0%) + Szymon Heidrich 6 (0.0%) + Matthias Schiffer 6 (0.0%) + Harini Katakam 6 (0.0%) + Jay Buddhabhatti 5 (0.0%) + Takumi Sueda 5 (0.0%) + Alistair Delva 4 (0.0%) + Mihai Sain 4 (0.0%) + Dai Okamura 4 (0.0%) + Hugo SIMELIERE 4 (0.0%) + Ignacio Zamora 4 (0.0%) + Alexander Sowarka 4 (0.0%) + Davidson K 4 (0.0%) + Janne Ylalehto 3 (0.0%) + Michael Walle 2 (0.0%) + Icenowy Zheng 2 (0.0%) + Matthias Brugger 2 (0.0%) + Benjamin Bara 2 (0.0%) + Christophe Kerello 2 (0.0%) + Kever Yang 1 (0.0%) + Peter Robinson 1 (0.0%) + Mark Kettenis 1 (0.0%) + Zong Li 1 (0.0%) + Algapally Santosh Sagar 1 (0.0%) + Dhruva Gole 1 (0.0%) + Luca Ceresoli 1 (0.0%) + Christian Kohn 1 (0.0%) + Mikhail Ilin 1 (0.0%) + Loic Poulain 1 (0.0%) + Hamish Martin 1 (0.0%) + Janne Grunau 1 (0.0%) + Nylon Chen 1 (0.0%) + Ariel D'Alessandro 1 (0.0%) + Xavier Drudis Ferran 1 (0.0%) + Oleksandr Suvorov 1 (0.0%) + Nick Desaulniers 1 (0.0%) + Xiang W 1 (0.0%) + ==================================== ===== + + +.. table:: Developers with the most lines removed + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Holger Brunck 2621 (6.2%) + Bernhard Messerklinger 1180 (2.8%) + Tom Rini 1163 (2.7%) + Adam Ford 728 (1.7%) + Andre Przywara 353 (0.8%) + Patrice Chotard 75 (0.2%) + Samuel Holland 72 (0.2%) + Michal Suchanek 49 (0.1%) + Daniel Schwierzeck 32 (0.1%) + AKASHI Takahiro 26 (0.1%) + Venkatesh Yadav Abbarapu 19 (0.0%) + Philippe Schenker 4 (0.0%) + Stefano Babic 4 (0.0%) + Soeren Moch 3 (0.0%) + Ignacio Zamora 2 (0.0%) + Icenowy Zheng 1 (0.0%) + Mark Kettenis 1 (0.0%) + Oleksandr Suvorov 1 (0.0%) + ==================================== ===== + + +.. table:: Developers with the most signoffs (total 169) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Michal Simek 75 (44.4%) + Dario Binacchi 22 (13.0%) + Peng Fan 6 (3.6%) + Andre Przywara 4 (2.4%) + Ashok Reddy Soma 4 (2.4%) + Marek Vasut 4 (2.4%) + Heinrich Schuchardt 4 (2.4%) + Duncan Hare 3 (1.8%) + Jagan Teki 3 (1.8%) + Ilias Apalodimas 3 (1.8%) + Joel Stanley 3 (1.8%) + Simon Glass 3 (1.8%) + Tom Rini 2 (1.2%) + Neil Armstrong 2 (1.2%) + Alexandre Torgue 2 (1.2%) + Anand Gadiyar 2 (1.2%) + Fabio Estevam 2 (1.2%) + Sean Anderson 2 (1.2%) + Michael Trimarchi 2 (1.2%) + Stefan Roese 2 (1.2%) + Alistair Delva 1 (0.6%) + Da Xue 1 (0.6%) + dsx724 1 (0.6%) + Mikhail Kshevetskiy 1 (0.6%) + Anup Patel 1 (0.6%) + Jerome Brunet 1 (0.6%) + Julien STEPHAN 1 (0.6%) + Naga Sureshkumar Relli 1 (0.6%) + Stanley Chu 1 (0.6%) + Anatolij Gustschin 1 (0.6%) + SkyLake.Huang 1 (0.6%) + Philip Oberfichtner 1 (0.6%) + Yann Gautier 1 (0.6%) + Baruch Siach 1 (0.6%) + Conor Dooley 1 (0.6%) + Patrick Delaunay 1 (0.6%) + Alice Guo 1 (0.6%) + Jayesh Choudhary 1 (0.6%) + Pali Rohár 1 (0.6%) + ==================================== ===== + + +.. table:: Developers with the most reviews (total 769) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 203 (26.4%) + Ilias Apalodimas 50 (6.5%) + Ramon Fried 42 (5.5%) + Fabio Estevam 41 (5.3%) + Kever Yang 38 (4.9%) + Patrice Chotard 37 (4.8%) + Heinrich Schuchardt 34 (4.4%) + Patrick Delaunay 33 (4.3%) + Stefan Roese 28 (3.6%) + Peng Fan 19 (2.5%) + Jaehoon Chung 19 (2.5%) + Rick Chen 18 (2.3%) + Michael Trimarchi 16 (2.1%) + Philippe Reynes 15 (2.0%) + Dario Binacchi 14 (1.8%) + Sean Anderson 14 (1.8%) + Jagan Teki 13 (1.7%) + Leo Yu-Chi Liang 13 (1.7%) + Marek Vasut 10 (1.3%) + Padmarao Begari 10 (1.3%) + Heiko Schocher 8 (1.0%) + Tom Rini 7 (0.9%) + Jernej Skrabec 7 (0.9%) + Cédric Le Goater 7 (0.9%) + Conor Dooley 5 (0.7%) + Bin Meng 5 (0.7%) + Florian Fainelli 5 (0.7%) + Wolfgang Wallner 5 (0.7%) + Andre Przywara 4 (0.5%) + Samuel Holland 4 (0.5%) + Marek Behún 4 (0.5%) + Joel Stanley 3 (0.4%) + Peter Robinson 3 (0.4%) + Dhruva Gole 3 (0.4%) + Etienne Carriere 3 (0.4%) + Michal Simek 2 (0.3%) + Neil Armstrong 2 (0.3%) + Jens Wiklander 2 (0.3%) + Greentime Hu 2 (0.3%) + Quentin Schulz 2 (0.3%) + Yann Gautier 1 (0.1%) + Pali Rohár 1 (0.1%) + Daniel Schwierzeck 1 (0.1%) + Luca Ceresoli 1 (0.1%) + Peter Hoyes 1 (0.1%) + Sultan Qasim Khan 1 (0.1%) + Linus Walleij 1 (0.1%) + François-Frédéric Ozog 1 (0.1%) + Giulio Benetti 1 (0.1%) + Gaurav Jain 1 (0.1%) + Heiko Thiery 1 (0.1%) + Wadim Egorov 1 (0.1%) + Claudiu Beznea 1 (0.1%) + Eugen Hristev 1 (0.1%) + Jason Liu 1 (0.1%) + Jan Kiszka 1 (0.1%) + Ye Li 1 (0.1%) + Tim Harvey 1 (0.1%) + Viacheslav Mitrofanov 1 (0.1%) + ==================================== ===== + + +.. table:: Developers with the most test credits (total 90) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Daniel Golle 21 (23.3%) + Tony Dinh 9 (10.0%) + Tom Rini 8 (8.9%) + Tim Harvey 8 (8.9%) + Waldemar Brodkorb 7 (7.8%) + Stefan Roese 5 (5.6%) + Padmarao Begari 3 (3.3%) + Samuel Holland 3 (3.3%) + Marek Vasut 2 (2.2%) + Peter Robinson 2 (2.2%) + Quentin Schulz 2 (2.2%) + Pali Rohár 2 (2.2%) + Ivan Shishkin 2 (2.2%) + Fabio Estevam 1 (1.1%) + Patrice Chotard 1 (1.1%) + Heinrich Schuchardt 1 (1.1%) + Patrick Delaunay 1 (1.1%) + Heiko Schocher 1 (1.1%) + Peter Hoyes 1 (1.1%) + Giulio Benetti 1 (1.1%) + Mikhail Kshevetskiy 1 (1.1%) + Michal Suchanek 1 (1.1%) + Leo Yan 1 (1.1%) + Jerome Forissier 1 (1.1%) + Yangjie Zhang 1 (1.1%) + Heiko Stuebner 1 (1.1%) + Christian Stewart 1 (1.1%) + Felix Yan 1 (1.1%) + Janne Grunau 1 (1.1%) + ==================================== ===== + + +.. table:: Developers who gave the most tested-by credits (total 90) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Weijie Gao 21 (23.3%) + Stefan Roese 14 (15.6%) + Rasmus Villemoes 10 (11.1%) + Patrice Chotard 7 (7.8%) + Andre Przywara 5 (5.6%) + Marek Vasut 4 (4.4%) + Marcel Ziswiler 4 (4.4%) + Alexandre Ghiti 3 (3.3%) + Tom Rini 2 (2.2%) + Pali Rohár 2 (2.2%) + Conor Dooley 2 (2.2%) + John Keeping 2 (2.2%) + Quentin Schulz 1 (1.1%) + Heinrich Schuchardt 1 (1.1%) + Patrick Delaunay 1 (1.1%) + Michal Suchanek 1 (1.1%) + Simon Glass 1 (1.1%) + Ilias Apalodimas 1 (1.1%) + Dario Binacchi 1 (1.1%) + Bin Meng 1 (1.1%) + Baruch Siach 1 (1.1%) + Hugo SIMELIERE 1 (1.1%) + Xavier Drudis Ferran 1 (1.1%) + Xiang W 1 (1.1%) + Gabriel Fernandez 1 (1.1%) + William Zhang 1 (1.1%) + ==================================== ===== + + +.. table:: Developers with the most report credits (total 20) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Pali Rohár 2 (10.0%) + Marek Vasut 1 (5.0%) + Marcel Ziswiler 1 (5.0%) + Tom Rini 1 (5.0%) + Quentin Schulz 1 (5.0%) + Bin Meng 1 (5.0%) + Tim Harvey 1 (5.0%) + Peter Robinson 1 (5.0%) + Mikhail Kshevetskiy 1 (5.0%) + Yangjie Zhang 1 (5.0%) + Neil Armstrong 1 (5.0%) + François-Frédéric Ozog 1 (5.0%) + Heiko Thiery 1 (5.0%) + Venkatesh Yadav Abbarapu 1 (5.0%) + Mihai Sain 1 (5.0%) + Marcin GoÅ‚aÅ› 1 (5.0%) + Andreas Buerkler 1 (5.0%) + Shravan Chippa 1 (5.0%) + Manoj Sai 1 (5.0%) + ==================================== ===== + + +.. table:: Developers who gave the most report credits (total 20) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Tom Rini 5 (25.0%) + Conor Dooley 2 (10.0%) + Simon Glass 2 (10.0%) + Fabio Estevam 2 (10.0%) + Bin Meng 1 (5.0%) + Heinrich Schuchardt 1 (5.0%) + Patrick Delaunay 1 (5.0%) + Michael Trimarchi 1 (5.0%) + Jagan Teki 1 (5.0%) + Michal Simek 1 (5.0%) + Stefano Babic 1 (5.0%) + Sergiu Moga 1 (5.0%) + Frieder Schrempf 1 (5.0%) + ==================================== ===== + + +.. table:: Top changeset contributors by employer + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 557 (39.9%) + Google, Inc. 270 (19.3%) + DENX Software Engineering 86 (6.2%) + Linaro 85 (6.1%) + AMD 80 (5.7%) + Konsulko Group 48 (3.4%) + ST Microelectronics 47 (3.4%) + SUSE 36 (2.6%) + Toradex 36 (2.6%) + ARM 27 (1.9%) + Broadcom 27 (1.9%) + Texas Instruments 26 (1.9%) + Amarula Solutions 24 (1.7%) + Xilinx 13 (0.9%) + NXP 8 (0.6%) + BayLibre SAS 6 (0.4%) + Collabora Ltd. 6 (0.4%) + Weidmüller Interface GmbH & Co. KG 6 (0.4%) + Socionext Inc. 4 (0.3%) + Edgeble AI Technologies Pvt. Ltd. 1 (0.1%) + Marvell 1 (0.1%) + Rockchip 1 (0.1%) + Siemens 1 (0.1%) + ==================================== ===== + + +.. table:: Top lines changed by employer + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 41561 (37.8%) + Google, Inc. 19204 (17.5%) + Linaro 11194 (10.2%) + Toradex 6724 (6.1%) + Konsulko Group 6622 (6.0%) + Broadcom 4635 (4.2%) + Collabora Ltd. 3312 (3.0%) + Amarula Solutions 3308 (3.0%) + ST Microelectronics 3303 (3.0%) + Texas Instruments 2174 (2.0%) + DENX Software Engineering 2105 (1.9%) + AMD 2105 (1.9%) + ARM 1569 (1.4%) + SUSE 478 (0.4%) + Weidmüller Interface GmbH & Co. KG 448 (0.4%) + NXP 446 (0.4%) + Xilinx 280 (0.3%) + Marvell 200 (0.2%) + Socionext Inc. 76 (0.1%) + BayLibre SAS 65 (0.1%) + Siemens 9 (0.0%) + Edgeble AI Technologies Pvt. Ltd. 1 (0.0%) + Rockchip 1 (0.0%) + ==================================== ===== + + +.. table:: Employers with the most signoffs (total 169) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + AMD 79 (46.7%) + Amarula Solutions 27 (16.0%) + (Unknown) 22 (13.0%) + DENX Software Engineering 10 (5.9%) + NXP 7 (4.1%) + Linaro 5 (3.0%) + Google, Inc. 4 (2.4%) + ST Microelectronics 4 (2.4%) + ARM 4 (2.4%) + Texas Instruments 3 (1.8%) + Konsulko Group 2 (1.2%) + BayLibre SAS 2 (1.2%) + ==================================== ===== + + +.. table:: Employers with the most hackers (total 154) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 81 (52.6%) + Linaro 9 (5.8%) + Texas Instruments 8 (5.2%) + AMD 7 (4.5%) + ST Microelectronics 6 (3.9%) + DENX Software Engineering 5 (3.2%) + Amarula Solutions 4 (2.6%) + Toradex 4 (2.6%) + Xilinx 4 (2.6%) + NXP 3 (1.9%) + Google, Inc. 3 (1.9%) + ARM 3 (1.9%) + BayLibre SAS 3 (1.9%) + Collabora Ltd. 2 (1.3%) + SUSE 2 (1.3%) + Weidmüller Interface GmbH & Co. KG 2 (1.3%) + Socionext Inc. 2 (1.3%) + Konsulko Group 1 (0.6%) + Broadcom 1 (0.6%) + Marvell 1 (0.6%) + Siemens 1 (0.6%) + Edgeble AI Technologies Pvt. Ltd. 1 (0.6%) + Rockchip 1 (0.6%) + ==================================== ===== + diff --git a/doc/media/Makefile b/doc/media/Makefile index b9b43a34c3..9b32258696 100644 --- a/doc/media/Makefile +++ b/doc/media/Makefile @@ -22,10 +22,11 @@ $(BUILDDIR)/linker_lists.h.rst: ${API}/linker_lists.h ${PARSER} $(SRC_DIR)/linke # Media build rules -.PHONY: all html epub xml latex +.PHONY: all html texinfo epub xml latex all: $(IMGDOT) $(BUILDDIR) ${TARGETS} html: all +texinfo: all epub: all xml: all latex: $(IMGPDF) all diff --git a/doc/usage/cmd/printenv.rst b/doc/usage/cmd/printenv.rst index 9cb20f6ce6..d4184fd65e 100644 --- a/doc/usage/cmd/printenv.rst +++ b/doc/usage/cmd/printenv.rst @@ -78,7 +78,7 @@ variable and how to specify a vendor GUID: => Configuration -============= +------------- UEFI variables are only supported if CONFIG_CMD_NVEDIT_EFI=y. The value of UEFI variables can only be displayed if CONFIG_HEXDUMP=y. diff --git a/doc/usage/cmd/sound.rst b/doc/usage/cmd/sound.rst index d3fac243b1..2cfe9b7ad1 100644 --- a/doc/usage/cmd/sound.rst +++ b/doc/usage/cmd/sound.rst @@ -10,12 +10,12 @@ Synopsis :: sound init - sound play [len [freq]] + sound play [[len freq] ...] [len [freq]] Description ----------- -The *sound* command is used to play a beep sound. +The *sound* command is used to play one or multiple beep sounds. sound init initializes the sound driver. @@ -30,6 +30,25 @@ len freq frequency of the sound in Hz, defaults to 400 Hz +Examples +-------- + +Beep at 400 Hz for 1000 ms:: + + sound play + +Beep at 400 Hz for 600 ms:: + + sound play 600 + +Beep at 500 Hz for 600 ms:: + + sound play 600 500 + +Play melody:: + + sound play 500 1047 500 880 500 0 500 1047 500 880 500 0 500 784 500 698 500 784 1000 698 + Configuration ------------- diff --git a/doc/usage/cmd/wget.rst b/doc/usage/cmd/wget.rst index 4fcfa03954..e1e7f8d814 100644 --- a/doc/usage/cmd/wget.rst +++ b/doc/usage/cmd/wget.rst @@ -7,6 +7,7 @@ Synopsis -------- :: + wget address [[hostIPaddr:]path] Description @@ -52,8 +53,8 @@ Configuration The command is only available if CONFIG_CMD_WGET=y. -CONFIG_PROT_TCP_SACK can be turned on for the TCP SACK options. This will -help increasing the downloading speed. +TCP Selective Acknowledgments can be enabled via CONFIG_PROT_TCP_SACK=y. +This will improve the download speed. Return value ------------ diff --git a/drivers/i2c/i2c-uniphier-f.c b/drivers/i2c/i2c-uniphier-f.c index 9d6f1688cb..3dcd382469 100644 --- a/drivers/i2c/i2c-uniphier-f.c +++ b/drivers/i2c/i2c-uniphier-f.c @@ -130,12 +130,12 @@ static int wait_for_irq(struct uniphier_fi2c_priv *priv, u32 flags, if (irq & I2C_INT_AL) { dev_dbg(priv->dev, "error: arbitration lost\n"); *stop = false; - return ret; + return -EDEADLK; } if (irq & I2C_INT_NA) { dev_dbg(priv->dev, "error: no answer\n"); - return ret; + return -ENODATA; } return 0; diff --git a/drivers/net/npcm750_eth.c b/drivers/net/npcm750_eth.c index 409d5cce4a..bd29a10def 100644 --- a/drivers/net/npcm750_eth.c +++ b/drivers/net/npcm750_eth.c @@ -710,12 +710,12 @@ static int npcm750_eth_ofdata_to_platdata(struct udevice *dev) pdata->phy_interface = -1; phy_mode = fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "phy-mode", NULL); + if (phy_mode) - pdata->phy_interface = phy_get_interface_by_name(phy_mode); - if (pdata->phy_interface == -1) { - printf("%s: Invalid PHY interface '%s'\n", __func__, phy_mode); + pdata->phy_interface = dev_read_phy_mode(dev); + + if (pdata->phy_interface == PHY_INTERFACE_MODE_NA) return -EINVAL; - } pdata->max_speed = 0; cell = fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "max-speed", NULL); diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 6e90359759..8833e3098d 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -119,7 +119,7 @@ static int tsec_mcast_addr(struct udevice *dev, const u8 *mcast_mac, int join) return 0; } -static int tsec_set_promisc(struct udevice *dev, bool enable) +static int __maybe_unused tsec_set_promisc(struct udevice *dev, bool enable) { struct tsec_private *priv = dev_get_priv(dev); struct tsec __iomem *regs = priv->regs; diff --git a/drivers/power/regulator/Kconfig b/drivers/power/regulator/Kconfig index c519e066ef..c02e6377d8 100644 --- a/drivers/power/regulator/Kconfig +++ b/drivers/power/regulator/Kconfig @@ -128,6 +128,14 @@ config DM_REGULATOR_MAX77686 features for REGULATOR MAX77686. The driver implements get/set api for: value, enable and mode. +config DM_REGULATOR_NPCM8XX + bool "Enable Driver Model for NPCM8xx voltage supply" + depends on DM_REGULATOR && ARCH_NPCM8XX + help + Enable support for configuring voltage supply on NPCM8XX SoC. The + voltage supplies support two voltage levels and the driver implements + get/set api for setting the value. + config DM_REGULATOR_FAN53555 bool "Enable Driver Model for REGULATOR FAN53555" depends on DM_PMIC_FAN53555 diff --git a/drivers/power/regulator/Makefile b/drivers/power/regulator/Makefile index bc736068bc..68e4c0f9dd 100644 --- a/drivers/power/regulator/Makefile +++ b/drivers/power/regulator/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_REGULATOR_ACT8846) += act8846.o obj-$(CONFIG_REGULATOR_AS3722) += as3722_regulator.o obj-$(CONFIG_$(SPL_)DM_REGULATOR_DA9063) += da9063.o obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o +obj-$(CONFIG_DM_REGULATOR_NPCM8XX) += npcm8xx_regulator.o obj-$(CONFIG_$(SPL_)DM_PMIC_PFUZE100) += pfuze100.o obj-$(CONFIG_$(SPL_)DM_REGULATOR_BD71837) += bd71837.o obj-$(CONFIG_$(SPL_)DM_REGULATOR_PCA9450) += pca9450.o diff --git a/drivers/power/regulator/npcm8xx_regulator.c b/drivers/power/regulator/npcm8xx_regulator.c new file mode 100644 index 0000000000..fcd1058cdf --- /dev/null +++ b/drivers/power/regulator/npcm8xx_regulator.c @@ -0,0 +1,132 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2022 Nuvoton Technology Corp. + */ + +#include <common.h> +#include <dm.h> +#include <asm/io.h> +#include <dm/device_compat.h> +#include <power/regulator.h> + +#define REG_VSRCR 0xf08000e8 /* Voltage Supply Control Register */ + +/* Supported voltage levels (uV) */ +static const u32 volts_type1[] = { 3300000, 1800000 }; +static const u32 volts_type2[] = { 1000000, 1800000 }; +#define VOLT_LEV0 0 +#define VOLT_LEV1 1 + +struct volt_supply { + char *name; + const u32 *volts; + u32 reg_shift; /* Register bit offset for setting voltage */ +}; + +static const struct volt_supply npcm8xx_volt_supps[] = { + {"v1", volts_type1, 0}, + {"v2", volts_type1, 1}, + {"v3", volts_type1, 2}, + {"v4", volts_type1, 3}, + {"v5", volts_type1, 4}, + {"v6", volts_type1, 5}, + {"v7", volts_type1, 6}, + {"v8", volts_type1, 7}, + {"v9", volts_type1, 8}, + {"v10", volts_type1, 9}, + {"v11", volts_type2, 10}, + {"v12", volts_type1, 11}, + {"v13", volts_type1, 12}, + {"v14", volts_type2, 13}, + {"vsif", volts_type1, 14}, + {"vr2", volts_type1, 30}, +}; + +static const struct volt_supply *npcm8xx_volt_supply_get(const char *name) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(npcm8xx_volt_supps); i++) { + if (!strcmp(npcm8xx_volt_supps[i].name, name)) + return &npcm8xx_volt_supps[i]; + } + + return NULL; +} + +static int npcm8xx_regulator_set_value(struct udevice *dev, int uV) +{ + struct dm_regulator_uclass_plat *uc_pdata; + const struct volt_supply *supp; + u32 val, level; + + uc_pdata = dev_get_uclass_plat(dev); + if (!uc_pdata) + return -ENXIO; + + dev_dbg(dev, "%s set_value: %d\n", uc_pdata->name, uV); + supp = npcm8xx_volt_supply_get(uc_pdata->name); + if (!supp) + return -ENOENT; + + if (uV == supp->volts[VOLT_LEV0]) + level = VOLT_LEV0; + else if (uV == supp->volts[VOLT_LEV1]) + level = VOLT_LEV1; + else + return -EINVAL; + + /* Set voltage level */ + val = readl(REG_VSRCR); + val &= ~BIT(supp->reg_shift); + val |= level << supp->reg_shift; + writel(val, REG_VSRCR); + + return 0; +} + +static int npcm8xx_regulator_get_value(struct udevice *dev) +{ + struct dm_regulator_uclass_plat *uc_pdata; + const struct volt_supply *supp; + u32 val; + + uc_pdata = dev_get_uclass_plat(dev); + if (!uc_pdata) + return -ENXIO; + + supp = npcm8xx_volt_supply_get(uc_pdata->name); + if (!supp) + return -ENOENT; + + val = readl(REG_VSRCR) & BIT(supp->reg_shift); + + dev_dbg(dev, "%s get_value: %d\n", uc_pdata->name, + val ? supp->volts[VOLT_LEV1] : supp->volts[VOLT_LEV0]); + + return val ? supp->volts[VOLT_LEV1] : supp->volts[VOLT_LEV0]; +} + +static int npcm8xx_regulator_set_enable(struct udevice *dev, bool enable) +{ + /* Always on */ + return 0; +} + +static const struct dm_regulator_ops npcm8xx_regulator_ops = { + .set_value = npcm8xx_regulator_set_value, + .get_value = npcm8xx_regulator_get_value, + .set_enable = npcm8xx_regulator_set_enable, +}; + +static const struct udevice_id npcm8xx_regulator_ids[] = { + { .compatible = "regulator-npcm845" }, + { }, +}; + +U_BOOT_DRIVER(regulator_npcm8xx) = { + .name = "regulator_npcm845", + .id = UCLASS_REGULATOR, + .ops = &npcm8xx_regulator_ops, + .of_match = npcm8xx_regulator_ids, +}; diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c index 9240277579..b21031d7d8 100644 --- a/drivers/tee/optee/core.c +++ b/drivers/tee/optee/core.c @@ -102,13 +102,14 @@ static int bind_service_list(struct udevice *dev, struct tee_shm *service_list, return 0; } -static int __enum_services(struct udevice *dev, struct tee_shm *shm, size_t *shm_size, u32 tee_sess) +static int __enum_services(struct udevice *dev, struct tee_shm *shm, size_t *shm_size, u32 tee_sess, + unsigned int pta_cmd) { struct tee_invoke_arg arg = { }; struct tee_param param = { }; int ret = 0; - arg.func = PTA_CMD_GET_DEVICES; + arg.func = pta_cmd; arg.session = tee_sess; /* Fill invoke cmd params */ @@ -118,7 +119,7 @@ static int __enum_services(struct udevice *dev, struct tee_shm *shm, size_t *shm ret = tee_invoke_func(dev, &arg, 1, ¶m); if (ret || (arg.ret && arg.ret != TEE_ERROR_SHORT_BUFFER)) { - dev_err(dev, "PTA_CMD_GET_DEVICES invoke function err: 0x%x\n", arg.ret); + dev_err(dev, "Enumeration command 0x%x failed: 0x%x\n", pta_cmd, arg.ret); return -EINVAL; } @@ -127,12 +128,13 @@ static int __enum_services(struct udevice *dev, struct tee_shm *shm, size_t *shm return 0; } -static int enum_services(struct udevice *dev, struct tee_shm **shm, size_t *count, u32 tee_sess) +static int enum_services(struct udevice *dev, struct tee_shm **shm, size_t *count, u32 tee_sess, + unsigned int pta_cmd) { size_t shm_size = 0; int ret; - ret = __enum_services(dev, NULL, &shm_size, tee_sess); + ret = __enum_services(dev, NULL, &shm_size, tee_sess, pta_cmd); if (ret) return ret; @@ -142,7 +144,7 @@ static int enum_services(struct udevice *dev, struct tee_shm **shm, size_t *coun return ret; } - ret = __enum_services(dev, *shm, &shm_size, tee_sess); + ret = __enum_services(dev, *shm, &shm_size, tee_sess, pta_cmd); if (!ret) *count = shm_size / sizeof(struct tee_optee_ta_uuid); @@ -174,20 +176,32 @@ static int bind_service_drivers(struct udevice *dev) struct tee_shm *service_list = NULL; size_t service_count; u32 tee_sess; - int ret; + int ret, ret2; ret = open_enum_session(dev, &tee_sess); if (ret) return ret; - ret = enum_services(dev, &service_list, &service_count, tee_sess); + ret = enum_services(dev, &service_list, &service_count, tee_sess, + PTA_CMD_GET_DEVICES); if (!ret) ret = bind_service_list(dev, service_list, service_count); tee_shm_free(service_list); + + ret2 = enum_services(dev, &service_list, &service_count, tee_sess, + PTA_CMD_GET_DEVICES_SUPP); + if (!ret2) + ret2 = bind_service_list(dev, service_list, service_count); + + tee_shm_free(service_list); + tee_close_session(dev, tee_sess); - return ret; + if (ret) + return ret; + + return ret2; } /** @@ -834,7 +848,7 @@ static int optee_probe(struct udevice *dev) */ ret = device_bind_driver(dev, "optee-rng", "optee-rng", NULL); if (ret) - return ret; + dev_warn(dev, "ftpm_tee failed to bind: %d\n", ret); } return 0; diff --git a/drivers/timer/orion-timer.c b/drivers/timer/orion-timer.c index d588f0cbcd..810a03d549 100644 --- a/drivers/timer/orion-timer.c +++ b/drivers/timer/orion-timer.c @@ -23,15 +23,19 @@ struct orion_timer_priv { #define MVEBU_TIMER_FIXED_RATE_25MHZ 25000000 -static bool early_init_done __section(".data") = false; +static bool early_init_done(void *base) +{ + if (readl(base + TIMER_CTRL) & TIMER0_EN) + return true; + return false; +} /* Common functions for early (boot) and DM based timer */ static void orion_timer_init(void *base, enum input_clock_type type) { /* Only init the timer once */ - if (early_init_done) + if (early_init_done(base)) return; - early_init_done = true; writel(~0, base + TIMER0_VAL); writel(~0, base + TIMER0_RELOAD); diff --git a/drivers/tpm/tpm2_ftpm_tee.c b/drivers/tpm/tpm2_ftpm_tee.c index 53e59f42b4..3c4c12983d 100644 --- a/drivers/tpm/tpm2_ftpm_tee.c +++ b/drivers/tpm/tpm2_ftpm_tee.c @@ -186,6 +186,7 @@ static int ftpm_tee_probe(struct udevice *dev) /* Open a session with the fTPM TA */ memset(&sess_arg, 0, sizeof(sess_arg)); + sess_arg.clnt_login = TEE_LOGIN_REE_KERNEL; tee_optee_ta_uuid_to_octets(sess_arg.uuid, &uuid); rc = tee_open_session(context->tee_dev, &sess_arg, 0, NULL); diff --git a/include/asm-generic/pe.h b/include/asm-generic/pe.h index a1df747134..b9d674b6da 100644 --- a/include/asm-generic/pe.h +++ b/include/asm-generic/pe.h @@ -51,6 +51,19 @@ #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 #define IMAGE_SUBSYSTEM_EFI_ROM 13 +/* Section flags */ +#define IMAGE_SCN_CNT_CODE 0x00000020 +#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 +#define IMAGE_SCN_CNT_UNINITIALIZED_ DATA 0x00000080 +#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 +#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 +#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 +#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 +#define IMAGE_SCN_MEM_SHARED 0x10000000 +#define IMAGE_SCN_MEM_EXECUTE 0x20000000 +#define IMAGE_SCN_MEM_READ 0x40000000 +#define IMAGE_SCN_MEM_WRITE 0x80000000 + #define LINUX_ARM64_MAGIC 0x644d5241 #endif /* _ASM_PE_H */ diff --git a/include/charset.h b/include/charset.h index e900fd789a..6e79d7152e 100644 --- a/include/charset.h +++ b/include/charset.h @@ -174,6 +174,19 @@ s32 utf_to_lower(const s32 code); s32 utf_to_upper(const s32 code); /** + * u16_strcasecmp() - compare two u16 strings case insensitively + * + * @s1: first string to compare + * @s2: second string to compare + * @n: maximum number of u16 to compare + * Return: 0 if the first n u16 are the same in s1 and s2 + * < 0 if the first different u16 in s1 is less than the + * corresponding u16 in s2 + * > 0 if the first different u16 in s1 is greater than the + */ +int u16_strcasecmp(const u16 *s1, const u16 *s2); + +/** * u16_strncmp() - compare two u16 string * * @s1: first string to compare diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index fcb319a20a..c3a2414b91 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -484,7 +484,7 @@ "${prefix}${boot_syslinux_conf}; then " \ "echo Found ${prefix}${boot_syslinux_conf}; " \ "run boot_extlinux; " \ - "echo SCRIPT FAILED: continuing...; " \ + "echo EXTLINUX FAILED: continuing...; " \ "fi\0" \ \ "boot_a_script=" \ diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h index ba7731bfca..2c1507a818 100644 --- a/include/configs/vexpress_common.h +++ b/include/configs/vexpress_common.h @@ -146,6 +146,7 @@ #include <config_distro_bootcmd.h> #define CFG_EXTRA_ENV_SETTINGS \ + "loadaddr=0x60100000\0" \ "kernel_addr_r=0x60100000\0" \ "fdt_addr_r=0x60000000\0" \ "bootargs=console=tty0 console=ttyAMA0,38400n8\0" \ diff --git a/include/efi_api.h b/include/efi_api.h index 00c98e0984..9bd70b0f18 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -21,7 +21,7 @@ #include <pe.h> /* UEFI spec version 2.9 */ -#define EFI_SPECIFICATION_VERSION (2 << 16 | 90) +#define EFI_SPECIFICATION_VERSION (2 << 16 | 100) /* Types and defines for EFI CreateEvent */ enum efi_timer_delay { diff --git a/include/efi_loader.h b/include/efi_loader.h index 0899e293e5..f9e427f090 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -708,6 +708,8 @@ int algo_to_len(const char *algo); int efi_link_dev(efi_handle_t handle, struct udevice *dev); int efi_unlink_dev(efi_handle_t handle); bool efi_varname_is_load_option(u16 *var_name16, int *index); +efi_status_t efi_next_variable_name(efi_uintn_t *size, u16 **buf, + efi_guid_t *guid); /** * efi_size_in_pages() - convert size in bytes to size in pages @@ -734,6 +736,9 @@ efi_status_t efi_allocate_pool(enum efi_memory_type pool_type, efi_uintn_t size, void **buffer); /* EFI pool memory free function. */ efi_status_t efi_free_pool(void *buffer); +/* Allocate and retrieve EFI memory map */ +efi_status_t efi_get_memory_map_alloc(efi_uintn_t *map_size, + struct efi_mem_desc **memory_map); /* Returns the EFI memory map */ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, struct efi_mem_desc *memory_map, diff --git a/include/efi_variable.h b/include/efi_variable.h index 03a3ecb235..805e6c5f1e 100644 --- a/include/efi_variable.h +++ b/include/efi_variable.h @@ -268,7 +268,8 @@ const efi_guid_t *efi_auth_var_get_guid(const u16 *name); * efi_get_next_variable_name_mem() - Runtime common code across efi variable * implementations for GetNextVariable() * from the cached memory copy - * @variable_name_size: size of variable_name buffer in byte + * + * @variable_name_size: size of variable_name buffer in bytes * @variable_name: name of uefi variable's name in u16 * @vendor: vendor's guid * diff --git a/include/env.h b/include/env.h index 60acb5454e..1480efa59e 100644 --- a/include/env.h +++ b/include/env.h @@ -226,7 +226,7 @@ int env_complete(char *var, int maxv, char *cmdv[], int maxsz, char *buf, * * @name: Environment variable to get (e.g. "ethaddr") * @enetaddr: Place to put MAC address (6 bytes) - * Return: 0 if OK, 1 on error + * Return: 1 if OK, 0 on error */ int eth_env_get_enetaddr(const char *name, uint8_t *enetaddr); @@ -235,7 +235,7 @@ int eth_env_get_enetaddr(const char *name, uint8_t *enetaddr); * * @name: Environment variable to set (e.g. "ethaddr") * @enetaddr: Pointer to MAC address to put into the variable (6 bytes) - * Return: 0 if OK, 1 on error + * Return: 0 if OK, non-zero otherwise */ int eth_env_set_enetaddr(const char *name, const uint8_t *enetaddr); diff --git a/lib/charset.c b/lib/charset.c index bece4985bf..b1842755eb 100644 --- a/lib/charset.c +++ b/lib/charset.c @@ -351,6 +351,32 @@ s32 utf_to_upper(const s32 code) } /* + * u16_strcasecmp() - compare two u16 strings case insensitively + * + * @s1: first string to compare + * @s2: second string to compare + * @n: maximum number of u16 to compare + * Return: 0 if the first n u16 are the same in s1 and s2 + * < 0 if the first different u16 in s1 is less than the + * corresponding u16 in s2 + * > 0 if the first different u16 in s1 is greater than the + */ +int u16_strcasecmp(const u16 *s1, const u16 *s2) +{ + int ret = 0; + s32 c1, c2; + + for (;;) { + c1 = utf_to_upper(utf16_get(&s1)); + c2 = utf_to_upper(utf16_get(&s2)); + ret = c1 - c2; + if (ret || !c1 || c1 == -1 || c2 == -1) + break; + } + return ret; +} + +/* * u16_strncmp() - compare two u16 string * * @s1: first string to compare diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index 253f9f75ef..e65ca6a4cb 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -3956,8 +3956,11 @@ efi_status_t efi_initialize_system_table(void) * These entries will be set to NULL in ExitBootServices(). To avoid * relocation in SetVirtualAddressMap(), set them dynamically. */ + systab.con_in_handle = efi_root; systab.con_in = &efi_con_in; + systab.con_out_handle = efi_root; systab.con_out = &efi_con_out; + systab.stderr_handle = efi_root; systab.std_err = &efi_con_out; systab.boottime = &efi_boot_services; diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c index 1163a2ee30..0997cd248f 100644 --- a/lib/efi_loader/efi_capsule.c +++ b/lib/efi_loader/efi_capsule.c @@ -1108,10 +1108,13 @@ static efi_status_t efi_capsule_scan_dir(u16 ***files, unsigned int *num) /* ignore an error */ EFI_CALL((*dirh->close)(dirh)); - /* in ascii order */ - /* FIXME: u16 version of strcasecmp */ + /* + * Capsule files are applied in case insensitive alphabetic order + * + * TODO: special handling of rightmost period + */ qsort(tmp_files, count, sizeof(*tmp_files), - (int (*)(const void *, const void *))strcasecmp); + (int (*)(const void *, const void *))u16_strcasecmp); *files = tmp_files; *num = count; ret = EFI_SUCCESS; diff --git a/lib/efi_loader/efi_helper.c b/lib/efi_loader/efi_helper.c index 788cb9faec..1f4ab2b419 100644 --- a/lib/efi_loader/efi_helper.c +++ b/lib/efi_loader/efi_helper.c @@ -223,3 +223,37 @@ bool efi_varname_is_load_option(u16 *var_name16, int *index) return false; } + +/** + * efi_next_variable_name() - get next variable name + * + * This function is a wrapper of efi_get_next_variable_name_int(). + * If efi_get_next_variable_name_int() returns EFI_BUFFER_TOO_SMALL, + * @size and @buf are updated by new buffer size and realloced buffer. + * + * @size: pointer to the buffer size + * @buf: pointer to the buffer + * @guid: pointer to the guid + * Return: status code + */ +efi_status_t efi_next_variable_name(efi_uintn_t *size, u16 **buf, efi_guid_t *guid) +{ + u16 *p; + efi_status_t ret; + efi_uintn_t buf_size = *size; + + ret = efi_get_next_variable_name_int(&buf_size, *buf, guid); + if (ret == EFI_NOT_FOUND) + return ret; + if (ret == EFI_BUFFER_TOO_SMALL) { + p = realloc(*buf, buf_size); + if (!p) + return EFI_OUT_OF_RESOURCES; + + *buf = p; + *size = buf_size; + ret = efi_get_next_variable_name_int(&buf_size, *buf, guid); + } + + return ret; +} diff --git a/lib/efi_loader/efi_hii.c b/lib/efi_loader/efi_hii.c index 75ff58aafa..27db3be6a1 100644 --- a/lib/efi_loader/efi_hii.c +++ b/lib/efi_loader/efi_hii.c @@ -780,7 +780,7 @@ get_package_list_handle(const struct efi_hii_database_protocol *this, } } - return EFI_EXIT(EFI_NOT_FOUND); + return EFI_EXIT(EFI_INVALID_PARAMETER); } const struct efi_hii_database_protocol efi_hii_database = { diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c index 8d347f101f..32254d2433 100644 --- a/lib/efi_loader/efi_memory.c +++ b/lib/efi_loader/efi_memory.c @@ -737,6 +737,40 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size, } /** + * efi_get_memory_map_alloc() - allocate map describing memory usage + * + * The caller is responsible for calling FreePool() if the call succeeds. + * + * @memory_map buffer to which the memory map is written + * @map_size size of the memory map + * Return: status code + */ +efi_status_t efi_get_memory_map_alloc(efi_uintn_t *map_size, + struct efi_mem_desc **memory_map) +{ + efi_status_t ret; + + *memory_map = NULL; + *map_size = 0; + ret = efi_get_memory_map(map_size, *memory_map, NULL, NULL, NULL); + if (ret == EFI_BUFFER_TOO_SMALL) { + *map_size += sizeof(struct efi_mem_desc); /* for the map */ + ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, *map_size, + (void **)memory_map); + if (ret != EFI_SUCCESS) + return ret; + ret = efi_get_memory_map(map_size, *memory_map, + NULL, NULL, NULL); + if (ret != EFI_SUCCESS) { + efi_free_pool(*memory_map); + *memory_map = NULL; + } + } + + return ret; +} + +/** * efi_add_conventional_memory_map() - add a RAM memory area to the map * * @ram_start: start address of a RAM memory area diff --git a/lib/efi_loader/efi_var_file.c b/lib/efi_loader/efi_var_file.c index 3d58caa13d..62e071bd83 100644 --- a/lib/efi_loader/efi_var_file.c +++ b/lib/efi_loader/efi_var_file.c @@ -176,7 +176,7 @@ efi_status_t efi_var_restore(struct efi_var_file *buf, bool safe) data = var->name + u16_strlen(var->name) + 1; /* - * Secure boot related and non-volatile variables shall only be + * Secure boot related and volatile variables shall only be * restored from U-Boot's preseed. */ if (!safe && @@ -187,6 +187,8 @@ efi_status_t efi_var_restore(struct efi_var_file *buf, bool safe) continue; if (!var->length) continue; + if (efi_var_mem_find(&var->guid, var->name, NULL)) + continue; ret = efi_var_mem_ins(var->name, &var->guid, var->attr, var->length, data, 0, NULL, var->time); diff --git a/lib/efi_loader/efi_var_mem.c b/lib/efi_loader/efi_var_mem.c index 13909b1d26..e1058e3c6a 100644 --- a/lib/efi_loader/efi_var_mem.c +++ b/lib/efi_loader/efi_var_mem.c @@ -146,9 +146,7 @@ efi_status_t __efi_runtime efi_var_mem_ins( var = (struct efi_var_entry *) ((uintptr_t)efi_var_buf + efi_var_buf->length); - for (var_name_len = 0; variable_name[var_name_len]; ++var_name_len) - ; - ++var_name_len; + var_name_len = u16_strlen(variable_name) + 1; data = var->name + var_name_len; if ((uintptr_t)data - (uintptr_t)efi_var_buf + size1 + size2 > @@ -315,14 +313,14 @@ efi_get_next_variable_name_mem(efi_uintn_t *variable_name_size, u16 *variable_name, efi_guid_t *vendor) { struct efi_var_entry *var; - efi_uintn_t old_size; + efi_uintn_t len, old_size; u16 *pdata; if (!variable_name_size || !variable_name || !vendor) return EFI_INVALID_PARAMETER; - if (u16_strnlen(variable_name, *variable_name_size) == - *variable_name_size) + len = *variable_name_size >> 1; + if (u16_strnlen(variable_name, len) == len) return EFI_INVALID_PARAMETER; if (!efi_var_mem_find(vendor, variable_name, &var) && *variable_name) diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c index 8ca2d85694..503a33ed65 100644 --- a/lib/efi_loader/efi_variable.c +++ b/lib/efi_loader/efi_variable.c @@ -425,6 +425,9 @@ efi_status_t efi_init_variables(void) if (ret != EFI_SUCCESS) return ret; + ret = efi_var_from_file(); + if (ret != EFI_SUCCESS) + return ret; if (IS_ENABLED(CONFIG_EFI_VARIABLES_PRESEED)) { ret = efi_var_restore((struct efi_var_file *) __efi_var_file_begin, true); @@ -432,9 +435,6 @@ efi_status_t efi_init_variables(void) log_err("Invalid EFI variable seed\n"); } - ret = efi_var_from_file(); - if (ret != EFI_SUCCESS) - return ret; return efi_init_secure_state(); } diff --git a/lib/efi_selftest/efi_selftest_variables.c b/lib/efi_selftest/efi_selftest_variables.c index dc1d5c8f43..c7a3fdbaa6 100644 --- a/lib/efi_selftest/efi_selftest_variables.c +++ b/lib/efi_selftest/efi_selftest_variables.c @@ -141,6 +141,41 @@ static int execute(void) return EFI_ST_FAILURE; } /* Enumerate variables */ + + ret = runtime->get_next_variable_name(NULL, u"efi_st_var1", &guid); + if (ret != EFI_INVALID_PARAMETER) { + efi_st_error("GetNextVariableName missing parameter check\n"); + return EFI_ST_FAILURE; + } + + len = 24; + ret = runtime->get_next_variable_name(&len, NULL, &guid); + if (ret != EFI_INVALID_PARAMETER) { + efi_st_error("GetNextVariableName missing parameter check\n"); + return EFI_ST_FAILURE; + } + + len = 24; + ret = runtime->get_next_variable_name(&len, u"efi_st_var1", NULL); + if (ret != EFI_INVALID_PARAMETER) { + efi_st_error("GetNextVariableName missing parameter check\n"); + return EFI_ST_FAILURE; + } + + len = 1; + ret = runtime->get_next_variable_name(&len, u"", &guid); + if (ret != EFI_INVALID_PARAMETER) { + efi_st_error("GetNextVariableName missing parameter check\n"); + return EFI_ST_FAILURE; + } + + len = 16; + ret = runtime->get_next_variable_name(&len, u"efi_st_var1", &guid); + if (ret != EFI_INVALID_PARAMETER) { + efi_st_error("GetNextVariableName missing parameter check\n"); + return EFI_ST_FAILURE; + } + boottime->set_mem(&guid, 16, 0); *varname = 0; flag = 0; @@ -7,7 +7,9 @@ */ #include <common.h> +#include <efi_loader.h> #include <image.h> +#include <mapmem.h> #include <lmb.h> #include <log.h> #include <malloc.h> @@ -153,6 +155,37 @@ void arch_lmb_reserve_generic(struct lmb *lmb, ulong sp, ulong end, ulong align) } } +/** + * efi_lmb_reserve() - add reservations for EFI memory + * + * Add reservations for all EFI memory areas that are not + * EFI_CONVENTIONAL_MEMORY. + * + * @lmb: lmb environment + * Return: 0 on success, 1 on failure + */ +static __maybe_unused int efi_lmb_reserve(struct lmb *lmb) +{ + struct efi_mem_desc *memmap = NULL, *map; + efi_uintn_t i, map_size = 0; + efi_status_t ret; + + ret = efi_get_memory_map_alloc(&map_size, &memmap); + if (ret != EFI_SUCCESS) + return 1; + + for (i = 0, map = memmap; i < map_size / sizeof(*map); ++map, ++i) { + if (map->type != EFI_CONVENTIONAL_MEMORY) + lmb_reserve(lmb, + map_to_sysmem((void *)(uintptr_t) + map->physical_start), + map->num_pages * EFI_PAGE_SIZE); + } + efi_free_pool(memmap); + + return 0; +} + static void lmb_reserve_common(struct lmb *lmb, void *fdt_blob) { arch_lmb_reserve(lmb); @@ -160,6 +193,9 @@ static void lmb_reserve_common(struct lmb *lmb, void *fdt_blob) if (CONFIG_IS_ENABLED(OF_LIBFDT) && fdt_blob) boot_fdt_add_mem_rsv_regions(lmb, fdt_blob); + + if (CONFIG_IS_ENABLED(EFI_LOADER)) + efi_lmb_reserve(lmb); } /* Initialize the struct, add memory and call arch/board reserve functions */ diff --git a/net/ndisc.c b/net/ndisc.c index 3c0eeeaea3..367dae7676 100644 --- a/net/ndisc.c +++ b/net/ndisc.c @@ -265,7 +265,7 @@ int ndisc_receive(struct ethernet_hdr *et, struct ip6_hdr *ip6, int len) /* save address for later use */ if (!net_nd_packet_mac) - memcpy(net_nd_packet_mac, neigh_eth_addr, 7); + net_nd_packet_mac = neigh_eth_addr; /* modify header, and transmit it */ memcpy(((struct ethernet_hdr *)net_nd_tx_packet)->et_dest, @@ -1269,6 +1269,7 @@ void net_process_received_packet(uchar *in_packet, int len) #if IS_ENABLED(CONFIG_IPV6) case PROT_IP6: net_ip6_handler(et, (struct ip6_hdr *)ip, len); + break; #endif case PROT_IP: debug_cond(DEBUG_NET_PKT, "Got IP\n"); diff --git a/net/wget.c b/net/wget.c index 3826c4b364..eebdf80eb5 100644 --- a/net/wget.c +++ b/net/wget.c @@ -6,6 +6,7 @@ #include <command.h> #include <common.h> +#include <display_options.h> #include <env.h> #include <image.h> #include <mapmem.h> diff --git a/scripts/dtc/pylibfdt/setup.py b/scripts/dtc/pylibfdt/setup.py index ec1fc5002b..8baae08770 100755 --- a/scripts/dtc/pylibfdt/setup.py +++ b/scripts/dtc/pylibfdt/setup.py @@ -26,6 +26,11 @@ import os import re import sys +try: + from setuptools import sic +except ImportError: + pass + srcdir = os.path.dirname(__file__) with open(os.path.join(srcdir, "../README"), "r") as fh: @@ -113,7 +118,10 @@ progname = sys.argv[0] files = os.environ.get('SOURCES', '').split() cflags = os.environ.get('CPPFLAGS', '').split() objdir = os.environ.get('OBJDIR') -version = os.environ.get('VERSION') +try: + version = sic(os.environ.get('VERSION')) +except: + version = os.environ.get('VERSION') swig_opts = os.environ.get('SWIG_OPTS', '').split() # If we were called directly rather than through our Makefile (which is often diff --git a/test/unicode_ut.c b/test/unicode_ut.c index d104bd5997..382b796516 100644 --- a/test/unicode_ut.c +++ b/test/unicode_ut.c @@ -67,6 +67,17 @@ static int unicode_test_u16_strlen(struct unit_test_state *uts) } UNICODE_TEST(unicode_test_u16_strlen); +static int unicode_test_u16_strnlen(struct unit_test_state *uts) +{ + ut_asserteq(0, u16_strnlen(c1, 0)); + ut_asserteq(4, u16_strnlen(c1, 4)); + ut_asserteq(6, u16_strnlen(c1, 6)); + ut_asserteq(6, u16_strnlen(c1, 7)); + + return 0; +} +UNICODE_TEST(unicode_test_u16_strnlen); + static int unicode_test_u16_strdup(struct unit_test_state *uts) { u16 *copy = u16_strdup(c4); @@ -613,6 +624,31 @@ static int unicode_test_utf_to_upper(struct unit_test_state *uts) } UNICODE_TEST(unicode_test_utf_to_upper); +static int unicode_test_u16_strcasecmp(struct unit_test_state *uts) +{ + ut_assert(u16_strcasecmp(u"abcd", u"abcd") == 0); + ut_assert(u16_strcasecmp(u"aBcd", u"abcd") == 0); + ut_assert(u16_strcasecmp(u"abcd", u"abCd") == 0); + ut_assert(u16_strcasecmp(u"abcdE", u"abcd") > 0); + ut_assert(u16_strcasecmp(u"abcd", u"abcdE") < 0); + ut_assert(u16_strcasecmp(u"abcE", u"abcd") > 0); + ut_assert(u16_strcasecmp(u"abcd", u"abcE") < 0); + ut_assert(u16_strcasecmp(u"abcd", u"abcd") == 0); + ut_assert(u16_strcasecmp(u"abcd", u"abcd") == 0); + if (CONFIG_IS_ENABLED(EFI_UNICODE_CAPITALIZATION)) { + /* Cyrillic letters */ + ut_assert(u16_strcasecmp(u"\x043a\x043d\x0438\x0433\x0430", + u"\x041a\x041d\x0418\x0413\x0410") == 0); + ut_assert(u16_strcasecmp(u"\x043a\x043d\x0438\x0433\x0430", + u"\x041a\x041d\x0418\x0413\x0411") < 0); + ut_assert(u16_strcasecmp(u"\x043a\x043d\x0438\x0433\x0431", + u"\x041a\x041d\x0418\x0413\x0410") > 0); + } + + return 0; +} +UNICODE_TEST(unicode_test_u16_strcasecmp); + static int unicode_test_u16_strncmp(struct unit_test_state *uts) { ut_assert(u16_strncmp(u"abc", u"abc", 3) == 0); |