1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-02 01:02:19 +02:00

Merge branch '2020-09-12-assorted-bugfixes'

- A large assortment of minor fixes
- Documentation improvements
This commit is contained in:
Tom Rini
2020-09-14 15:39:27 -04:00
12 changed files with 187 additions and 19 deletions

View File

@@ -2025,7 +2025,7 @@ CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h tools/version.h \
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config include/generated spl tpl \ MRPROPER_DIRS += include/config include/generated spl tpl \
.tmp_objdiff .tmp_objdiff doc/output
MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \ MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \
ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
drivers/video/fonts/*.S drivers/video/fonts/*.S

View File

@@ -47,10 +47,10 @@ config TARGET_MT8512
select ARM64 select ARM64
select MT8512 select MT8512
help help
The MediaTek MT8512 is a ARM64-based SoC with a quad-core Cortex-A53. The MediaTek MT8512 is a ARM64-based SoC with a dual-core Cortex-A53.
including UART, SPI, USB2.0 and OTG, SD and MMC cards, NAND, PWM, including UART, SPI, USB2.0 and OTG, SD and MMC cards, NAND, PWM,
Ethernet, IR TX/RX, I2C, I2S, S/PDIF, and built-in Wi-Fi / Bluetooth combo IR RX, I2C, I2S, S/PDIF, and built-in Wi-Fi / Bluetooth digital
chip and several DDR3 and DDR4 options. and several LPDDR3 and LPDDR4 options.
config TARGET_MT8516 config TARGET_MT8516
bool "MediaTek MT8516 SoC" bool "MediaTek MT8516 SoC"

View File

@@ -1171,6 +1171,11 @@ static int do_env_import(struct cmd_tbl *cmdtp, int flag,
uint32_t crc; uint32_t crc;
env_t *ep = (env_t *)ptr; env_t *ep = (env_t *)ptr;
if (size <= offsetof(env_t, data)) {
printf("## Error: Invalid size 0x%zX\n", size);
return 1;
}
size -= offsetof(env_t, data); size -= offsetof(env_t, data);
memcpy(&crc, &ep->crc, sizeof(crc)); memcpy(&crc, &ep->crc, sizeof(crc));

View File

@@ -378,7 +378,7 @@ config USE_BOOTARGS
config BOOTARGS config BOOTARGS
string "Boot arguments" string "Boot arguments"
depends on USE_BOOTARGS depends on USE_BOOTARGS && !USE_DEFAULT_ENV_FILE
help help
This can be used to pass arguments to the bootm command. The value of This can be used to pass arguments to the bootm command. The value of
CONFIG_BOOTARGS goes into the environment value "bootargs". Note that CONFIG_BOOTARGS goes into the environment value "bootargs". Note that
@@ -395,7 +395,7 @@ config USE_BOOTCOMMAND
config BOOTCOMMAND config BOOTCOMMAND
string "bootcmd value" string "bootcmd value"
depends on USE_BOOTCOMMAND depends on USE_BOOTCOMMAND && !USE_DEFAULT_ENV_FILE
default "run distro_bootcmd" if DISTRO_DEFAULTS default "run distro_bootcmd" if DISTRO_DEFAULTS
help help
This is the string of commands that will be used as bootcmd and if This is the string of commands that will be used as bootcmd and if
@@ -416,7 +416,7 @@ config USE_PREBOOT
config PREBOOT config PREBOOT
string "preboot default value" string "preboot default value"
depends on USE_PREBOOT depends on USE_PREBOOT && !USE_DEFAULT_ENV_FILE
default "" default ""
help help
This is the default of "preboot" environment variable. This is the default of "preboot" environment variable.

View File

@@ -390,6 +390,8 @@ static int bootm_load_os(bootm_headers_t *images, int boot_progress)
bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE); bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE);
return err; return err;
} }
/* We need the decompressed image size in the next steps */
images->os.image_len = load_end - load;
flush_cache(flush_start, ALIGN(load_end, ARCH_DMA_MINALIGN) - flush_start); flush_cache(flush_start, ALIGN(load_end, ARCH_DMA_MINALIGN) - flush_start);

View File

