[meta-freescale] [3rdparty][PATCH] linux-advantech: Add linux kernel patch for external WDOG_B support

Ken Lin yungching0725 at gmail.com
Fri Sep 15 14:55:54 PDT 2017


Update linux kernel patch and recipe to support external WDOG_B
on imx6q-dms-ba16 platform.

Signed-off-by: Ken Lin <yungching0725 at gmail.com>
---
 ...16-watchdog-enable-external-wdog_b-signal.patch | 89 ++++++++++++++++++++++
 recipes-kernel/linux/linux-advantech_4.1.bb        |  1 +
 2 files changed, 90 insertions(+)
 create mode 100644 recipes-kernel/linux/linux-advantech-4.1/0011-dms-ba16-watchdog-enable-external-wdog_b-signal.patch

diff --git a/recipes-kernel/linux/linux-advantech-4.1/0011-dms-ba16-watchdog-enable-external-wdog_b-signal.patch b/recipes-kernel/linux/linux-advantech-4.1/0011-dms-ba16-watchdog-enable-external-wdog_b-signal.patch
new file mode 100644
index 0000000..dcb4bad
--- /dev/null
+++ b/recipes-kernel/linux/linux-advantech-4.1/0011-dms-ba16-watchdog-enable-external-wdog_b-signal.patch
@@ -0,0 +1,89 @@
+From d9ff4244846537ccff192c8d10cc5a389193143a Mon Sep 17 00:00:00 2001
+From: Ken Lin <yungching0725 at gmail.com>
+Date: Thu, 14 Sep 2017 07:51:52 +0800
+Subject: [PATCH] dms-ba16: watchdog: enable external wdog_b signal
+
+Enable the external wdog_b singal in Q7 to support the platform system reset
+
+Signed-off-by: Ken Lin <yungching0725 at gmail.com>
+---
+ arch/arm/boot/dts/imx6q-dms-ba16.dts | 14 +++++++++++++-
+ drivers/watchdog/imx2_wdt.c          | 12 ++++++++++--
+ 2 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/boot/dts/imx6q-dms-ba16.dts b/arch/arm/boot/dts/imx6q-dms-ba16.dts
+index 570e4ab5c531..154aa77e4c91 100644
+--- a/arch/arm/boot/dts/imx6q-dms-ba16.dts
++++ b/arch/arm/boot/dts/imx6q-dms-ba16.dts
+@@ -466,7 +466,6 @@
+ 				MX6QDL_PAD_NANDF_D7__GPIO2_IO07 0x80000000	/* GPIO7 */
+ 				MX6QDL_PAD_NANDF_CLE__GPIO6_IO07 0x80000000	/* CAM_PWDN */
+ 				MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000	/* CAM_RST */
+-				MX6QDL_PAD_GPIO_9__WDOG1_B 0x80000000		/* Watchdog out */
+ 				MX6QDL_PAD_GPIO_16__GPIO7_IO11   0x80000000	/* HUB_RESET */
+ 				MX6QDL_PAD_GPIO_18__GPIO7_IO13   0x80000000	/* PMIC Interrupt */
+ 				MX6QDL_PAD_GPIO_19__GPIO4_IO05   0x80000000	/* AR8033 Interrupt */
+@@ -666,6 +665,13 @@
+ 			>;
+ 		};
+ 	};
++	wdog {
++		pinctrl_wdog: wdoggrp {
++			fsl,pins = <
++				MX6QDL_PAD_GPIO_9__WDOG1_B 0x1b0b0		/* Watchdog out */
++			>;
++		};
++	};
+ };
+ 
+ &ldb {
+@@ -797,3 +803,9 @@
+ 	fsl,receive-dpll-mode = <1>;
+ 	status = "okay";
+ };
++
++&wdog1 {
++	pinctrl-names = "default";
++	pinctrl-0 = <&pinctrl_wdog>;
++	fsl,wdog_b;
++};
+diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
+index 805df6b33625..decfef3ecd41 100644
+--- a/drivers/watchdog/imx2_wdt.c
++++ b/drivers/watchdog/imx2_wdt.c
+@@ -43,6 +43,8 @@
+ 
+ #define IMX2_WDT_WCR		0x00		/* Control Register */
+ #define IMX2_WDT_WCR_WT		(0xFF << 8)	/* -> Watchdog Timeout Field */
++#define IMX2_WDT_WCR_WDA	(1 << 5)	/* -> WDOG_B assertion */
++#define IMX2_WDT_WCR_SRS	(1 << 4)	/* -> Software Reset Signal */
+ #define IMX2_WDT_WCR_WRE	(1 << 3)	/* -> WDOG Reset Enable */
+ #define IMX2_WDT_WCR_WDE	(1 << 2)	/* -> Watchdog Enable */
+ #define IMX2_WDT_WCR_WDZST	(1 << 0)	/* -> Watchdog timer Suspend */
+@@ -102,7 +104,9 @@ static int imx2_restart_handler(struct notifier_block *this, unsigned long mode,
+ 						    restart_handler);
+ 	/* Assert WDOG_B signal */
+ 	if (wdev->wdog_b)
+-		wcr_enable = 0x14;
++		wcr_enable |= IMX2_WDT_WCR_SRS;
++	else
++		wcr_enable |= IMX2_WDT_WCR_WDA;
+ 
+ 	regmap_write(wdev->regmap, 0, wcr_enable);
+ 	/*
+@@ -133,7 +137,11 @@ static inline void imx2_wdt_setup(struct watchdog_device *wdog)
+ 	/* Strip the old watchdog Time-Out value */
+ 	val &= ~IMX2_WDT_WCR_WT;
+ 	/* Generate reset if WDOG times out */
+-	val &= ~IMX2_WDT_WCR_WRE;
++	if (!wdev->wdog_b)
++		val &= ~IMX2_WDT_WCR_WRE;
++	/* Or if external-reset assert WDOG_B reset only on time-out */
++	else
++		val |= IMX2_WDT_WCR_WRE;
+ 	/* Keep Watchdog Disabled */
+ 	val &= ~IMX2_WDT_WCR_WDE;
+ 	/* Set the watchdog's Time-Out value */
+-- 
+2.11.0
+
diff --git a/recipes-kernel/linux/linux-advantech_4.1.bb b/recipes-kernel/linux/linux-advantech_4.1.bb
index 635d29b..c46dd99 100644
--- a/recipes-kernel/linux/linux-advantech_4.1.bb
+++ b/recipes-kernel/linux/linux-advantech_4.1.bb
@@ -22,6 +22,7 @@ SRC_URI = "git://github.com/Freescale/linux-fslc.git;branch=${SRCBRANCH} \
            file://0008-da9063-Add-a-PMIC-qurk-to-support-system-suspend-res.patch \
            file://0009-mfd-da9063-Add-wakeup-source-support.patch \
            file://0010-ARM-dts-imx-Add-Q7-SUS_S3_OUT-control-support-during.patch \
+	   file://0011-dms-ba16-watchdog-enable-external-wdog_b-signal.patch \
            file://defconfig"
 
 COMPATIBLE_MACHINE = "(imx6q-dms-ba16)"
-- 
2.11.0



More information about the meta-freescale mailing list