diff mbox series

[U-Boot] configs: icorem6: Use imx6 cratch register for bootcount

Message ID 20190321083553.4068-1-jagan@amarulasolutions.com
State Accepted
Commit 40ee163cc4e304d3b0a84cd0be37520270b95271
Delegated to: Stefano Babic
Headers show
Series [U-Boot] configs: icorem6: Use imx6 cratch register for bootcount | expand

Commit Message

Jagan Teki March 21, 2019, 8:35 a.m. UTC
SRAM address used for bootcount on exiting code is erasing
previous count value when system reset from Linux. So use
the dedicated imx6 scratch register, GPR2 to preserve the
contents even if the system reset from Linux.

Fixes: 4eb9aa39350e ("configs: imx6qdl_icore_mmc: Enable watchdog and bootcounter")
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
 configs/imx6qdl_icore_mmc_defconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Shyam Saini March 21, 2019, 8:45 a.m. UTC | #1
Hi,

> SRAM address used for bootcount on exiting code is erasing
> previous count value when system reset from Linux. So use
> the dedicated imx6 scratch register, GPR2 to preserve the
> contents even if the system reset from Linux.
>
> Fixes: 4eb9aa39350e ("configs: imx6qdl_icore_mmc: Enable watchdog and bootcounter")
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>

I tested this on Engicam imx6q-icore, so

Tested-by: Shyam Saini <shyam.saini@amarulasolutions.com>
Stefano Babic March 21, 2019, 9:05 a.m. UTC | #2
Hi Jagan,

nitpick: cratch ==> scratch

On 21/03/19 09:35, Jagan Teki wrote:
> SRAM address used for bootcount on exiting code is erasing
> previous count value when system reset from Linux. So use
> the dedicated imx6 scratch register, GPR2 to preserve the
> contents even if the system reset from Linux.
> 
> Fixes: 4eb9aa39350e ("configs: imx6qdl_icore_mmc: Enable watchdog and bootcounter")
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> ---
>  configs/imx6qdl_icore_mmc_defconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig
> index 68ad1c6d20..24e99718e6 100644
> --- a/configs/imx6qdl_icore_mmc_defconfig
> +++ b/configs/imx6qdl_icore_mmc_defconfig
> @@ -16,7 +16,7 @@ CONFIG_CMD_BOOTCOUNT=y
>  CONFIG_BOOTCOUNT_LIMIT=y
>  CONFIG_BOOTCOUNT_BOOTLIMIT=3
>  CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y
> -CONFIG_SYS_BOOTCOUNT_ADDR=0x00900000
> +CONFIG_SYS_BOOTCOUNT_ADDR=0x020D8024
>  CONFIG_SYS_BOOTCOUNT_MAGIC=0x0B01C041
>  CONFIG_IMX_WATCHDOG=y
>  CONFIG_DEBUG_UART=y
> 

Just as info: I confirm that using start address of SRAM does not work.
Rather even the GPRx registers are not a common solution. I have already
seen that even the GPRx registers are touched and cannot be used on some
i.MX6 variant. Anyway, if this works on your board, fine.

Reviewed-by: Stefano Babic <sbabic@denx.de>

Best regards,
Stefano Babic
Shyam Saini March 21, 2019, 9:51 a.m. UTC | #3
Hi Stefano,

Thanks a lot for reviewing this

> nitpick: cratch ==> scratch
>
> On 21/03/19 09:35, Jagan Teki wrote:
> > SRAM address used for bootcount on exiting code is erasing
> > previous count value when system reset from Linux. So use
> > the dedicated imx6 scratch register, GPR2 to preserve the
> > contents even if the system reset from Linux.
> >
> > Fixes: 4eb9aa39350e ("configs: imx6qdl_icore_mmc: Enable watchdog and bootcounter")
> > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
> > Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> > ---
> >  configs/imx6qdl_icore_mmc_defconfig | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig
> > index 68ad1c6d20..24e99718e6 100644
> > --- a/configs/imx6qdl_icore_mmc_defconfig
> > +++ b/configs/imx6qdl_icore_mmc_defconfig
> > @@ -16,7 +16,7 @@ CONFIG_CMD_BOOTCOUNT=y
> >  CONFIG_BOOTCOUNT_LIMIT=y
> >  CONFIG_BOOTCOUNT_BOOTLIMIT=3
> >  CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y
> > -CONFIG_SYS_BOOTCOUNT_ADDR=0x00900000
> > +CONFIG_SYS_BOOTCOUNT_ADDR=0x020D8024
> >  CONFIG_SYS_BOOTCOUNT_MAGIC=0x0B01C041
> >  CONFIG_IMX_WATCHDOG=y
> >  CONFIG_DEBUG_UART=y
> >
>
> Just as info: I confirm that using start address of SRAM does not work.
> Rather even the GPRx registers are not a common solution. I have already
> seen that even the GPRx registers are touched and cannot be used on some
> i.MX6 variant. Anyway, if this works on your board, fine.

Since GPRx registers are common to i.MX6, I think it can work
irrespective of boards, please correct me
if I am missing something here.

Did you come across any generic and robust solution for this ?
It would be great if we can use more generic or better solution.
Please let us know.

Thanks a lot,
Shyam
diff mbox series

Patch

diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig
index 68ad1c6d20..24e99718e6 100644
--- a/configs/imx6qdl_icore_mmc_defconfig
+++ b/configs/imx6qdl_icore_mmc_defconfig
@@ -16,7 +16,7 @@  CONFIG_CMD_BOOTCOUNT=y
 CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y
-CONFIG_SYS_BOOTCOUNT_ADDR=0x00900000
+CONFIG_SYS_BOOTCOUNT_ADDR=0x020D8024
 CONFIG_SYS_BOOTCOUNT_MAGIC=0x0B01C041
 CONFIG_IMX_WATCHDOG=y
 CONFIG_DEBUG_UART=y