- Oct 25, 2021
-
-
André Przywara authored
The more recent Allwinner SoCs BootROMs can actually load SPL images larger than 32KB. We use this on the H616 to fit the extra code needed for the PMIC into the image, and have provisions in board.c to respect that larger SPL size when booting from MMC. However the sunxi SPL SPI loader has a hardcoded load offset of 32KB, which will fail on the H616. To fix this, use the same algorithm we use for MMC: if the SPL size is smaller than 32KB, we use 32KB, otherwise we expect the U-Boot payload directly after the SPL code. This prepares for SPI booting with larger SPLs like on the H616. Signed-off-by:
Andre Przywara <andre.przywara@arm.com> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com>
-
The AXP PMICs have the ability to power off the system. The existing code for this is duplicated for each PMIC variant, and uses the legacy non-DM "pmic_bus" interface. When SYSRESET is enabled, this can all be replaced with a sysreset device using the DM_PMIC interface. Since the trigger bit is the same on all PMIC variants, use the register definitions from the oldest supported PMIC. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
The sysreset uclass has an option to provide the do_poweroff() function. When that option is enabled, the AXP power drivers should not provide their own definition. For the AXP305, which is paired with 64-bit systems where TF-A provides PSCI, there is another possible conflict with the PSCI firmware driver. This driver can be enabled even if CONFIG_PSCI_RESET is disabled, so make sure to use the right symbol in the condition. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
A single DM-based driver should be able to support some feature for several PMIC variants where the interface is the same. For example, all PMIC variants use the same register bit to trigger poweroff. However, currently only definitions for a single PMIC are available at a time. This requires drivers to use #ifdefs and different indentifiers for each variant they support. Let's simplify this by making register definitions for all variants available from the header. Then no preprocessor conditions are needed; the driver can use the register definition from any variant that supports the relevant feature. An exception is the GPIO-related definitions, which do not use unique identifiers. So for now, keep them like before. They will be cleaned up along with the GPIO driver. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
This header attempted to avoid multiple inclusion using a header guard. But the preprocessor symbol was never defined, so the guard had no effect. Fix this by defining the symbol. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
When adding eGON support to mkimage, the struct boot_file_head definition was moved to its own header. This is the only thing mksunxiboot needed out of asm/arch/spl.h. Clean up the relative include by switching to new header. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
commit 1ebfc0c6 ("sunxi: A23/A33/H3: Move sun8i secure monitor to SRAM A2") attempted to move the secure monitor to SRAM A2. But not all sun8i SoCs have SRAM A2, so a check was put in for SUNXI_SRAM_A2_SIZE to avoid breaking the other SoCs. However, because the header providing SUNXI_SRAM_A2_SIZE was not included, this unintentionally skipped the new definitions on all SoCs. Fix this by including the right header. Fixes: 1ebfc0c6 ("sunxi: A23/A33/H3: Move sun8i secure monitor to SRAM A2") Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
The device tree binding provides for getting VBUS state from a device referenced by phandle, as an optional alternative to using a GPIO. In U-Boot, where there is no power supply class, this VBUS detection will be implemented using a regulator device and its get_enable method. Let's hook this up to the PHY driver. Signed-off-by:
Samuel Holland <samuel@sholland.org> Acked-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
The Linux driver checks the VBUS detection GPIO first; then VBUS power supply; then finally assumes VBUS is present. When adding VBUS power supply support, we want to match that order, so we get the same behavior in case both a GPIO and a power supply are provided in the device tree. So refactor the function a bit to remove the early return, and use the same "assume VBUS is present" final fallback. Signed-off-by:
Samuel Holland <samuel@sholland.org> Acked-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
Both of these messages log the GPIO number of the ID detection GPIO, which is not terribly useful, especially in the VBUS detection function. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
sunxi-common.h defines CONFIG_SPL_BSS_START_ADDR to put SPL's BSS in DRAM. Due to this, we must select SPL_SEPARATE_BSS, or else SPL will attempt to load its DTB from the wrong address (after BSS in DRAM). This change fixes booting with SPL_OF_CONTROL=y. Signed-off-by:
Samuel Holland <samuel@sholland.org> Reviewed-by:
Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Andre Przywara <andre.przywara@arm.com>
-
- Oct 23, 2021
-
-
https://source.denx.de/u-boot/custodians/u-boot-spiTom Rini authored
- Fix mtd erase with mtdpart (Marek Behún) - NXP fspi driver fixes (Kuldeep Singh)
-
Errata ERR050568 description says that "Flash access by FlexSPI AHB command may not work with platform frequency equal to 300 MHz" on LS1028A. By default, smaller length reads(equal to RX FIFO size) are done by IP bus and larger length reads using AHB bus. For adding errata workaround, use IP bus to read entire flash contents and disable AHB path when platform frequency is 300Mhz. Signed-off-by:
Kuldeep Singh <kuldeep.singh@nxp.com> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com>
-
Add support for disabling AHB bus and read entire flash contents via IP bus only. Please note, this enables IP bus read using a quirk which can be enabled directly in device-type data or in existence of an errata where AHB bus may need to be disabled. Signed-off-by:
Kuldeep Singh <kuldeep.singh@nxp.com> Acked-by:
Jagan Teki <jagan@amarulasolutions.com>
-
The mt25qu512a supports 4K or 64K sectors, so adding SECT_4K to enable 4K sector usage. Tested on Intel n5x hardware with QSPI carrier card Signed-off-by:
Kris Chaplin <kris.chaplin@linux.intel.com> Acked-by:
Pratyush Yadav <p.yadav@ti.com> [jagan: droped Tested-by of patch author and datasheet link] Signed-off-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com>
-
Add is25lp512 and is25wp512 devices to spi-nor id table Tested on Intel n5x hardware with QSPI carrier card Signed-off-by:
Kris Chaplin <kris.chaplin@linux.intel.com> [jagan: droped Tested-by of patch author] Signed-off-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com>
-
The original purpose of mtd_erase_callback() in Linux at the time it was imported to U-Boot, was to inform the caller that erasing is done (since it was an asynchronous operation). All supplied callback methods in U-Boot do nothing, but the mtd_erase_callback() function was (until previous patch) grossly abused in U-Boot's mtdpart implementation for completely different purpose. Since we got rid of the abusement, remove the mtd_erase_callback() function and the .callback member from struct erase_info entirely, in order to avoid such problems in the future. Signed-off-by:
Marek Behún <marek.behun@nic.cz>
-
The _erase() method of the mtdpart driver, part_erase(), currently implements offset shifting (for given mtdpart partition) in a weird way: 1. part_erase() adds partition offset to block address 2. parent driver's _erase() method is called 3. parent driver's _erase() method calls mtd_erase_callback() 4. mtd_erase_callback() subtracts partition offset from block address so that the callback function is given correct address The problem here is that if the parent's driver does not call mtd_erase_callback() in some scenario (this was recently a case for spi_nor_erase(), which did not call mtd_erase_callback() at all), the offset is not shifted back. Moreover the code would be more readable if part_erase() not only added partition offset before calling parent's _erase(), but also subtracted it back afterwards. Currently the mtd_erase_callback() is expected to do this subtracting since it does have to do it anyway. Add the more steps to this procedure: 5. mtd_erase_callback() adds partition offset to block address so that it returns the the erase_info structure members as it received them 6. part_erase() subtracts partition offset from block address This makes the code more logical and also prevents errors in case parent's driver does not call mtd_erase_callback() for some reason. (BTW, the purpose of mtd_erase_callback() in Linux is to inform the caller that it is done, since in Linux erasing is done asynchronously. We are abusing the purpose of mtd_erase_callback() in U-Boot for completely different purpose. The callback function itself has empty implementation in all cases in U-Boot.) Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
May it possible to interrupt the spi_nor_erase() function. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
The spi_nor_erase() function does not call mtd_erase_callback() as it should. The mtdpart code currently implements the subtraction of partition offset in mtd_erase_callback(). This results in partition offset being added prior calling spi_nor_erase(), but not subtracted back on return. The result is that the `mtd erase` command does not erase the whole partition, only some of it's blocks: => mtd erase "Rescue system" Erasing 0x00000000 ... 0x006fffff (1792 eraseblock(s)) jedec_spi_nor spi-nor@0: at 0x100000, len 4096 jedec_spi_nor spi-nor@0: at 0x201000, len 4096 jedec_spi_nor spi-nor@0: at 0x302000, len 4096 jedec_spi_nor spi-nor@0: at 0x403000, len 4096 jedec_spi_nor spi-nor@0: at 0x504000, len 4096 jedec_spi_nor spi-nor@0: at 0x605000, len 4096 jedec_spi_nor spi-nor@0: at 0x706000, len 4096 This is obviously wrong. Add proper calling of mtd_erase_callback() into the spi_nor_erase() function. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Reported-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
This check is already done in all callers: mtdcore's mtd_write() / mtd_erase(), legacy spi_nor_write() / spi_flash_erase(). No reason to do this here as well. Signed-off-by:
Marek Behún <marek.behun@nic.cz>
-
Check for zero length in the legacy spi_flash_read() / spi_flash_write() / spi_flash_erase() functions. On zero length, return 0 immediately, don't call the underlying method. Rationale: - these legacy functions call the _read(), _write() and _erase() methods of struct mtd - the DM callers of these methods already check for zero length - making all callers of these methods check for zero length makes it possible to remove the check from implementations of these _read(), _write() and _erase() methods Signed-off-by:
Marek Behún <marek.behun@nic.cz>
-
The cleanup code of spi_nor_erase() function calls write_disable(), but does not return it's return value even in case of failure. Fix this. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
The cleanup code of the spi_nor_erase() function overwrites the ret variable with return value of clean_bar(), even if the ret variable is already set. Fix this. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
The spi_nor_erase() function does not check return value of the write_enable() call. Fix this. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Pratyush Yadav <p.yadav@ti.com> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
Use the cleanup codepath of spi_nor_erase() also in the event of failure of writing the BAR register. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Pratyush Yadav <p.yadav@ti.com> Tested-by:
Masami Hiramatsu <masami.hiramatsu@linaro.org>
-
The S25FL256L is a part of the S25FL-L family and has the same feature set as S25FL128L except the density. The datasheet can be found in the following link. https://www.cypress.com/file/316171/download The S25FL256L is 32MB NOR Flash that does not support Bank Address Register. This fixup is activated if CONFIG_SPI_FLASH_BAR is enabled and returns ENOTSUPP in setup() hook to avoid further ops. Tested on Xilinx Zynq-7000 FPGA board. Signed-off-by:
Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
-
Add Gigadevice GD25LQ256D SPI NOR chip. https://www.gigadevice.com/datasheet/gd25lq256d/ Signed-off-by:
Yanhong Wang <yanhong.wang@starfivetech.com> Reviewed-by:
Bin Meng <bmeng.cn@gmail.com> [jagan: updated commit message] Signed-off-by:
Jagan Teki <jagan@amarulasolutions.com> Reviewed-by:
Jagan Teki <jagan@amarulasolutions.com>
-
- Oct 22, 2021
-
-
https://source.denx.de/u-boot/custodians/u-boot-efiTom Rini authored
Pull request for efi-2022-01-rc1 Documentation: Use Sphinx 3.43. Move system reset documentation to HTML UEFI: Fix linking EFI apps with LLVM Fix alignment of loaded image Correct simple network protocol test Code cleanup
-
https://source.denx.de/u-boot/custodians/u-boot-dmTom Rini authored
Refactoring of env_get_char() etc. Update buildman to use gcc-11.1.0 Use in-container toolchain for nokia_rx51 CI test # gpg: Signature made Thu 21 Oct 2021 09:34:07 PM EDT # gpg: using RSA key B25C0022AF86A7CC1655B6277F173A3E9008ADE6 # gpg: issuer "sjg@chromium.org" # gpg: Good signature from "Simon Glass <sjg@chromium.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: B25C 0022 AF86 A7CC 1655 B627 7F17 3A3E 9008 ADE6
-
- Oct 21, 2021
-
-
Move the following functions from cmd/nvedit.c to env/common.c: env_set_ulong() env_set_hex() env_get_hex() eth_env_get_enetaddr() eth_env_set_enetaddr() env_get() from_env() env_get_f() env_get_ulong() since these functions are not specific for U-Boot's CLI. We leave env_set() in cmd/nvedit.c, since it calls _do_env_set(), which is a static function in that file. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
In the past the env_match() function was used to match envs with - name, i.e. string "name" - variable assignment, i.e. string "name=other_value" The latter is not the case anymore, since the env_match() function is now used only in env_get_f(), and so we can simplify the function into a simple strncmp() with an additional comparison to '='. Let's do this, and since the resulting function is quite simple, let's also inline its code into env_get_f(). Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
Copy the value of the found variable into given buffer with memcpy() instead of ad-hoc code. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
Currently the env_get_f() function's return value behaves weirdly: it returns the number of bytes written into `buf`, but whether this is excluding the terminating NULL-byte or including it depends on whether there was enough space in `buf`. Change the function to always return the actual length of the value of the environment variable (excluding the terminating NULL-byte) on success. This makes it behave like sprintf(). All users of this function in U-Boot are compatible with this change. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
Test non-NULL name immediately, not in env_match(). Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
Do we really allow zero-length variable name? I guess not. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
The `nxt` variable actually points to the terminating null-byte of the current env var, and the next env var is at `nxt + 1`, not `nxt`. So a better name for this variable is `end`. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
Since we no longer use env_get_char() to access n-th character of linearized environment data, but rather access the arrays themselves, we can convert the iteration to use string pointers instead of position indexes. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
This function is a relic from the past when environment was read from underlying device one character at a time. It is used only in the case when getting an environemnt variable prior relocation, and the function is simple enough to be inlined there. Since env_get_char() is being changed to simple access to an array, we can drop the failing cases and simplify the code (this could have been done before, since env_get_char() did not fail even before). Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
This function was used by other parts of U-Boot in the past when environment was read from underlying device one character at a time. This is not the case anymore. Signed-off-by:
Marek Behún <marek.behun@nic.cz> Reviewed-by:
Simon Glass <sjg@chromium.org>
-