All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandre Courbot <gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
	"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH] ARM: tegra: Support reboot modes
Date: Wed, 7 May 2014 12:46:28 +0900	[thread overview]
Message-ID: <CAAVeFu+jHXc18hCaCqLN9Su14m8sLt4FgQjau-dounUD8pcbsQ@mail.gmail.com> (raw)
In-Reply-To: <1399388651-12819-1-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

On Wed, May 7, 2014 at 12:04 AM, Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> From: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>
> The boot ROM on Tegra SoCs supports booting into forced recovery mode
> (RCM) by setting a bit in the PMC scratch register 0. Similarily, the
> Android bootloader examines some of the bits in this register to disable
> autoboot or enter recovery mode.
>
> Support these modes by setting the corresponding bits depending on the
> specified reboot command (forced-recovery, bootloader, recovery). Recent
> systemd-based distributions allow this to be specified using an optional
> argument to the reboot command.

Tested-by: Alexandre Courbot <acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

Thanks, that's quite helpful, especially with Jetson TK1!

>
> Signed-off-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---
>  arch/arm/mach-tegra/pmc.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/arch/arm/mach-tegra/pmc.c b/arch/arm/mach-tegra/pmc.c
> index fb7920201ab4..7c7123e7557b 100644
> --- a/arch/arm/mach-tegra/pmc.c
> +++ b/arch/arm/mach-tegra/pmc.c
> @@ -41,6 +41,14 @@
>  #define PMC_REMOVE_CLAMPING            0x34
>  #define PMC_PWRGATE_STATUS             0x38
>
> +#define PMC_SCRATCH0                   0x50
> +#define PMC_SCRATCH0_MODE_RECOVERY     (1 << 31)
> +#define PMC_SCRATCH0_MODE_BOOTLOADER   (1 << 30)
> +#define PMC_SCRATCH0_MODE_RCM          (1 << 1)
> +#define PMC_SCRATCH0_MODE_MASK         (PMC_SCRATCH0_MODE_RECOVERY | \
> +                                        PMC_SCRATCH0_MODE_BOOTLOADER | \
> +                                        PMC_SCRATCH0_MODE_RCM)
> +
>  #define PMC_CPUPWRGOOD_TIMER   0xc8
>  #define PMC_CPUPWROFF_TIMER    0xcc
>
> @@ -165,6 +173,22 @@ void tegra_pmc_restart(enum reboot_mode mode, const char *cmd)
>  {
>         u32 val;
>
> +       val = tegra_pmc_readl(PMC_SCRATCH0);
> +       val &= ~PMC_SCRATCH0_MODE_MASK;
> +
> +       if (cmd) {
> +               if (strcmp(cmd, "recovery") == 0)
> +                       val |= PMC_SCRATCH0_MODE_RECOVERY;
> +
> +               if (strcmp(cmd, "bootloader") == 0)
> +                       val |= PMC_SCRATCH0_MODE_BOOTLOADER;
> +
> +               if (strcmp(cmd, "forced-recovery") == 0)
> +                       val |= PMC_SCRATCH0_MODE_RCM;
> +       }
> +
> +       tegra_pmc_writel(val, PMC_SCRATCH0);
> +
>         val = tegra_pmc_readl(0);
>         val |= 0x10;
>         tegra_pmc_writel(val, 0);
> --
> 1.9.2
>

WARNING: multiple messages have this Message-ID (diff)
From: gnurou@gmail.com (Alexandre Courbot)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: tegra: Support reboot modes
Date: Wed, 7 May 2014 12:46:28 +0900	[thread overview]
Message-ID: <CAAVeFu+jHXc18hCaCqLN9Su14m8sLt4FgQjau-dounUD8pcbsQ@mail.gmail.com> (raw)
In-Reply-To: <1399388651-12819-1-git-send-email-thierry.reding@gmail.com>

On Wed, May 7, 2014 at 12:04 AM, Thierry Reding
<thierry.reding@gmail.com> wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> The boot ROM on Tegra SoCs supports booting into forced recovery mode
> (RCM) by setting a bit in the PMC scratch register 0. Similarily, the
> Android bootloader examines some of the bits in this register to disable
> autoboot or enter recovery mode.
>
> Support these modes by setting the corresponding bits depending on the
> specified reboot command (forced-recovery, bootloader, recovery). Recent
> systemd-based distributions allow this to be specified using an optional
> argument to the reboot command.

Tested-by: Alexandre Courbot <acourbot@nvidia.com>

Thanks, that's quite helpful, especially with Jetson TK1!

>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
>  arch/arm/mach-tegra/pmc.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/arch/arm/mach-tegra/pmc.c b/arch/arm/mach-tegra/pmc.c
> index fb7920201ab4..7c7123e7557b 100644
> --- a/arch/arm/mach-tegra/pmc.c
> +++ b/arch/arm/mach-tegra/pmc.c
> @@ -41,6 +41,14 @@
>  #define PMC_REMOVE_CLAMPING            0x34
>  #define PMC_PWRGATE_STATUS             0x38
>
> +#define PMC_SCRATCH0                   0x50
> +#define PMC_SCRATCH0_MODE_RECOVERY     (1 << 31)
> +#define PMC_SCRATCH0_MODE_BOOTLOADER   (1 << 30)
> +#define PMC_SCRATCH0_MODE_RCM          (1 << 1)
> +#define PMC_SCRATCH0_MODE_MASK         (PMC_SCRATCH0_MODE_RECOVERY | \
> +                                        PMC_SCRATCH0_MODE_BOOTLOADER | \
> +                                        PMC_SCRATCH0_MODE_RCM)
> +
>  #define PMC_CPUPWRGOOD_TIMER   0xc8
>  #define PMC_CPUPWROFF_TIMER    0xcc
>
> @@ -165,6 +173,22 @@ void tegra_pmc_restart(enum reboot_mode mode, const char *cmd)
>  {
>         u32 val;
>
> +       val = tegra_pmc_readl(PMC_SCRATCH0);
> +       val &= ~PMC_SCRATCH0_MODE_MASK;
> +
> +       if (cmd) {
> +               if (strcmp(cmd, "recovery") == 0)
> +                       val |= PMC_SCRATCH0_MODE_RECOVERY;
> +
> +               if (strcmp(cmd, "bootloader") == 0)
> +                       val |= PMC_SCRATCH0_MODE_BOOTLOADER;
> +
> +               if (strcmp(cmd, "forced-recovery") == 0)
> +                       val |= PMC_SCRATCH0_MODE_RCM;
> +       }
> +
> +       tegra_pmc_writel(val, PMC_SCRATCH0);
> +
>         val = tegra_pmc_readl(0);
>         val |= 0x10;
>         tegra_pmc_writel(val, 0);
> --
> 1.9.2
>

  parent reply	other threads:[~2014-05-07  3:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-06 15:04 [PATCH] ARM: tegra: Support reboot modes Thierry Reding
2014-05-06 15:04 ` Thierry Reding
     [not found] ` <1399388651-12819-1-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-05-07  3:46   ` Alexandre Courbot [this message]
2014-05-07  3:46     ` Alexandre Courbot
2014-05-07 15:58   ` Stephen Warren
2014-05-07 15:58     ` Stephen Warren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAVeFu+jHXc18hCaCqLN9Su14m8sLt4FgQjau-dounUD8pcbsQ@mail.gmail.com \
    --to=gnurou-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.