From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Balakrishnan Sambath <balakrishnan.s@microchip.com>
Cc: wim@linux-watchdog.org, linux@roeck-us.net,
nicolas.ferre@microchip.com, claudiu.beznea@tuxon.dev,
linux-watchdog@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
Andrei Simion <andrei.simion@microchip.com>
Subject: Re: [PATCH 1/3] watchdog: at91sam9_wdt.h: Cleanup the header file
Date: Fri, 27 Feb 2026 08:52:39 +0100 [thread overview]
Message-ID: <202602270752399219b90c@mail.local> (raw)
In-Reply-To: <20260227073116.30447-2-balakrishnan.s@microchip.com>
On 27/02/2026 13:01:14+0530, Balakrishnan Sambath wrote:
> From: Andrei Simion <andrei.simion@microchip.com>
>
> This patch reorganizes the header file by renaming the registers using
> a general pattern also this patch simplifies the watchdog disable logic
> in the at91sam9_wdt.h header by differentiating between modern
> (SAM9X60, SAMA7G5, SAM9X7) and legacy (SAMA5, AT91SAM9261) chips based
> on the watchdog disable bit.
> For modern chips, the disable bit is at bit 12, while for legacy chips
> it is at bit 15.
>
> Signed-off-by: Andrei Simion <andrei.simion@microchip.com>
> [Remove Kconfig-based WDDIS selection and define explicit legacy and
> modern masks]
> Signed-off-by: Balakrishnan Sambath <balakrishnan.s@microchip.com>
> ---
> drivers/watchdog/at91sam9_wdt.h | 65 ++++++++++++++++-----------------
> 1 file changed, 32 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/watchdog/at91sam9_wdt.h b/drivers/watchdog/at91sam9_wdt.h
> index 298d545df1a1..1e0aeecb489f 100644
> --- a/drivers/watchdog/at91sam9_wdt.h
> +++ b/drivers/watchdog/at91sam9_wdt.h
> @@ -3,59 +3,58 @@
> * drivers/watchdog/at91sam9_wdt.h
> *
> * Copyright (C) 2007 Andrew Victor
> * Copyright (C) 2007 Atmel Corporation.
> * Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
> *
> * Watchdog Timer (WDT) - System peripherals regsters.
> * Based on AT91SAM9261 datasheet revision D.
> * Based on SAM9X60 datasheet.
> + * Based on SAMA7G5 datasheet.
> + * Based on SAM9X75 datasheet.
> *
> */
>
> #ifndef AT91_WDT_H
> #define AT91_WDT_H
>
> #include <linux/bits.h>
>
> -#define AT91_WDT_CR 0x00 /* Watchdog Control Register */
> -#define AT91_WDT_WDRSTT BIT(0) /* Restart */
> -#define AT91_WDT_KEY (0xa5UL << 24) /* KEY Password */
> -
> -#define AT91_WDT_MR 0x04 /* Watchdog Mode Register */
> -#define AT91_WDT_WDV (0xfffUL << 0) /* Counter Value */
> -#define AT91_WDT_SET_WDV(x) ((x) & AT91_WDT_WDV)
> -#define AT91_SAM9X60_PERIODRST BIT(4) /* Period Reset */
> -#define AT91_SAM9X60_RPTHRST BIT(5) /* Minimum Restart Period */
> +#define AT91_WDT_CR 0x00 /* Watchdog Control Register */
> +#define AT91_WDT_WDRSTT BIT(0) /* Restart */
> +#define AT91_WDT_KEY (0xa5UL << 24) /* KEY Password */
> +#define AT91_WDT_MR 0x04 /* Watchdog Mode Register */
> +#define AT91_WDT_WDV (0xfffUL << 0) /* Counter Value */
> #define AT91_WDT_WDFIEN BIT(12) /* Fault Interrupt Enable */
> -#define AT91_SAM9X60_WDDIS BIT(12) /* Watchdog Disable */
> -#define AT91_WDT_WDRSTEN BIT(13) /* Reset Processor */
> -#define AT91_WDT_WDRPROC BIT(14) /* Timer Restart */
> -#define AT91_WDT_WDDIS BIT(15) /* Watchdog Disable */
> -#define AT91_WDT_WDD (0xfffUL << 16) /* Delta Value */
> -#define AT91_WDT_SET_WDD(x) (((x) << 16) & AT91_WDT_WDD)
> -#define AT91_WDT_WDDBGHLT BIT(28) /* Debug Halt */
> -#define AT91_WDT_WDIDLEHLT BIT(29) /* Idle Halt */
> -
> +#define AT91_WDT_WDRSTEN BIT(13)
> +#define AT91_WDT_WDRPROC BIT(14)
> +#define AT91_WDT_WDD (0xfffUL << 16)
> +#define AT91_WDT_WDDBGHLT BIT(28)
> +#define AT91_WDT_WDIDLEHLT BIT(29)
> #define AT91_WDT_SR 0x08 /* Watchdog Status Register */
> #define AT91_WDT_WDUNF BIT(0) /* Watchdog Underflow */
> #define AT91_WDT_WDERR BIT(1) /* Watchdog Error */
>
> -/* Watchdog Timer Value Register */
> -#define AT91_SAM9X60_VR 0x08
> +#define AT91_WDT_SET_WDV(x) ((x) & AT91_WDT_WDV)
> +#define AT91_WDT_SET_WDD(x) (((x) << 16) & AT91_WDT_WDD)
>
> -/* Watchdog Window Level Register */
> -#define AT91_SAM9X60_WLR 0x0c
> -/* Watchdog Period Value */
> -#define AT91_SAM9X60_COUNTER (0xfffUL << 0)
> -#define AT91_SAM9X60_SET_COUNTER(x) ((x) & AT91_SAM9X60_COUNTER)
> +#define AT91_WDT_VR 0x08 /* Watchdog Timer Value Register */
> +#define AT91_WDT_ISR 0x1c /* Interrupt Status Register */
> +#define AT91_WDT_IER 0x14 /* Interrupt Enable Register */
> +#define AT91_WDT_IDR 0x18 /* Interrupt Disable Register */
> +#define AT91_WDT_WLR 0x0c /* Watchdog Window Level Register */
> +#define AT91_WDT_PERIODRST BIT(4) /* Period Reset */
> +#define AT91_WDT_RPTHRST BIT(5) /* Minimum Restart Period */
> +#define AT91_WDT_PERINT BIT(0) /* Period Interrupt Enable */
> +#define AT91_WDT_COUNTER (0xfffUL << 0) /* Watchdog Period Value */
> +#define AT91_WDT_SET_COUNTER(x) ((x) & AT91_WDT_COUNTER)
>
> -/* Interrupt Enable Register */
> -#define AT91_SAM9X60_IER 0x14
> -/* Period Interrupt Enable */
> -#define AT91_SAM9X60_PERINT BIT(0)
> -/* Interrupt Disable Register */
> -#define AT91_SAM9X60_IDR 0x18
> -/* Interrupt Status Register */
> -#define AT91_SAM9X60_ISR 0x1c
> +/*
> + * WDDIS bit differs by SoC:
> + * - SAMA5, AT91SAM9261: bit 15
> + * - SAM9X60, SAMA7G5, SAM9X75: bit 12
> + * Select at runtime via compatible string.
> + */
> +#define AT91_WDT_WDDIS_LEGACY BIT(15)
> +#define AT91_WDT_WDDIS_MODERN BIT(12)
This is bad naming, we are going to end up with
AT91_WDT_WDDIS_LEGACY_LEGACY, AT91_WDT_WDDIS_MODERN_LEGACY and
AT91_WDT_WDDIS_MODERN next time. The proper name would use the name of
the SoC introducing the new position.
>
> #endif
> --
> 2.34.1
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2026-02-27 7:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-27 7:31 [PATCH 0/3] watchdog: at91/sama5d4: header cleanup and driver refactor Balakrishnan Sambath
2026-02-27 7:31 ` [PATCH 1/3] watchdog: at91sam9_wdt.h: Cleanup the header file Balakrishnan Sambath
2026-02-27 7:52 ` Alexandre Belloni [this message]
2026-03-02 7:11 ` Balakrishnan.S
2026-02-27 7:31 ` [PATCH 2/3] watchdog: sama5d4_wdt: Refactor the driver Balakrishnan Sambath
2026-02-27 8:05 ` Alexandre Belloni
2026-03-02 7:24 ` Balakrishnan.S
2026-02-27 7:31 ` [PATCH 3/3] watchdog: at91sam9_wdt: Rename AT91_WDT_WDDIS to AT91_WDT_WDDIS_LEGACY Balakrishnan Sambath
2026-02-27 7:44 ` [PATCH 0/3] watchdog: at91/sama5d4: header cleanup and driver refactor Guenter Roeck
2026-03-02 7:26 ` Balakrishnan.S
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=202602270752399219b90c@mail.local \
--to=alexandre.belloni@bootlin.com \
--cc=andrei.simion@microchip.com \
--cc=balakrishnan.s@microchip.com \
--cc=claudiu.beznea@tuxon.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=nicolas.ferre@microchip.com \
--cc=wim@linux-watchdog.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox