2023-05-11 12:33:20

by Keguang Zhang

[permalink] [raw]
Subject: [PATCH v2 0/2] Devicetree support for Loongson-1 watchdog

Add DT support and dt-binding document for Loongson-1 watchdog.

Changelog
V1 -> V2: Replaced the wildcard compatible string with specific ones
Use unevaluatedProperties instead of additionalProperties
(suggested by Krzysztof Kozlowski)
Use of_match_ptr() to aviod the build error when CONFIG_OF=n

Keguang Zhang (2):
dt-bindings: watchdog: Add Loongson-1 watchdog
watchdog: loongson1_wdt: Add DT support

.../bindings/watchdog/loongson,ls1x-wdt.yaml | 42 +++++++++++++++++++
drivers/watchdog/loongson1_wdt.c | 13 +++++-
2 files changed, 54 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml


base-commit: 10f67d1fd275528e62109de2ece26371833638e5
--
2.39.2



2023-05-11 12:35:13

by Keguang Zhang

[permalink] [raw]
Subject: [PATCH v2 1/2] dt-bindings: watchdog: Add Loongson-1 watchdog

Add devicetree binding document for Loongson-1 watchdog.

Signed-off-by: Keguang Zhang <[email protected]>
---
V1 -> V2: Replaced the wildcard compatible string with specific ones
Use unevaluatedProperties instead of additionalProperties
(suggested by Krzysztof Kozlowski)
---
.../bindings/watchdog/loongson,ls1x-wdt.yaml | 42 +++++++++++++++++++
1 file changed, 42 insertions(+)
create mode 100644 Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml

diff --git a/Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml b/Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml
new file mode 100644
index 000000000000..81690d4b62a6
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/loongson,ls1x-wdt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson-1 Watchdog Timer
+
+maintainers:
+ - Keguang Zhang <[email protected]>
+
+allOf:
+ - $ref: watchdog.yaml#
+
+properties:
+ compatible:
+ enum:
+ - loongson,ls1b-wdt
+ - loongson,ls1c-wdt
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - clocks
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/loongson,ls1x-clk.h>
+ watchdog: watchdog@1fe5c060 {
+ compatible = "loongson,ls1b-wdt";
+ reg = <0x1fe5c060 0xc>;
+
+ clocks = <&clkc LS1X_CLKID_APB>;
+ };
--
2.39.2


2023-05-11 12:36:18

by Keguang Zhang

[permalink] [raw]
Subject: [PATCH v2 2/2] watchdog: loongson1_wdt: Add DT support

This patch adds the of_match_table to enable DT support
of Loongson-1 watchdog driver.
And modify the parameter of devm_clk_get_enabled() accordingly.

Signed-off-by: Keguang Zhang <[email protected]>
---
V1 -> V2: Change the wildcard compatible string to specific ones
Use of_match_ptr() to aviod the build error when CONFIG_OF=n
---
drivers/watchdog/loongson1_wdt.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/loongson1_wdt.c b/drivers/watchdog/loongson1_wdt.c
index 3c651c50a98c..4ac7810a314d 100644
--- a/drivers/watchdog/loongson1_wdt.c
+++ b/drivers/watchdog/loongson1_wdt.c
@@ -5,6 +5,7 @@

#include <linux/clk.h>
#include <linux/module.h>
+#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/watchdog.h>

@@ -112,7 +113,7 @@ static int ls1x_wdt_probe(struct platform_device *pdev)
if (IS_ERR(drvdata->base))
return PTR_ERR(drvdata->base);

- drvdata->clk = devm_clk_get_enabled(dev, pdev->name);
+ drvdata->clk = devm_clk_get_enabled(dev, NULL);
if (IS_ERR(drvdata->clk))
return PTR_ERR(drvdata->clk);

@@ -144,10 +145,20 @@ static int ls1x_wdt_probe(struct platform_device *pdev)
return 0;
}

+#ifdef CONFIG_OF
+static const struct of_device_id ls1x_wdt_dt_ids[] = {
+ { .compatible = "loongson,ls1b-wdt", },
+ { .compatible = "loongson,ls1c-wdt", },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, ls1x_wdt_dt_ids);
+#endif
+
static struct platform_driver ls1x_wdt_driver = {
.probe = ls1x_wdt_probe,
.driver = {
.name = "ls1x-wdt",
+ .of_match_table = of_match_ptr(ls1x_wdt_dt_ids),
},
};

--
2.39.2


2023-05-11 15:08:32

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] dt-bindings: watchdog: Add Loongson-1 watchdog

On 11/05/2023 14:11, Keguang Zhang wrote:
> Add devicetree binding document for Loongson-1 watchdog.
>
> Signed-off-by: Keguang Zhang <[email protected]>
> ---
> V1 -> V2: Replaced the wildcard compatible string with specific ones
> Use unevaluatedProperties instead of additionalProperties
> (suggested by Krzysztof Kozlowski)
> ---

Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof


2023-05-12 12:40:46

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] dt-bindings: watchdog: Add Loongson-1 watchdog

On Thu, May 11, 2023 at 08:11:58PM +0800, Keguang Zhang wrote:
> Add devicetree binding document for Loongson-1 watchdog.
>
> Signed-off-by: Keguang Zhang <[email protected]>

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

> ---
> V1 -> V2: Replaced the wildcard compatible string with specific ones
> Use unevaluatedProperties instead of additionalProperties
> (suggested by Krzysztof Kozlowski)
> ---
> .../bindings/watchdog/loongson,ls1x-wdt.yaml | 42 +++++++++++++++++++
> 1 file changed, 42 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml
>
> diff --git a/Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml b/Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml
> new file mode 100644
> index 000000000000..81690d4b62a6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/watchdog/loongson,ls1x-wdt.yaml
> @@ -0,0 +1,42 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/watchdog/loongson,ls1x-wdt.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Loongson-1 Watchdog Timer
> +
> +maintainers:
> + - Keguang Zhang <[email protected]>
> +
> +allOf:
> + - $ref: watchdog.yaml#
> +
> +properties:
> + compatible:
> + enum:
> + - loongson,ls1b-wdt
> + - loongson,ls1c-wdt
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/loongson,ls1x-clk.h>
> + watchdog: watchdog@1fe5c060 {
> + compatible = "loongson,ls1b-wdt";
> + reg = <0x1fe5c060 0xc>;
> +
> + clocks = <&clkc LS1X_CLKID_APB>;
> + };
> --
> 2.39.2
>

2023-05-12 12:44:49

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] watchdog: loongson1_wdt: Add DT support

On Thu, May 11, 2023 at 08:11:59PM +0800, Keguang Zhang wrote:
> This patch adds the of_match_table to enable DT support
> of Loongson-1 watchdog driver.
> And modify the parameter of devm_clk_get_enabled() accordingly.
>
> Signed-off-by: Keguang Zhang <[email protected]>

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

> ---
> V1 -> V2: Change the wildcard compatible string to specific ones
> Use of_match_ptr() to aviod the build error when CONFIG_OF=n
> ---
> drivers/watchdog/loongson1_wdt.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/watchdog/loongson1_wdt.c b/drivers/watchdog/loongson1_wdt.c
> index 3c651c50a98c..4ac7810a314d 100644
> --- a/drivers/watchdog/loongson1_wdt.c
> +++ b/drivers/watchdog/loongson1_wdt.c
> @@ -5,6 +5,7 @@
>
> #include <linux/clk.h>
> #include <linux/module.h>
> +#include <linux/of.h>
> #include <linux/platform_device.h>
> #include <linux/watchdog.h>
>
> @@ -112,7 +113,7 @@ static int ls1x_wdt_probe(struct platform_device *pdev)
> if (IS_ERR(drvdata->base))
> return PTR_ERR(drvdata->base);
>
> - drvdata->clk = devm_clk_get_enabled(dev, pdev->name);
> + drvdata->clk = devm_clk_get_enabled(dev, NULL);
> if (IS_ERR(drvdata->clk))
> return PTR_ERR(drvdata->clk);
>
> @@ -144,10 +145,20 @@ static int ls1x_wdt_probe(struct platform_device *pdev)
> return 0;
> }
>
> +#ifdef CONFIG_OF
> +static const struct of_device_id ls1x_wdt_dt_ids[] = {
> + { .compatible = "loongson,ls1b-wdt", },
> + { .compatible = "loongson,ls1c-wdt", },
> + { /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, ls1x_wdt_dt_ids);
> +#endif
> +
> static struct platform_driver ls1x_wdt_driver = {
> .probe = ls1x_wdt_probe,
> .driver = {
> .name = "ls1x-wdt",
> + .of_match_table = of_match_ptr(ls1x_wdt_dt_ids),
> },
> };
>
> --
> 2.39.2
>