mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 09:12:08 +02:00
Merge branch '2020-09-12-assorted-bugfixes'
- A large assortment of minor fixes - Documentation improvements
This commit is contained in:
2
Makefile
2
Makefile
@@ -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
|
||||||
|
@@ -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"
|
||||||
|
@@ -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));
|
||||||
|
|
||||||
|
@@ -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.
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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
119
doc/build/gcc.rst
vendored
Normal 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
2
doc/build/index.rst
vendored
@@ -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
30
doc/build/source.rst
vendored
Normal 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
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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):
|
||||||
|
Reference in New Issue
Block a user