Age | Commit message (Collapse) | Author |
|
Add new apalis imx6 and colibri imx6/imx7 products IDs.
Upstream-Status: Submitted [https://lore.kernel.org/u-boot/20240122200930.673447-1-jpaulo.silvagoncalves@gmail.com/]
Signed-off-by: Joao Paulo Goncalves <joao.goncalves@toradex.com>
|
|
Running a memtest in U-Boot and Linux shows that some Colibri iMX6
produce bitflips at temperatures above 60°C. This happens because the
RALAT and WALAT values on the Colibri iMX6 are too low. The problems
were introduced by commit 09dbac8174c4 ("mx6: ddr: Restore ralat/walat
in write level calibration") before the calibration process overwrote
the values and set them to the maximum value. With this commit, we make
sure that the RALAT and WALAT values are set to the maximum values
again. This has been proven to work for years.
Upstream-Status: Submitted [https://lore.kernel.org/all/20230614090137.17626-1-francesco@dolcini.it/]
Fixes: 09dbac8174c4 ("mx6: ddr: Restore ralat/walat in write level calibration")
Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
|
|
Make sure that the bad block table in flash is used on Colibri iMX7 for
Tezi. Without this configuration enabled U-Boot corrupts the bad block
table and Linux will update the table on each reboot. The corruption
occurs because if CONFIG_SYS_NAND_USE_FLASH_BBT is not set, U-boot will
store bad blocks out of band, while the Linux driver for the iMX7 will
store them in band in a bad block table.
Upstream-Status: Inappropriate [other]
- There is no tezi specific defconfig upstream
- The non tezi specific configuration is submitted
see [https://lore.kernel.org/all/20230210103351.22907-1-francesco@dolcini.it/]
Related-to: ELB-4989
Fixes: fd8c1fc9430 ("arm: dts: imx7: colibri: add raw NAND support")
Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
|
|
Make sure that the bad block table in flash is used on Colibri iMX7.
Without this configuration enabled U-Boot corrupts the bad block table
and Linux will update the table on each reboot. The corruption occurs
because if CONFIG_SYS_NAND_USE_FLASH_BBT is not set, U-boot will store
bad blocks out of band, while the Linux driver for the iMX7 will store
them in band in a bad block table.
Upstream-Status: Submitted [https://lore.kernel.org/all/20230210103351.22907-1-francesco@dolcini.it/]
Related-to: ELB-4989
Fixes: fd8c1fc9430 ("arm: dts: imx7: colibri: add raw NAND support")
Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
|
|
This indirectly enables ARM errata 751472, 794072, 761320, 845369
which all apply to Colibri iMX6.
Upstream-Status: Backport [f27ffe4177a7cc09614e2f87012234c1e260c8f2]
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
Do DDR initialization using the procedural mx6_dram_cfg() instead of
programming the MMDC using a raw list of register/value pairs, this
solves some rare boot failures on specific "bad" modules.
Calibration values, DDR geometry are unchanged, memory timings are
updated according to the relevant memory datasheet, no changes on
the power consumption.
For IT temperature range SKUs CL is decreased from 8 to 7 and tFAW
value is increased, for commercial temperature range SKUs some
changes on ODT parameters.
This change was validated over a range of different apalis-imx6 SoM, on
the whole working temperature range with weeks of continuous testing.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
In case rtt_nom is set to 0 keep ODT disabled (MMDC MPODTCTRL = 0).
No changes required for DDR MR1 Rtt_Nom impedance register, 0 value is
already handled correctly.
No board is currently affected by this change (rtt_nom != 0 on all i.MX6
ddr3 boards), this will be used by a follow-up change.
Fixes: fe0f7f7842e1 ("mx6: add mmdc configuration for MX6Q/MX6DL")
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
Upstream commit aa42894471ae6a4e57692f6912690489a1587019
Wait 1ms before issuing the first MRS command to write DDR3 Mode
registers.
There is a requirement to wait a minimum time before issuing command to
the DDR3 device, according to the JEDEC standard this time is 500us
(after RESET_n is de-asserted until CKE becomes active) + tXPR (Reset
CKE Exit time, maximum value 360ns).
It seems that for some reason this is not enforced by the MMDC
controller.
Without this change we experienced random memory initialization failures
with about 2% boot failure rate on specific problematic boards, after
this change we were able to do more than 10.000 power-cycle without a
single failure.
Fixes: fe0f7f7842e1 ("mx6: add mmdc configuration for MX6Q/MX6DL")
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@denx.de>
|
|
Upstream commit 09dbac8174c47c6d547c7ab84601fc3424c71dc8
The current DDR write level calibration routine always overwrite
the ralat/walat fields to their maximum value, just save
the existing values at the beginning of the calibration routine
and restore it at the end.
In case the delay is estimated by the user to be more than one cycle the
walat should be configured according to that, this is not
automatically done. From the i.MX6 RM:
The user should read the results of the associated delay-line at
MPWLDECTRL#[WL_DL_ABS_OFFSET#] and in case the user estimates that the
reasonable delay may be above 1 cycle then the user should indicate it at
MPWLDECTRL#[WL_CYC_DEL#]. Moreover the user should indicate it in
MDMISC[WALAT] field. For example, if the result of the write leveling calibration
is 100/256 parts of a cycle, but the user estimates that the delay is above 2 cycles
then MPWLDECTRL#[WL_CYC_DEL#] should be configured to 2, so the total
delay will be 2 and 100/256 parts of a cycle
Probably it would just possible to not overwrite the mdmisc register in
the first place, since this is not present in the write_level_calib() example
in NXP AN4467 nor in the i.MX6 RM (44.11.6.1 Hardware Write Leveling
Calibration).
Fixes: d339f16911c7 ("arm: imx6: Add DDR3 calibration code for MX6 Q/D/DL")
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@denx.de>
|
|
Set CLK01 and CLK02 to 24MHz and enable it in CCM_CCOSR register.
This clock is used by both the audio codec (CLKO1) and by the CSI camera
(CLKO2) and is expected to be 24MHz.
Despite the wrong 16.5MHz there was no real issue because of the wrong
frequency since Linux reconfigures the clocks afterward, however this
was triggering an issue with noise coming from the SGTL5000 audio codec.
The problem is that the SGTL5000 does not have a reset pin and after it
is configured if the input MCLK clock is disabled it produces a constant
noise on its output, this was happening on software reboot.
Forcing the clock to be enabled in U-Boot prevent the problem by making
sure that the clock is always available, without this change as soon as
Linux was changing the clock tree (setting clk_out_sel=1 without setting
clko2_en=1) the noise would start till the actual clock was enabled
(clko2_en=1) during the SGTL5000 driver probe.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
[ backported from https://lists.denx.de/pipermail/u-boot/2022-June/486993.html ]
Add new Toradex MAC OUI (8c:06:cb), to the config block. With this change
we extend the possible serial-numbers as follows:
For serial-numbers 00000000-16777215 OUI 00:14:2d is taken
For serial-numbers 16777216-33554431 OUI 8c:06:cb is taken
Lower 24-bit of the serial number are used in the NIC part of the MAC address,
the complete serial number can be calculated using the OUI.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
[ps: use kdiff3 to autoresolve conflicts]
|
|
i[ backport https://lists.denx.de/pipermail/u-boot/2022-June/486350.html ]
There are two decimal digits reserved to encode the module version and
revision. This code so far implemented A-Z which used 0-25 of this
range.
This commit extends the range to make use of all 99 numbers. After
capital letters the form with a hashtag and number (e.g. #26) is used.
Examples:
If the assembly version is between zero and 25 the numbering is as follows,
as it also has been before this commit:
0: V0.0A
1: V0.0B
...
25: V0.0Z
New numbering of assembly version:
If the number is between 26 and 99 the new assembly version name is:
26: V0.0#26
27: V0.0#27
...
99: V0.0#99
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
[ps: backport: replace dectoul() with simple_strtoul()]
|
|
[ backport https://lists.denx.de/pipermail/u-boot/2022-June/486349.html ]
With those defines the length can be reused and is in one place
extendable.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
[ backport https://lists.denx.de/pipermail/u-boot/2022-June/486348.html ]
Prevent memory issues that could appear with sprintf. Replace all
sprintf occurences with snprintf.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
commit 622ecee93a604c017aca23906c5cc903b4002b78 upstream.
Add a new device tree property "u-boot,version" in the chosen node to
pass the U-Boot version to the operating system.
This can be useful to implement a firmware upgrade procedure from the
operating system.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
|
|
[ Upstream commit c1af358cf51a85ed8c47fc576d3cae34196ec47f ]
The previous code wrote the contents of the fuse as is in the
REFTOP_VBGADJ[2:0], but this was wrong if you consider the contents of
the table in the code comment. This table is also different from the
table in the commit description. But then, which of the two is correct?
If it is assumed that an unprogrammed fuse has a value of 0 then for
backward compatibility of the code REFTOP_VBGADJ[2:0] must be set to
6 (b'110). Therefore, the table in the code comment can be considered
correct as well as this patch.
Fixes: 97c16dc8bf098 ("imx: mx6ull: update the REFTOP_VBGADJ setting")
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
|
|
The Toradex Easy Installer uses a fitimage for kernel/fdt/rootfs.
With moving to the meta-toradex-bsp-common fitimage class to create
the fitimage the configuration name is changed.
For the Apalis TK1 used in recovery mode we set the configuration used
in the U-Boot environment. Change that to the new name.
Related-to: ELB-4417
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
The Toradex Easy Installer uses a fitimage for kernel/fdt/rootfs.
With moving to the meta-toradex-bsp-common fitimage class to create
the fitimage the configuration name is changed.
For the Colibri iMX7 with RawNAND we set the configuration used
in the U-Boot environment. Change that to the new name.
Related-to: ELB-4417
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
The latest master tests do no longer pass. So use the state from
September 2020
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
As Stephen is no longer actively maintaining the uboot-test-hooks
repository, switch to using the instance on our GitLab.
Acked-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
(cherry picked from commit 85ae52b9593894fa31d80d83d76bdb3b6432c4be)
|
|
We got an error that triggered a rebuild of the container. Since it got
updated to the one used also upstream by Oleksandr use this new one
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
Remove hard-coded variant in the eMMC build case as since the following
commit it will anyway always get overridden by the detection routing in
board code.
eee9c9f11383 ("board: colibri_imx7: Set variant variable also for non-emmc variants")
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
|
|
Later Colibri iMX7D V1.1B modules are using a “new” SoC fusing. The
difference has to do with whether or not we do enable the boot ROM to
enable/use the eMMC reset signal. Depending on that SoC fuse, the boot
ROM configures this pin as a GPIO output to actually be able to do/drive
the reset signal. Our eMMC vs. NAND detection so far only sets that
signal to a GPIO but without explicitly setting any direction as, of
course, so far, by default, it was an input. As the boot ROM now sets
it as an output we do get back a value of zero instead of a one which
would indicate the pull-up being present on eMMC modules.
Fix this by setting the SION bit which allows reading back the value
even if it is set to be an output by the boot ROM. Note that with the
new SoC fusing we now read back what the boot ROM drived rather than
the real value caused by the pull-up resistor. However, if it would
ever be driven low the eMMC would anyway permanently be reset.
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
|
|
now that it is possible to use regulator-fixed-clock make use
of it. This makes U-Boot detect the PHY on first cold-boot.
This commit also adjusts the code in setup_fec and follows
how it is done in mx6ullevk.c
This commit also slows down the boot-process by about 150ms
as it now waits for the regulator-fixed-clock voltage that
drives the PHY to go up.
If you rely on very fast boot-speeds and don't need ethernet
for your boot-process you can safely revert the changes on
imx6ull-colibri.dtsi
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
This commit adds the possibility to choose the compatible
"regulator-fixed-clock" in devicetree.
This is a special case of regulator-fixed where a clock has to
be used to switch the regulator on and off.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
In case a customer wants to set fdtfile currently preboot overrides it
always with preboot just before the bootdelay. Use test -n to check
if fdtfile is already set and only set it if nothing got touched manually
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
Toradex uses the variable variant to distinguish between modules with eMMC,
NAND with wifi and NAND without wifi.
This variable is set on every boot. Set this variable also if we have a NAND
module without wifi to prevent issues.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
Toradex uses the variable variant to distinguish between eMMC or NAND modules.
This variable is set on every boot. Set this variable also if we have a NAND
module to prevent issues.
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
U-boot should never save the environment unasked.
Avoid storing broken ftd_module to flash
Signed-off-by: Denys Drozdov <denys.drozdov@toradex.com>
|
|
u-boot should never save the environment unasked.
Avoid storing broken ftd_file to eMMC
Signed-off-by: Denys Drozdov <denys.drozdov@toradex.com>
|
|
NXP used to setup the gpmi clock root from gpmi_clk in early versions in their
downstream BSP. [1]
However on mainline the gpmi clock root was always setup from enfc since the
beginning of the i.MX 6 series SoCs, which is still the same today. [2]
NXP followed the mainline approach at some point and changed setup_gpmi_io_clk
to setup gpmi clock root from enfc which left faulty code behind in our board
file. [3]
This commit follows the change of NXP as it improves the performance of the NAND
from ~1.2 MiB/s to ~12 MiB/s. [3]
This change was verified to work in recovery-mode and u-boot loaded from NAND on
all four Colibri iMX6ULL SKUs from Toradex.
The frequency used to read the NAND, measured on RE# (Read Enable):
before this patch: 1.4 MHz
after this patch: 22 MHz
in Linux Kernel: 50 MHz
[1] https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/cpu/armv7/mx6/clock.c?h=nxp/imx_v2016.03_4.1.15_2.0.0_ga#n62
[2] 23608e23fd65 (i.mx: add the initial support for freescale i.MX6Q processor)
[3] https://source.codeaurora.org/external/imx/uboot-imx/commit/?id=7a82a19ceabfb04bbc1591a67c99751748781c7d
Related-to: ELB-4176
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
|
|
Default vidargs are set to 640x480@60 which causes
incorrect lt161010 touchscreen resolution.
eMMC variant should use overlays to select proper
touchscreen timing and resolution
Related-to: ELB-4191
Signed-off-by: Denys Drozdov <denys.drozdov@toradex.com>
|
|
Completes / fixes commit cbc67000af2 ("colibri_imx7: move
CONFIG_BOOTCOMMAND from header to defconfig").
Without this if U-Boot is configured with colibri_imx7_tezi_defconfig
CONFIG_BOOTCOMMAND defaults to 'run distro_boot' which fails on this
NAND module.
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
Completes / fixes commit 1e9685556d2 ("colibri-imx6ull: move
CONFIG_BOOTCOMMAND from header to defconfig").
Without this if U-Boot is configured with colibri-imx6ull_tezi_defconfig
CONFIG_BOOTCOMMAND defaults to 'run distro_boot' which fails on this
NAND module.
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
Move CONFIG_BOOTCOMMAND definition from colibri_imx7.h to
colibri_imx7_defconfig, to be more flexible, for instance, it could
be overridden by merge_config.sh script.
Signed-off-by: Ming Liu <ming.liu@toradex.com>
|
|
Move CONFIG_BOOTCOMMAND definition from colibri-imx6ull.h to
colibri-imx6ull_defconfig, to be more flexible, for instance, it could
be overridden by merge_config.sh script.
Signed-off-by: Ming Liu <ming.liu@toradex.com>
|
|
Unfortunately, vidargs cause very suboptimal display timings to be
calculated which destroys our nice VESA VGA definition from the device
tree. Get rid of it.
Related-to: ELB-4080
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
|
|
colibri-imx6ull ethernet device is fec2, while the optional secondary
ethernet is fec1, update the ethernet aliases in the .dts file so that
ethaddr is set to fec2 and eth1addr to fec1.
Without this change the ethernet interfaces have a different
mac address between Linux and U-Boot.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
Add missing error message to blk_get_device_part_str.
Related-to: ELB-4082
Signed-off-by: Oleksii Bidnichenko <oleksii.bidnichenko@toradex.com>
(cherry picked from commit 866d51e3fde2771d0e83a6ea831b84a2cbc66fd1)
|
|
commit 8e2b0af7216d78b60fccb46a107a4a047938aea9 upstream.
commit ef5ab0d13a7a44469f6c765c8acc8d54c23213de upstream.
Update a __mmc_switch MMC_STATUS_SWITCH_ERROR notification level from
debug to error.
Related-to: ELB-4082
Signed-off-by: Oleksii Bidnichenko <oleksii.bidnichenko@toradex.com>
(cherry picked from commit 675f0f6db0de49316f839f6e9fcbc6f2a007b7d8)
|
|
- Correct the hardware product id for the Colibri IMX7D (eMMC) module.
- Exclude IT check since Colibri IMX7D (eMMC) is always IT.
Related-to: ELB-4076
Signed-off-by: Oleksii Bidnichenko <oleksii.bidnichenko@toradex.com>
|
|
Use the complete 512kb (4 blocks) nand partition reserved for u-boot
environment instead of just the first block, this allows the module to have a
working environment even if 3 blocks are bad.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
Use the complete 512kb (4 blocks) nand partition reserved for u-boot
environment instead of just the first block, this allows the module to have a
working environment even if 3 blocks are bad.
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
The "vidargs" variable is needed only if the board is not aware of the
display that is connected to it. Since the EMMC version with the usage
of overlays is able to specify display settings, such a variable becomes
redundant.
Related-to: ELB-4065
|
|
Enable dynamic DDR calibration to have a reliable behavior on edge
temperatures conditions.
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
Enable dynamic DDR calibration to have a reliable behavior on edge
temperatures conditions.
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
|
|
This configuration creates an U-Boot which does not use any storage
device, i.e. no eMMC or NAND. It is used to boot U-Boot over recovery
aka. Serial Downloader without the need to know if the module
uses eMMC or NAND for storage. It detects the storage device type and
start the Toradex Easy Installer with the matching configuration.
Note that for NAND devices the mtd partitioning is not patched into
the device tree by U-Boot. It must be part of the provided device
tree.
Related-to: TEI-922
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
This configuration creates an U-Boot which is installed on eMMC to then
boot the Toradex Easy Installer.
Related-to: TEI-922
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
While at it complete the list of the known module product ids.
Related-to: ELB-4056, ELB-4057
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|
|
| #if !defined(CONFIG_TARGET_VERDIN_IMX8MM) || !defined(CONFIG_TARGET_VERDIN_IMX8MN)
is never false. Fix that so that the condition is 'true' for any board
but the two verdins.
Fixes commit c0c3978cba3 ("toradex: tdx-cfg-block: add Verdin iMX8M
Mini/Nano support").
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
|