Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04d305d3 authored by Rishabh Bhatnagar's avatar Rishabh Bhatnagar Committed by Gerrit - the friendly Code Review server
Browse files

soc: qcom: Add snapshot of watchdog_v2 driver



This is a snapshot of watchdog_v2 driver as of msm-4.14 commit
<709e9085afc60cc>. (Merge "Revert "staging, android: remove
lowmemory killer from the tree"").

Change-Id: I8baa72c73a5065ce0014a77cbdf0605e0f5d1011
Signed-off-by: default avatarRishabh Bhatnagar <rishabhb@codeaurora.org>
parent b1dc513c
Loading
Loading
Loading
Loading
+48 −0
Original line number Diff line number Diff line
* Qualcomm MSM Watchdog

Watchdog timer is configured with a bark and a bite time.
If the watchdog is not "pet" at regular intervals, the system
is assumed to have become non responsive and needs to be reset.
A warning in the form of a bark timeout leads to a bark interrupt
and a kernel panic. If the watchdog timer is still not reset,
a bite timeout occurs, which is an interrupt in the secure mode,
which leads to a reset of the SOC via the secure watchdog. The
driver needs the petting time, and the bark timeout to be programmed
into the watchdog, as well as the bark and bite irqs.

The device tree parameters for the watchdog are:

Required properties:

- compatible : "qcom,msm-watchdog"
- reg : offset and length of the register set for the watchdog block.
- reg-names : names corresponding to each reg property value.
        "wdt-base" - physical base address of watchdog timer registers
        "wdt-absent-base" - physical base address of watchdog absent register
- interrupts : should contain bark and bite irq numbers
- qcom,pet-time : Non zero time interval at which watchdog should be pet in ms.
- qcom,bark-time : Non zero timeout value for a watchdog bark in ms.
- qcom,userspace-watchdog :
        (boolean) Allow enabling the userspace-watchdog feature. This feature
        requires userspace to pet the watchdog every qcom,pet-time interval
        in addition to the existing kernel-level checks.
        This feature is supported through device sysfs files.

Optional properties:

- qcom,ipi-ping : (boolean) send keep alive ping to other cpus if present
- qcom,wakeup-enable : (boolean) enable non secure watchdog to freeze / unfreeze
                        automatically across suspend / resume path.

Example:

        qcom,wdt@f9017000 {
                compatible = "qcom,msm-watchdog";
                reg = <0xf9017000 0x1000>;
                reg-names = "wdt-base";
                interrupts = <0 3 0>, <0 4 0>;
                qcom,bark-time = <11000>;
                qcom,pet-time = <10000>;
                qcom,ipi-ping;
                qcom,wakeup-enable;
        };
+8 −0
Original line number Diff line number Diff line
@@ -240,4 +240,12 @@ config MSM_CORE_HANG_DETECT
	  for hang. By using sysfs entries core hang detection can be
	  enabled or disabled dynamically.

config QCOM_WATCHDOG_V2
	bool "Qualcomm Watchdog Support"
	depends on ARCH_QCOM
	help
	  This enables the watchdog module. It causes kernel panic if the
	  watchdog times out. It allows for detection of cpu hangs and
	  deadlocks. It does not run during the bootup process, so it will
	  not catch any early lockups.
endmenu
+1 −0
Original line number Diff line number Diff line
@@ -33,3 +33,4 @@ ifdef CONFIG_MSM_SUBSYSTEM_RESTART
endif
obj-$(CONFIG_QCOM_EUD) += eud.o
obj-$(CONFIG_SOC_BUS) += socinfo.o
obj-$(CONFIG_QCOM_WATCHDOG_V2) += watchdog_v2.o
+879 −0

File added.

Preview size limit exceeded, changes collapsed.

+21 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
 */

#ifndef _ASM_ARCH_MSM_WATCHDOG_H_
#define _ASM_ARCH_MSM_WATCHDOG_H_

#ifdef CONFIG_QCOM_FORCE_WDOG_BITE_ON_PANIC
#define WDOG_BITE_ON_PANIC 1
#else
#define WDOG_BITE_ON_PANIC 0
#endif

#ifdef CONFIG_QCOM_WATCHDOG_V2
void msm_trigger_wdog_bite(void);
#else
static inline void msm_trigger_wdog_bite(void) { }
#endif

#endif