diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-02-11 10:11:00 +0000 |
---|---|---|
committer | Rafał Miłecki <zajec5@gmail.com> | 2015-02-11 10:11:00 +0000 |
commit | 6bafb2f810694619ba65317cd349af3b1ca97617 (patch) | |
tree | defc7aa2e4c43e5c7f2945e1acbca9ff3a508d5e /target | |
parent | 658a33688e8a250b4ca205003ff57c29abee0724 (diff) | |
download | mtk-20170518-6bafb2f810694619ba65317cd349af3b1ca97617.zip mtk-20170518-6bafb2f810694619ba65317cd349af3b1ca97617.tar.gz mtk-20170518-6bafb2f810694619ba65317cd349af3b1ca97617.tar.bz2 |
bcm53xx: backport bcm47xx_wdt changes to 3.18 to use this driver in future
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 44390
Diffstat (limited to 'target')
3 files changed, 116 insertions, 0 deletions
diff --git a/target/linux/bcm53xx/config-3.18 b/target/linux/bcm53xx/config-3.18 index d08e667..bf2b8fe 100644 --- a/target/linux/bcm53xx/config-3.18 +++ b/target/linux/bcm53xx/config-3.18 @@ -52,6 +52,7 @@ CONFIG_B53=y CONFIG_B53_SRAB_DRIVER=y CONFIG_BCM47XX_NVRAM=y CONFIG_BCM47XX_SPROM=y +# CONFIG_BCM47XX_WDT is not set CONFIG_BCMA=y CONFIG_BCMA_BLOCKIO=y CONFIG_BCMA_DEBUG=y diff --git a/target/linux/bcm53xx/patches-3.18/080-watchdog-bcm47xx_wdt.c-add-restart-handler-support.patch b/target/linux/bcm53xx/patches-3.18/080-watchdog-bcm47xx_wdt.c-add-restart-handler-support.patch new file mode 100644 index 0000000..c15114c --- /dev/null +++ b/target/linux/bcm53xx/patches-3.18/080-watchdog-bcm47xx_wdt.c-add-restart-handler-support.patch @@ -0,0 +1,81 @@ +From 823769d2e6622a48276bee35b2dad5ba77cbdc25 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> +Date: Sun, 25 Jan 2015 11:40:57 +0100 +Subject: [PATCH] watchdog: bcm47xx_wdt.c: add restart handler support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Just like in case of other watchdog drivers, use the new kernel core +API to provide restart support. + +Signed-off-by: Rafał Miłecki <zajec5@gmail.com> +Reviewed-by: Guenter Roeck <linux@roeck-us.net> +Signed-off-by: Wim Van Sebroeck <wim@iguana.be> +--- + drivers/watchdog/bcm47xx_wdt.c | 21 ++++++++++++++++++++- + include/linux/bcm47xx_wdt.h | 1 + + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/drivers/watchdog/bcm47xx_wdt.c b/drivers/watchdog/bcm47xx_wdt.c +index 9816485..b28a072 100644 +--- a/drivers/watchdog/bcm47xx_wdt.c ++++ b/drivers/watchdog/bcm47xx_wdt.c +@@ -169,6 +169,17 @@ static int bcm47xx_wdt_notify_sys(struct notifier_block *this, + return NOTIFY_DONE; + } + ++static int bcm47xx_wdt_restart(struct notifier_block *this, unsigned long mode, ++ void *cmd) ++{ ++ struct bcm47xx_wdt *wdt; ++ ++ wdt = container_of(this, struct bcm47xx_wdt, restart_handler); ++ wdt->timer_set(wdt, 1); ++ ++ return NOTIFY_DONE; ++} ++ + static struct watchdog_ops bcm47xx_wdt_soft_ops = { + .owner = THIS_MODULE, + .start = bcm47xx_wdt_soft_start, +@@ -209,15 +220,23 @@ static int bcm47xx_wdt_probe(struct platform_device *pdev) + if (ret) + goto err_timer; + +- ret = watchdog_register_device(&wdt->wdd); ++ wdt->restart_handler.notifier_call = &bcm47xx_wdt_restart; ++ wdt->restart_handler.priority = 64; ++ ret = register_restart_handler(&wdt->restart_handler); + if (ret) + goto err_notifier; + ++ ret = watchdog_register_device(&wdt->wdd); ++ if (ret) ++ goto err_handler; ++ + dev_info(&pdev->dev, "BCM47xx Watchdog Timer enabled (%d seconds%s%s)\n", + timeout, nowayout ? ", nowayout" : "", + soft ? ", Software Timer" : ""); + return 0; + ++err_handler: ++ unregister_restart_handler(&wdt->restart_handler); + err_notifier: + unregister_reboot_notifier(&wdt->notifier); + err_timer: +diff --git a/include/linux/bcm47xx_wdt.h b/include/linux/bcm47xx_wdt.h +index b708786..5582c21 100644 +--- a/include/linux/bcm47xx_wdt.h ++++ b/include/linux/bcm47xx_wdt.h +@@ -16,6 +16,7 @@ struct bcm47xx_wdt { + + struct watchdog_device wdd; + struct notifier_block notifier; ++ struct notifier_block restart_handler; + + struct timer_list soft_timer; + atomic_t soft_ticks; +-- +1.8.4.5 + diff --git a/target/linux/bcm53xx/patches-3.18/081-watchdog-bcm47xx_wdt.c-allow-enabling-on-BCM5301X-ar.patch b/target/linux/bcm53xx/patches-3.18/081-watchdog-bcm47xx_wdt.c-allow-enabling-on-BCM5301X-ar.patch new file mode 100644 index 0000000..890b7cf --- /dev/null +++ b/target/linux/bcm53xx/patches-3.18/081-watchdog-bcm47xx_wdt.c-allow-enabling-on-BCM5301X-ar.patch @@ -0,0 +1,34 @@ +From b08c144e3a1089cdb725e393fa4f68f83a73e31b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> +Date: Sat, 7 Feb 2015 18:04:10 +0100 +Subject: [PATCH] watchdog: bcm47xx_wdt.c: allow enabling on BCM5301X arch +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +BCM5301X (ARCH_BCM_5301X) is a new Broadcom architecture using the same +SoC bus driver (bcma) as BCM47XX but based on ARM instead of MIPS. + +Signed-off-by: Rafał Miłecki <zajec5@gmail.com> +Reviewed-by: Guenter Roeck <linux@roeck-us.net> +Signed-off-by: Wim Van Sebroeck <wim@iguana.be> +--- + drivers/watchdog/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig +index 2aaef7b..ca6c949 100644 +--- a/drivers/watchdog/Kconfig ++++ b/drivers/watchdog/Kconfig +@@ -1113,7 +1113,7 @@ config ATH79_WDT + + config BCM47XX_WDT + tristate "Broadcom BCM47xx Watchdog Timer" +- depends on BCM47XX ++ depends on BCM47XX || ARCH_BCM_5301X + select WATCHDOG_CORE + help + Hardware driver for the Broadcom BCM47xx Watchdog Timer. +-- +1.8.4.5 + |