diff options
Diffstat (limited to 'doc')
34 files changed, 1816 insertions, 165 deletions
diff --git a/doc/README.SNTP b/doc/README.SNTP deleted file mode 100644 index da9ec459ad4..00000000000 --- a/doc/README.SNTP +++ /dev/null @@ -1,17 +0,0 @@ -To use SNTP support, add define CONFIG_CMD_SNTP to the -configuration file of the board. - -The "sntp" command gets network time from NTP time server and -syncronize RTC of the board. This command needs the command line -parameter of server's IP address or environment variable -"ntpserverip". The network time is sent as UTC. So if you want to -set local time to RTC, set the offset in second from UTC to the -environment variable "time offset". - -If the DHCP server provides time server's IP or time offset, you -don't need to set the above environment variables yourself. - -Current limitations of SNTP support: -1. The roundtrip time is ignored. -2. Only the 1st NTP server IP, in the option ntp-servers of DHCP, will - be used. diff --git a/doc/api/index.rst b/doc/api/index.rst index 506843ed74a..cf9d21e4c1c 100644 --- a/doc/api/index.rst +++ b/doc/api/index.rst @@ -17,7 +17,6 @@ U-Boot API documentation interrupt led linker_lists - lmb logging nvmem part diff --git a/doc/api/linker_lists.rst b/doc/api/linker_lists.rst index 3cd447f187d..9e6849d5e75 100644 --- a/doc/api/linker_lists.rst +++ b/doc/api/linker_lists.rst @@ -130,17 +130,17 @@ the compiler cannot update the alignment of the linker_list item. In the first case, an 8-byte 'fill' region is added:: __u_boot_list_2_driver_2_testbus_drv - 0x0000000000270018 0x80 test/built-in.o + 0x0000000000270018 0x80 test/built-in.a 0x0000000000270018 _u_boot_list_2_driver_2_testbus_drv __u_boot_list_2_driver_2_testfdt1_drv - 0x0000000000270098 0x80 test/built-in.o + 0x0000000000270098 0x80 test/built-in.a 0x0000000000270098 _u_boot_list_2_driver_2_testfdt1_drv *fill* 0x0000000000270118 0x8 __u_boot_list_2_driver_2_testfdt_drv - 0x0000000000270120 0x80 test/built-in.o + 0x0000000000270120 0x80 test/built-in.a 0x0000000000270120 _u_boot_list_2_driver_2_testfdt_drv __u_boot_list_2_driver_2_testprobe_drv - 0x00000000002701a0 0x80 test/built-in.o + 0x00000000002701a0 0x80 test/built-in.a 0x00000000002701a0 _u_boot_list_2_driver_2_testprobe_drv With this, the linker_list no-longer works since items after testfdt1_drv diff --git a/doc/api/lmb.rst b/doc/api/lmb.rst deleted file mode 100644 index 2095bfa1618..00000000000 --- a/doc/api/lmb.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0+ - -Logical memory blocks -===================== - -.. kernel-doc:: include/lmb.h - :internal: diff --git a/doc/board/broadcom/bcm7xxx.rst b/doc/board/broadcom/bcm7xxx.rst index f1994d9f975..f559d5c290a 100644 --- a/doc/board/broadcom/bcm7xxx.rst +++ b/doc/board/broadcom/bcm7xxx.rst @@ -149,10 +149,8 @@ and with a generic ARMv7 root file system. * to the Linux source tree as a .dts file. * * To support modifications to the device tree - * in-place in U-Boot, add to Linux's - * arch/arm/boot/dts/Makefile: - * - * DTC_FLAGS ?= -p 4096 + * in-place in U-Boot, set the config variable + * CONFIG_SYS_DTC_PAD_BYTES as needed. * * This will leave some padding in the DTB and * thus reserve room for node additions. diff --git a/doc/board/index.rst b/doc/board/index.rst index 3c5a2c7d1cf..e084c7fb1df 100644 --- a/doc/board/index.rst +++ b/doc/board/index.rst @@ -38,6 +38,7 @@ Board-specific doc kontron/index lenovo/index lg/index + liebherr/index mediatek/index microchip/index microsoft/index diff --git a/doc/board/liebherr/btt.rst b/doc/board/liebherr/btt.rst new file mode 100644 index 00000000000..d22ffa205bd --- /dev/null +++ b/doc/board/liebherr/btt.rst @@ -0,0 +1,34 @@ +.. SPDX-License-Identifier: GPL-2.0+ +.. sectionauthor:: Lukasz Majewski <lukma@denx.de> + +BTT devices +=========== + +Those devices are based on IMX's IMX287 SoC. The description regarding the +**btt** family of boards (i.e. `btt3` and `bttc`) is identical as the one for +the already supported **xea** board. + +Building +-------- + +Make sure that `CROSS_COMPILE` is set appropriately: + +.. code-block:: text + + $ make imx28_btt3_defconfig + $ make -j4 u-boot.sb u-boot.img + +Now you should see `u-boot.sb` and `u-boot.img` files in the build directory. + +For initial bringup - one can use `uuu` utulity to boot till u-boot prompt +(USB connection with the board is required). + +Flashing +-------- + +Via U-Boot: + +.. code-block:: text + + => run update_spl + => run update_uboot diff --git a/doc/board/liebherr/index.rst b/doc/board/liebherr/index.rst new file mode 100644 index 00000000000..d8db6bd188c --- /dev/null +++ b/doc/board/liebherr/index.rst @@ -0,0 +1,9 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Liebherr +======== + +.. toctree:: + :maxdepth: 2 + + btt diff --git a/doc/board/qualcomm/board.rst b/doc/board/qualcomm/board.rst index 003d59a18eb..642c5095261 100644 --- a/doc/board/qualcomm/board.rst +++ b/doc/board/qualcomm/board.rst @@ -23,10 +23,7 @@ Installation ------------ Build ^^^^^ - - $ ./tools/buildman/buildman -o .output qcom - -This will build ``.output/u-boot-nodtb.bin`` using the ``qcom_defconfig``. +We will build ``u-boot-nodtb.bin`` from the u-boot source tree. Generate FIT image (optional) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -81,19 +78,20 @@ Steps: - Build u-boot -As above:: +Use the following commands:: - ./tools/buildman/buildman -o .output qcom + make CROSS_COMPILE=aarch64-linux-gnu- O=.output qcom_defconfig + make CROSS_COMPILE=aarch64-linux-gnu- O=.output -j$(nproc) Or for db410c (and other boards not supported by the generic target):: make CROSS_COMPILE=aarch64-linux-gnu- O=.output dragonboard410c_defconfig - make O=.output -j$(nproc) + make CROSS_COMPILE=aarch64-linux-gnu- O=.output -j$(nproc) Or for smartphones:: make CROSS_COMPILE=aarch64-linux-gnu- O=.output qcom_defconfig qcom-phone.config - make O=.output -j$(nproc) + make CROSS_COMPILE=aarch64-linux-gnu- O=.output -j$(nproc) - gzip u-boot:: @@ -119,6 +117,13 @@ Or with no FIT image:: mkbootimg --kernel u-boot-nodtb.bin.gz-dtb \ --output boot.img --pagesize 4096 --base 0x80000000 +Other devices with boot image version 2 can be built like this example:: + + mkbootimg --pagesize 4096 --header_version 2 \ + --kernel_offset 0x00008000 --kernel u-boot-nodtb.bin.gz \ + --dtb_offset 0x01f00000 --dtb dts/upstream/src/arm64/qcom/qcm6490-fairphone-fp5.dtb \ + --output boot.img + - Flash boot.img using fastboot and erase dtbo to avoid conflicts with our DTB: .. code-block:: bash diff --git a/doc/board/qualcomm/dragonwing.rst b/doc/board/qualcomm/dragonwing.rst new file mode 100644 index 00000000000..d4899415309 --- /dev/null +++ b/doc/board/qualcomm/dragonwing.rst @@ -0,0 +1,49 @@ +.. SPDX-License-Identifier: GPL-2.0 +.. sectionauthor:: Balaji Selvanathan <balaji.selvanathan@oss.qualcomm.com> + +Qualcomm DragonWing +======================================== + +Qualcomm DragonWing are industrial-grade boards that provides various series +of processors such as IQ6 (QCS615), IQ8 (QCS8300) and IQ9 (QCS9100). +These SoCs are used for factory/industry based applications. +More information can be found on the `Qualcomm's IQ6 product page`_, +`Qualcomm's IQ8 product page`_ and `Qualcomm's IQ9 product page`_. + +.. _Qualcomm's IQ6 product page: https://docs.qualcomm.com/bundle/publicresource/87-83838-1_REV_A_Qualcomm_IQ6_Series_Product_Brief.pdf +.. _Qualcomm's IQ8 product page: https://docs.qualcomm.com/bundle/publicresource/87-83839-1_REV_A_Qualcomm_IQ8_Series_Product_Brief________.pdf +.. _Qualcomm's IQ9 product page: https://docs.qualcomm.com/bundle/publicresource/87-83840-1_REV_A_Qualcomm_IQ9_Series_Product_Brief.pdf + +Installation +------------ +First, setup ``CROSS_COMPILE`` for aarch64. Then, build U-Boot for ``QCS615``, ``QCS8300`` or ``QCS9100``:: + + $ export CROSS_COMPILE=<aarch64 toolchain prefix> + $ make qcom_qcs8300_defconfig + $ make -j8 u-boot.mbn + +Although the board does not have secure boot set up by default, +the firmware still expects firmware ELF images to be "signed". The signature +does not provide any security in this case, but it provides the firmware with +some required metadata. + +To "sign" ``u-boot.elf`` you can use e.g. `qtestsign`_:: + + $ qtestsign -v6 aboot -o u-boot.mbn u-boot.elf + +Then flash the resulting ``u-boot.mbn`` to the ``uefi_a`` partition +on your device with ``fastboot flash uefi_a u-boot.mbn``. + +U-Boot should be running after a reboot (``fastboot reboot``). + +Note that fastboot is not yet supported in U-Boot on Dragonwing boards, as a result, to flash +back the original firmware, or new versoins of the U-Boot, EDL mode must be used. + +A tool like bkerler's `edl`_ can be used for flashing with the firehose loader (for example, for QCS9100 +the firehose loader can be obtained from `dragonwing IQ9 bootbinaries`.) :: + +$ edl.py --loader /path/to/prog_firehose_ddr.elf w uefi_a u-boot.mbn + +.. _qtestsign: https://github.com/msm8916-mainline/qtestsign +.. _edl: https://github.com/bkerler/edl +.. _dragonwing IQ9 bootbinaries: https://artifacts.codelinaro.org/ui/native/qli-ci/flashable-binaries/qimpsdk/qcs9075-rb8-core-kit diff --git a/doc/board/qualcomm/index.rst b/doc/board/qualcomm/index.rst index e2fcbfa19c2..ccf834208e9 100644 --- a/doc/board/qualcomm/index.rst +++ b/doc/board/qualcomm/index.rst @@ -8,6 +8,7 @@ Qualcomm dragonboard410c rb3gen2 + dragonwing board phones debugging diff --git a/doc/board/qualcomm/rdp.rst b/doc/board/qualcomm/rdp.rst index fd14f1d9829..99cf8eba57c 100644 --- a/doc/board/qualcomm/rdp.rst +++ b/doc/board/qualcomm/rdp.rst @@ -21,13 +21,16 @@ First, setup ``CROSS_COMPILE`` for aarch64. Then, build U-Boot for ``IPQ9574``:: This will build ``u-boot.elf`` in the configured output directory. -Although the RDPs do not have secure boot set up by default, the firmware still -expects firmware ELF images to be "signed". The signature does not provide any -security in this case, but it provides the firmware with some required metadata. +The firmware expects the ELF images to be in MBN format. The `elftombn.py` tool +can be used to convert the ELF images to MBN format. -To "sign" ``u-boot.elf`` you can use e.g. `qtestsign`_:: + IPQ9574: (MBN version 6) - $ qtestsign -v6 aboot -o u-boot.mbn u-boot.elf + $ python elftombn.py -f u-boot.elf -o u-boot.mbn -v6 + + IPQ5424: (MBN version 7) + + $ python elftombn.py -f u-boot.elf -o u-boot.mbn -v7 Then install the resulting ``u-boot.mbn`` to the ``0:APPSBL`` partition on your device with:: @@ -51,5 +54,5 @@ U-Boot should be running after a reboot (``reset``). Note that the support added is very basic. Restoring the original U-Boot on boards with older version of the software requires a debugger. -.. _qtestsign: https://github.com/msm8916-mainline/qtestsign +.. _elftombn.py: https://git.codelinaro.org/clo/qsdk/oss/system/tools/meta/-/tree/NHSS.QSDK.13.0.5.r2/scripts?ref_type=heads .. _edl: https://github.com/bkerler/edl diff --git a/doc/board/thead/lpi4a.rst b/doc/board/thead/lpi4a.rst index 7e4c4ea81ee..acd7ac2698d 100644 --- a/doc/board/thead/lpi4a.rst +++ b/doc/board/thead/lpi4a.rst @@ -55,123 +55,70 @@ DDR driver requires a firmware to function, to build it: cd th1520-firmware lua5.4 ddr-generate.lua src/<CONFIGURATION_NAME>.lua th1520-ddr-firmware.bin -4. Build U-Boot images +4. Build OpenSBI Firmware -The U-Boot is capable of running in M-Mode, so we can directly build it without -OpenSBI. The DDR firmware should be copied to U-Boot source directory before +TH1520 port of proper U-Boot runs in S mode, thus OpenSBI is required as +SBI firmware to setup S-mode environment and provide SBI calls. It could +be cloned and built for TH1520 as below, + +.. code-block:: bash + + git clone https://github.com/riscv-software-src/opensbi.git + cd opensbi + make PLATFORM=generic + +TH1520 support in OpenSBI requires v1.2 or a more recent version. + +More detailed description of steps required to build fw_dynamic firmware +is beyond the scope of this document. Please refer to OpenSBI +documenation. + +5. Build U-Boot images + +The DDR firmware should be copied to U-Boot source directory before building. -.. code-block:: console +.. code-block:: bash cd <U-Boot-dir> cp <path-to-ddr-firmware> th1520-ddr-firmware.bin make th1520_lpi4a_defconfig - make + make OPENSBI=<opensbi_dir>/build/platform/generic/firmware/fw_dynamic.bin -This will generate u-boot-dtb.bin and u-boot-with-spl.bin. The former contains -only proper U-Boot and is for chainloading; the later contains also SPL and -DDR firmware and is ready for booting by BROM directly. +This will generate u-boot-with-spl.bin, which contains SPL, DDR firmware, +OpenSBI firmware and proper U-Boot. Booting ~~~~~~~ -Currently, we rely on vendor u-boot to initialize the clock, pinctrl subsystem, -and chain load the mainline u-boot image either via tftp or emmc storage, -then bootup from it. - -Sample boot log from Lichee PI 4A board via tftp -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. code-block:: none - - brom_ver 8 - [APP][E] protocol_connect failed, exit. - - U-Boot SPL 2020.01-00016-g8c870a6be8 (May 20 2023 - 01:04:49 +0000) - FM[1] lpddr4x dualrank freq=3733 64bit dbi_off=n sdram init - ddr initialized, jump to uboot - image has no header +u-boot-with-spl.bin should be loaded to SRAM through fastboot. Connect +the board to computer with Type-C cable and run +.. code-block:: bash - U-Boot 2020.01-00016-g8c870a6be8 (May 20 2023 - 01:04:49 +0000) + fastboot flash ram u-boot-with-spl.bin + fastboot reboot - CPU: rv64imafdcvsu - Model: T-HEAD c910 light - DRAM: 8 GiB - C910 CPU FREQ: 750MHz - AHB2_CPUSYS_HCLK FREQ: 250MHz - AHB3_CPUSYS_PCLK FREQ: 125MHz - PERISYS_AHB_HCLK FREQ: 250MHz - PERISYS_APB_PCLK FREQ: 62MHz - GMAC PLL POSTDIV FREQ: 1000MHZ - DPU0 PLL POSTDIV FREQ: 1188MHZ - DPU1 PLL POSTDIV FREQ: 1188MHZ - MMC: sdhci@ffe7080000: 0, sd@ffe7090000: 1 - Loading Environment from MMC... OK - Error reading output register - Warning: cannot get lcd-en GPIO - LCD panel cannot be found : -121 - splash screen startup cost 16 ms - In: serial - Out: serial - Err: serial - Net: - Warning: ethernet@ffe7070000 using MAC address from ROM - eth0: ethernet@ffe7070000ethernet@ffe7070000:0 is connected to ethernet@ffe7070000. Reconnecting to ethernet@ffe7060000 - - Warning: ethernet@ffe7060000 (eth1) using random MAC address - 42:25:d4:16:5f:fc - , eth1: ethernet@ffe7060000 - Hit any key to stop autoboot: 2 - ethernet@ffe7060000 Waiting for PHY auto negotiation to complete.. done - Speed: 1000, full duplex - Using ethernet@ffe7070000 device - TFTP from server 192.168.8.50; our IP address is 192.168.8.45 - Filename 'u-boot-dtb.bin'. - Load address: 0x1c00000 - Loading: * ######################### - 8 MiB/s - done - Bytes transferred = 376686 (5bf6e hex) - ## Starting application at 0x01C00000 ... - - U-Boot 2023.07-rc2-00004-g1befbe31c1 (May 23 2023 - 18:40:01 +0800) - - CPU: rv64imafdc - Model: Sipeed Lichee Pi 4A - DRAM: 8 GiB - Core: 13 devices, 6 uclasses, devicetree: separate - Loading Environment from <NULL>... OK - In: serial@ffe7014000 - Out: serial@ffe7014000 - Err: serial@ffe7014000 - Model: Sipeed Lichee Pi 4A - LPI4A=> - -SPL support is still in an early stage and not all of the functionalities are -available when booting from mainline SPL. When using mainline SPL, -u-boot-with-spl.bin should be loaded to SRAM through fastboot. - -Sample boot log from Lichee PI 4A board via fastboot and mainline SPL -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Sample boot log from Lichee PI 4A board via fastboot +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: none - brom_ver 8 [APP][E] protocol_connect failed, exit. - Starting download of 636588 bytes + Starting download of 940681 bytes - downloading of 636588 bytes finished + downloading of 940681 bytes finished - U-Boot SPL 2025.04-rc2-00049-geaa9fc99d4cd-dirty (Apr 26 2025 - 13:31:41 +0000) + U-Boot SPL 2025.07-rc3-00005-g3a0ef515b8bb (May 29 2025 - 10:42:46 +0000) Trying to boot from RAM - U-Boot 2025.04-rc2-00049-geaa9fc99d4cd-dirty (Apr 26 2025 - 13:31:41 +0000) + U-Boot 2025.07-rc3-00005-g3a0ef515b8bb (May 29 2025 - 10:42:46 +0000) CPU: thead,c910 Model: Sipeed Lichee Pi 4A DRAM: 8 GiB - Core: 30 devices, 9 uclasses, devicetree: separate + Core: 110 devices, 9 uclasses, devicetree: separate MMC: mmc@ffe7080000: 0, mmc@ffe7090000: 1 Loading Environment from <NULL>... OK In: serial@ffe7014000 diff --git a/doc/board/ti/k3.rst b/doc/board/ti/k3.rst index 0d9ccd5a768..01fb9411688 100644 --- a/doc/board/ti/k3.rst +++ b/doc/board/ti/k3.rst @@ -49,6 +49,7 @@ K3 SoC based boards in other sections * :doc:`../phytec/phycore-am62x` * :doc:`../phytec/phycore-am62ax` * :doc:`../toradex/verdin-am62` +* :doc:`../toradex/verdin-am62p` Boot Flow Overview ------------------ diff --git a/doc/board/toradex/index.rst b/doc/board/toradex/index.rst index 7d510a80112..68934566ad7 100644 --- a/doc/board/toradex/index.rst +++ b/doc/board/toradex/index.rst @@ -11,5 +11,6 @@ Toradex colibri-imx8x smarc-imx8mp verdin-am62 + verdin-am62p verdin-imx8mm verdin-imx8mp diff --git a/doc/board/toradex/verdin-am62p.rst b/doc/board/toradex/verdin-am62p.rst new file mode 100644 index 00000000000..2f3262b8d1e --- /dev/null +++ b/doc/board/toradex/verdin-am62p.rst @@ -0,0 +1,196 @@ +.. SPDX-License-Identifier: GPL-2.0-or-later +.. sectionauthor:: Parth Pancholi <parth.pancholi@toradex.com> + +Verdin AM62P Module +=================== + +- SoM: https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p +- Carrier board: https://www.toradex.com/products/carrier-board/verdin-development-board-kit + +Quick Start +----------- + +- Setup environment variables +- Get binary-only TI Linux firmware +- Build the ARM trusted firmware binary +- Build the OPTEE binary +- Build U-Boot for the R5 +- Build U-Boot for the A53 +- Flash to eMMC +- Boot + +Setup environment +----------------- + +Suggested current toolchains are ARM 11.3 (https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads): + +- https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz +- https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz + +.. code-block:: bash + + $ export CROSS_COMPILE_32=<path/to/arm/toolchain/bin/>arm-none-linux-gnueabihf- + $ export CROSS_COMPILE_64=<path/to/arm64/toolchain/bin/>aarch64-none-linux-gnu- + +Get the TI Linux Firmware +------------------------- + +.. code-block:: bash + + $ echo "Downloading TI Linux Firmware..." + $ git clone -b ti-linux-firmware https://git.ti.com/git/processor-firmware/ti-linux-firmware.git + +Get and Build the ARM Trusted Firmware (Trusted Firmware A) +----------------------------------------------------------- + +.. code-block:: bash + + $ echo "Downloading and building TF-A..." + $ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git + $ cd trusted-firmware-a + +Then build ATF (TF-A): + +.. code-block:: bash + + $ export CROSS_COMPILE="$CROSS_COMPILE_64" + $ make PLAT=k3 K3_PM_SYSTEM_SUSPEND=1 TARGET_BOARD=lite SPD=opteed + +Get and Build OPTEE +------------------- + +.. code-block:: bash + + $ echo "Downloading and building OPTEE..." + $ git clone https://github.com/OP-TEE/optee_os.git + $ cd optee_os + +Then build OPTEE: + +.. code-block:: bash + + $ export CROSS_COMPILE="$CROSS_COMPILE_32" + $ export CROSS_COMPILE64="$CROSS_COMPILE_64" + $ make PLATFORM=k3-am62px CFG_ARM64_core=y + +Build U-Boot for R5 +------------------- + +.. code-block:: bash + + $ export CROSS_COMPILE="$CROSS_COMPILE_32" + $ export BINMAN_INDIRS=<path/to/ti-linux-firmware> + $ make O=/tmp/verdin-am62p-r5 verdin-am62p_r5_defconfig + $ make O=/tmp/verdin-am62p-r5 + +Build U-Boot for A53 +-------------------- + +.. code-block:: bash + + $ export CROSS_COMPILE=$CROSS_COMPILE_64 + $ export BL31=<path/to/atf>/build/k3/lite/release/bl31.bin + $ export TEE=<path/to/optee>/out/arm-plat-k3/core/tee-pager_v2.bin + $ export BINMAN_INDIRS="<path/to/ti-linux-firmware> /tmp/verdin-am62p-r5" + $ make O=/tmp/verdin-am62p-a53 verdin-am62p_a53_defconfig + $ make O=/tmp/verdin-am62p-a53 + +Flash to eMMC +------------- + +.. code-block:: console + + => mmc dev 0 1 + => fatload mmc 1 ${loadaddr} tiboot3.bin + => mmc write ${loadaddr} 0x0 0x400 + => fatload mmc 1 ${loadaddr} tispl.bin + => mmc write ${loadaddr} 0x400 0x1000 + => fatload mmc 1 ${loadaddr} u-boot.img + => mmc write ${loadaddr} 0x1400 0x2000 + +As a convenience, instead of having to remember all those addresses and sizes, +one may also use the update U-Boot wrappers: + +.. code-block:: console + + => tftpboot ${loadaddr} tiboot3.bin + => run update_tiboot3 + + => tftpboot ${loadaddr} tispl.bin + => run update_tispl + + => tftpboot ${loadaddr} u-boot.img + => run update_uboot + +Boot +---- + +Output: + +.. code-block:: console + +U-Boot SPL 2025.04-00006-g51dc98d36470 (May 12 2025 - 15:46:57 +0100) +SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)') +Changed A53 CPU frequency to 1250000000Hz (U grade) in DT +SPL initial stack usage: 17080 bytes +Trying to boot from MMC1 +Authentication passed +Authentication passed +Authentication passed +Loading Environment from nowhere... OK +init_env from device 9 not supported! +Authentication passed +Authentication passed +Starting ATF on ARM64 core... + +NOTICE: BL31: v2.12.0(release):v2.12.0-1106-g4301798db096 +NOTICE: BL31: Built : 10:57:58, May 9 2025 +I/TC: +I/TC: OP-TEE version: 4.6.0-18-g76d920d354df (gcc version 12.3.1 20230626 (Arm GNU Toolchain 12.3.Rel1 (Build arm-12.35))) #4 Tue May 6 19:48:13 UTC 2025 aarch64 +I/TC: WARNING: This OP-TEE configuration might be insecure! +I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html +I/TC: Primary CPU initializing +I/TC: GIC redistributor base address not provided +I/TC: Assuming default GIC group status and modifier +I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)') +I/TC: Activated SA2UL device +I/TC: Enabled firewalls for SA2UL TRNG device +I/TC: SA2UL TRNG initialized +I/TC: SA2UL Drivers initialized +I/TC: HUK Initialized +I/TC: Primary CPU switching to normal world boot + +U-Boot SPL 2025.04-00006-g51dc98d36470 (May 12 2025 - 15:47:54 +0100) +SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)') +SPL initial stack usage: 1760 bytes +HW CFG: 0x00 +Trying to boot from MMC1 +Authentication passed +Authentication passed + + +U-Boot 2025.04-00006-g51dc98d36470 (May 12 2025 - 15:47:54 +0100) + +SoC: AM62PX SR1.0 HS-FS +DRAM: 2 GiB +Core: 147 devices, 31 uclasses, devicetree: separate +MMC: mmc@fa10000: 0, mmc@fa00000: 1 +Loading Environment from MMC... Reading from MMC(0)... OK +In: serial@2800000 +Out: serial@2800000 +Err: serial@2800000 +Model: Toradex 0099 Verdin AM62P Quad 2GB WB IT V1.0A +Serial#: 15664919 +Carrier: Toradex Dahlia V1.1D, Serial# 11287149 +am65_cpsw_nuss ethernet@8000000: K3 CPSW: nuss_ver: 0x6BA01903 cpsw_ver: 0x6BA81903 ale_ver: 0x00290105 Ports:2 +Setting variant to wifi +Net: +Warning: ethernet@8000000port@1 MAC addresses don't match: +Address in ROM is 58:a1:5f:b8:93:f9 +Address in environment is 00:14:2d:ef:07:17 +eth0: ethernet@8000000port@1 [PRIME]Could not get PHY for mdio@f00: addr 7 +am65_cpsw_nuss_port ethernet@8000000port@2: phy_connect() failed + +Hit any key to stop autoboot: 0 +Verdin AM62P # + diff --git a/doc/develop/binman_tests.rst b/doc/develop/binman_tests.rst index a632694a6fe..5e44686b8ad 100644 --- a/doc/develop/binman_tests.rst +++ b/doc/develop/binman_tests.rst @@ -431,11 +431,11 @@ error message produced by Binman. Sometimes you need to add several tests, each with their own broken image description, in order to check all the error cases. Sometimes you need to capture the console output of Binman, to check it is -correct. You can to this with ``test_util.capture_sys_output()``, for example: +correct. You can to this with ``terminal.capture()``, for example: .. code-block:: python - with test_util.capture_sys_output() as (_, stderr): + with terminal.capture() as (_, stderr): self._DoTestFile('071_gbb.dts', force_missing_bintools='futility', entry_args=entry_args) err = stderr.getvalue() @@ -572,7 +572,7 @@ In the above example, here are some possible steps: def testNxpImx8ImageMkimageMissing(self): """Test that binman can produce an iMX8 image""" - with test_util.capture_sys_output() as (_, stderr): + with terminal.capture() as (_, stderr): self._DoTestFile('339_nxp_imx8.dts', force_missing_bintools='mkimage') err = stderr.getvalue() diff --git a/doc/develop/bootstd/index.rst b/doc/develop/bootstd/index.rst index 4c4e26ccdb7..ec74fc2fb9d 100644 --- a/doc/develop/bootstd/index.rst +++ b/doc/develop/bootstd/index.rst @@ -12,5 +12,6 @@ Standard Boot qfw android cros + rauc script sandbox diff --git a/doc/develop/bootstd/overview.rst b/doc/develop/bootstd/overview.rst index 9fe5630ab16..0a237359575 100644 --- a/doc/develop/bootstd/overview.rst +++ b/doc/develop/bootstd/overview.rst @@ -443,6 +443,7 @@ Bootmeth drivers are provided for booting from various media: - :doc:`extlinux / syslinux <extlinux>` boot from a storage device - :doc:`extlinux / syslinux <extlinux>` boot from a network (PXE) - :doc:`sandbox <sandbox>` used only for testing + - :doc:`RAUC distro <rauc>`: A/B system with RAUC from MMC - :doc:`U-Boot scripts <script>` from disk, network or SPI flash - :doc:`QFW <qfw>`: QEMU firmware interface - :doc:`VBE </develop/vbe>`: Verified Boot for Embedded diff --git a/doc/develop/bootstd/rauc.rst b/doc/develop/bootstd/rauc.rst new file mode 100644 index 00000000000..b2661d18da4 --- /dev/null +++ b/doc/develop/bootstd/rauc.rst @@ -0,0 +1,56 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +RAUC Bootmeth +============= + +This bootmeth provides a way to locate and run an A/B system with RAUC as its +update client. The booted distro must supply a script on an MMC device +containing the final boot instructions necessary. + +This bootmeth assumes a symmetric A/B partition layout, with a separate boot +partition containing the kernel image and another partition for the root +filesystem each. The partition numbers must be specified with +``CONFIG_BOOTMETH_RAUC_PARTITIONS``. The content must be a list of pairs, with +the following syntax: ``1,2 3,4``, where 1 and 3 are the slots' boot partition +and 2 and 4 the slots' root partition. + +Each pair of boot and rootfs partition form a "slot". The default order in which +available slots are tried is set through ``CONFIG_BOOTMETH_RAUC_BOOT_ORDER``, +with the left one tried first. + +The default number of boot tries of each slot is set by +``CONFIG_BOOTMETH_RAUC_DEFAULT_TRIES``. + +In case no valid slot can be found and/or all slots have zero tries left, the +boot order and slot tries are reset to their default values, if +``CONFIG_BOOTMETH_RAUC_RESET_ALL_ZERO_TRIES`` is enabled. This prevents a system +from locking up in the bootloader and tries booting again after a specified +number of tries. + +The boot script must be located in each boot partition. The bootmeth searches +for "boot.scr.uimg" first, then "boot.scr" if not found. + +When the bootflow is booted, the bootmeth sets these environment variables: + +devtype + device type (e.g. "mmc") + +devnum + device number, corresponding to the device 'sequence' number + ``dev_seq(dev)`` + +distro_bootpart + partition number of the boot partition on the device (numbered from 1) + +distro_rootpart + partition number of the rootfs partition on the device (numbered from 1) + +raucargs + kernel command line arguments needed for RAUC to detect the currently booted + slot + +The script file must be a FIT or a legacy uImage. It is loaded into memory and +executed. + +The compatible string "u-boot,distro-rauc" is used for the driver. It is present +if ``CONFIG_BOOTMETH_RAUC`` is enabled. diff --git a/doc/develop/crash_dumps.rst b/doc/develop/crash_dumps.rst index 4237b073bc9..c84b85b3364 100644 --- a/doc/develop/crash_dumps.rst +++ b/doc/develop/crash_dumps.rst @@ -89,15 +89,15 @@ File u-boot.map contains the memory layout of the U-Boot binary. Here we find these lines:: .text.do_undefined - 0x00000000000101fc 0xc cmd/built-in.o + 0x00000000000101fc 0xc cmd/built-in.a .text.exception_complete - 0x0000000000010208 0x90 cmd/built-in.o + 0x0000000000010208 0x90 cmd/built-in.a ... .text.cmd_process - 0x00000000000213b8 0x164 common/built-in.o + 0x00000000000213b8 0x164 common/built-in.a 0x00000000000213b8 cmd_process .text.cmd_process_error - 0x000000000002151c 0x40 common/built-in.o + 0x000000000002151c 0x40 common/built-in.a 0x000000000002151c cmd_process_error So the error occurred at the start of function do\_undefined() and this diff --git a/doc/develop/expo.rst b/doc/develop/expo.rst index cc7c36173db..b94340e9a8d 100644 --- a/doc/develop/expo.rst +++ b/doc/develop/expo.rst @@ -65,6 +65,8 @@ item is highlighted. A `textline object` contains a label and an editable string. +A `box object` is a rectangle with a given line width. It is not filled. + All components have a name. This is mostly for debugging, so it is easy to see what object is referred to, although the name is also used for saving values. Of course the ID numbers can help as well, but they are less easy to @@ -105,6 +107,37 @@ refer to objects which have been created. So a menu item is just a collection of IDs of text and image objects. When adding a menu item you must create these objects first, then create the menu item, passing in the relevant IDs. +Position and alignment +~~~~~~~~~~~~~~~~~~~~~~ + +Objects are typically positioned automatically, when scene_arrange() is called. +However it is possible to position objects manually. The scene_obj_set_pos() +sets the coordinates of the top left of the object. + +All objects have a bounding box. Typically this is calculated by looking at the +object contents, in `scene_calc_arrange()`. The calculated dimensions of each +object are stored in the object's `dims` field. + +It is possible to adjust the size of an object with `scene_obj_set_size()` or +even set the bounding box, with `scene_obj_set_bbox()`. The `SCENEOF_SIZE_VALID` +flag tracks whether the width/height should be maintained when the position +changes. + +If the bounding box is larger than the object needs, the object can be aligned +to different edges within the box. Objects can be left- or right-aligned, +or centred. For text objects this applies to each line of text. Normally objects +are drawn starting at the top of their bounding box, but they can be aligned +vertically to the bottom, or centred vertically within the box. + +Where the width of a text object's bounding box is smaller than the space needed +to show the next, the text is word-wrapped onto multiple lines, assuming there +is enough vertical space. Newline characters in the next cause a new line to be +started. The measurement information is created by the Truetype console driver +and stored in an alist in `struct scene_txt_generic`. + +When the object is drawn the `ofs` field indicates the x and y offset to use, +from the top left of the bounding box. These values are affected by alignment. + Creating an expo ---------------- @@ -527,6 +560,7 @@ Future ideas Some ideas for future work: - Default menu item and a timeout +- Complete the text editor - Image formats other than BMP - Use of ANSI sequences to control a serial terminal - Colour selection diff --git a/doc/develop/index.rst b/doc/develop/index.rst index 0c83ef109ab..3c044e67927 100644 --- a/doc/develop/index.rst +++ b/doc/develop/index.rst @@ -46,6 +46,7 @@ Implementation cedit event global_data + lmb logging makefiles menus diff --git a/doc/develop/lmb.rst b/doc/develop/lmb.rst new file mode 100644 index 00000000000..b9d0f09c2bb --- /dev/null +++ b/doc/develop/lmb.rst @@ -0,0 +1,166 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Logical Memory Blocks (LMB) +=========================== + +U-Boot has support for reserving chunks of memory which is primarily +used for loading images to the DRAM memory, before these are booted, +or written to non-volatile storage medium. This functionality is +provided through the Logical Memory Blocks (LMB) module. + +Introduction +------------ + +The LMB module manages allocation requests for memory region not +occupied by the U-Boot image. Allocation requests that are made +through malloc() and similar functions result in memory getting +allocated from the heap region, which is part of the U-Boot +image. Typically, the heap memory is a few MiB in size. Loading an +image like the linux kernel might require lot more memory than what +the heap can provide. Such allocations are usually handled through the +LMB module. + +The U-Boot image typically gets relocated to the top of the usable +DRAM memory region. A typical memory layout looks as follows:: + + + + + + | | + | | + | | + | | + | | + --- +--------------+ <--- U-Boot ram top + | | | + | | Text | + | +--------------+ + | | | + | | Data | + | +--------------+ + | | | + | | BSS | + U-Boot Image +--------------+ + | | | + | | Heap | + | | | + | +--------------+ + | | | + | | | + | | Stack | + | | | + | | | + --- +--------------+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +--------------+ <--- ram start + + + +The region of memory below the U-Boot image is the one controlled by +the LMB module. + + +Types of LMB Allocations +------------------------ + +There are two classes of allocation requests that get made to the LMB +module. One type of allocation requests are requesting memory of a +particular number of bytes. This type of allocation is similar to that +done using the malloc type of function calls. The other type of +allocations, are requests made for a specific memory address. The +second type of allocations are usually made for loading images to a +particular memory address. + + +LMB design Pre 2025.01 +---------------------- + +The earlier versions of U-Boot (pre 2025.01 release) +had a local memory map based LMB implementation whereby it was +possible to declare the LMB map inside a function or a C file. This +design resulted in temporary, non-global LMB maps, which also allowed +for re-use of memory. This meant that it was possible to use a region +of memory to load some image, and subsequently the same region of +memory could be used for loading a different image. A typical example +of this usage would be loading an image to a memory address, followed +by writing that image to some non-volatile storage medium. Once this +is done, the same address can be used for loading a different image +and then writing it to it's non-volatile storage +destination. Typically, environment variables like `loadaddr`, +`kernel_addr_r`, `ramdisk_addr_r` are used for loading images to +memory regions. + + +Current LMB implementation +-------------------------- + +Changes were made in the 2025.01 release to make the LMB memory map +global and persistent. With this, the LMB memory map is the same +across all of U-Boot, and also persists as long as U-Boot is +active. Even with this change, there has been consistency as far as +re-use of memory is concerned to maintain backward compatibility. It +is allowed for re-requesting the same region of memory if the memory +region has a particular attribute (LMB_NONE). + +As part of the platform boot, DRAM memory available for use in U-Boot +gets added to the LMB memory map. Any allocation requests made +subsequently will be made from this memory added as part of the board +init. + + +Allocation API +-------------- + +Any request for non-heap memory can be made through the LMB allocation +API. + +.. code-block:: c + + int lmb_alloc_mem(enum lmb_mem_type type, u64 align, + phys_addr_t *addr, phys_size_t size, + u32 flags); + +Correspondingly, the allocated memory can be free'd + +.. code-block:: c + + long lmb_free(phys_addr_t base, phys_size_t size, u32 flags); + +For a detailed API description, please refer to the header file. + + +UEFI allocations with LMB as the backend +---------------------------------------- + +The UEFI specification describes boot-time API's for allocation of +memory. These API's use the same memory that is being used by the LMB +module. Pre 2025.01 release, there wasn't any synchronisation between +the EFI sub-system and the LMB module about the memory that was +getting allocated by each of these modules. This was the primary +reason for making the LMB memory map global and persistent. With this +change, the EFI memory allocation API's have also been changed to use +the LMB module as the backend for the allocation requests. Any other +sub-system which might wish to use the same memory region for it's use +can then use the LMB as the backend for the memory allocations and +it's associated book-keeping. + + +API documentation +----------------- + +.. kernel-doc:: include/lmb.h + diff --git a/doc/develop/makefiles.rst b/doc/develop/makefiles.rst index 37a7deaca92..593556f4dd5 100644 --- a/doc/develop/makefiles.rst +++ b/doc/develop/makefiles.rst @@ -1430,10 +1430,13 @@ When kbuild executes, the following steps are followed (roughly): A central rule exists to create `$(obj)/%.dtb` from `$(src)/%.dts`; architecture Makefiles do no need to explicitly write out that rule. + The device tree can now be padded by the specified number of bytes + by setting CONFIG_SYS_DTC_PAD_BYTES instead of explicitly setting + DTC_FLAGS with the -p option. + Example:: targets += $(dtb-y) - DTC_FLAGS ?= -p 1024 7.9 Preprocessing linker scripts -------------------------------- diff --git a/doc/develop/pics/patman.jpg b/doc/develop/pics/patman.jpg Binary files differnew file mode 100644 index 00000000000..2dcf598e088 --- /dev/null +++ b/doc/develop/pics/patman.jpg diff --git a/doc/develop/release_cycle.rst b/doc/develop/release_cycle.rst index 408820e3cd5..f2ffcf3d331 100644 --- a/doc/develop/release_cycle.rst +++ b/doc/develop/release_cycle.rst @@ -1,4 +1,4 @@ -.. |next_ver| replace:: v2025.07 +.. |next_ver| replace:: v2025.10 Release Cycle ============= @@ -53,15 +53,15 @@ Examples:: Current Status -------------- -* U-Boot v2025.04 was released on Monday, 07 April 2025. +* U-Boot v2025.07 was released on Monday, 07 July 2025. -* The Merge Window for the next release (|next_ver|) was **closed** with the -rc1 - release on Monday, 28 April 2025. +* The Merge Window for the next release (|next_ver|) is **open** until the -rc1 + release on Monday, 28 July 2025. -* The next branch is now **closed** until the -rc2 release on Monday, 12 May +* The next branch is now **closed** until the -rc2 release on Monday, 11 August 2025. -* Release "|next_ver|" is scheduled for Monday, 07 July 2025. +* Release "|next_ver|" is scheduled for Monday, 06 October 2025. Future Releases --------------- @@ -69,28 +69,28 @@ 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 |next_ver|-rc1 was released on Mon 28 April 2025. +.. * U-Boot |next_ver|-rc1 was released on Mon 28 July 2025. -* U-Boot |next_ver|-rc2 was released on Mon 12 May 2025. +.. * U-Boot |next_ver|-rc2 was released on Mon 11 August 2025. -* U-Boot |next_ver|-rc3 was released on Mon 26 May 2025. +.. * U-Boot |next_ver|-rc3 was released on Mon 25 August 2025. -* U-Boot |next_ver|-rc4 was released on Mon 09 June 2025. +.. * U-Boot |next_ver|-rc4 was released on Mon 08 September 2025. -* U-Boot |next_ver|-rc5 was released on Mon 23 June 2025. +.. * U-Boot |next_ver|-rc5 was released on Mon 22 September 2025. Please note that the following dates are planned only and may be deviated from as needed. -* "v2025.07": end of MW = Mon, Apr 28, 2025; release = Mon, Jul 07, 2025 - * "v2025.10": end of MW = Mon, Jul 28, 2025; release = Mon, Oct 06, 2025 * "v2026.01": end of MW = Mon, Oct 27, 2025; release = Mon, Jan 05, 2026 -* "v2025.04": end of MW = Mon, Jan 26, 2026; release = Mon, Apr 06, 2026 +* "v2026.04": end of MW = Mon, Jan 26, 2026; release = Mon, Apr 06, 2026 + +* "v2026.07": end of MW = Mon, Apr 27, 2026; release = Mon, Jul 06, 2026 Previous Releases ----------------- @@ -99,6 +99,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-v2025.07` which was released on 07 July 2025. + * :doc:`statistics/u-boot-stats-v2025.04` which was released on 07 April 2025. * :doc:`statistics/u-boot-stats-v2025.01` which was released on 06 January 2025. diff --git a/doc/develop/statistics/u-boot-stats-v2025.07.rst b/doc/develop/statistics/u-boot-stats-v2025.07.rst new file mode 100644 index 00000000000..32f7df393de --- /dev/null +++ b/doc/develop/statistics/u-boot-stats-v2025.07.rst @@ -0,0 +1,990 @@ +:orphan: + +Release Statistics for U-Boot v2025.07 +====================================== + +* Processed 1780 changesets from 225 developers + +* 24 employers found + +* A total of 200374 lines added, 64238 removed (delta 136136) + +.. table:: Developers with the most changesets + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Simon Glass 172 (9.7%) + Svyatoslav Ryhel 117 (6.6%) + Marek Vasut 110 (6.2%) + Tom Rini 91 (5.1%) + Heinrich Schuchardt 68 (3.8%) + Jerome Forissier 52 (2.9%) + Jonas Karlman 49 (2.8%) + Andre Przywara 44 (2.5%) + Casey Connolly 37 (2.1%) + Patrice Chotard 32 (1.8%) + Yao Zi 29 (1.6%) + Stephan Gerhold 26 (1.5%) + Quentin Schulz 25 (1.4%) + Christian Marangi 22 (1.2%) + Adam Ford 22 (1.2%) + Alif Zakuan Yuslaimi 22 (1.2%) + Paul Barker 19 (1.1%) + Wadim Egorov 17 (1.0%) + Adriano Cordova 17 (1.0%) + Dinesh Maniyam 17 (1.0%) + Ilias Apalodimas 15 (0.8%) + Sam Edwards 15 (0.8%) + Venkatesh Yadav Abbarapu 14 (0.8%) + Varadarajan Narayanan 14 (0.8%) + Dario Binacchi 14 (0.8%) + Sughosh Ganu 14 (0.8%) + Daniel Schultz 14 (0.8%) + Miquel Raynal 14 (0.8%) + Alice Guo 13 (0.7%) + Michal Simek 13 (0.7%) + Siddharth Vadapalli 13 (0.7%) + Jiaxun Yang 13 (0.7%) + Patrick Delaunay 12 (0.7%) + Patrick Rudolph 12 (0.7%) + Neil Armstrong 12 (0.7%) + Paul HENRYS 12 (0.7%) + Judith Mendez 11 (0.6%) + Heiko Stuebner 11 (0.6%) + Tien Fong Chee 11 (0.6%) + Sam Day 11 (0.6%) + Vincent Stehlé 10 (0.6%) + Nishanth Menon 10 (0.6%) + Anshul Dalal 9 (0.5%) + Bryan Brattlof 9 (0.5%) + Alexander Graf 9 (0.5%) + Alexander Dahl 9 (0.5%) + Weijie Gao 8 (0.4%) + Minda Chen 8 (0.4%) + Santhosh Kumar K 8 (0.4%) + Peng Fan 7 (0.4%) + Raymond Mao 7 (0.4%) + Neha Malcom Francis 7 (0.4%) + Mayuresh Chitale 7 (0.4%) + Aristo Chen 7 (0.4%) + Jernej Skrabec 7 (0.4%) + Samuel Holland 7 (0.4%) + Tingting Meng 7 (0.4%) + Greg Malysa 7 (0.4%) + Nathan Barrett-Morrison 7 (0.4%) + Fabio Estevam 6 (0.3%) + E Shattow 6 (0.3%) + Tony Dinh 6 (0.3%) + Lukasz Czechowski 6 (0.3%) + Naresh Kumar Ravulapalli 6 (0.3%) + Michael Trimarchi 6 (0.3%) + Primoz Fiser 6 (0.3%) + Udit Kumar 6 (0.3%) + Prasad Kummari 6 (0.3%) + Harrison Mutai 6 (0.3%) + Hector Martin 6 (0.3%) + Huan Zhou 6 (0.3%) + Leonard Anderweit 6 (0.3%) + Manorit Chawdhry 6 (0.3%) + Gabriel Dalimonte 6 (0.3%) + Maks Mishin 6 (0.3%) + Manikandan Muralidharan 6 (0.3%) + Mattijs Korpershoek 5 (0.3%) + Justin Klaassen 5 (0.3%) + Andrew Davis 5 (0.3%) + Padmarao Begari 5 (0.3%) + Jonathan Currier 5 (0.3%) + Ye Li 5 (0.3%) + Bernhard Messerklinger 5 (0.3%) + Hrushikesh Salunke 5 (0.3%) + Jorge Ramirez-Ortiz 5 (0.3%) + Anurag Dutta 5 (0.3%) + Jeremy Compostella 5 (0.3%) + Harsha Vardhan V M 5 (0.3%) + Anton Moryakov 5 (0.3%) + Baocheng Su 5 (0.3%) + Hari Nagalla 5 (0.3%) + Mikhail Kshevetskiy 4 (0.2%) + Alper Nebi Yasak 4 (0.2%) + Aniket Limaye 4 (0.2%) + Cheick Traore 4 (0.2%) + Heiko Schocher 3 (0.2%) + Sumit Garg 3 (0.2%) + Alexey Minnekhanov 3 (0.2%) + Rui Miguel Silva 3 (0.2%) + Rasmus Villemoes 3 (0.2%) + Martin Schiller 3 (0.2%) + Keerthy 3 (0.2%) + Mike Looijmans 3 (0.2%) + Lionel Debieve 3 (0.2%) + Zixun LI 3 (0.2%) + Vitor Soares 3 (0.2%) + Liya Huang 3 (0.2%) + Evgeny Bachinin 3 (0.2%) + Sinthu Raja 3 (0.2%) + Marius Dinu 2 (0.1%) + Shiji Yang 2 (0.1%) + Kory Maincent 2 (0.1%) + Yang Xiwen 2 (0.1%) + Peter Robinson 2 (0.1%) + Benjamin ROBIN 2 (0.1%) + Michael Bode 2 (0.1%) + Alexander Sverdlin 2 (0.1%) + Benjamin Schneider 2 (0.1%) + Christoph Fritz 2 (0.1%) + Vaishnav Achath 2 (0.1%) + Pascal Zimmermann 2 (0.1%) + Andrew Halaney 2 (0.1%) + Takahiro Kuwano 2 (0.1%) + Walter Schweizer 2 (0.1%) + Pawel Kochanowski 2 (0.1%) + Emanuele Ghidoli 2 (0.1%) + Stefano Babic 2 (0.1%) + Elaine Zhang 2 (0.1%) + Steven Liu 2 (0.1%) + Xuhui Lin 2 (0.1%) + Chukun Pan 2 (0.1%) + Muhammad Hazim Izzat Zamri 2 (0.1%) + Josua Mayer 2 (0.1%) + Jesse Taube 2 (0.1%) + Artur Kowalski 2 (0.1%) + Jonathan Humphreys 2 (0.1%) + 牛 志宏 2 (0.1%) + Daniel Golle 2 (0.1%) + Nathan Morrisson 2 (0.1%) + Jim Liu 2 (0.1%) + Ernest Van Hoecke 2 (0.1%) + Jonas Schwöbel 2 (0.1%) + David Lechner 1 (0.1%) + Fiona Klute 1 (0.1%) + Duje Mihanović 1 (0.1%) + Akashdeep Kaur 1 (0.1%) + Baruch Siach 1 (0.1%) + Sam Protsenko 1 (0.1%) + Ivan Pang 1 (0.1%) + Jan Čermák 1 (0.1%) + Hiago De Franco 1 (0.1%) + Hugo Villeneuve 1 (0.1%) + Tim Harvey 1 (0.1%) + BehradElmi 1 (0.1%) + Wojciech Szamocki 1 (0.1%) + Martin Kaistra 1 (0.1%) + Frantisek Bohacek 1 (0.1%) + Eddie Kovsky 1 (0.1%) + Jayanth Dodderi Chidanand 1 (0.1%) + Olaf Baehring 1 (0.1%) + Simon Holesch 1 (0.1%) + Thomas Schaefer 1 (0.1%) + Michael Walle 1 (0.1%) + No generic patch CC mail please 1 (0.1%) + Nikunj Kela 1 (0.1%) + Naresh Solanki 1 (0.1%) + Andy Shevchenko 1 (0.1%) + Jiehui He 1 (0.1%) + Ilya Katsnelson 1 (0.1%) + Prasanth Babu Mantena 1 (0.1%) + Chen-Yu Tsai 1 (0.1%) + Ben Wolsieffer 1 (0.1%) + ZhiJie.zhang 1 (0.1%) + Christophe Roullier 1 (0.1%) + Alexander Vickberg 1 (0.1%) + Carlos López 1 (0.1%) + Christoph Niedermaier 1 (0.1%) + Boon Khai Ng 1 (0.1%) + Bhavya Kapoor 1 (0.1%) + Love Kumar 1 (0.1%) + Nicolas Frattaroli 1 (0.1%) + Lin Jinhan 1 (0.1%) + Joseph Chen 1 (0.1%) + Yifeng Zhao 1 (0.1%) + Sean Edmond 1 (0.1%) + Mathieu Othacehe 1 (0.1%) + Jean-Jacques Hiblot 1 (0.1%) + Ezra Buehler 1 (0.1%) + Parth Pancholi 1 (0.1%) + Lucien.Jheng 1 (0.1%) + Mauro Salvini 1 (0.1%) + Bruno Leite 1 (0.1%) + Chris Packham 1 (0.1%) + yan wang 1 (0.1%) + Parvathi Pudi 1 (0.1%) + Martin Schwan 1 (0.1%) + Viorel Suman 1 (0.1%) + Rafael Beims 1 (0.1%) + Christian Kohlschütter 1 (0.1%) + Luke Wang 1 (0.1%) + Xu Zhang 1 (0.1%) + Andreas Dannenberg 1 (0.1%) + Andrew Goodbody 1 (0.1%) + Gary Bisson 1 (0.1%) + Oskar Nilsson 1 (0.1%) + Sukrut Bellary 1 (0.1%) + Richard Genoud 1 (0.1%) + Gowtham Tammana 1 (0.1%) + Vishal Mahaveer 1 (0.1%) + Masahisa Kojima 1 (0.1%) + Jimmy Ho 1 (0.1%) + Junhui Liu 1 (0.1%) + Baltazár Radics 1 (0.1%) + Arseniy Krasnov 1 (0.1%) + Robert Nelson 1 (0.1%) + Dragan Simic 1 (0.1%) + Vignesh Raghavendra 1 (0.1%) + Linus Walleij 1 (0.1%) + J. Neuschäfer 1 (0.1%) + Alexander Stein 1 (0.1%) + Stefan Eichenberger 1 (0.1%) + Michael Chang 1 (0.1%) + Hironori KIKUCHI 1 (0.1%) + Tomas Peterka 1 (0.1%) + Balamanikandan Gunasundar 1 (0.1%) + ==================================== ===== + + +.. table:: Developers with the most changed lines + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Tom Rini 78284 (33.7%) + Patrice Chotard 20809 (9.0%) + Manorit Chawdhry 17813 (7.7%) + Svyatoslav Ryhel 16864 (7.3%) + Simon Glass 8757 (3.8%) + Marek Vasut 8650 (3.7%) + Robert Nelson 5921 (2.6%) + Vitor Soares 4567 (2.0%) + Bernhard Messerklinger 3955 (1.7%) + Elaine Zhang 3663 (1.6%) + Yao Zi 3317 (1.4%) + Dinesh Maniyam 3269 (1.4%) + Jonas Karlman 3191 (1.4%) + Christian Marangi 3131 (1.3%) + Jerome Forissier 2676 (1.2%) + Joseph Chen 2480 (1.1%) + Nathan Barrett-Morrison 2115 (0.9%) + Tingting Meng 2075 (0.9%) + Peng Fan 1544 (0.7%) + Dario Binacchi 1387 (0.6%) + Varadarajan Narayanan 1338 (0.6%) + Miquel Raynal 1244 (0.5%) + Jesse Taube 1242 (0.5%) + Gabriel Dalimonte 1162 (0.5%) + Heiko Stuebner 1114 (0.5%) + Adriano Cordova 1013 (0.4%) + Tien Fong Chee 987 (0.4%) + Ye Li 982 (0.4%) + Heinrich Schuchardt 981 (0.4%) + Patrick Delaunay 944 (0.4%) + Andre Przywara 912 (0.4%) + Alice Guo 906 (0.4%) + Greg Malysa 875 (0.4%) + Paul HENRYS 823 (0.4%) + Lucien.Jheng 818 (0.4%) + Casey Connolly 780 (0.3%) + Neil Armstrong 745 (0.3%) + Manikandan Muralidharan 737 (0.3%) + Huan Zhou 722 (0.3%) + Paul Barker 686 (0.3%) + Minda Chen 667 (0.3%) + Fabio Estevam 598 (0.3%) + Nishanth Menon 574 (0.2%) + Steven Liu 556 (0.2%) + Alexander Graf 511 (0.2%) + Lionel Debieve 501 (0.2%) + Ilias Apalodimas 486 (0.2%) + Xuhui Lin 476 (0.2%) + Sughosh Ganu 473 (0.2%) + Andrew Davis 461 (0.2%) + Jiaxun Yang 449 (0.2%) + Neha Malcom Francis 437 (0.2%) + Jernej Skrabec 431 (0.2%) + Baocheng Su 424 (0.2%) + Wadim Egorov 421 (0.2%) + Alif Zakuan Yuslaimi 416 (0.2%) + Prasad Kummari 404 (0.2%) + Hari Nagalla 402 (0.2%) + Cheick Traore 391 (0.2%) + Simon Holesch 388 (0.2%) + Samuel Holland 337 (0.1%) + Hector Martin 334 (0.1%) + Harsha Vardhan V M 326 (0.1%) + Jonas Schwöbel 302 (0.1%) + Alexey Minnekhanov 290 (0.1%) + Primoz Fiser 266 (0.1%) + Alexander Dahl 256 (0.1%) + Siddharth Vadapalli 248 (0.1%) + Michael Trimarchi 217 (0.1%) + Alper Nebi Yasak 210 (0.1%) + Stephan Gerhold 204 (0.1%) + Chukun Pan 191 (0.1%) + Venkatesh Yadav Abbarapu 189 (0.1%) + Adam Ford 186 (0.1%) + Evgeny Bachinin 181 (0.1%) + Michael Bode 179 (0.1%) + Patrick Rudolph 175 (0.1%) + Judith Mendez 168 (0.1%) + Heiko Schocher 158 (0.1%) + Aniket Limaye 157 (0.1%) + Anshul Dalal 155 (0.1%) + Jonathan Humphreys 152 (0.1%) + Rui Miguel Silva 151 (0.1%) + Luke Wang 150 (0.1%) + Sam Day 127 (0.1%) + E Shattow 127 (0.1%) + Raymond Mao 121 (0.1%) + Quentin Schulz 116 (0.0%) + Ilya Katsnelson 116 (0.0%) + Harrison Mutai 108 (0.0%) + Hrushikesh Salunke 105 (0.0%) + Bryan Brattlof 104 (0.0%) + Michal Simek 103 (0.0%) + Jonathan Currier 103 (0.0%) + Mike Looijmans 99 (0.0%) + Jiehui He 96 (0.0%) + Tomas Peterka 78 (0.0%) + Justin Klaassen 77 (0.0%) + Jeremy Compostella 75 (0.0%) + Santhosh Kumar K 74 (0.0%) + Lin Jinhan 73 (0.0%) + Balamanikandan Gunasundar 73 (0.0%) + Andreas Dannenberg 65 (0.0%) + Ernest Van Hoecke 64 (0.0%) + Sam Edwards 62 (0.0%) + Christoph Fritz 61 (0.0%) + Weijie Gao 60 (0.0%) + Keerthy 59 (0.0%) + Vishal Mahaveer 59 (0.0%) + Mayuresh Chitale 57 (0.0%) + Leonard Anderweit 57 (0.0%) + Kory Maincent 55 (0.0%) + Jim Liu 54 (0.0%) + Walter Schweizer 53 (0.0%) + Masahisa Kojima 52 (0.0%) + Udit Kumar 50 (0.0%) + Mikhail Kshevetskiy 48 (0.0%) + Pascal Zimmermann 42 (0.0%) + Muhammad Hazim Izzat Zamri 42 (0.0%) + Nathan Morrisson 41 (0.0%) + Daniel Schultz 40 (0.0%) + Sumit Garg 39 (0.0%) + Dragan Simic 37 (0.0%) + Boon Khai Ng 35 (0.0%) + Jorge Ramirez-Ortiz 32 (0.0%) + Chen-Yu Tsai 32 (0.0%) + Tony Dinh 31 (0.0%) + Naresh Kumar Ravulapalli 31 (0.0%) + Anton Moryakov 31 (0.0%) + Rasmus Villemoes 30 (0.0%) + Vaishnav Achath 30 (0.0%) + Artur Kowalski 30 (0.0%) + Love Kumar 29 (0.0%) + Sinthu Raja 28 (0.0%) + Jean-Jacques Hiblot 28 (0.0%) + Lukasz Czechowski 26 (0.0%) + Nikunj Kela 23 (0.0%) + Sean Edmond 23 (0.0%) + Daniel Golle 22 (0.0%) + Mattijs Korpershoek 21 (0.0%) + Zixun LI 19 (0.0%) + Wojciech Szamocki 19 (0.0%) + Anurag Dutta 18 (0.0%) + Padmarao Begari 17 (0.0%) + Bhavya Kapoor 17 (0.0%) + Aristo Chen 16 (0.0%) + Christophe Roullier 16 (0.0%) + Hironori KIKUCHI 16 (0.0%) + Jayanth Dodderi Chidanand 15 (0.0%) + Olaf Baehring 15 (0.0%) + Vincent Stehlé 14 (0.0%) + Maks Mishin 13 (0.0%) + Andy Shevchenko 13 (0.0%) + Viorel Suman 13 (0.0%) + Michael Chang 13 (0.0%) + Andrew Halaney 12 (0.0%) + Prasanth Babu Mantena 12 (0.0%) + Rafael Beims 12 (0.0%) + Baltazár Radics 12 (0.0%) + Benjamin ROBIN 11 (0.0%) + Mathieu Othacehe 11 (0.0%) + Junhui Liu 11 (0.0%) + Stefan Eichenberger 11 (0.0%) + Alexander Sverdlin 10 (0.0%) + Sam Protsenko 10 (0.0%) + Pawel Kochanowski 9 (0.0%) + Josua Mayer 9 (0.0%) + Fiona Klute 9 (0.0%) + Martin Kaistra 8 (0.0%) + Michael Walle 8 (0.0%) + Nicolas Frattaroli 8 (0.0%) + Liya Huang 7 (0.0%) + Peter Robinson 7 (0.0%) + No generic patch CC mail please 7 (0.0%) + ZhiJie.zhang 7 (0.0%) + Gowtham Tammana 7 (0.0%) + Shiji Yang 6 (0.0%) + Parvathi Pudi 5 (0.0%) + Emanuele Ghidoli 4 (0.0%) + Stefano Babic 4 (0.0%) + David Lechner 4 (0.0%) + Frantisek Bohacek 4 (0.0%) + Martin Schwan 4 (0.0%) + Andrew Goodbody 4 (0.0%) + Gary Bisson 4 (0.0%) + J. Neuschäfer 4 (0.0%) + Martin Schiller 3 (0.0%) + Yang Xiwen 3 (0.0%) + Benjamin Schneider 3 (0.0%) + 牛 志宏 3 (0.0%) + Duje Mihanović 3 (0.0%) + Thomas Schaefer 3 (0.0%) + Parth Pancholi 3 (0.0%) + Mauro Salvini 3 (0.0%) + Bruno Leite 3 (0.0%) + Christian Kohlschütter 3 (0.0%) + Xu Zhang 3 (0.0%) + Arseniy Krasnov 3 (0.0%) + Alexander Stein 3 (0.0%) + Marius Dinu 2 (0.0%) + Takahiro Kuwano 2 (0.0%) + Ivan Pang 2 (0.0%) + Hiago De Franco 2 (0.0%) + Eddie Kovsky 2 (0.0%) + Chris Packham 2 (0.0%) + Sukrut Bellary 2 (0.0%) + Jimmy Ho 2 (0.0%) + Akashdeep Kaur 1 (0.0%) + Baruch Siach 1 (0.0%) + Jan Čermák 1 (0.0%) + Hugo Villeneuve 1 (0.0%) + Tim Harvey 1 (0.0%) + BehradElmi 1 (0.0%) + Naresh Solanki 1 (0.0%) + Ben Wolsieffer 1 (0.0%) + Alexander Vickberg 1 (0.0%) + Carlos López 1 (0.0%) + Christoph Niedermaier 1 (0.0%) + Yifeng Zhao 1 (0.0%) + Ezra Buehler 1 (0.0%) + yan wang 1 (0.0%) + Oskar Nilsson 1 (0.0%) + Richard Genoud 1 (0.0%) + Vignesh Raghavendra 1 (0.0%) + Linus Walleij 1 (0.0%) + ==================================== ===== + + +.. table:: Developers with the most lines removed + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Patrice Chotard 19307 (30.1%) + Jesse Taube 1211 (1.9%) + Fabio Estevam 561 (0.9%) + Primoz Fiser 241 (0.4%) + Prasad Kummari 191 (0.3%) + Andrew Davis 129 (0.2%) + Samuel Holland 129 (0.2%) + Jiaxun Yang 74 (0.1%) + Quentin Schulz 67 (0.1%) + E Shattow 51 (0.1%) + Judith Mendez 45 (0.1%) + Jonathan Humphreys 44 (0.1%) + Hrushikesh Salunke 37 (0.1%) + Dragan Simic 37 (0.1%) + Lionel Debieve 31 (0.0%) + Tomas Peterka 29 (0.0%) + Chen-Yu Tsai 26 (0.0%) + Stephan Gerhold 15 (0.0%) + Tony Dinh 11 (0.0%) + Baltazár Radics 9 (0.0%) + Heiko Schocher 4 (0.0%) + Mauro Salvini 3 (0.0%) + Jorge Ramirez-Ortiz 2 (0.0%) + No generic patch CC mail please 2 (0.0%) + Arseniy Krasnov 2 (0.0%) + Jimmy Ho 2 (0.0%) + Olaf Baehring 1 (0.0%) + Benjamin ROBIN 1 (0.0%) + Pawel Kochanowski 1 (0.0%) + Liya Huang 1 (0.0%) + Parvathi Pudi 1 (0.0%) + Stefano Babic 1 (0.0%) + Alexander Stein 1 (0.0%) + Hugo Villeneuve 1 (0.0%) + ==================================== ===== + + +.. table:: Developers with the most signoffs (total 449) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Caleb Connolly 87 (19.4%) + Michal Simek 34 (7.6%) + Heiko Stuebner 19 (4.2%) + Jonas Karlman 15 (3.3%) + Patrice Chotard 14 (3.1%) + Mattijs Korpershoek 12 (2.7%) + Vasileios Bimpikas 12 (2.7%) + Utsav Agarwal 12 (2.7%) + Arturs Artamonovs 12 (2.7%) + Casey Connolly 12 (2.7%) + Ian Roberts 11 (2.4%) + Oliver Gaskell 11 (2.4%) + Alice Guo 11 (2.4%) + Peng Fan 11 (2.4%) + Tien Fong Chee 10 (2.2%) + Andre Przywara 7 (1.6%) + Alper Nebi Yasak 7 (1.6%) + Ilias Apalodimas 7 (1.6%) + Greg Malysa 7 (1.6%) + Patrick Delaunay 7 (1.6%) + Mark Kettenis 6 (1.3%) + Dario Binacchi 6 (1.3%) + Judith Mendez 5 (1.1%) + Michael Trimarchi 5 (1.1%) + Wadim Egorov 5 (1.1%) + Neil Armstrong 5 (1.1%) + Nathan Barrett-Morrison 4 (0.9%) + Svyatoslav Ryhel 4 (0.9%) + Gatien Chevallier 3 (0.7%) + Li Hua Qian 3 (0.7%) + Jan Kiszka 3 (0.7%) + Anurag Dutta 3 (0.7%) + Sughosh Ganu 3 (0.7%) + Neha Malcom Francis 3 (0.7%) + Simon Glass 3 (0.7%) + Tom Rini 3 (0.7%) + Fabio Estevam 2 (0.4%) + Primoz Fiser 2 (0.4%) + Heiko Schocher 2 (0.4%) + Ranjani Vaidyanathan 2 (0.4%) + Mahesh Rao 2 (0.4%) + Stephen Boyd 2 (0.4%) + Angelo Dureghello 2 (0.4%) + Piotr Wojtaszczyk 2 (0.4%) + Andrew Halaney 2 (0.4%) + Heinrich Schuchardt 2 (0.4%) + Ye Li 2 (0.4%) + Andrew Davis 1 (0.2%) + Lionel Debieve 1 (0.2%) + Arseniy Krasnov 1 (0.2%) + Heiko Thiery 1 (0.2%) + Wolfgang Birkner 1 (0.2%) + Haibo Chen 1 (0.2%) + Frank Li 1 (0.2%) + Mark Brown 1 (0.2%) + Ashok Reddy Soma 1 (0.2%) + ZHANG Yuntian 1 (0.2%) + Pan Bian 1 (0.2%) + Richard Weinberger 1 (0.2%) + Ji Luo 1 (0.2%) + Jindong Yue 1 (0.2%) + Francesco Dolcini 1 (0.2%) + Thomas Bourgoin 1 (0.2%) + Raphael Gallais-Pou 1 (0.2%) + Finley Xiao 1 (0.2%) + Basharath Hussain Khaja 1 (0.2%) + Gabriel Nesteruk 1 (0.2%) + AngeloGioacchino Del Regno 1 (0.2%) + Sparsh Kumar 1 (0.2%) + Sebin Francis 1 (0.2%) + Sam Shih 1 (0.2%) + Peter Geis 1 (0.2%) + Viacheslav Bocharov 1 (0.2%) + Beleswar Padhi 1 (0.2%) + Ryan Eatmon 1 (0.2%) + Charan Pedumuru 1 (0.2%) + Walter Schweizer 1 (0.2%) + Prasanth Babu Mantena 1 (0.2%) + Viorel Suman 1 (0.2%) + Nathan Morrisson 1 (0.2%) + Boon Khai Ng 1 (0.2%) + Udit Kumar 1 (0.2%) + Muhammad Hazim Izzat Zamri 1 (0.2%) + Keerthy 1 (0.2%) + Manikandan Muralidharan 1 (0.2%) + Aniket Limaye 1 (0.2%) + Patrick Rudolph 1 (0.2%) + Jonas Schwöbel 1 (0.2%) + Nishanth Menon 1 (0.2%) + Tingting Meng 1 (0.2%) + Marek Vasut 1 (0.2%) + Manorit Chawdhry 1 (0.2%) + ==================================== ===== + + +.. table:: Developers with the most reviews (total 1002) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Kever Yang 116 (11.6%) + Simon Glass 64 (6.4%) + Ilias Apalodimas 53 (5.3%) + Neil Armstrong 52 (5.2%) + Tom Rini 52 (5.2%) + Leo Yu-Chi Liang 45 (4.5%) + Mattijs Korpershoek 40 (4.0%) + Paul Barker 37 (3.7%) + Marek Vasut 33 (3.3%) + Quentin Schulz 32 (3.2%) + Heinrich Schuchardt 30 (3.0%) + Caleb Connolly 27 (2.7%) + Peng Fan 27 (2.7%) + Tien Fong Chee 26 (2.6%) + Sumit Garg 25 (2.5%) + Patrice Chotard 20 (2.0%) + Patrick Delaunay 20 (2.0%) + E Shattow 19 (1.9%) + Stefan Roese 18 (1.8%) + Bryan Brattlof 17 (1.7%) + Jonas Karlman 16 (1.6%) + Heiko Schocher 16 (1.6%) + Andrew Davis 16 (1.6%) + Matthias Brugger 14 (1.4%) + Jerome Forissier 13 (1.3%) + Daniel Schwierzeck 12 (1.2%) + Jernej Skrabec 12 (1.2%) + Fabio Estevam 9 (0.9%) + Udit Kumar 9 (0.9%) + Andre Przywara 8 (0.8%) + Neha Malcom Francis 8 (0.8%) + Hal Feng 8 (0.8%) + Christopher Obbard 8 (0.8%) + Casey Connolly 7 (0.7%) + Wadim Egorov 6 (0.6%) + Ye Li 6 (0.6%) + Eugen Hristev 6 (0.6%) + Michael Trimarchi 5 (0.5%) + Francesco Dolcini 4 (0.4%) + Roger Quadros 4 (0.4%) + Peter Robinson 4 (0.4%) + Svyatoslav Ryhel 3 (0.3%) + Dhruva Gole 3 (0.3%) + Jaehoon Chung 3 (0.3%) + Tobias Waldekranz 3 (0.3%) + Fabrice Gasnier 3 (0.3%) + Daniel Schultz 3 (0.3%) + Siddharth Vadapalli 3 (0.3%) + Alice Guo 2 (0.2%) + Nishanth Menon 2 (0.2%) + Tudor Ambarus 2 (0.2%) + Joao Marcos Costa 2 (0.2%) + Richard Henderson 2 (0.2%) + Judith Mendez 1 (0.1%) + Sughosh Ganu 1 (0.1%) + Frank Li 1 (0.1%) + AngeloGioacchino Del Regno 1 (0.1%) + Linus Walleij 1 (0.1%) + Ramon Fried 1 (0.1%) + Lukasz Majewski 1 (0.1%) + Maxim Moskalets 1 (0.1%) + Vladimir Oltean 1 (0.1%) + Paul Kocialkowski 1 (0.1%) + Anand Moon 1 (0.1%) + Boris Brezillon 1 (0.1%) + Krzysztof Kozlowski 1 (0.1%) + Sean Anderson 1 (0.1%) + Icenowy Zheng 1 (0.1%) + Yixun Lan 1 (0.1%) + Teresa Remmet 1 (0.1%) + Anshul Dalal 1 (0.1%) + Michael Walle 1 (0.1%) + Alexander Sverdlin 1 (0.1%) + Andy Shevchenko 1 (0.1%) + Love Kumar 1 (0.1%) + Leonard Anderweit 1 (0.1%) + Harrison Mutai 1 (0.1%) + Adam Ford 1 (0.1%) + Christian Marangi 1 (0.1%) + Yao Zi 1 (0.1%) + ==================================== ===== + + +.. table:: Developers with the most test credits (total 89) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + E Shattow 7 (7.9%) + Love Kumar 7 (7.9%) + Ion Agorria 7 (7.9%) + Christopher Obbard 6 (6.7%) + Danila Tikhonov 6 (6.7%) + Jens Reidel 6 (6.7%) + Sumit Garg 4 (4.5%) + Zixun LI 4 (4.5%) + Simon Glass 3 (3.4%) + Neil Armstrong 3 (3.4%) + Sughosh Ganu 3 (3.4%) + Mattijs Korpershoek 2 (2.2%) + Quentin Schulz 2 (2.2%) + Heinrich Schuchardt 2 (2.2%) + Patrice Chotard 2 (2.2%) + Fabio Estevam 2 (2.2%) + Daniel Schultz 2 (2.2%) + Dang Huynh 2 (2.2%) + Peter Robinson 1 (1.1%) + Vladimir Oltean 1 (1.1%) + Adam Ford 1 (1.1%) + Yao Zi 1 (1.1%) + Michal Simek 1 (1.1%) + Prasanth Babu Mantena 1 (1.1%) + Jonathan Humphreys 1 (1.1%) + Tony Dinh 1 (1.1%) + Niklas Sombert 1 (1.1%) + Weizhao Ouyang 1 (1.1%) + Marcel Ziswiler 1 (1.1%) + Faqiang Zhu 1 (1.1%) + Ryan Walklin 1 (1.1%) + Tim Harvey 1 (1.1%) + Nicolas Frattaroli 1 (1.1%) + Raymond Mao 1 (1.1%) + Sam Day 1 (1.1%) + Alexey Minnekhanov 1 (1.1%) + Huan Zhou 1 (1.1%) + ==================================== ===== + + +.. table:: Developers who gave the most tested-by credits (total 89) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Casey Connolly 19 (21.3%) + Svyatoslav Ryhel 8 (9.0%) + Simon Glass 7 (7.9%) + Neil Armstrong 6 (6.7%) + Ilias Apalodimas 6 (6.7%) + Minda Chen 5 (5.6%) + Mattijs Korpershoek 4 (4.5%) + Heinrich Schuchardt 4 (4.5%) + Jerome Forissier 4 (4.5%) + Marek Vasut 3 (3.4%) + Quentin Schulz 2 (2.2%) + Thomas Schaefer 2 (2.2%) + Michal Simek 1 (1.1%) + Raymond Mao 1 (1.1%) + Tom Rini 1 (1.1%) + Paul Barker 1 (1.1%) + Peng Fan 1 (1.1%) + Patrick Delaunay 1 (1.1%) + Jonas Karlman 1 (1.1%) + Jernej Skrabec 1 (1.1%) + Wadim Egorov 1 (1.1%) + Michael Trimarchi 1 (1.1%) + Heiko Stuebner 1 (1.1%) + Jiaxun Yang 1 (1.1%) + Junhui Liu 1 (1.1%) + Eddie Kovsky 1 (1.1%) + Bruno Leite 1 (1.1%) + Weijie Gao 1 (1.1%) + Venkatesh Yadav Abbarapu 1 (1.1%) + Hari Nagalla 1 (1.1%) + Adriano Cordova 1 (1.1%) + ==================================== ===== + + +.. table:: Developers with the most report credits (total 41) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Da Xue 6 (14.6%) + Heinrich Schuchardt 4 (9.8%) + Tom Rini 4 (9.8%) + Zixun LI 3 (7.3%) + Francesco Dolcini 2 (4.9%) + Nathaniel Hourt 2 (4.9%) + Kuba Szczodrzyński 2 (4.9%) + Quentin Schulz 1 (2.4%) + Jernej Skrabec 1 (2.4%) + Yao Zi 1 (2.4%) + Tony Dinh 1 (2.4%) + Niklas Sombert 1 (2.4%) + Weizhao Ouyang 1 (2.4%) + Tim Harvey 1 (2.4%) + Sam Day 1 (2.4%) + Anshul Dalal 1 (2.4%) + Heiko Thiery 1 (2.4%) + Keerthy 1 (2.4%) + Enric Balletbo i Serra 1 (2.4%) + Chirag Shilwant 1 (2.4%) + Prashant Shivhare 1 (2.4%) + Chintan Vankar 1 (2.4%) + Parth Pancholi 1 (2.4%) + Christoph Niedermaier 1 (2.4%) + Mikhail Kshevetskiy 1 (2.4%) + ==================================== ===== + + +.. table:: Developers who gave the most report credits (total 41) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Alexander Graf 7 (17.1%) + Tom Rini 4 (9.8%) + Jerome Forissier 4 (9.8%) + Simon Glass 3 (7.3%) + Mattijs Korpershoek 3 (7.3%) + Andre Przywara 3 (7.3%) + Yao Zi 2 (4.9%) + Andrew Davis 2 (4.9%) + Heinrich Schuchardt 1 (2.4%) + Anshul Dalal 1 (2.4%) + Casey Connolly 1 (2.4%) + Ilias Apalodimas 1 (2.4%) + Marek Vasut 1 (2.4%) + Weijie Gao 1 (2.4%) + Adriano Cordova 1 (2.4%) + Fabio Estevam 1 (2.4%) + Adam Ford 1 (2.4%) + Bryan Brattlof 1 (2.4%) + Alice Guo 1 (2.4%) + Alexander Sverdlin 1 (2.4%) + Bhavya Kapoor 1 (2.4%) + ==================================== ===== + + +.. table:: Top changeset contributors by employer + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 747 (42.0%) + Google LLC 172 (9.7%) + Linaro 169 (9.5%) + Texas Instruments 126 (7.1%) + Konsulko Group 91 (5.1%) + DENX Software Engineering 68 (3.8%) + Renesas Electronics 68 (3.8%) + ARM 61 (3.4%) + ST Microelectronics 52 (2.9%) + Intel 50 (2.8%) + AMD 39 (2.2%) + Phytec 38 (2.1%) + NXP 27 (1.5%) + Amarula Solutions 20 (1.1%) + Bootlin 17 (1.0%) + Toradex 10 (0.6%) + Rockchip 9 (0.5%) + Siemens 8 (0.4%) + Red Hat 3 (0.2%) + BayLibre SAS 1 (0.1%) + Collabora Ltd. 1 (0.1%) + linutronix 1 (0.1%) + Nokia 1 (0.1%) + Socionext Inc. 1 (0.1%) + ==================================== ===== + + +.. table:: Top lines changed by employer + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + Konsulko Group 78284 (33.7%) + (Unknown) 59242 (25.5%) + ST Microelectronics 22661 (9.8%) + Texas Instruments 21551 (9.3%) + Google LLC 8757 (3.8%) + Rockchip 7249 (3.1%) + DENX Software Engineering 7195 (3.1%) + Linaro 5651 (2.4%) + Toradex 4661 (2.0%) + Intel 4500 (1.9%) + NXP 3595 (1.5%) + Renesas Electronics 2880 (1.2%) + Amarula Solutions 1604 (0.7%) + Bootlin 1300 (0.6%) + ARM 1049 (0.5%) + AMD 742 (0.3%) + Phytec 522 (0.2%) + Siemens 483 (0.2%) + Socionext Inc. 52 (0.0%) + Nokia 19 (0.0%) + Red Hat 14 (0.0%) + Collabora Ltd. 8 (0.0%) + linutronix 8 (0.0%) + BayLibre SAS 2 (0.0%) + ==================================== ===== + + +.. table:: Employers with the most signoffs (total 449) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 125 (27.8%) + Linaro 114 (25.4%) + Analog Devices 47 (10.5%) + AMD 34 (7.6%) + NXP 31 (6.9%) + ST Microelectronics 27 (6.0%) + Texas Instruments 22 (4.9%) + Amarula Solutions 11 (2.4%) + ARM 7 (1.6%) + Siemens 7 (1.6%) + Phytec 5 (1.1%) + Konsulko Group 3 (0.7%) + Google LLC 3 (0.7%) + DENX Software Engineering 2 (0.4%) + Red Hat 2 (0.4%) + BayLibre SAS 2 (0.4%) + Canonical 2 (0.4%) + Rockchip 1 (0.2%) + Toradex 1 (0.2%) + Renesas Electronics 1 (0.2%) + Collabora Ltd. 1 (0.2%) + Xilinx 1 (0.2%) + ==================================== ===== + + +.. table:: Employers with the most hackers (total 230) + :widths: auto + + ==================================== ===== + Name Count + ==================================== ===== + (Unknown) 129 (56.1%) + Texas Instruments 27 (11.7%) + Linaro 11 (4.8%) + Toradex 7 (3.0%) + Rockchip 6 (2.6%) + AMD 5 (2.2%) + NXP 5 (2.2%) + ST Microelectronics 5 (2.2%) + Intel 5 (2.2%) + ARM 4 (1.7%) + Phytec 4 (1.7%) + Siemens 3 (1.3%) + DENX Software Engineering 3 (1.3%) + Bootlin 3 (1.3%) + Amarula Solutions 2 (0.9%) + Red Hat 2 (0.9%) + Renesas Electronics 2 (0.9%) + Konsulko Group 1 (0.4%) + Google LLC 1 (0.4%) + BayLibre SAS 1 (0.4%) + Collabora Ltd. 1 (0.4%) + Socionext Inc. 1 (0.4%) + Nokia 1 (0.4%) + linutronix 1 (0.4%) + ==================================== ===== diff --git a/doc/device-tree-bindings/config.txt b/doc/device-tree-bindings/config.txt index f50c68bbdc3..fffb69e75de 100644 --- a/doc/device-tree-bindings/config.txt +++ b/doc/device-tree-bindings/config.txt @@ -70,13 +70,13 @@ u-boot,mmc-env-offset-redundant (int) u-boot,mmc-env-partition (int) if present, the environment shall be placed at the last CONFIG_ENV_SIZE blocks of the partition on the - CONFIG_SYS_MMC_ENV_DEV. + CONFIG_ENV_MMC_DEVICE_INDEX. if u-boot,mmc-env-offset* is present, this setting will take precedence. In that case, only if the partition is not found, mmc-env-offset* will be tried. - Note that CONFIG_ENV_MMC_PARTITION overrides this device-tree setting. + Note that CONFIG_ENV_MMC_SW_PARTITION overrides this device-tree setting. u-boot,no-apm-finalize (bool) For x86 devices running on coreboot, this tells U-Boot not to lock diff --git a/doc/usage/cmd/setexpr.rst b/doc/usage/cmd/setexpr.rst index 593a0ea91e1..5bc37ae50fc 100644 --- a/doc/usage/cmd/setexpr.rst +++ b/doc/usage/cmd/setexpr.rst @@ -144,8 +144,9 @@ Configuration * The *setexpr* command is only available if CMD_SETEXPR=y. * The *setexpr fmt* sub-command is only available if CMD_SETEXPR_FMT=y. -* The *setexpr gsub* and *setexpr sub* sub-commands are only available if - CONFIG_REGEX=y. +* The *setexpr gsub* and *setexpr sub* sub-commands are only available + if CONFIG_REGEX=y. For an overview of the supported regex syntax, + see :doc:`test`. Return value ------------ diff --git a/doc/usage/cmd/sntp.rst b/doc/usage/cmd/sntp.rst new file mode 100644 index 00000000000..d97f83053f7 --- /dev/null +++ b/doc/usage/cmd/sntp.rst @@ -0,0 +1,72 @@ +.. SPDX-License-Identifier: GPL-2.0+: + +.. index:: + single: sntp (command) + +sntp command +============ + +Synopsis +-------- + +:: + + sntp [serverip] + sntp [servername] # NET_LWIP=y && CMD_DNS=y only + + +Description +----------- + +The sntp command gets the current time from an NTP time server and +syncronizes the Real Time Clock (RTC) of the board. This command needs +the server's IP address to be given on the command line or via the +`ntpserverip` environment variable. + +The address of the NTP server does not need to be given if the DHCP server +provides one. The legacy network stack (`CONFIG_NET=y`) can only use the +first NTP server provided in the `ntp-servers` DHCP option. + +When the network stack is lwIP (`CONFIG_NET_LWIP=y`) and the dns command +is enabled (`CONFIG_CMD_DNS=y`), then the sntp command accepts a server +name as an argument. + +The network time is sent as UTC. So, if you want to set the RTC to any local +time different from UTC, you need to set the `timeoffset` environment variable. + +Round-trip delay compensation is not implemented/not enabled. In practice +this should not matter much given that the RTC API does not have sub-second +resolution, and round-trip times are typically 10 to 100 ms at most. + +Examples +-------- + +:: + + => setenv ntpserverip 109.190.177.205 + => date + Date: 2025-06-16 (Monday) Time: 15:19:35 + => date reset + Reset RTC... + Date: 2000-01-01 (Saturday) Time: 0:00:00 + => date + Date: 2000-01-01 (Saturday) Time: 0:00:03 + => sntp + Date: 2025-06-16 Time: 15:19:43 + => date + Date: 2025-06-16 (Monday) Time: 15:19:47 + => setenv timeoffset 7200 + => sntp + Date: 2025-06-16 Time: 17:19:55 + => date + Date: 2025-06-16 (Monday) Time: 17:19:57 + +With `CONFIG_NET_LWIP=y` and `CONFIG_CMD_DNS=y`: + +:: + + => date reset + Reset RTC... + Date: 2000-01-01 (Saturday) Time: 0:00:00 + => sntp 0.us.pool.ntp.org + Date: 2025-06-16 Time: 15:10:59 diff --git a/doc/usage/cmd/test.rst b/doc/usage/cmd/test.rst new file mode 100644 index 00000000000..d1379117fca --- /dev/null +++ b/doc/usage/cmd/test.rst @@ -0,0 +1,102 @@ +.. SPDX-License-Identifier: GPL-2.0-or-later + +.. index:: + single: test (command) + +test command +============ + +Synopsis +-------- + +:: + + test <str-op> <s> + test <s1> <str-cmp> <s2> + test <n1> <num-cmp> <n2> + test ! <expr> + test <expr1> -o <expr2> + test <expr1> -a <expr2> + test -e <interface> <dev[:part]> <path> + test <s> =~ <re> + +Description +----------- + +The ``test`` command is similar to the ordinary shell built-in by the +same name. Unlike in ordinary shells, it cannot be spelled ``[``. + +Strings +~~~~~~~ + +The string tests ``-n`` and ``-z``, and string comparison operators +``=``, ``!=``, ``<`` and ``>``, work exactly as in ordinary shells. + +Numbers +~~~~~~~ + +The number comparison operators ``-lt``, ``-le``, ``-gt``, ``-gt``, +``-eq`` and ``-ne`` work as in ordinary shells. + +.. note:: + Numbers are parsed with ``simple_strtol(, 0)``, meaning that they + are treated as decimal unless there is a `0x` prefix, any errors in + parsing are ignored, and parsing stops as soon as a non-digit (for + the selected base) is encountered. And most U-Boot commands that + generate "numeric" environment variables store them as hexadecimal + *without* a `0x` prefix. + +For example, this is not a correct way of testing whether a given file +has a size less than 4KiB:: + + # Assuming readme.txt exists, sets 'filesize' environment variable + $ size mmc 0:1 readme.txt + $ if test "$filesize" -lt 4096 ; then ... + +If the file size is actually 8000 (decimal), its hexadecimal +representation, and thus the value of ``$filesize``, is ``1f40``, so +the comparison that is done ends up being "1 < 4096". + +Logic +~~~~~ + +The ``!`` operator negates the sense of the test of the expression +``<expr>``. + +The ``-o`` and ``-a`` operators perform logical OR and logical AND, +respectively, of the two expressions. + +File existence +~~~~~~~~~~~~~~ + +Like ordinary shells, the ``-e`` operator can be used to test for +existence of a file. However, the U-Boot version takes three +arguments: + +- The interface (e.g. ``mmc``). +- The device number, possibly including a partition specification. +- The usual path argument, which is interpreted relative to the root + of the filesystem. + +Regular expressions +~~~~~~~~~~~~~~~~~~~ + +When ``CONFIG_REGEX`` is enabled, an additional operator ``=~`` is +available. This is similar to the same operator available with bash's +extended test command ``[[ ]]``. The left operand is a string which is +matched against the regular expression described by the right operand. + +The regular expression engine supports these features: + +- Anchoring ``^`` and ``$``, matching at the beginning/end of the + string. +- Matching any single character (including whitespace) using ``.``. +- Character classes ``[ ]``, including ranges ``[0-9]`` and negation + ``[^ /.]``. +- Grouping ``( )``. +- Alternation ``|``. +- Postfix qualifiers ``*``, ``+`` and ``?`` and their non-greedy + variants ``*?``, ``+?`` and ``??`` + +For extracting the parts matching a capture group and/or performing +substitutions, including back references, see :doc:`setexpr`. diff --git a/doc/usage/environment.rst b/doc/usage/environment.rst index 7e2f2863d06..bb6c351b441 100644 --- a/doc/usage/environment.rst +++ b/doc/usage/environment.rst @@ -562,8 +562,8 @@ only effect after the next boot (yes, that's just like Windows). External environment file ------------------------- -The `CONFIG_USE_DEFAULT_ENV_FILE` option provides a way to bypass the -environment generation in U-Boot. If enabled, then `CONFIG_DEFAULT_ENV_FILE` +The `CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE` option provides a way to bypass the +environment generation in U-Boot. If enabled, then `CONFIG_ENV_DEFAULT_ENV_TEXT_FILE` provides the name of a file which is converted into the environment, completely bypassing the standard environment variables in `env_default.h`. diff --git a/doc/usage/index.rst b/doc/usage/index.rst index 372ef56c967..e9e0bd04e05 100644 --- a/doc/usage/index.rst +++ b/doc/usage/index.rst @@ -119,10 +119,12 @@ Shell commands cmd/sleep cmd/sm cmd/smbios + cmd/sntp cmd/sound cmd/source cmd/tcpm cmd/temperature + cmd/test cmd/tftpput cmd/trace cmd/true |