u-boot-brain/arch
Marek Vasut 97a72bc286 ARM: socfpga: Purge pending transactions upon enabling bridges on Gen5
On Gen5, when the FPGA is loaded and there was some prior interaction
between the HPS and the FPGA via bridges (e.g. Linux was running and
using some of the IPs in the FPGA) followed by warm reset, it has been
observed that there might be outstanding unfinished transactions. This
leads to an obscure misbehavior of the bridge.

When the bridge is enabled again in U-Boot and there are outstanding
transactions, a read from within the bridge address range would return
a result of the previous read instead. Example:
=> bridge enable ; md 0xff200000 1
ff200000: 1234abcd
=> bridge enable ; md 0xff200010 1
ff200010: 5678dcba <------- this is in fact a value which is stored in
                            a memory at 0xff200000
=> bridge enable ; md 0xff200000 1
ff200000: 90effe09 <------- this is in fact a value which is stored in
                            a memory at 0xff200010
and so it continues. Issuing a write does lock the system up completely.

This patch opens the FPGA bridges in 'bridge enable' command, the tears
them down again, and then opens them again. This allows these outstanding
transactions to complete and makes this misbehavior go away.

However, it is not entirely clear whether this is the correct solution.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <chin.liang.see@intel.com>
Cc: Dalon Westergreen <dwesterg@gmail.com>
Cc: Dinh Nguyen <dinguyen@kernel.org>
Cc: Ley Foon Tan <ley.foon.tan@intel.com>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Reviewed-by: Ley Foon Tan <ley.foon.tan@intel.com>
2019-11-25 13:12:56 +01:00
..
arc arc: emsdp/iotdk: Switch to DM_MMC 2019-11-01 16:45:40 +03:00
arm ARM: socfpga: Purge pending transactions upon enabling bridges on Gen5 2019-11-25 13:12:56 +01:00
m68k env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
microblaze microblaze: Fix tab indentation in start.S 2019-10-24 13:37:03 +02:00
mips mips: mtmips: select essential drivers in Kconfig 2019-10-25 17:20:44 +02:00
nds32 env: Drop environment.h header file where not needed 2019-08-11 16:43:41 -04:00
nios2
powerpc powerpc: t4240: dts: Add Sata DT nodes 2019-11-19 14:11:44 +05:30
riscv RISC-V: Align boot image header with Linux 2019-10-18 09:04:19 +08:00
sandbox Add OP-TEE test swuit 2019-11-17 21:15:23 -05:00
sh sh: r2dplus: Fix missing PCI range 2019-09-14 21:28:55 +02:00
x86 x86: Quieten TPL's jump_to_image_no_args() 2019-11-03 07:20:29 +08:00
xtensa env: Move env_get() to env.h 2019-08-11 16:43:41 -04:00
.gitignore
Kconfig sh: r2dplus: Enable OF control 2019-09-02 17:38:43 +02:00