Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Introduction

This page describes the AXI WDT/Window watch dog driver which is available in mainline and Xilinx Linux distribution as
drivers/watchdog/of_xilinx_wdt.c

HW IP Features

  • Connects as a 32-bit slave on a AXI4-Lite interface
  • Watchdog timer with selectable timeout period and interrupt
  • Configurable WDT enable: enable-once or enable-repeatedly
  • One 32-bit free-running timebase counter with rollover interrupt-dual control register
  • Generic watch dog timer feature implemented.

Known Issues and Limitations

  • None

Kernel Configuration

The following config options should be enabled in order to build the xilinx watchdog driver:
CONFIG_XILINX_WATCHDOG
CONFIG_WATCHDOG
Code Block
themeMidnight
¦ Symbol: XILINX_WATCHDOG [=y] ¦
¦ Type : tristate ¦
¦ Prompt: Xilinx Watchdog timer ¦
¦ Location: ¦
¦ -> Device Drivers ¦
¦ (4) -> Watchdog Timer Support (WATCHDOG [=y]) ¦
¦ Defined at drivers/watchdog/Kconfig:171 ¦
¦ Depends on: WATCHDOG [=y] && HAS_IOMEM [=y] ¦
¦ Selects: WATCHDOG_CORE [=y]

Devicetree

For more details, please refer
Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt
Example:
Code Block
themeMidnight
watchdog {
 
        compatible = "xlnx,xps-timebase-wdt-1.0.a";
        reg = <0x42600000 0x1000>;
        xlnx-wdt-enable-once = <0>;
        xlnx-wdt-interval = <0x1b>;
};


Test procedure

Change the parameters using IOCTLs and see if reported values is correct.
Code Block
themeMidnight
# /bin/wdt_app /dev/watchdog1
Last boot is caused by : Power-On-Reset
The timeout was is 42 seconds
root@uart:~#

Mainline Status

  • This driver is currently in sync with the mainline kernel except the Window Watchdog driver.
     watchdog: of_xilinx_wdt: Add comment to spinlock
    watchdog: of_xilinx_wdt: Used BIT macro
    watchdog: of_xilinx_wdt: Used dev_dbg()
    watchdog: of_xilinx_wdt: Initialize watchdog via data structure
    watchdog: of_xilinx_wdt: Introduce wdttype enum for identification
    watchdog: of_xilinx_wdt: Wire setting up timeout via module parameter/DT
    watchdog: of_xilinx_wdt: Use a proper variable to handle overflow
    watchdog: of_xilinx_wdt: Remove passing null pointer
    watchdog: of_xilinx_wdt: Skip printing pointer value
    watchdog: of_xilinx_wdt: Add Versal Window watchdog support

Change Log

  • 2020.2
    • Summary
      • watchdog: of_xilinx_wdt: Initialize watchdog via data structure
      • watchdog: of_xilinx_wdt: Introduce wdttype enum for identification
      • watchdog: of_xilinx_wdt: Add Versal support
      • watchdog: of_xilinx_wdt: Wire setting up timeout via module parameter/DT
      • watchdog: of_xilinx_wdt: Add Versal Window watchdog support
    • Commits

...