* [PATCH] arm: socfpga: execute cold reboot by default
@ 2019-05-03 9:15 Simon Goldschmidt
2019-05-08 1:37 ` Dinh Nguyen
0 siblings, 1 reply; 3+ messages in thread
From: Simon Goldschmidt @ 2019-05-03 9:15 UTC (permalink / raw)
To: Dinh Nguyen
Cc: Marek Vasut, Dalon Westergreen, Simon Goldschmidt,
linux-arm-kernel, Russell King, linux-kernel
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>
---
See discussion in this thread on the u-boot ML:
https://lists.denx.de/pipermail/u-boot/2019-April/367463.html
---
arch/arm/mach-socfpga/socfpga.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c
index 816da0eb6..6abfbf140 100644
--- a/arch/arm/mach-socfpga/socfpga.c
+++ b/arch/arm/mach-socfpga/socfpga.c
@@ -85,10 +85,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);
}
@@ -98,10 +98,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);
}
--
2.20.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] arm: socfpga: execute cold reboot by default
2019-05-03 9:15 [PATCH] arm: socfpga: execute cold reboot by default Simon Goldschmidt
@ 2019-05-08 1:37 ` Dinh Nguyen
2019-05-08 20:07 ` Simon Goldschmidt
0 siblings, 1 reply; 3+ messages in thread
From: Dinh Nguyen @ 2019-05-08 1:37 UTC (permalink / raw)
To: Simon Goldschmidt
Cc: Marek Vasut, Dalon Westergreen, linux-arm-kernel, Russell King,
linux-kernel
On 5/3/19 4:15 AM, Simon Goldschmidt wrote:
> 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>
> ---
>
> See discussion in this thread on the u-boot ML:
> https://lists.denx.de/pipermail/u-boot/2019-April/367463.html
> ---
> arch/arm/mach-socfpga/socfpga.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c
> index 816da0eb6..6abfbf140 100644
> --- a/arch/arm/mach-socfpga/socfpga.c
> +++ b/arch/arm/mach-socfpga/socfpga.c
> @@ -85,10 +85,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);
> }
>
> @@ -98,10 +98,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);
> }
>
>
Applied, thanks! I think this patch needs to get back-ported into stable
kernel version as well, right?
Dinh
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] arm: socfpga: execute cold reboot by default
2019-05-08 1:37 ` Dinh Nguyen
@ 2019-05-08 20:07 ` Simon Goldschmidt
0 siblings, 0 replies; 3+ messages in thread
From: Simon Goldschmidt @ 2019-05-08 20:07 UTC (permalink / raw)
To: Dinh Nguyen
Cc: Marek Vasut, Dalon Westergreen, linux-arm-kernel, Russell King,
linux-kernel
Am 08.05.2019 um 03:37 schrieb Dinh Nguyen:
>
>
> On 5/3/19 4:15 AM, Simon Goldschmidt wrote:
>> 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>
>> ---
>>
>> See discussion in this thread on the u-boot ML:
>> https://lists.denx.de/pipermail/u-boot/2019-April/367463.html
>> ---
>> arch/arm/mach-socfpga/socfpga.c | 12 ++++++------
>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c
>> index 816da0eb6..6abfbf140 100644
>> --- a/arch/arm/mach-socfpga/socfpga.c
>> +++ b/arch/arm/mach-socfpga/socfpga.c
>> @@ -85,10 +85,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);
>> }
>>
>> @@ -98,10 +98,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);
>> }
>>
>>
>
> Applied, thanks! I think this patch needs to get back-ported into stable
> kernel version as well, right?
Well, it's certainly wrong as it was.
But as I saw myself, switching from warm to cold reset might have some
implications that would at least in some configurations require changes
to existing configurations to keep the board booting.
So while this certainly fixes a bug (warm reboot is executed instead of
cold reboot like standard/requested), I don't know what's the standard
procedure for a backport regarding fix vs. breaking boards.
Regards,
Simon
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-05-08 20:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-03 9:15 [PATCH] arm: socfpga: execute cold reboot by default Simon Goldschmidt
2019-05-08 1:37 ` Dinh Nguyen
2019-05-08 20:07 ` Simon Goldschmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).