arm: socfpga: execute cold reboot by default
authorSimon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Fri, 3 May 2019 09:15:07 +0000 (11:15 +0200)
committerDinh Nguyen <dinguyen@kernel.org>
Fri, 22 Nov 2019 18:12:10 +0000 (12:12 -0600)
This changes system reboot for socfpga to issue a cold reboot by
default instead of a warm reboot.

Warm reboot can still be used by setting reboot_mode to
REBOOT_WARM (e.g. via kernel command line 'reboot='), but this
patch ensures cold reboot is issued for both REBOOT_COLD and
REBOOT_HARD.

Also, cold reboot is more fail safe than warm reboot has some
issues at least fo CSEL=0 and BSEL=qspi, where the boot rom does
not set the qspi clock to a valid range.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
arch/arm/mach-socfpga/socfpga.c

index 47ebcc8a50854ddf19333d1b598e3a5b416d4a64..9e4cb2ffd58023565a76844550864d4fb435d5a6 100644 (file)
@@ -73,10 +73,10 @@ static void socfpga_cyclone5_restart(enum reboot_mode mode, const char *cmd)
 
        temp = readl(rst_manager_base_addr + SOCFPGA_RSTMGR_CTRL);
 
-       if (mode == REBOOT_HARD)
-               temp |= RSTMGR_CTRL_SWCOLDRSTREQ;
-       else
+       if (mode == REBOOT_WARM)
                temp |= RSTMGR_CTRL_SWWARMRSTREQ;
+       else
+               temp |= RSTMGR_CTRL_SWCOLDRSTREQ;
        writel(temp, rst_manager_base_addr + SOCFPGA_RSTMGR_CTRL);
 }
 
@@ -86,10 +86,10 @@ static void socfpga_arria10_restart(enum reboot_mode mode, const char *cmd)
 
        temp = readl(rst_manager_base_addr + SOCFPGA_A10_RSTMGR_CTRL);
 
-       if (mode == REBOOT_HARD)
-               temp |= RSTMGR_CTRL_SWCOLDRSTREQ;
-       else
+       if (mode == REBOOT_WARM)
                temp |= RSTMGR_CTRL_SWWARMRSTREQ;
+       else
+               temp |= RSTMGR_CTRL_SWCOLDRSTREQ;
        writel(temp, rst_manager_base_addr + SOCFPGA_A10_RSTMGR_CTRL);
 }