ARM: socfpga: Disable bridges in SPL unless booting from FPGA
authorMarek Vasut <marex@denx.de>
Tue, 16 Apr 2019 12:19:34 +0000 (14:19 +0200)
committerMarek Vasut <marex@denx.de>
Mon, 29 Apr 2019 08:08:55 +0000 (10:08 +0200)
Disable bridges between L3 Main switch and FPGA unless booting
from FPGA and keep them disabled to prevent glitches and possible
hangs of the L3 Main switch.

The current version of the code could have enabled the bridges
between the L3 Main switch and FPGA for a short period of time
in board_init_f() in case the FPGA was programmed and then again
disable them at the end of board_init_f(). Replace this with a
code which only sets up the handoff registers and let the user
enable the bridges later on.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Chin Liang See <chin.liang.see@intel.com>
Cc: Dinh Nguyen <dinguyen@kernel.org>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
arch/arm/mach-socfpga/spl_gen5.c

index 9dd0afb4bcacd905e2287a52acdd011d09182b26..bd2a9fe5aed644ea8290375b9aa4941213a7fb2a 100644 (file)
@@ -175,8 +175,9 @@ void board_init_f(ulong dummy)
        sysmgr_pinmux_init();
        sysmgr_config_warmrstcfgio(0);
 
-       /* De-assert reset for bridges based on handoff */
-       socfpga_bridges_reset(0);
+       /* De-assert reset for peripherals and bridges based on handoff */
+       reset_deassert_peripherals_handoff();
+       socfpga_bridges_set_handoff_regs(true, true, true);
 
        debug("Unfreezing/Thaw all I/O banks\n");
        /* unfreeze / thaw all IO banks */
@@ -205,7 +206,4 @@ void board_init_f(ulong dummy)
                debug("DRAM init failed: %d\n", ret);
                hang();
        }
-
-       if (!socfpga_is_booting_from_fpga())
-               socfpga_bridges_reset(1);
 }