- Jul 18, 2024
-
-
The only way to configure the load addresses for both bootimg and vendor_bootimg is by using the "abootimg" command. If we want to use the C API, there is no equivalent. Add set_abootimg_addr() and set_avendor_bootimg_addr() so that we can specify the load address from C. This can be useful for implementing an Android bootmethod. Reviewed-by:
Igor Opaniuk <igor.opaniuk@gmail.com> Reviewed-by:
Julien Masson <jmasson@baylibre.com> Reviewed-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Guillaume La Roque <glaroque@baylibre.com> Tested-by:
Guillaume La Roque <glaroque@baylibre.com> Signed-off-by:
Mattijs Korpershoek <mkorpershoek@baylibre.com>
-
Some bootflows might be able to only boot from MMC devices. Add a helper function these bootflows can use. Reviewed-by:
Igor Opaniuk <igor.opaniuk@gmail.com> Reviewed-by:
Julien Masson <jmasson@baylibre.com> Reviewed-by:
Guillaume La Roque <glaroque@baylibre.com> Tested-by:
Guillaume La Roque <glaroque@baylibre.com> Signed-off-by:
Mattijs Korpershoek <mkorpershoek@baylibre.com> Reviewed-by:
Simon Glass <sjg@chromium.org>
-
When calling android_image_get_dtb_by_index() using boot image v3+, we should also pass the vendor_boot ramdisk address. Use get_avendor_bootimg_addr() to do so. Notes: on boot image v2, this is harmless since get_avendor_bootimg_addr() returns -1. for legacy implementations that don't have CMD_ABOOTIMG, add a weak implementation to avoid linking errors. Reviewed-by:
Simon Glass <sjg@chromium.org> Reviewed-by:
Julien Masson <jmasson@baylibre.com> Reviewed-by:
Igor Opaniuk <igor.opaniuk@gmail.com> Reviewed-by:
Guillaume La Roque <glaroque@baylibre.com> Tested-by:
Guillaume La Roque <glaroque@baylibre.com> Signed-off-by:
Mattijs Korpershoek <mkorpershoek@baylibre.com>
-
- Jul 08, 2024
-
-
Tom Rini authored
Christian Marangi <ansuelsmth@gmail.com> says: This is an initial series that have all the initial trivial fixes required for usage of OF_UPSTREAM for the mediatek SoC This also contains the pcie-gen3 driver and the required tphy support driver to make it work. Subsequent series will follow with conversion of the mtk-clk to permit usage of OF_UPSTREAM and upstream clk ID. MT7981, MT7986 and MT7988 migration to upstream clock ID is complete and working on MT7623. Series CI tested with PR: https://github.com/u-boot/u-boot/pull/590
-
Support alternative compatible for fixed-plls clocks used upstream with the compatible mediatek,mt7986-apmixedsys. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Support alternative compatible for fixed-plls clocks used upstream with the compatible mediatek,mt7988-apmixedsys. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Set pcie-phy optional for PCIe gen3. MT7988 doesn't require it and making it mandatory prevent the driver to correctly probe. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Upstream kernel linux define pinctrl for uart0, hence this pin group and pinctrl driver is needed before relocation. Add DM_FLAG_PRE_RELOC flag to init and mute mtk_serial error on early serial init. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Add support for gpio-controller property in root pinctrl node. This is to follow upstream linux DTSI that doesn't define the gpio-controller and cells in dedicated nodes. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Support alternative compatible for fixed-plls clocks used upstream with the compatible mediatek,mt7981-apmixedsys. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Add support for upstream linux clock and map U-Boot property to the one use in upstream linux where supported. Also add handling for the use_internal_cd that on upstream is hardcoded enabled on mt7620. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Upstream linux serial driver use a different logic to setup serial regs. They have 2 interval: - < 115200 we use lowspeed regs and 16 * baud - >= 115200 we use highspeed We currently use force_highspeed property to force usage of highspeed regs even with low baud rate. Add special handling if the upstream compatible is used where we just apply the same interval with anything >= 115200 in highspeed simulating force_highspeed. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Upstream linux also provide the additional optional bus clock. Add support for it and also enable the baud and bus clock on probe. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Add support for optional arb and pmic clock for i2c provided in upstream linux DTSI. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com> Reviewed-by:
Heiko Schocher <hs@denx.de>
-
Handle alternative name for pn_swap property as upstream linux use mediatek,pnswap. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Upstream kernel linux use a different compatible mediatek,spi-ipm. Add support for this compatible and add handling for the additional clock similar to how it's done by the upstream driver and handling for all the property enabled by default. Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Add MediaTek GEN3 PCIe controller support for filogic silicon. This is adapted from the Linux version of the driver. Signed-off-by:
John Crispin <john@phrozen.org> [ fix minor problems, fix checkpatch errors ] Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Add support for PHY type switch via the mediatek topmisc syscon. This is needed on mt7981 to make the PCIe correctly work and display LinkUp. Follow the same implementation done on Linux kernel with the usage of the mediatek,syscon-type property. Example: u3port0: usb-phy@11e10700 { reg = <0x11e10700 0x900>; clocks = <&topckgen CK_TOP_USB3_PHY_SEL>; clock-names = "ref"; #phy-cells = <1>; mediatek,syscon-type = <&topmisc 0x218 0>; status = "okay"; }; Signed-off-by:
Christian Marangi <ansuelsmth@gmail.com>
-
Tom Rini authored
There are operations in buildman that result in running the cross-tools (such as performing size checks) and now that we have not modified PATH to know where our tools are, these operations fail. This reverts commit 6c0a3cf7. Signed-off-by:
Tom Rini <trini@konsulko.com>
-
https://gitlab.denx.de/u-boot/custodians/u-boot-marvellTom Rini authored
- Add mvebu_espressobin_ultra-88f3720_defconfig (Benjamin) - Update DTS for Thecus N2350 board (Tony) - Add "old" Marvell DDR3 training for Armada 38x and Turris Omnia (Marek) - Misc turris_omnia changes (Marek)
-
https://gitlab.denx.de/u-boot/custodians/u-boot-imxTom Rini authored
CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/21504 - Fixes for i.MX8M and i.MX93 clk-composite. - Set CAN oscillator frequency based on model on verdin-imx8mm. - Enable CAAM for phycore-imx8mp_defconfig. - Miscellaneous improvements for Gateworks i.MX8M boards. - Fix initramfs boot on msc_sm2s_imx8mp. - Fixe EQoS on imx8mp-beacon-kit. - Fix error message in fsl_esdhc_imx.
-
Currently, Armada 8k config header is setting boot devices and including <config_distro_bootcmd.h> regardless of the CONFIG_DISTRO_DEFAULTS being enabled or not, thus populating the environment for distro boot even on devices that have no need for it. So, lets simply respect the value of CONFIG_DISTRO_DEFAULTS. Signed-off-by:
Robert Marko <robimarko@gmail.com>
-
Support old DDR3 training code on Turris Omnia, selectable via EEPROM field. Users experiencing DDR3 initialization failures or random crashes of the operating system due to incorrect DDR3 configuration can select the old DDR3 training implementation to fix those issues by setting the EEPROM field "Use old DDR training": eeprom update "Use old DDR training" 1 Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Add optional support for using old DDR3 training code from 2017. The code lives in drivers/ddr/marvell/a38x/old/. To prevent symbol clashing with new DDR3 training code, a special header which renames all clashing symbols via macros is included and the symbols are prefixed with 'old_'. If old DDR3 training support is selected for a board, then the SPL initialization code calls a new function board_use_old_ddr3_training() to check whether it should use old DDR3 training code. The default weak implementation returns false, defaulting to new DDR3 training code. Boards that wish to support this need to select the ARMADA_38X_SUPPORT_OLD_DDR3_TRAINING config option and implement the old version of DDR topology provider, ddr3_get_topology_map(). Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Backport the option to compile with immutable debug settings also to the old implementation of the DDR3 training code. The original PR for mv-ddr-marvell can be seen at https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/pull/45/ Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Fix some compilation warning in the old DDR training code. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Import DDR training code from commit 1b69ce2f ("arm: mvebu: ddr3_debug: remove self assignments") into drivers/ddr/marvell/a38x/old/. The code is not used yet. Explanation: Since 2019, on some Turris Omnia boards we have been having problems with newer versions of Marvell's DDR3 training code for Armada 38x, which is ported from mv-ddr-marvell [1] to U-Boot into the drivers/ddr/marvell/a38x/ directory: - sometimes the DDR3 training fails on some older boards, sometime it fails on some newer boards - other times it succeeds, but some boards experience crashes of the operating system after running for some time. Using the stock version of Turris Omnia's U-Boot from solved these issues, but this solution was not satisfactory, since we wanted features from new U-Boot. Back in 2020-2022 we have spent several months trying to debug the issues, working with Marvell, on our own, and also with U-Boot community, but these issues persist still. One solution we used back in 2019 was a "hybrid U-Boot": the SPL part (containing the DDR3 training code) was taken from the stock version, while the proper part was current U-Boot at the time. This solution also has its drawbacks, of which the main one is the need to glue binaries from two separate builds. Since then there have been some more changes to the DDR3 training code in upstream mv-ddr-marvell that have been ported to U-Boot. We have provided our users experimental builds of U-Boot in the TurrisOS so that they could try upgrading the firmware and let us know if those problems still exist. And they do. We do not have the time nor manpower to debug this problem and fix it properly. Marvell was also no able to provide a solution to this, probably because they do not have the manpower as well. I have therefore come up with this "not that pretty" solution: take the DDR3 training code from an older version of U-Boot that is known to work, put it into current U-Boot under old/ subdirectory within drivers/ddr/marvell/a38x/, build into the SPL binary both the old and new versions and make it possible to select the old version via an env variable. [1] https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Some Turris Omnia boards experience memory issues, and by experimentation we found that some of these issues can be solved by slowing DDR speed. Add a new field in the extended EEPROM information structure, ddr_speed. Support several values in this field (for now 1066F, 1333H, and the default, 1600K) and use it to overwrite the DDR topology parameters used by the DDR training algorithm. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Extend the Omnia EEPROM information structure in preparation for more variables to be stored there. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Enable the 'eeprom' command with support for EEPROM layout for Turris Omnia. Enable the i2c-eeprom driver so that the EEPROM is accessed via driver model. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Implement Turris Omnia EEPROM layout for the 'eeprom' command. When the 'eeprom' command (with layout support) is enabled, we can now use the 'eeprom print' and 'eeprom update' commands, for example: => eeprom print Magic constant 34a04103 RAM size in GB 2 Wi-Fi Region CRC32 checksum cecbc2a1 Signed-off-by:
Marek Behún <kabel@kernel.org>
-
For board revisions where the WAN ethernet PHY reset GPIO is controllable via MCU we currently insert a phy-reset-gpios property into the ethernet controller node. The mvneta driver parses this property and uses the GPIO to reset the PHY. But this phy-reset-gpios property is not a valid DT binding in upstream kernel. Instead, a reset-gpios property should be inserted into the ethernet PHY node. This correct DT binding is supported by the DM ETH PHY U-Boot driver. Insert the reset-gpios property into the WAN PHY node instead the phy-reset-gpios property in WAN ETH node so that Linux will correctly use the reset GPIO. Enable the CONFIG_DM_ETH_PHY config option so that U-Boot will also use the correct DT property. Note: currently there are 4 ethernet controller drivers parsing the wrong DT property: dwc_eth_qos, fex_mxc, mvneta and mvpp2. We should convert all relevant device-trees to use reset-gpios so that we can get rid of these drivers parsing this property. Fixes: 1da53ae2 ("arm: mvebu: turris_omnia: Add support for design with SW reset signals") Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Save 10 KiB in Turris Omnia's SPL binary by enabling immutable debug settings for DDR3 training code. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Allow compiling with immutable debug settings: - DEBUG_LEVEL is always set to DEBUG_LEVEL_ERROR - register dumps are disabled This can save around 10 KiB of space in the resulting binary, which is a lot in U-Boot SPL. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
The variables is_validate_window_per_if, is_validate_window_per_pup, sweep_cnt and is_run_leveling_sweep_tests are only used if DDR_VIEWER_TOOL macro is defined, so define them only in that case. Make them static since they are only used in ddr3_debug.c. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
The variables is_default_centralization, is_tune_result and is_bist_reset_bit are never used. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Return from ddr3_tip_print_log() early if we won't print anything anyway. This way the compiler can optimize away the VALIDATE_IF_ACTIVE() calls in the for-loop, so if the SILENT_LIB macro is defined, no code is generated for the rest of the function, which saves some space. Signed-off-by:
Marek Behún <kabel@kernel.org>
-
Turris Omnia defconfig is nearing image size limit. Disable ext4 write support to reserve space for more important stuff. This reduces the size of the KWB image by ~19 KiB. If in the future U-Boot supports compressing itself and decompressing on load, we may enable this again. Signed-off-by:
Marek Behún <kabel@kernel.org>
-