@@ -349,9 +349,12 @@ static int spl_fit_append_fdt(struct spl_image_info *spl_image,
/* /*
* Use the address following the image as target address for the * Use the address following the image as target address for the
* device tree. * device tree. Load address is aligned to 8 bytes to match the required
* alignment specified for linux arm [1] and arm 64 [2] booting
* [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm/booting.rst#n126
* [2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/arm64/booting.rst#n45
*/ */
image_info.load_addr = spl_image->load_addr + spl_image->size; image_info.load_addr = ALIGN(spl_image->load_addr + spl_image->size, 8);
/* Figure out which device tree the board wants to use */ /* Figure out which device tree the board wants to use */
node = spl_fit_get_image_node(fit, images, FIT_FDT_PROP, index++); node = spl_fit_get_image_node(fit, images, FIT_FDT_PROP, index++);

119
doc/build/gcc.rst vendored Normal file
View File

@@ -0,0 +1,119 @@
Building with GCC
=================
Dependencies
------------
For building U-Boot you need a GCC compiler for your host platform. If you
are not building on the target platform you further need a GCC cross compiler.
Debian based
~~~~~~~~~~~~
On Debian based systems the cross compiler packages are named
gcc-<architecture>-linux-gnu.
You could install GCC and the GCC cross compiler for the ARMv8 architecture with
.. code-block:: bash
sudo apt-get gcc gcc-aarch64-linux-gnu
Depending on the build targets further packages maybe needed
.. code-block:: bash
sudo apt-get install bc bison build-essential coccinelle \
device-tree-compiler dfu-util efitools flex gdisk liblz4-tool \
libguestfs-tools libncurses-dev libpython3-dev libsdl2-dev libssl-dev \
lzma-alone openssl python3 python3-coverage python3-pyelftools \
python3-pytest python3-sphinxcontrib.apidoc python3-sphinx-rtd-theme swig
Prerequisites
-------------
For some boards you have to build prerequisite files before you can build
U-Boot, e.g. for the some boards you will need to build the ARM Trusted Firmware
beforehand. Please, refer to the board specific documentation
:doc:`../board/index`.
Configuration
-------------
Directory configs/ contains the template configuration files for the maintained
boards following the naming scheme::
<board name>_defconfig
These files have been stripped of default settings. So you cannot use them
directly. Instead their name serves as a make target to generate the actual
configuration file .config. For instance the configuration template for the
Odroid C2 board is called odroid-c2_defconfig. The corresponding .config file
is generated by
.. code-block:: bash
make odroid-c2_defconfig
You can adjust the configuration using
.. code-block:: bash
make menuconfig
Building
--------
When cross compiling you will have to specify the prefix of the cross-compiler.
You can either specify the value of the CROSS_COMPILE variable on the make
command line or export it beforehand.
.. code-block:: bash
CROSS_COMPILE=<compiler-prefix> make
Assuming cross compiling on Debian for ARMv8 this would be
.. code-block:: bash
CROSS_COMPILE=aarch64-linux-gnu- make
Build parameters
~~~~~~~~~~~~~~~~
A list of available parameters for the make command can be obtained via
.. code-block:: bash
make help
You can speed up compilation by parallelization using the -j parameter, e.g.
.. code-block:: bash
CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc)
Further important build parameters are
* O=<dir> - generate all output files in directory <dir>, including .config
* V=1 - verbose build
Other build targets
~~~~~~~~~~~~~~~~~~~
A list of all make targets can be obtained via
.. code-block:: bash
make help
Important ones are
* clean - remove most generated files but keep the configuration
* mrproper - remove all generated files + config + various backup files
Installation
------------
The process for installing U-Boot on the target device is device specific.
Please, refer to the board specific documentation :doc:`../board/index`.

2
doc/build/index.rst vendored
View File

@@ -6,5 +6,7 @@ Build U-Boot
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
source
gcc
clang clang
tools tools

30
doc/build/source.rst vendored Normal file
View File

@@ -0,0 +1,30 @@
Obtaining the source
=====================
The source of the U-Boot project is maintained in a Git repository.
You can download the source via
.. code-block:: bash
git clone https://gitlab.denx.de/u-boot/u-boot.git
A mirror of the source is maintained on Github
.. code-block:: bash
git clone https://github.com/u-boot/u-boot
The released versions are available as tags which use the naming scheme::
v<year>.<month>
Release candidates are named::
v<year>.<month>-rc<number>
To checkout the October 2020 release you would use:
.. code-block:: bash
git checkout v2020.10

View File

@@ -635,14 +635,14 @@ int nand_write_skip_bad(struct mtd_info *mtd, loff_t offset, size_t *length,
} }
while (left_to_write > 0) { while (left_to_write > 0) {
loff_t block_start = offset & ~(loff_t)(mtd->erasesize - 1);
size_t block_offset = offset & (mtd->erasesize - 1); size_t block_offset = offset & (mtd->erasesize - 1);
size_t write_size, truncated_write_size; size_t write_size, truncated_write_size;
WATCHDOG_RESET(); WATCHDOG_RESET();
if (nand_block_isbad(mtd, offset & ~(mtd->erasesize - 1))) { if (nand_block_isbad(mtd, block_start)) {
printf("Skip bad block 0x%08llx\n", printf("Skip bad block 0x%08llx\n", block_start);
offset & ~(mtd->erasesize - 1));
offset += mtd->erasesize - block_offset; offset += mtd->erasesize - block_offset;
continue; continue;
} }

View File

@@ -443,29 +443,36 @@ static void mtk_pcie_enable_port(struct mtk_pcie_port *port)
err = clk_enable(&port->sys_ck); err = clk_enable(&port->sys_ck);
if (err) if (err)
goto exit; goto err_sys_clk;
err = reset_assert(&port->reset); err = reset_assert(&port->reset);
if (err) if (err)
goto exit; goto err_reset;
err = reset_deassert(&port->reset); err = reset_deassert(&port->reset);
if (err) if (err)
goto exit; goto err_reset;
err = generic_phy_init(&port->phy); err = generic_phy_init(&port->phy);
if (err) if (err)
goto exit; goto err_phy_init;
err = generic_phy_power_on(&port->phy); err = generic_phy_power_on(&port->phy);
if (err) if (err)
goto exit; goto err_phy_on;
if (!mtk_pcie_startup_port(port)) if (!mtk_pcie_startup_port(port))
return; return;
pr_err("Port%d link down\n", port->slot); pr_err("Port%d link down\n", port->slot);
exit:
generic_phy_power_off(&port->phy);
err_phy_on:
generic_phy_exit(&port->phy);
err_phy_init:
err_reset:
clk_disable(&port->sys_ck);
err_sys_clk:
mtk_pcie_port_free(port); mtk_pcie_port_free(port);
} }

View File

@@ -151,7 +151,7 @@ def validate_empty(state_test_env, var):
Nothing. Nothing.
""" """
response = state_test_env.u_boot_console.run_command('echo $%s' % var) response = state_test_env.u_boot_console.run_command('echo ${%s}' % var)
assert response == '' assert response == ''
def validate_set(state_test_env, var, value): def validate_set(state_test_env, var, value):