From ac6fc78aeea80453f43dd5e32ebcaf975506d24d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 6 Nov 2018 13:39:40 +0100 Subject: [PATCH] mt7603: add debugfs file to trigger watchdog resets Makes it easier to verify that the reset code is working properly Signed-off-by: Felix Fietkau --- mt7603/debugfs.c | 1 + mt7603/mac.c | 7 ++++++- mt7603/mt7603.h | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/mt7603/debugfs.c b/mt7603/debugfs.c index f517c57d..25f1a035 100644 --- a/mt7603/debugfs.c +++ b/mt7603/debugfs.c @@ -47,5 +47,6 @@ void mt7603_init_debugfs(struct mt7603_dev *dev) if (!dir) return; + debugfs_create_u32("reset_test", 0600, dir, &dev->reset_test); debugfs_create_devm_seqfile(dev->mt76.dev, "reset", dir, mt7603_reset_read); } diff --git a/mt7603/mac.c b/mt7603/mac.c index 82e21325..644e9075 100644 --- a/mt7603/mac.c +++ b/mt7603/mac.c @@ -1265,6 +1265,11 @@ mt7603_watchdog_check(struct mt7603_dev *dev, u8 *counter, enum mt7603_reset_cause cause, bool (*check)(struct mt7603_dev *dev)) { + if (dev->reset_test == cause + 1) { + dev->reset_test = 0; + goto trigger; + } + if (check) { if (!check(dev) && *counter < MT7603_WATCHDOG_TIMEOUT) { *counter = 0; @@ -1276,7 +1281,7 @@ mt7603_watchdog_check(struct mt7603_dev *dev, u8 *counter, if (*counter < MT7603_WATCHDOG_TIMEOUT) return false; - +trigger: dev->reset_cause[cause]++; return true; } diff --git a/mt7603/mt7603.h b/mt7603/mt7603.h index 9041f1b9..f8b515b1 100644 --- a/mt7603/mt7603.h +++ b/mt7603/mt7603.h @@ -127,6 +127,8 @@ struct mt7603_dev { u16 tx_dma_idx[4]; u16 rx_dma_idx; + u32 reset_test; + unsigned int reset_cause[__RESET_CAUSE_MAX]; struct delayed_work mac_work;