u-boot/board/tq/tqma6
Miquel Raynal 49a3e0b9e2 tqma6: Fix DDR configuration
Initially investigating a Linux network issue causing a lot of drop and
poor network performances on a custom system based on a TQMA6A module
(based on an iMX6Q), [1st link below].

I eventually correlated my observations with a contention at the NIC
level when in concurrency with the graphics pipeline. Troubleshooting
this in the kernel lead to disabling DMA bursts accesses made by the IPU
in order to avoid triggering the QoS at the interconnect level, reducing
from 50 to 10% the drop rate on eth0, [2nd link below]. The solution
worked on my setup but not on others, which still suffered from
abnormally high drop rates even with this "fix".

After looking a while into TQ Systems BSP I figured out a number of
differences in recent U-Boot out-of-tree patches they had in their
repository [3rd link]. Parsing the differences one after the other lead
me to this final solution.

The reset pad of the DDR controller was apparently misconfigured, Bit
18-19 picturing the "DDR select field". The current value b11 is
reserved. The only defined value as of version 6 of the iMX6Q manual was
b00 "DDR3 and LPDDR2 mode". In practice no register difference has been
spotted after changing this configuration but all issues tracked thus
far just vanished. All previous fixes have been proven irrelevant. Just
clearing this field solved all our network issues and the drop rate as
measured by iperf3 felt back to 0%.

Link: https://lore.kernel.org/netdev/20231012193410.3d1812cf@xps-13/
Link: https://lists.freedesktop.org/archives/dri-devel/2023-October/428251.html
Link: 15eb6abbef
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2023-12-12 16:33:57 -05:00
..
clocks.cfg board: rename "tqc" vendor to "tq" 2021-11-15 14:33:32 -05:00
Kconfig global: Remove extraneous DM_ETH imply/select 2022-12-07 16:04:16 -05:00
MAINTAINERS board: tq: fix spelling of "TQ-Systems" 2021-11-15 14:33:32 -05:00
Makefile board: rename "tqc" vendor to "tq" 2021-11-15 14:33:32 -05:00
README board: tq: fix spelling of "TQ-Systems" 2021-11-15 14:33:32 -05:00
tqma6.c board: tq: fix spelling of "TQ-Systems" 2021-11-15 14:33:32 -05:00
tqma6_bb.h board: tq: fix spelling of "TQ-Systems" 2021-11-15 14:33:32 -05:00
tqma6_mba6.c board: tq: fix spelling of "TQ-Systems" 2021-11-15 14:33:32 -05:00
tqma6_wru4.c board: tq: fix spelling of "TQ-Systems" 2021-11-15 14:33:32 -05:00
tqma6dl.cfg imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00
tqma6q.cfg tqma6: Fix DDR configuration 2023-12-12 16:33:57 -05:00
tqma6s.cfg imx: Don't define __ASSEMBLY__ in source files 2022-02-08 23:07:58 -05:00

U-Boot for the TQ-Systems TQMa6 modules

This file contains information for the port of
U-Boot to the TQ-Systems TQMa6 modules.

1. Boot source
--------------

The following boot source is supported:

- SD/eMMC
- SPI NOR

2. Building
------------

To build U-Boot for the TQ-Systems TQMa6 modules:

	make tqma6<x>_<baseboard>_<boot>_config
	make

x is a placeholder for the CPU variant
q - means i.MX6Q/D: TQMa6Q (i.MX6Q) and TQMa6D  (i.MX6D)
dl - means i.MX6DL: TQMa6DL  (i.MX6DL)
s - means i.MX6S: TQMa6S  (i.MX6S)

baseboard is a placeholder for the boot device
mmc - means eMMC
spi - mean SPI NOR

This gives the following configurations:

tqma6q_mba6_mmc_config
tqma6q_mba6_spi_config
tqma6dl_mba6_mmc_config
tqma6dl_mba6_spi_config
tqma6s_mba6_mmc_config
tqma6s_mba6_spi_config