Re: [PATCH v4 3/3] watchdog: sama5d4_wdt: addition of sam9x60 compatible watchdog

From: Guenter Roeck
Date: Sat Nov 16 2019 - 11:21:04 EST


On Fri, Nov 15, 2019 at 08:30:18AM +0000, Eugen.Hristev@xxxxxxxxxxxxx wrote:
> From: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx>
>
> Add support for SAM9X60 WDT into sama5d4_wdt.
> This means that this driver gets a flag inside the data struct
> that represents the sam9x60 support.
> This flag differentiates between the two hardware blocks, and is set
> according to the compatible of the driver instantiation.
>
> Signed-off-by: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx>
> ---
> Changes in v4:
> - check compatible with different of_ function
> - call irq parse and map only if need_irq
> - changed tabbing in struct defintion
>
> Changes in v3:
> - changed need_irq to bool, instead of a single bit variable.
> - the platform data config struct is gone now, changed to a pointer to a bool
> to have the sam9x60_support as 'true', pointing to a static bool with true value.
> Can have a better solution than this ?
> - the specific sam9x60_support flag is assigned at probe time, corresponding
> to the flag value in .data
>
> drivers/watchdog/at91sam9_wdt.h | 14 ++++++
> drivers/watchdog/sama5d4_wdt.c | 109 +++++++++++++++++++++++++++++++---------
> 2 files changed, 98 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/watchdog/at91sam9_wdt.h b/drivers/watchdog/at91sam9_wdt.h
> index abfe34d..4b3bd1d 100644
> --- a/drivers/watchdog/at91sam9_wdt.h
> +++ b/drivers/watchdog/at91sam9_wdt.h
> @@ -24,7 +24,10 @@
> #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_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 */
> @@ -37,4 +40,15 @@
> #define AT91_WDT_WDUNF BIT(0) /* Watchdog Underflow */
> #define AT91_WDT_WDERR BIT(1) /* Watchdog Error */
>
> +#define AT91_SAM9X60_VR 0x08 /* Watchdog Timer Value Register */
> +
> +#define AT91_SAM9X60_WLR 0x0c
> +#define AT91_SAM9X60_COUNTER (0xfffUL << 0) /* Watchdog Period Value */
> +#define AT91_SAM9X60_SET_COUNTER(x) ((x) & AT91_SAM9X60_COUNTER)
> +
> +#define AT91_SAM9X60_IER 0x14 /* Interrupt Enable Register */
> +#define AT91_SAM9X60_PERINT BIT(0) /* Period Interrupt Enable */
> +#define AT91_SAM9X60_IDR 0x18 /* Interrupt Disable Register */
> +#define AT91_SAM9X60_ISR 0x1c /* Interrupt Status Register */
> +

Lots of line-too-long checkpatch warnings. Please avoid.

Thanks,
Guenter