Introduction
This page gives an overview of the WDT driver which is available as part of the Zynq and ZynqMP Linux distribution and in the mainline.Paths, files, links and documentation on this page are given relative to the Linux kernel source tree.
HW IP Features
- Configurable timeout interval in seconds.
- Reset on timeout can be selected.
Known Issues and Limitations
- None.
- Dependencies:
- On Zynq MPSoC, Error Manager module (ENABLE_EM) needs to be enabled to handle the WDT error upon timeout.
- PMU does APU sub-system reset upon FPD WDT timeout if ENABLE_RECOVERY flag is defined.
- If ENABLE_RECOVERY is not defined, System Reset error action will be taken upon FPD WDT timeout.
- See Chapter 10 in https://www.xilinx.com/support/documentation/user_guides/ug1137-zynq-ultrascale-mpsoc-swdev.pdf for more details
Kernel Configuration
The following config options should be enabled in order to build the wdt driver:CONFIG_CADENCE_WATCHDOG
CONFIG_XILINX_WATCHDOG
Devicetree
For more details, please refer "Documentation/devicetree/bindings/watchdog/cadence-wdt.txt"
For Zynq7000:
Example: In <plnx-proj-root>/components/plnx_workspace/device-tree/device-tree-generation/zynq-7000.dtsi
watchdog0: watchdog@f8005000 { clocks = <&clkc45>; compatible = "cdns,wdt-r1p2"; interrupt-parent = <&&intc>; interrupts = <0 9 1>; reg = <0xf8005000 0x1000>; timeout-sec = <10>; };
&watchdog0 { status = "okay"; };
&watchdog0 { status = "okay"; reset-on-timeout; };
Example: In <plnx-proj-root>/components/plnx_workspace/device-tree/device-tree-generation/zynqmp.dtsi
# timeout-sec value is set to 10s in 2018.2 and below release and 60s in 2018.3 and above release. watchdog0: watchdog@fd4d0000 { compatible = "cdns,wdt-r1p2"; status = disabled; interrupt-parent = <&gic>; interrupts = <0 113 1>; reg = <0x0 0xfd4d0000 0x1000>; timeout-sec = <60>; };
&watchdog0 { status = "okay"; };
&watchdog0 { status = "okay"; reset-on-timeout; timeout-sec = <10>; };
Reference Link: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842475/PetaLinux+Yocto+Tips PMU Firmware#PMUFWBuildFlags
$ vim <plnx-proj-root>/project-spec/meta-user/recipes-bsp/pmu/pmu-firmware_%.bbappend #For v2018.1 or later PetaLinux releases only $ vim <plnx-proj-root>/project-spec/meta-user/recipes-bsp/pmu-firmware/pmu-firmware_%.bbappend
YAML_COMPILER_FLAGS_append = " -DENABLE_EM -DENABLE_SCHEDULER"
Test procedure
Note:In case of zynqMP WDT 1 must be enabled at the h/w level.
Start the watchdog timer and see if it runs out without enabling reset.
echo s > /dev/watchdog0
Expected Output
//after 10 secondsIf reset-on-timeout property is present in the watchdog node
PetaLinux 2018.2 xilinx-zcu102-2018_2 /dev/ttyPS0 xilinx-zcu102-2018_2 login: root Password: root@xilinx-zcu102-2018_2:~# root@xilinx-zcu102-2018_2:~# dmesg | grep wdt [ 1.669543] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer at ffffff800913d000 with timeout 10s root@xilinx-zcu102-2018_2:~# root@xilinx-zcu102-2018_2:~# echo s > /dev/watchdog0 [ 66.480417] watchdog: watchdog0: watchdog did not stop! root@xilinx-zcu102-2018_2:~# Xilinx Zynq MP First Stage Boot Loader Release 2018.2 Oct 31 2018 - 15:24:39 NOTICE: ATF running on XCZU9EG/silicon v4/RTL5.1 at 0xfffea000 NOTICE: BL31: Secure code at 0x0 NOTICE: BL31: Non secure code at 0x10080000 NOTICE: BL31: v1.4(release):xilinx-v2018.1-4-g93a69a5a NOTICE: BL31: Built : 21:21:00, Oct 31 2018 PMUFW: v1.0
cdns-wdt fd4d0000.watchdog: Watchdog timed out.
Mainline Status
- This driver is currently in sync with the mainline kernel
Change Log
- 2020.2
- None
- 2020.2
- None
- 2020.1
- None
- 2019.2
- 2019.1
- None
- 2018.3
- None
- 2018.2
- None
- 2018.1
- None
- 2017.4
- None
- 2017.3
- Summary
- watchdog: cadence_wdt: Fix issue with timeout-sec dt property
- watchdog: cadence_wdt: make of_device_ids const.
- watchdog: cadence_wdt: Enable access to module parameters
- watchdog: cadence_wdt: Show information when driver is probed
- Commits
- 33ca085 watchdog: cadence_wdt: Fix issue with timeout-sec dt property
- e51604b watchdog: cadence_wdt: make of_device_ids const.
- 98dde08 watchdog: cadence_wdt: Enable access to module parameters
- cf698e7 watchdog: cadence_wdt: Show information when driver is probed
- Summary
- 2017.2
- None
- 2017.1
- Summary
- watchdog: cadence_wdt: Fix the suspend resume.
- watchdog: constify watchdog_ops structures.
- Commits
- eadc4fe watchdog: cadence_wdt: Fix the suspend resume.
- 85f15cf watchdog: constify watchdog_ops structures.
- Summary
- 2016.4
- None
- 2016.3
- None