Merge branch '2020-09-12-assorted-bugfixes'
- A large assortment of minor fixes - Documentation improvements
This commit is contained in:
		
						commit
						00e5fda006
					
				
							
								
								
									
										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++);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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`.
 | 
				
			||||||
| 
						 | 
					@ -6,5 +6,7 @@ Build U-Boot
 | 
				
			||||||
.. toctree::
 | 
					.. toctree::
 | 
				
			||||||
   :maxdepth: 2
 | 
					   :maxdepth: 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   source
 | 
				
			||||||
 | 
					   gcc
 | 
				
			||||||
   clang
 | 
					   clang
 | 
				
			||||||
   tools
 | 
					   tools
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue