2015-07-23 05:49:25

by Eddie Huang (黃智傑)

[permalink] [raw]
Subject: [PATCH v2 0/2] Add Mediatek watchdog suspend resume and shutdown

This series add Mediatek watchdog suspend, resume and shutdown support.
These patches are based on v4.2-rc1

Change in v2:
Use watchdog_active() to check whether watchdog been active.
Change to register suspend,resume function to dev_pm_ops

Greta Zhang (2):
watchdog: add wdt suspend/resume support
watchdog: add wdt shutdown callback to disable wdt if enabled

drivers/watchdog/mtk_wdt.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)

--
1.8.1.1.dirty


2015-07-23 05:49:30

by Eddie Huang (黃智傑)

[permalink] [raw]
Subject: [PATCH v2 1/2] watchdog: add wdt suspend/resume support

From: Greta Zhang <[email protected]>

add wdt driver suspend/resume support

Signed-off-by: Greta Zhang <[email protected]>
Signed-off-by: Roger Lu <[email protected]>
Signed-off-by: Eddie Huang <[email protected]>
---
drivers/watchdog/mtk_wdt.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c
index 938b987..056412c 100644
--- a/drivers/watchdog/mtk_wdt.c
+++ b/drivers/watchdog/mtk_wdt.c
@@ -221,17 +221,47 @@ static int mtk_wdt_remove(struct platform_device *pdev)
return 0;
}

+#ifdef CONFIG_PM_SLEEP
+static int mtk_wdt_suspend(struct device *dev)
+{
+ struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev);
+
+ if (watchdog_active(&mtk_wdt->wdt_dev))
+ mtk_wdt_stop(&mtk_wdt->wdt_dev);
+
+ return 0;
+}
+
+static int mtk_wdt_resume(struct device *dev)
+{
+ struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev);
+
+ if (watchdog_active(&mtk_wdt->wdt_dev)) {
+ mtk_wdt_start(&mtk_wdt->wdt_dev);
+ mtk_wdt_ping(&mtk_wdt->wdt_dev);
+ }
+
+ return 0;
+}
+#endif
+
static const struct of_device_id mtk_wdt_dt_ids[] = {
{ .compatible = "mediatek,mt6589-wdt" },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, mtk_wdt_dt_ids);

+static const struct dev_pm_ops mtk_wdt_pm_ops = {
+ SET_SYSTEM_SLEEP_PM_OPS(mtk_wdt_suspend,
+ mtk_wdt_resume)
+};
+
static struct platform_driver mtk_wdt_driver = {
.probe = mtk_wdt_probe,
.remove = mtk_wdt_remove,
.driver = {
.name = DRV_NAME,
+ .pm = &mtk_wdt_pm_ops,
.of_match_table = mtk_wdt_dt_ids,
},
};
--
1.8.1.1.dirty

2015-07-23 05:49:47

by Eddie Huang (黃智傑)

[permalink] [raw]
Subject: [PATCH v2 2/2] watchdog: add wdt shutdown callback to disable wdt if enabled

From: Greta Zhang <[email protected]>

Without .shutdown(), watchdog might reset the system during power off.
For example, if watchdog's timeout is set to 30s, then it is reset to
zero by mtk_wdt_ping(). During power off, no app will ping watchdog,
but watchdog is still running and may trigger reset.

Signed-off-by: Greta Zhang <[email protected]>
Signed-off-by: Eddie Huang <[email protected]>
---
drivers/watchdog/mtk_wdt.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c
index 056412c..6ad9df9 100644
--- a/drivers/watchdog/mtk_wdt.c
+++ b/drivers/watchdog/mtk_wdt.c
@@ -210,6 +210,14 @@ static int mtk_wdt_probe(struct platform_device *pdev)
return 0;
}

+static void mtk_wdt_shutdown(struct platform_device *pdev)
+{
+ struct mtk_wdt_dev *mtk_wdt = platform_get_drvdata(pdev);
+
+ if (watchdog_active(&mtk_wdt->wdt_dev))
+ mtk_wdt_stop(&mtk_wdt->wdt_dev);
+}
+
static int mtk_wdt_remove(struct platform_device *pdev)
{
struct mtk_wdt_dev *mtk_wdt = platform_get_drvdata(pdev);
@@ -259,6 +267,7 @@ static const struct dev_pm_ops mtk_wdt_pm_ops = {
static struct platform_driver mtk_wdt_driver = {
.probe = mtk_wdt_probe,
.remove = mtk_wdt_remove,
+ .shutdown = mtk_wdt_shutdown,
.driver = {
.name = DRV_NAME,
.pm = &mtk_wdt_pm_ops,
--
1.8.1.1.dirty

2015-07-23 16:11:16

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] watchdog: add wdt suspend/resume support

On 07/22/2015 10:49 PM, Eddie Huang wrote:
> From: Greta Zhang <[email protected]>
>
> add wdt driver suspend/resume support
>
> Signed-off-by: Greta Zhang <[email protected]>
> Signed-off-by: Roger Lu <[email protected]>
> Signed-off-by: Eddie Huang <[email protected]>


Subject line should identify the driver, ie mtk_wdt.
"wdt" doesn't really help.

Other than that,

Reviewed-by: Guenter Roeck <[email protected]>

Guenter

> ---
> drivers/watchdog/mtk_wdt.c | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c
> index 938b987..056412c 100644
> --- a/drivers/watchdog/mtk_wdt.c
> +++ b/drivers/watchdog/mtk_wdt.c
> @@ -221,17 +221,47 @@ static int mtk_wdt_remove(struct platform_device *pdev)
> return 0;
> }
>
> +#ifdef CONFIG_PM_SLEEP
> +static int mtk_wdt_suspend(struct device *dev)
> +{
> + struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev);
> +
> + if (watchdog_active(&mtk_wdt->wdt_dev))
> + mtk_wdt_stop(&mtk_wdt->wdt_dev);
> +
> + return 0;
> +}
> +
> +static int mtk_wdt_resume(struct device *dev)
> +{
> + struct mtk_wdt_dev *mtk_wdt = dev_get_drvdata(dev);
> +
> + if (watchdog_active(&mtk_wdt->wdt_dev)) {
> + mtk_wdt_start(&mtk_wdt->wdt_dev);
> + mtk_wdt_ping(&mtk_wdt->wdt_dev);
> + }
> +
> + return 0;
> +}
> +#endif
> +
> static const struct of_device_id mtk_wdt_dt_ids[] = {
> { .compatible = "mediatek,mt6589-wdt" },
> { /* sentinel */ }
> };
> MODULE_DEVICE_TABLE(of, mtk_wdt_dt_ids);
>
> +static const struct dev_pm_ops mtk_wdt_pm_ops = {
> + SET_SYSTEM_SLEEP_PM_OPS(mtk_wdt_suspend,
> + mtk_wdt_resume)
> +};
> +
> static struct platform_driver mtk_wdt_driver = {
> .probe = mtk_wdt_probe,
> .remove = mtk_wdt_remove,
> .driver = {
> .name = DRV_NAME,
> + .pm = &mtk_wdt_pm_ops,
> .of_match_table = mtk_wdt_dt_ids,
> },
> };
>

2015-07-23 16:13:05

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] watchdog: add wdt shutdown callback to disable wdt if enabled

On 07/22/2015 10:49 PM, Eddie Huang wrote:
> From: Greta Zhang <[email protected]>
>
> Without .shutdown(), watchdog might reset the system during power off.
> For example, if watchdog's timeout is set to 30s, then it is reset to
> zero by mtk_wdt_ping(). During power off, no app will ping watchdog,
> but watchdog is still running and may trigger reset.
>
> Signed-off-by: Greta Zhang <[email protected]>
> Signed-off-by: Eddie Huang <[email protected]>

Except for the subject line,

Reviewed-by: Guenter Roeck <[email protected]>

> ---
> drivers/watchdog/mtk_wdt.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c
> index 056412c..6ad9df9 100644
> --- a/drivers/watchdog/mtk_wdt.c
> +++ b/drivers/watchdog/mtk_wdt.c
> @@ -210,6 +210,14 @@ static int mtk_wdt_probe(struct platform_device *pdev)
> return 0;
> }
>
> +static void mtk_wdt_shutdown(struct platform_device *pdev)
> +{
> + struct mtk_wdt_dev *mtk_wdt = platform_get_drvdata(pdev);
> +
> + if (watchdog_active(&mtk_wdt->wdt_dev))
> + mtk_wdt_stop(&mtk_wdt->wdt_dev);
> +}
> +
> static int mtk_wdt_remove(struct platform_device *pdev)
> {
> struct mtk_wdt_dev *mtk_wdt = platform_get_drvdata(pdev);
> @@ -259,6 +267,7 @@ static const struct dev_pm_ops mtk_wdt_pm_ops = {
> static struct platform_driver mtk_wdt_driver = {
> .probe = mtk_wdt_probe,
> .remove = mtk_wdt_remove,
> + .shutdown = mtk_wdt_shutdown,
> .driver = {
> .name = DRV_NAME,
> .pm = &mtk_wdt_pm_ops,
>

2015-07-23 17:37:00

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] watchdog: add wdt suspend/resume support

On Thursday, July 23, 2015 01:49:10 PM Eddie Huang wrote:
> From: Greta Zhang <[email protected]>
>
> add wdt driver suspend/resume support
>
> Signed-off-by: Greta Zhang <[email protected]>
> Signed-off-by: Roger Lu <[email protected]>
> Signed-off-by: Eddie Huang <[email protected]>
> ---
> drivers/watchdog/mtk_wdt.c | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>

Acked-by: Matthias Brugger <[email protected]>

2015-07-23 17:37:11

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] watchdog: add wdt shutdown callback to disable wdt if enabled

On Thursday, July 23, 2015 01:49:11 PM Eddie Huang wrote:
> From: Greta Zhang <[email protected]>
>
> Without .shutdown(), watchdog might reset the system during power off.
> For example, if watchdog's timeout is set to 30s, then it is reset to
> zero by mtk_wdt_ping(). During power off, no app will ping watchdog,
> but watchdog is still running and may trigger reset.
>
> Signed-off-by: Greta Zhang <[email protected]>
> Signed-off-by: Eddie Huang <[email protected]>
> ---
> drivers/watchdog/mtk_wdt.c | 9 +++++++++
> 1 file changed, 9 insertions(+)

Acked-by: Matthias Brugger <[email protected]>

2015-08-11 04:29:04

by Daniel Kurtz

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] watchdog: add wdt shutdown callback to disable wdt if enabled

Hi Guenter, Matthias,

On Fri, Jul 24, 2015 at 1:37 AM, Matthias Brugger
<[email protected]> wrote:
> On Thursday, July 23, 2015 01:49:11 PM Eddie Huang wrote:
>> From: Greta Zhang <[email protected]>
>>
>> Without .shutdown(), watchdog might reset the system during power off.
>> For example, if watchdog's timeout is set to 30s, then it is reset to
>> zero by mtk_wdt_ping(). During power off, no app will ping watchdog,
>> but watchdog is still running and may trigger reset.
>>
>> Signed-off-by: Greta Zhang <[email protected]>
>> Signed-off-by: Eddie Huang <[email protected]>
>> ---
>> drivers/watchdog/mtk_wdt.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>
> Acked-by: Matthias Brugger <[email protected]>

is the plan to land these two patches via Guenter's watchdog tree [0]?
[0] git://http://www.linux-watchdog.org/linux-watchdog.git

In fact, though, I don't see any new patches in that repository.
The only branches I see are:
remotes/wdog/master b953c0d Linux 4.1
remotes/wdog/winbond-superio dc89871
Sample Winbond Super-I/O MFD device consisting out of a lowel-level
driver that does the detection and creates the platform-data and a
watchdog driver.

Am I looking in the wrong place?

-Dan

> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

2015-08-11 04:42:30

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] watchdog: add wdt shutdown callback to disable wdt if enabled

On 08/10/2015 09:28 PM, Daniel Kurtz wrote:
> Hi Guenter, Matthias,
>
> On Fri, Jul 24, 2015 at 1:37 AM, Matthias Brugger
> <[email protected]> wrote:
>> On Thursday, July 23, 2015 01:49:11 PM Eddie Huang wrote:
>>> From: Greta Zhang <[email protected]>
>>>
>>> Without .shutdown(), watchdog might reset the system during power off.
>>> For example, if watchdog's timeout is set to 30s, then it is reset to
>>> zero by mtk_wdt_ping(). During power off, no app will ping watchdog,
>>> but watchdog is still running and may trigger reset.
>>>
>>> Signed-off-by: Greta Zhang <[email protected]>
>>> Signed-off-by: Eddie Huang <[email protected]>
>>> ---
>>> drivers/watchdog/mtk_wdt.c | 9 +++++++++
>>> 1 file changed, 9 insertions(+)
>>
>> Acked-by: Matthias Brugger <[email protected]>
>
> is the plan to land these two patches via Guenter's watchdog tree [0]?
> [0] git://http://www.linux-watchdog.org/linux-watchdog.git
>
That is Wim's tree, and Wim is the maintainer ;-).

I have the patches queued in my tree [1], and I plan to send a pull request
to Wim this week or early next week.

Guenter

---
[1] https://git.kernel.org/cgit/linux/kernel/git/groeck/linux-staging.git/log/?h=watchdog-next

2015-08-11 07:39:17

by Daniel Kurtz

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] watchdog: add wdt shutdown callback to disable wdt if enabled

On Tue, Aug 11, 2015 at 12:42 PM, Guenter Roeck <[email protected]> wrote:
> On 08/10/2015 09:28 PM, Daniel Kurtz wrote:
>>
>> Hi Guenter, Matthias,
>>
>> On Fri, Jul 24, 2015 at 1:37 AM, Matthias Brugger
>> <[email protected]> wrote:
>>>
>>> On Thursday, July 23, 2015 01:49:11 PM Eddie Huang wrote:
>>>>
>>>> From: Greta Zhang <[email protected]>
>>>>
>>>> Without .shutdown(), watchdog might reset the system during power off.
>>>> For example, if watchdog's timeout is set to 30s, then it is reset to
>>>> zero by mtk_wdt_ping(). During power off, no app will ping watchdog,
>>>> but watchdog is still running and may trigger reset.
>>>>
>>>> Signed-off-by: Greta Zhang <[email protected]>
>>>> Signed-off-by: Eddie Huang <[email protected]>
>>>> ---
>>>> drivers/watchdog/mtk_wdt.c | 9 +++++++++
>>>> 1 file changed, 9 insertions(+)
>>>
>>>
>>> Acked-by: Matthias Brugger <[email protected]>
>>
>>
>> is the plan to land these two patches via Guenter's watchdog tree [0]?
>> [0] git://http://www.linux-watchdog.org/linux-watchdog.git
>>
> That is Wim's tree, and Wim is the maintainer ;-).

No wonder! Thanks for cluing me in.

> I have the patches queued in my tree [1], and I plan to send a pull request
> to Wim this week or early next week.

Great!

Thanks,
-Dan

> Guenter
>
> ---
> [1]
> https://git.kernel.org/cgit/linux/kernel/git/groeck/linux-staging.git/log/?h=watchdog-next
>