public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: "Brüns, Stefan" <Stefan.Bruens@rwth-aachen.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] bcm2835_wdt: support for the BCM2835/2836 watchdog
Date: Fri, 27 Jan 2017 16:20:10 +0000	[thread overview]
Message-ID: <2765682.6PCLvXzOU7@sbruens-linux> (raw)
In-Reply-To: <1485511145-31425-2-git-send-email-p.pisati@gmail.com>

On Freitag, 27. Januar 2017 10:59:05 CET Paolo Pisati wrote:
> Signed-off-by: Paolo Pisati <p.pisati@gmail.com>
> ---
>  arch/arm/mach-bcm283x/reset.c  | 21 ++++++++++++++++++---
>  board/raspberrypi/rpi/rpi.c    |  4 ++++
>  drivers/watchdog/Makefile      |  1 +
>  drivers/watchdog/bcm2835_wdt.c | 34 ++++++++++++++++++++++++++++++++++
>  include/configs/rpi.h          |  3 +++
>  scripts/config_whitelist.txt   |  1 +
>  6 files changed, 61 insertions(+), 3 deletions(-)
>  create mode 100644 drivers/watchdog/bcm2835_wdt.c
> 
> diff --git a/arch/arm/mach-bcm283x/reset.c b/arch/arm/mach-bcm283x/reset.c
> index 685815c..b62cb8a 100644
> --- a/arch/arm/mach-bcm283x/reset.c
> +++ b/arch/arm/mach-bcm283x/reset.c
> @@ -21,18 +21,33 @@
>   */
>  #define BCM2835_WDOG_RSTS_RASPBERRYPI_HALT	0x555
> 
> +/* max ticks timeout */
> +#define BCM2835_WDOG_MAX_TIMEOUT	0x000fffff
> +
> +#ifdef CONFIG_BCM2835_WDT
> +extern void hw_watchdog_disable(void);
> +#else
> +void hw_watchdog_disable(void) {}
> +#endif
> +
>  __efi_runtime_data struct bcm2835_wdog_regs *wdog_regs =
>  	(struct bcm2835_wdog_regs *)BCM2835_WDOG_PHYSADDR;
> 
> -void __efi_runtime reset_cpu(ulong addr)
> +void __efi_runtime reset_cpu(ulong ticks)
>  {
> -	uint32_t rstc;
> +	uint32_t rstc, timeout;
> +
> +	if (ticks == 0) {
> +		hw_watchdog_disable();
> +		timeout = RESET_TIMEOUT;

This is wrong. The efi runtime reset function calls this as reset_cpu(0), and 
then tries to call hw_watchdog_disable, which is not marked as __efi_runtime.

Actually, I can see no reason the watchdog setup piggybacks on the reset_cpu 
funtion.

> +	} else
> +		timeout = ticks & BCM2835_WDOG_MAX_TIMEOUT;
> 
>  	rstc = readl(&wdog_regs->rstc);
>  	rstc &= ~BCM2835_WDOG_RSTC_WRCFG_MASK;
>  	rstc |= BCM2835_WDOG_RSTC_WRCFG_FULL_RESET;
> 
> -	writel(BCM2835_WDOG_PASSWORD | RESET_TIMEOUT, &wdog_regs->wdog);
> +	writel(BCM2835_WDOG_PASSWORD | timeout, &wdog_regs->wdog);
>  	writel(BCM2835_WDOG_PASSWORD | rstc, &wdog_regs->rstc);
>  }
> 
> diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
> index 22e87a2..106e518 100644
> --- a/board/raspberrypi/rpi/rpi.c
> +++ b/board/raspberrypi/rpi/rpi.c
[...]
> --- a/scripts/config_whitelist.txt
> +++ b/scripts/config_whitelist.txt
> @@ -294,6 +294,7 @@ CONFIG_BCH_CONST_M
>  CONFIG_BCH_CONST_PARAMS
>  CONFIG_BCH_CONST_T
>  CONFIG_BCM2835_GPIO
> +CONFIG_BCM2835_WDT
>  CONFIG_BCM283X_MU_SERIAL
>  CONFIG_BCM_SF2_ETH
>  CONFIG_BCM_SF2_ETH_DEFAULT_PORT

I think the rule is no new CONFIG_xxx options, but appropriate options in 
KConfig.

Kind regards,

Stefan

  reply	other threads:[~2017-01-27 16:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-27  9:59 [U-Boot] [PATCH] bcm2835: wdt: support for the bcm2835/2836 wdt Paolo Pisati
2017-01-27  9:59 ` [U-Boot] [PATCH] bcm2835_wdt: support for the BCM2835/2836 watchdog Paolo Pisati
2017-01-27 16:20   ` Brüns, Stefan [this message]
2017-02-10 15:18     ` Paolo Pisati
  -- strict thread matches above, loose matches on Subject: below --
2017-01-27 11:38 [U-Boot] [PATCH] bcm2835: wdt: support for the bcm2835/2836 wdt Paolo Pisati
2017-01-27 11:38 ` [U-Boot] [PATCH] bcm2835_wdt: support for the BCM2835/2836 watchdog Paolo Pisati
2017-02-10 16:28 [U-Boot] [PATCH] [V2] bcm2835: wdt: support for the bcm2835/2836 wdt Paolo Pisati
2017-02-10 16:28 ` [U-Boot] [PATCH] bcm2835_wdt: support for the BCM2835/2836 watchdog Paolo Pisati

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=2765682.6PCLvXzOU7@sbruens-linux \
    --to=stefan.bruens@rwth-aachen.de \
    --cc=u-boot@lists.denx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox