* [PATCH 0/3] qcom watchdog fixes
@ 2016-06-27 23:26 Thomas Pedersen
2016-06-27 23:26 ` [PATCH 1/3] watchdog: qcom: update device tree bindings Thomas Pedersen
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-27 23:26 UTC (permalink / raw)
To: linux-watchdog; +Cc: Thomas Pedersen
Some boards (eg. qcom IPQ8064 based) Need these changes to avoid a spurious
watchdog reset.
Matthew McClintock (3):
watchdog: qcom: update device tree bindings
watchdog: qcom: add option for standalone watchdog not in timer block
watchdog: qcom: configure BARK time in addition to BITE time
.../devicetree/bindings/watchdog/qcom-wdt.txt | 5 +-
drivers/watchdog/qcom-wdt.c | 78 ++++++++++++++++------
2 files changed, 59 insertions(+), 24 deletions(-)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/3] watchdog: qcom: update device tree bindings
2016-06-27 23:26 [PATCH 0/3] qcom watchdog fixes Thomas Pedersen
@ 2016-06-27 23:26 ` Thomas Pedersen
2016-06-28 5:20 ` Guenter Roeck
2016-06-27 23:26 ` [PATCH 2/3] watchdog: qcom: add option for standalone watchdog not in timer block Thomas Pedersen
` (2 subsequent siblings)
3 siblings, 1 reply; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-27 23:26 UTC (permalink / raw)
To: linux-watchdog
Cc: Matthew McClintock, Wim Van Sebroeck, Guenter Roeck, Rob Herring,
Mark Rutland
From: Matthew McClintock <mmcclint@codeaurora.org>
Update the compatible string to align with driver
CC: linux-watchdog@vger.kernel.org
Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
---
Documentation/devicetree/bindings/watchdog/qcom-wdt.txt | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
index 4726924..60bb2f98 100644
--- a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
+++ b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
@@ -4,9 +4,8 @@ Qualcomm Krait Processor Sub-system (KPSS) Watchdog
Required properties :
- compatible : shall contain only one of the following:
- "qcom,kpss-wdt-msm8960"
- "qcom,kpss-wdt-apq8064"
- "qcom,kpss-wdt-ipq8064"
+ "qcom,kpss-timer"
+ "qcom,scss-timer"
- reg : shall contain base register location and length
- clocks : shall contain the input clock
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/3] watchdog: qcom: add option for standalone watchdog not in timer block
2016-06-27 23:26 [PATCH 0/3] qcom watchdog fixes Thomas Pedersen
2016-06-27 23:26 ` [PATCH 1/3] watchdog: qcom: update device tree bindings Thomas Pedersen
@ 2016-06-27 23:26 ` Thomas Pedersen
2016-06-28 5:23 ` Guenter Roeck
2016-06-27 23:26 ` [PATCH 3/3] watchdog: qcom: configure BARK time in addition to BITE time Thomas Pedersen
2016-06-28 5:31 ` [PATCH 0/3] qcom watchdog fixes Guenter Roeck
3 siblings, 1 reply; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-27 23:26 UTC (permalink / raw)
To: linux-watchdog; +Cc: Matthew McClintock, Wim Van Sebroeck, Guenter Roeck
From: Matthew McClintock <mmcclint@codeaurora.org>
Commit 0dfd582e026a ("watchdog: qcom: use timer devicetree binding") moved
to use the watchdog as a subset timer register block. Some devices have the
watchdog completely standalone with slightly different register offsets as
well so let's account for the differences here.
Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
---
drivers/watchdog/qcom-wdt.c | 73 ++++++++++++++++++++++++++++++++-------------
1 file changed, 52 insertions(+), 21 deletions(-)
diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c
index a043fa4..70e42ed 100644
--- a/drivers/watchdog/qcom-wdt.c
+++ b/drivers/watchdog/qcom-wdt.c
@@ -19,18 +19,40 @@
#include <linux/platform_device.h>
#include <linux/watchdog.h>
-#define WDT_RST 0x38
-#define WDT_EN 0x40
-#define WDT_STS 0x44
-#define WDT_BITE_TIME 0x5C
+enum wdt_reg {
+ WDT_RST,
+ WDT_EN,
+ WDT_STS,
+ WDT_BITE_TIME,
+};
+
+static const u32 reg_offset_data_apcs_tmr[] = {
+ [WDT_RST] = 0x38,
+ [WDT_EN] = 0x40,
+ [WDT_STS] = 0x44,
+ [WDT_BITE_TIME] = 0x5C,
+};
+
+static const u32 reg_offset_data_kpss[] = {
+ [WDT_RST] = 0x4,
+ [WDT_EN] = 0x8,
+ [WDT_STS] = 0xC,
+ [WDT_BITE_TIME] = 0x14,
+};
struct qcom_wdt {
struct watchdog_device wdd;
struct clk *clk;
unsigned long rate;
void __iomem *base;
+ const u32 *layout;
};
+static void __iomem *wdt_addr(struct qcom_wdt *wdt, enum wdt_reg reg)
+{
+ return wdt->base + wdt->layout[reg];
+}
+
static inline
struct qcom_wdt *to_qcom_wdt(struct watchdog_device *wdd)
{
@@ -41,10 +63,10 @@ static int qcom_wdt_start(struct watchdog_device *wdd)
{
struct qcom_wdt *wdt = to_qcom_wdt(wdd);
- writel(0, wdt->base + WDT_EN);
- writel(1, wdt->base + WDT_RST);
- writel(wdd->timeout * wdt->rate, wdt->base + WDT_BITE_TIME);
- writel(1, wdt->base + WDT_EN);
+ writel(0, wdt_addr(wdt, WDT_EN));
+ writel(1, wdt_addr(wdt, WDT_RST));
+ writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME));
+ writel(1, wdt_addr(wdt, WDT_EN));
return 0;
}
@@ -52,7 +74,7 @@ static int qcom_wdt_stop(struct watchdog_device *wdd)
{
struct qcom_wdt *wdt = to_qcom_wdt(wdd);
- writel(0, wdt->base + WDT_EN);
+ writel(0, wdt_addr(wdt, WDT_EN));
return 0;
}
@@ -60,7 +82,7 @@ static int qcom_wdt_ping(struct watchdog_device *wdd)
{
struct qcom_wdt *wdt = to_qcom_wdt(wdd);
- writel(1, wdt->base + WDT_RST);
+ writel(1, wdt_addr(wdt, WDT_RST));
return 0;
}
@@ -83,10 +105,10 @@ static int qcom_wdt_restart(struct watchdog_device *wdd, unsigned long action,
*/
timeout = 128 * wdt->rate / 1000;
- writel(0, wdt->base + WDT_EN);
- writel(1, wdt->base + WDT_RST);
- writel(timeout, wdt->base + WDT_BITE_TIME);
- writel(1, wdt->base + WDT_EN);
+ writel(0, wdt_addr(wdt, WDT_EN));
+ writel(1, wdt_addr(wdt, WDT_RST));
+ writel(timeout, wdt_addr(wdt, WDT_BITE_TIME));
+ writel(1, wdt_addr(wdt, WDT_EN));
/*
* Actually make sure the above sequence hits hardware before sleeping.
@@ -114,14 +136,29 @@ static const struct watchdog_info qcom_wdt_info = {
.identity = KBUILD_MODNAME,
};
+static const struct of_device_id qcom_wdt_of_table[] = {
+ { .compatible = "qcom,kpss-timer", .data = reg_offset_data_apcs_tmr },
+ { .compatible = "qcom,scss-timer", .data = reg_offset_data_apcs_tmr },
+ { .compatible = "qcom,kpss-standalone", .data = ®_offset_data_kpss},
+ { },
+};
+MODULE_DEVICE_TABLE(of, qcom_wdt_of_table);
+
static int qcom_wdt_probe(struct platform_device *pdev)
{
struct qcom_wdt *wdt;
struct resource *res;
struct device_node *np = pdev->dev.of_node;
+ const struct of_device_id *match;
u32 percpu_offset;
int ret;
+ match = of_match_node(qcom_wdt_of_table, np);
+ if (!match) {
+ dev_err(&pdev->dev, "Unsupported QCOM WDT module\n");
+ return -ENODEV;
+ }
+
wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL);
if (!wdt)
return -ENOMEM;
@@ -172,6 +209,7 @@ static int qcom_wdt_probe(struct platform_device *pdev)
wdt->wdd.min_timeout = 1;
wdt->wdd.max_timeout = 0x10000000U / wdt->rate;
wdt->wdd.parent = &pdev->dev;
+ wdt->layout = match->data;
if (readl(wdt->base + WDT_STS) & 1)
wdt->wdd.bootstatus = WDIOF_CARDRESET;
@@ -207,13 +245,6 @@ static int qcom_wdt_remove(struct platform_device *pdev)
return 0;
}
-static const struct of_device_id qcom_wdt_of_table[] = {
- { .compatible = "qcom,kpss-timer" },
- { .compatible = "qcom,scss-timer" },
- { },
-};
-MODULE_DEVICE_TABLE(of, qcom_wdt_of_table);
-
static struct platform_driver qcom_watchdog_driver = {
.probe = qcom_wdt_probe,
.remove = qcom_wdt_remove,
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 3/3] watchdog: qcom: configure BARK time in addition to BITE time
2016-06-27 23:26 [PATCH 0/3] qcom watchdog fixes Thomas Pedersen
2016-06-27 23:26 ` [PATCH 1/3] watchdog: qcom: update device tree bindings Thomas Pedersen
2016-06-27 23:26 ` [PATCH 2/3] watchdog: qcom: add option for standalone watchdog not in timer block Thomas Pedersen
@ 2016-06-27 23:26 ` Thomas Pedersen
2016-06-28 5:26 ` Guenter Roeck
2016-06-28 5:31 ` [PATCH 0/3] qcom watchdog fixes Guenter Roeck
3 siblings, 1 reply; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-27 23:26 UTC (permalink / raw)
To: linux-watchdog; +Cc: Matthew McClintock, Wim Van Sebroeck, Guenter Roeck
From: Matthew McClintock <mmcclint@codeaurora.org>
For certain parts and some versions of TZ, TZ will reset the chip
when a BARK is triggered even though it was not configured here. So
by default let's configure this BARK time as well.
Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
---
drivers/watchdog/qcom-wdt.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c
index 70e42ed..e2ad6e1 100644
--- a/drivers/watchdog/qcom-wdt.c
+++ b/drivers/watchdog/qcom-wdt.c
@@ -23,6 +23,7 @@ enum wdt_reg {
WDT_RST,
WDT_EN,
WDT_STS,
+ WDT_BARK_TIME,
WDT_BITE_TIME,
};
@@ -30,6 +31,7 @@ static const u32 reg_offset_data_apcs_tmr[] = {
[WDT_RST] = 0x38,
[WDT_EN] = 0x40,
[WDT_STS] = 0x44,
+ [WDT_BARK_TIME] = 0x4C,
[WDT_BITE_TIME] = 0x5C,
};
@@ -37,6 +39,7 @@ static const u32 reg_offset_data_kpss[] = {
[WDT_RST] = 0x4,
[WDT_EN] = 0x8,
[WDT_STS] = 0xC,
+ [WDT_BARK_TIME] = 0x10,
[WDT_BITE_TIME] = 0x14,
};
@@ -65,6 +68,7 @@ static int qcom_wdt_start(struct watchdog_device *wdd)
writel(0, wdt_addr(wdt, WDT_EN));
writel(1, wdt_addr(wdt, WDT_RST));
+ writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BARK_TIME));
writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME));
writel(1, wdt_addr(wdt, WDT_EN));
return 0;
@@ -107,6 +111,7 @@ static int qcom_wdt_restart(struct watchdog_device *wdd, unsigned long action,
writel(0, wdt_addr(wdt, WDT_EN));
writel(1, wdt_addr(wdt, WDT_RST));
+ writel(timeout, wdt_addr(wdt, WDT_BARK_TIME));
writel(timeout, wdt_addr(wdt, WDT_BITE_TIME));
writel(1, wdt_addr(wdt, WDT_EN));
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] watchdog: qcom: update device tree bindings
2016-06-27 23:26 ` [PATCH 1/3] watchdog: qcom: update device tree bindings Thomas Pedersen
@ 2016-06-28 5:20 ` Guenter Roeck
2016-06-28 17:17 ` Thomas Pedersen
0 siblings, 1 reply; 12+ messages in thread
From: Guenter Roeck @ 2016-06-28 5:20 UTC (permalink / raw)
To: Thomas Pedersen, linux-watchdog
Cc: Matthew McClintock, Wim Van Sebroeck, Rob Herring, Mark Rutland
On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
> From: Matthew McClintock <mmcclint@codeaurora.org>
>
> Update the compatible string to align with driver
>
> CC: linux-watchdog@vger.kernel.org
> Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
> ---
> Documentation/devicetree/bindings/watchdog/qcom-wdt.txt | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> index 4726924..60bb2f98 100644
> --- a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> +++ b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> @@ -4,9 +4,8 @@ Qualcomm Krait Processor Sub-system (KPSS) Watchdog
> Required properties :
> - compatible : shall contain only one of the following:
>
> - "qcom,kpss-wdt-msm8960"
> - "qcom,kpss-wdt-apq8064"
> - "qcom,kpss-wdt-ipq8064"
> + "qcom,kpss-timer"
> + "qcom,scss-timer"
>
> - reg : shall contain base register location and length
> - clocks : shall contain the input clock
>
Rob's earlier feedback to the same patch you had submitted in March:
"Keep the SoC specific ones even if they are not used. The DTS should
have both strings."
Guenter
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/3] watchdog: qcom: add option for standalone watchdog not in timer block
2016-06-27 23:26 ` [PATCH 2/3] watchdog: qcom: add option for standalone watchdog not in timer block Thomas Pedersen
@ 2016-06-28 5:23 ` Guenter Roeck
0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2016-06-28 5:23 UTC (permalink / raw)
To: Thomas Pedersen, linux-watchdog; +Cc: Matthew McClintock, Wim Van Sebroeck
On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
> From: Matthew McClintock <mmcclint@codeaurora.org>
>
> Commit 0dfd582e026a ("watchdog: qcom: use timer devicetree binding") moved
> to use the watchdog as a subset timer register block. Some devices have the
> watchdog completely standalone with slightly different register offsets as
> well so let's account for the differences here.
>
> Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
> ---
> drivers/watchdog/qcom-wdt.c | 73 ++++++++++++++++++++++++++++++++-------------
> 1 file changed, 52 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c
> index a043fa4..70e42ed 100644
> --- a/drivers/watchdog/qcom-wdt.c
> +++ b/drivers/watchdog/qcom-wdt.c
> @@ -19,18 +19,40 @@
> #include <linux/platform_device.h>
> #include <linux/watchdog.h>
>
> -#define WDT_RST 0x38
> -#define WDT_EN 0x40
> -#define WDT_STS 0x44
> -#define WDT_BITE_TIME 0x5C
> +enum wdt_reg {
> + WDT_RST,
> + WDT_EN,
> + WDT_STS,
> + WDT_BITE_TIME,
> +};
> +
> +static const u32 reg_offset_data_apcs_tmr[] = {
> + [WDT_RST] = 0x38,
> + [WDT_EN] = 0x40,
> + [WDT_STS] = 0x44,
> + [WDT_BITE_TIME] = 0x5C,
> +};
> +
> +static const u32 reg_offset_data_kpss[] = {
> + [WDT_RST] = 0x4,
> + [WDT_EN] = 0x8,
> + [WDT_STS] = 0xC,
> + [WDT_BITE_TIME] = 0x14,
> +};
>
> struct qcom_wdt {
> struct watchdog_device wdd;
> struct clk *clk;
> unsigned long rate;
> void __iomem *base;
> + const u32 *layout;
> };
>
> +static void __iomem *wdt_addr(struct qcom_wdt *wdt, enum wdt_reg reg)
> +{
> + return wdt->base + wdt->layout[reg];
> +}
> +
> static inline
> struct qcom_wdt *to_qcom_wdt(struct watchdog_device *wdd)
> {
> @@ -41,10 +63,10 @@ static int qcom_wdt_start(struct watchdog_device *wdd)
> {
> struct qcom_wdt *wdt = to_qcom_wdt(wdd);
>
> - writel(0, wdt->base + WDT_EN);
> - writel(1, wdt->base + WDT_RST);
> - writel(wdd->timeout * wdt->rate, wdt->base + WDT_BITE_TIME);
> - writel(1, wdt->base + WDT_EN);
> + writel(0, wdt_addr(wdt, WDT_EN));
> + writel(1, wdt_addr(wdt, WDT_RST));
> + writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME));
> + writel(1, wdt_addr(wdt, WDT_EN));
> return 0;
> }
>
> @@ -52,7 +74,7 @@ static int qcom_wdt_stop(struct watchdog_device *wdd)
> {
> struct qcom_wdt *wdt = to_qcom_wdt(wdd);
>
> - writel(0, wdt->base + WDT_EN);
> + writel(0, wdt_addr(wdt, WDT_EN));
> return 0;
> }
>
> @@ -60,7 +82,7 @@ static int qcom_wdt_ping(struct watchdog_device *wdd)
> {
> struct qcom_wdt *wdt = to_qcom_wdt(wdd);
>
> - writel(1, wdt->base + WDT_RST);
> + writel(1, wdt_addr(wdt, WDT_RST));
> return 0;
> }
>
> @@ -83,10 +105,10 @@ static int qcom_wdt_restart(struct watchdog_device *wdd, unsigned long action,
> */
> timeout = 128 * wdt->rate / 1000;
>
> - writel(0, wdt->base + WDT_EN);
> - writel(1, wdt->base + WDT_RST);
> - writel(timeout, wdt->base + WDT_BITE_TIME);
> - writel(1, wdt->base + WDT_EN);
> + writel(0, wdt_addr(wdt, WDT_EN));
> + writel(1, wdt_addr(wdt, WDT_RST));
> + writel(timeout, wdt_addr(wdt, WDT_BITE_TIME));
> + writel(1, wdt_addr(wdt, WDT_EN));
>
> /*
> * Actually make sure the above sequence hits hardware before sleeping.
> @@ -114,14 +136,29 @@ static const struct watchdog_info qcom_wdt_info = {
> .identity = KBUILD_MODNAME,
> };
>
> +static const struct of_device_id qcom_wdt_of_table[] = {
> + { .compatible = "qcom,kpss-timer", .data = reg_offset_data_apcs_tmr },
> + { .compatible = "qcom,scss-timer", .data = reg_offset_data_apcs_tmr },
> + { .compatible = "qcom,kpss-standalone", .data = ®_offset_data_kpss},
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, qcom_wdt_of_table);
> +
> static int qcom_wdt_probe(struct platform_device *pdev)
> {
> struct qcom_wdt *wdt;
> struct resource *res;
> struct device_node *np = pdev->dev.of_node;
> + const struct of_device_id *match;
> u32 percpu_offset;
> int ret;
>
> + match = of_match_node(qcom_wdt_of_table, np);
> + if (!match) {
> + dev_err(&pdev->dev, "Unsupported QCOM WDT module\n");
> + return -ENODEV;
> + }
> +
> wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL);
> if (!wdt)
> return -ENOMEM;
> @@ -172,6 +209,7 @@ static int qcom_wdt_probe(struct platform_device *pdev)
> wdt->wdd.min_timeout = 1;
> wdt->wdd.max_timeout = 0x10000000U / wdt->rate;
> wdt->wdd.parent = &pdev->dev;
> + wdt->layout = match->data;
>
> if (readl(wdt->base + WDT_STS) & 1)
> wdt->wdd.bootstatus = WDIOF_CARDRESET;
> @@ -207,13 +245,6 @@ static int qcom_wdt_remove(struct platform_device *pdev)
> return 0;
> }
>
> -static const struct of_device_id qcom_wdt_of_table[] = {
> - { .compatible = "qcom,kpss-timer" },
> - { .compatible = "qcom,scss-timer" },
> - { },
> -};
> -MODULE_DEVICE_TABLE(of, qcom_wdt_of_table);
> -
Earlier comment from Stephen Boyd:
Leave this here and use of_device_get_match_data() in probe
instead.
> static struct platform_driver qcom_watchdog_driver = {
> .probe = qcom_wdt_probe,
> .remove = qcom_wdt_remove,
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] watchdog: qcom: configure BARK time in addition to BITE time
2016-06-27 23:26 ` [PATCH 3/3] watchdog: qcom: configure BARK time in addition to BITE time Thomas Pedersen
@ 2016-06-28 5:26 ` Guenter Roeck
0 siblings, 0 replies; 12+ messages in thread
From: Guenter Roeck @ 2016-06-28 5:26 UTC (permalink / raw)
To: Thomas Pedersen, linux-watchdog; +Cc: Matthew McClintock, Wim Van Sebroeck
On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
> From: Matthew McClintock <mmcclint@codeaurora.org>
>
> For certain parts and some versions of TZ, TZ will reset the chip
> when a BARK is triggered even though it was not configured here. So
> by default let's configure this BARK time as well.
>
> Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
Seems to be identical to the earlier version of the same patch, which
already had my
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/watchdog/qcom-wdt.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c
> index 70e42ed..e2ad6e1 100644
> --- a/drivers/watchdog/qcom-wdt.c
> +++ b/drivers/watchdog/qcom-wdt.c
> @@ -23,6 +23,7 @@ enum wdt_reg {
> WDT_RST,
> WDT_EN,
> WDT_STS,
> + WDT_BARK_TIME,
> WDT_BITE_TIME,
> };
>
> @@ -30,6 +31,7 @@ static const u32 reg_offset_data_apcs_tmr[] = {
> [WDT_RST] = 0x38,
> [WDT_EN] = 0x40,
> [WDT_STS] = 0x44,
> + [WDT_BARK_TIME] = 0x4C,
> [WDT_BITE_TIME] = 0x5C,
> };
>
> @@ -37,6 +39,7 @@ static const u32 reg_offset_data_kpss[] = {
> [WDT_RST] = 0x4,
> [WDT_EN] = 0x8,
> [WDT_STS] = 0xC,
> + [WDT_BARK_TIME] = 0x10,
> [WDT_BITE_TIME] = 0x14,
> };
>
> @@ -65,6 +68,7 @@ static int qcom_wdt_start(struct watchdog_device *wdd)
>
> writel(0, wdt_addr(wdt, WDT_EN));
> writel(1, wdt_addr(wdt, WDT_RST));
> + writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BARK_TIME));
> writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME));
> writel(1, wdt_addr(wdt, WDT_EN));
> return 0;
> @@ -107,6 +111,7 @@ static int qcom_wdt_restart(struct watchdog_device *wdd, unsigned long action,
>
> writel(0, wdt_addr(wdt, WDT_EN));
> writel(1, wdt_addr(wdt, WDT_RST));
> + writel(timeout, wdt_addr(wdt, WDT_BARK_TIME));
> writel(timeout, wdt_addr(wdt, WDT_BITE_TIME));
> writel(1, wdt_addr(wdt, WDT_EN));
>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/3] qcom watchdog fixes
2016-06-27 23:26 [PATCH 0/3] qcom watchdog fixes Thomas Pedersen
` (2 preceding siblings ...)
2016-06-27 23:26 ` [PATCH 3/3] watchdog: qcom: configure BARK time in addition to BITE time Thomas Pedersen
@ 2016-06-28 5:31 ` Guenter Roeck
2016-06-28 17:04 ` Thomas Pedersen
3 siblings, 1 reply; 12+ messages in thread
From: Guenter Roeck @ 2016-06-28 5:31 UTC (permalink / raw)
To: Thomas Pedersen, linux-watchdog
On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
> Some boards (eg. qcom IPQ8064 based) Need these changes to avoid a spurious
> watchdog reset.
>
> Matthew McClintock (3):
> watchdog: qcom: update device tree bindings
> watchdog: qcom: add option for standalone watchdog not in timer block
> watchdog: qcom: configure BARK time in addition to BITE time
>
> .../devicetree/bindings/watchdog/qcom-wdt.txt | 5 +-
> drivers/watchdog/qcom-wdt.c | 78 ++++++++++++++++------
> 2 files changed, 59 insertions(+), 24 deletions(-)
>
General comment: If you don't plan to address the comments made to
the previous submission, please at least let the reviewers know
what you are doing and why. Also, a note indicating that this
is a resend would be helpful for those who did not see the original
series.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/3] qcom watchdog fixes
2016-06-28 5:31 ` [PATCH 0/3] qcom watchdog fixes Guenter Roeck
@ 2016-06-28 17:04 ` Thomas Pedersen
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-28 17:04 UTC (permalink / raw)
To: Guenter Roeck; +Cc: linux-watchdog
Hi Guenter,
On 2016-06-27 22:31, Guenter Roeck wrote:
> On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
>> Some boards (eg. qcom IPQ8064 based) Need these changes to avoid a
>> spurious
>> watchdog reset.
>>
>> Matthew McClintock (3):
>> watchdog: qcom: update device tree bindings
>> watchdog: qcom: add option for standalone watchdog not in timer
>> block
>> watchdog: qcom: configure BARK time in addition to BITE time
>>
>> .../devicetree/bindings/watchdog/qcom-wdt.txt | 5 +-
>> drivers/watchdog/qcom-wdt.c | 78
>> ++++++++++++++++------
>> 2 files changed, 59 insertions(+), 24 deletions(-)
>>
>
> General comment: If you don't plan to address the comments made to
> the previous submission, please at least let the reviewers know
> what you are doing and why. Also, a note indicating that this
> is a resend would be helpful for those who did not see the original
> series.
Thanks, checking for earlier submissions slipped my mind. I'll address
your
comments in a v2.
--
thomas
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] watchdog: qcom: update device tree bindings
2016-06-28 5:20 ` Guenter Roeck
@ 2016-06-28 17:17 ` Thomas Pedersen
2016-06-28 17:24 ` Mark Rutland
0 siblings, 1 reply; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-28 17:17 UTC (permalink / raw)
To: Guenter Roeck
Cc: linux-watchdog, Matthew McClintock, Wim Van Sebroeck,
Rob Herring, Mark Rutland
On 2016-06-27 22:20, Guenter Roeck wrote:
> On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
>> From: Matthew McClintock <mmcclint@codeaurora.org>
>>
>> Update the compatible string to align with driver
>>
>> CC: linux-watchdog@vger.kernel.org
>> Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
>> ---
>> Documentation/devicetree/bindings/watchdog/qcom-wdt.txt | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> index 4726924..60bb2f98 100644
>> --- a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> +++ b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> @@ -4,9 +4,8 @@ Qualcomm Krait Processor Sub-system (KPSS) Watchdog
>> Required properties :
>> - compatible : shall contain only one of the following:
>>
>> - "qcom,kpss-wdt-msm8960"
>> - "qcom,kpss-wdt-apq8064"
>> - "qcom,kpss-wdt-ipq8064"
>> + "qcom,kpss-timer"
>> + "qcom,scss-timer"
>>
>> - reg : shall contain base register location and length
>> - clocks : shall contain the input clock
>>
>
> Rob's earlier feedback to the same patch you had submitted in March:
>
> "Keep the SoC specific ones even if they are not used. The DTS should
> have both strings."
Why would we add the SoC specific compatible strings to the DTS if
they're not
even used?
--
thomas
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] watchdog: qcom: update device tree bindings
2016-06-28 17:17 ` Thomas Pedersen
@ 2016-06-28 17:24 ` Mark Rutland
2016-06-28 17:34 ` Thomas Pedersen
0 siblings, 1 reply; 12+ messages in thread
From: Mark Rutland @ 2016-06-28 17:24 UTC (permalink / raw)
To: Thomas Pedersen
Cc: Guenter Roeck, linux-watchdog, Matthew McClintock,
Wim Van Sebroeck, Rob Herring
On Tue, Jun 28, 2016 at 10:17:32AM -0700, Thomas Pedersen wrote:
> On 2016-06-27 22:20, Guenter Roeck wrote:
> >On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
> >>From: Matthew McClintock <mmcclint@codeaurora.org>
> >>
> >>Update the compatible string to align with driver
> >>
> >>CC: linux-watchdog@vger.kernel.org
> >>Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
> >>---
> >> Documentation/devicetree/bindings/watchdog/qcom-wdt.txt | 5 ++---
> >> 1 file changed, 2 insertions(+), 3 deletions(-)
> >>
> >>diff --git
> >>a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> >>b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> >>index 4726924..60bb2f98 100644
> >>--- a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> >>+++ b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> >>@@ -4,9 +4,8 @@ Qualcomm Krait Processor Sub-system (KPSS) Watchdog
> >> Required properties :
> >> - compatible : shall contain only one of the following:
> >>
> >>- "qcom,kpss-wdt-msm8960"
> >>- "qcom,kpss-wdt-apq8064"
> >>- "qcom,kpss-wdt-ipq8064"
> >>+ "qcom,kpss-timer"
> >>+ "qcom,scss-timer"
> >>
> >> - reg : shall contain base register location and length
> >> - clocks : shall contain the input clock
> >>
> >
> >Rob's earlier feedback to the same patch you had submitted in March:
> >
> >"Keep the SoC specific ones even if they are not used. The DTS should
> >have both strings."
>
> Why would we add the SoC specific compatible strings to the DTS if
> they're not
> even used?
Because they might be in future, and having them present in existing
DTBs will make our lives easier. Otherwise, they cost very little.
Thanks,
Mark.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 1/3] watchdog: qcom: update device tree bindings
2016-06-28 17:24 ` Mark Rutland
@ 2016-06-28 17:34 ` Thomas Pedersen
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Pedersen @ 2016-06-28 17:34 UTC (permalink / raw)
To: Mark Rutland
Cc: Guenter Roeck, linux-watchdog, Matthew McClintock,
Wim Van Sebroeck, Rob Herring
On 2016-06-28 10:24, Mark Rutland wrote:
> On Tue, Jun 28, 2016 at 10:17:32AM -0700, Thomas Pedersen wrote:
>> On 2016-06-27 22:20, Guenter Roeck wrote:
>> >On 06/27/2016 04:26 PM, Thomas Pedersen wrote:
>> >>From: Matthew McClintock <mmcclint@codeaurora.org>
>> >>
>> >>Update the compatible string to align with driver
>> >>
>> >>CC: linux-watchdog@vger.kernel.org
>> >>Signed-off-by: Matthew McClintock <mmcclint@codeaurora.org>
>> >>---
>> >> Documentation/devicetree/bindings/watchdog/qcom-wdt.txt | 5 ++---
>> >> 1 file changed, 2 insertions(+), 3 deletions(-)
>> >>
>> >>diff --git
>> >>a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> >>b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> >>index 4726924..60bb2f98 100644
>> >>--- a/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> >>+++ b/Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
>> >>@@ -4,9 +4,8 @@ Qualcomm Krait Processor Sub-system (KPSS) Watchdog
>> >> Required properties :
>> >> - compatible : shall contain only one of the following:
>> >>
>> >>- "qcom,kpss-wdt-msm8960"
>> >>- "qcom,kpss-wdt-apq8064"
>> >>- "qcom,kpss-wdt-ipq8064"
>> >>+ "qcom,kpss-timer"
>> >>+ "qcom,scss-timer"
>> >>
>> >> - reg : shall contain base register location and length
>> >> - clocks : shall contain the input clock
>> >>
>> >
>> >Rob's earlier feedback to the same patch you had submitted in March:
>> >
>> >"Keep the SoC specific ones even if they are not used. The DTS should
>> >have both strings."
>>
>> Why would we add the SoC specific compatible strings to the DTS if
>> they're not
>> even used?
>
> Because they might be in future, and having them present in existing
> DTBs will make our lives easier. Otherwise, they cost very little.
Hm, ok.
--
thomas
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2016-06-28 17:34 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-27 23:26 [PATCH 0/3] qcom watchdog fixes Thomas Pedersen
2016-06-27 23:26 ` [PATCH 1/3] watchdog: qcom: update device tree bindings Thomas Pedersen
2016-06-28 5:20 ` Guenter Roeck
2016-06-28 17:17 ` Thomas Pedersen
2016-06-28 17:24 ` Mark Rutland
2016-06-28 17:34 ` Thomas Pedersen
2016-06-27 23:26 ` [PATCH 2/3] watchdog: qcom: add option for standalone watchdog not in timer block Thomas Pedersen
2016-06-28 5:23 ` Guenter Roeck
2016-06-27 23:26 ` [PATCH 3/3] watchdog: qcom: configure BARK time in addition to BITE time Thomas Pedersen
2016-06-28 5:26 ` Guenter Roeck
2016-06-28 5:31 ` [PATCH 0/3] qcom watchdog fixes Guenter Roeck
2016-06-28 17:04 ` Thomas Pedersen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.