
On 07.06.21 12:03, Lokesh Vutla wrote:
+Tom,
Hi Tom,
On 02/06/21 3:07 pm, Jan Kiszka wrote:
From: Jan Kiszka jan.kiszka@siemens.com
To avoid the need of extra boot scripting on AM65x for loading a watchdog firmware, add the required rproc init and loading logic for the first R5F core to the watchdog start handler. In case the R5F cluster is in lock-step mode, also initialize the second core. The firmware itself is embedded into U-Boot binary to ease access to it and ensure it is properly hashed in case of secure boot.
One possible firmware source is https://github.com/siemens/k3-rti-wdt.
Signed-off-by: Jan Kiszka jan.kiszka@siemens.com
drivers/watchdog/Kconfig | 20 ++++++++++++ drivers/watchdog/Makefile | 5 +++ drivers/watchdog/rti_wdt.c | 58 ++++++++++++++++++++++++++++++++++- drivers/watchdog/rti_wdt_fw.S | 20 ++++++++++++ 4 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 drivers/watchdog/rti_wdt_fw.S
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index f0ff2612a6..1a1fddfe9f 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -209,6 +209,26 @@ config WDT_K3_RTI Say Y here if you want to include support for the K3 watchdog timer (RTI module) available in the K3 generation of processors.
+if WDT_K3_RTI
+config WDT_K3_RTI_LOAD_FW
- bool "Load watchdog firmware"
- depends on REMOTEPROC
- help
Automatically load the specified firmware image into the MCU R5F
core 0. On the AM65x, this firmware is supposed to handle the expiry
of the watchdog timer, typically by resetting the system.
+config WDT_K3_RTI_FW_FILE
- string "Watchdog firmware image file"
- default "k3-rti-wdt.fw"
- depends on WDT_K3_RTI_LOAD_FW
- help
Firmware image to be embedded into U-Boot and loaded on watchdog
start.
I need your input on this proach. Is it okay to include the linker file unders drivers?
+endif
config WDT_SANDBOX bool "Enable Watchdog Timer support for Sandbox" depends on SANDBOX && WDT diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index 5c7ef593fe..5016ee4708 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile @@ -33,7 +33,12 @@ obj-$(CONFIG_WDT_OCTEONTX) += octeontx_wdt.o obj-$(CONFIG_WDT_OMAP3) += omap_wdt.o obj-$(CONFIG_WDT_SBSA) += sbsa_gwdt.o obj-$(CONFIG_WDT_K3_RTI) += rti_wdt.o +obj-$(CONFIG_WDT_K3_RTI_LOAD_FW) += rti_wdt_fw.o obj-$(CONFIG_WDT_SP805) += sp805_wdt.o obj-$(CONFIG_WDT_STM32MP) += stm32mp_wdt.o obj-$(CONFIG_WDT_TANGIER) += tangier_wdt.o obj-$(CONFIG_WDT_XILINX) += xilinx_wwdt.o
[...snip..]
timer_margin = timeout_ms * priv->clk_khz / 1000; timer_margin >>= WDT_PRELOAD_SHIFT; if (timer_margin > WDT_PRELOAD_MAX) diff --git a/drivers/watchdog/rti_wdt_fw.S b/drivers/watchdog/rti_wdt_fw.S new file mode 100644 index 0000000000..78d99ff9f2 --- /dev/null +++ b/drivers/watchdog/rti_wdt_fw.S
Isn't this usecase specific? IMHO, drivers might not be the right place. Did I misunderstand something?
It's specific to this driver - on a subset of supported hardware platforms, namely AM65x SR1.0.
Jan