* [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings
@ 2021-07-14 15:33 Linus Walleij
2021-07-14 15:33 ` [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing Linus Walleij
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Linus Walleij @ 2021-07-14 15:33 UTC (permalink / raw)
To: Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, Linus Walleij, devicetree, Marc Zyngier
This adds devicetree bindings for the Maxim MAX63xx watchdog
timers.
Cc: devicetree@vger.kernel.org
Cc: Marc Zyngier <maz@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
.../bindings/watchdog/maxim,max63xx.yaml | 44 +++++++++++++++++++
1 file changed, 44 insertions(+)
create mode 100644 Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
diff --git a/Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml b/Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
new file mode 100644
index 000000000000..f2105eedac2c
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/maxim,max63xx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim 63xx Watchdog Timers
+
+allOf:
+ - $ref: "watchdog.yaml#"
+
+maintainers:
+ - Marc Zyngier <maz@kernel.org>
+ - Linus Walleij <linus.walleij@linaro.org>
+
+properties:
+ compatible:
+ oneOf:
+ - const: maxim,max6369
+ - const: maxim,max6370
+ - const: maxim,max6371
+ - const: maxim,max6372
+ - const: maxim,max6373
+ - const: maxim,max6374
+
+ reg:
+ description: This is a 1-byte memory-mapped address
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ wdt: watchdog@50000000 {
+ compatible = "maxim,max6369";
+ reg = <0x50000000 0x1>;
+ timeout-sec = <10>;
+ };
+
+...
--
2.31.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing
2021-07-14 15:33 [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Linus Walleij
@ 2021-07-14 15:33 ` Linus Walleij
2021-07-17 14:08 ` Guenter Roeck
2021-07-16 19:27 ` [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Rob Herring
2021-07-17 14:08 ` Guenter Roeck
2 siblings, 1 reply; 5+ messages in thread
From: Linus Walleij @ 2021-07-14 15:33 UTC (permalink / raw)
To: Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, Linus Walleij, Marc Zyngier
This adds device tree probing to the MAX63xx driver so it can be
instantiated from the device tree. We use the generic fwnode-based
method to get to the match data and clean up by constifying the
functions as the match is indeed a const.
Cc: Marc Zyngier <maz@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/watchdog/max63xx_wdt.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/drivers/watchdog/max63xx_wdt.c b/drivers/watchdog/max63xx_wdt.c
index 3a899628a834..9e1541cfae0d 100644
--- a/drivers/watchdog/max63xx_wdt.c
+++ b/drivers/watchdog/max63xx_wdt.c
@@ -26,6 +26,7 @@
#include <linux/spinlock.h>
#include <linux/io.h>
#include <linux/slab.h>
+#include <linux/property.h>
#define DEFAULT_HEARTBEAT 60
#define MAX_HEARTBEAT 60
@@ -99,8 +100,8 @@ static const struct max63xx_timeout max6373_table[] = {
{ },
};
-static struct max63xx_timeout *
-max63xx_select_timeout(struct max63xx_timeout *table, int value)
+static const struct max63xx_timeout *
+max63xx_select_timeout(const struct max63xx_timeout *table, int value)
{
while (table->twd) {
if (value <= table->twd) {
@@ -202,14 +203,17 @@ static int max63xx_wdt_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct max63xx_wdt *wdt;
- struct max63xx_timeout *table;
+ const struct max63xx_timeout *table;
int err;
wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL);
if (!wdt)
return -ENOMEM;
- table = (struct max63xx_timeout *)pdev->id_entry->driver_data;
+ /* Attempt to use fwnode first */
+ table = device_get_match_data(dev);
+ if (!table)
+ table = (struct max63xx_timeout *)pdev->id_entry->driver_data;
if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT)
heartbeat = DEFAULT_HEARTBEAT;
@@ -255,11 +259,23 @@ static const struct platform_device_id max63xx_id_table[] = {
};
MODULE_DEVICE_TABLE(platform, max63xx_id_table);
+static const struct of_device_id max63xx_dt_id_table[] = {
+ { .compatible = "maxim,max6369", .data = max6369_table, },
+ { .compatible = "maxim,max6370", .data = max6369_table, },
+ { .compatible = "maxim,max6371", .data = max6371_table, },
+ { .compatible = "maxim,max6372", .data = max6371_table, },
+ { .compatible = "maxim,max6373", .data = max6373_table, },
+ { .compatible = "maxim,max6374", .data = max6373_table, },
+ { }
+};
+MODULE_DEVICE_TABLE(of, max63xx_dt_id_table);
+
static struct platform_driver max63xx_wdt_driver = {
.probe = max63xx_wdt_probe,
.id_table = max63xx_id_table,
.driver = {
.name = "max63xx_wdt",
+ .of_match_table = max63xx_dt_id_table,
},
};
--
2.31.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings
2021-07-14 15:33 [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Linus Walleij
2021-07-14 15:33 ` [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing Linus Walleij
@ 2021-07-16 19:27 ` Rob Herring
2021-07-17 14:08 ` Guenter Roeck
2 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2021-07-16 19:27 UTC (permalink / raw)
To: Linus Walleij
Cc: Marc Zyngier, Wim Van Sebroeck, devicetree, Guenter Roeck,
linux-watchdog
On Wed, 14 Jul 2021 17:33:13 +0200, Linus Walleij wrote:
> This adds devicetree bindings for the Maxim MAX63xx watchdog
> timers.
>
> Cc: devicetree@vger.kernel.org
> Cc: Marc Zyngier <maz@kernel.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> .../bindings/watchdog/maxim,max63xx.yaml | 44 +++++++++++++++++++
> 1 file changed, 44 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings
2021-07-14 15:33 [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Linus Walleij
2021-07-14 15:33 ` [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing Linus Walleij
2021-07-16 19:27 ` [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Rob Herring
@ 2021-07-17 14:08 ` Guenter Roeck
2 siblings, 0 replies; 5+ messages in thread
From: Guenter Roeck @ 2021-07-17 14:08 UTC (permalink / raw)
To: Linus Walleij; +Cc: Wim Van Sebroeck, linux-watchdog, devicetree, Marc Zyngier
On Wed, Jul 14, 2021 at 05:33:13PM +0200, Linus Walleij wrote:
> This adds devicetree bindings for the Maxim MAX63xx watchdog
> timers.
>
> Cc: devicetree@vger.kernel.org
> Cc: Marc Zyngier <maz@kernel.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> ---
> .../bindings/watchdog/maxim,max63xx.yaml | 44 +++++++++++++++++++
> 1 file changed, 44 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
>
> diff --git a/Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml b/Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
> new file mode 100644
> index 000000000000..f2105eedac2c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/watchdog/maxim,max63xx.yaml
> @@ -0,0 +1,44 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/watchdog/maxim,max63xx.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Maxim 63xx Watchdog Timers
> +
> +allOf:
> + - $ref: "watchdog.yaml#"
> +
> +maintainers:
> + - Marc Zyngier <maz@kernel.org>
> + - Linus Walleij <linus.walleij@linaro.org>
> +
> +properties:
> + compatible:
> + oneOf:
> + - const: maxim,max6369
> + - const: maxim,max6370
> + - const: maxim,max6371
> + - const: maxim,max6372
> + - const: maxim,max6373
> + - const: maxim,max6374
> +
> + reg:
> + description: This is a 1-byte memory-mapped address
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + wdt: watchdog@50000000 {
> + compatible = "maxim,max6369";
> + reg = <0x50000000 0x1>;
> + timeout-sec = <10>;
> + };
> +
> +...
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing
2021-07-14 15:33 ` [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing Linus Walleij
@ 2021-07-17 14:08 ` Guenter Roeck
0 siblings, 0 replies; 5+ messages in thread
From: Guenter Roeck @ 2021-07-17 14:08 UTC (permalink / raw)
To: Linus Walleij; +Cc: Wim Van Sebroeck, linux-watchdog, Marc Zyngier
On Wed, Jul 14, 2021 at 05:33:14PM +0200, Linus Walleij wrote:
> This adds device tree probing to the MAX63xx driver so it can be
> instantiated from the device tree. We use the generic fwnode-based
> method to get to the match data and clean up by constifying the
> functions as the match is indeed a const.
>
> Cc: Marc Zyngier <maz@kernel.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/watchdog/max63xx_wdt.c | 24 ++++++++++++++++++++----
> 1 file changed, 20 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/watchdog/max63xx_wdt.c b/drivers/watchdog/max63xx_wdt.c
> index 3a899628a834..9e1541cfae0d 100644
> --- a/drivers/watchdog/max63xx_wdt.c
> +++ b/drivers/watchdog/max63xx_wdt.c
> @@ -26,6 +26,7 @@
> #include <linux/spinlock.h>
> #include <linux/io.h>
> #include <linux/slab.h>
> +#include <linux/property.h>
>
> #define DEFAULT_HEARTBEAT 60
> #define MAX_HEARTBEAT 60
> @@ -99,8 +100,8 @@ static const struct max63xx_timeout max6373_table[] = {
> { },
> };
>
> -static struct max63xx_timeout *
> -max63xx_select_timeout(struct max63xx_timeout *table, int value)
> +static const struct max63xx_timeout *
> +max63xx_select_timeout(const struct max63xx_timeout *table, int value)
> {
> while (table->twd) {
> if (value <= table->twd) {
> @@ -202,14 +203,17 @@ static int max63xx_wdt_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct max63xx_wdt *wdt;
> - struct max63xx_timeout *table;
> + const struct max63xx_timeout *table;
> int err;
>
> wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL);
> if (!wdt)
> return -ENOMEM;
>
> - table = (struct max63xx_timeout *)pdev->id_entry->driver_data;
> + /* Attempt to use fwnode first */
> + table = device_get_match_data(dev);
> + if (!table)
> + table = (struct max63xx_timeout *)pdev->id_entry->driver_data;
>
> if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT)
> heartbeat = DEFAULT_HEARTBEAT;
> @@ -255,11 +259,23 @@ static const struct platform_device_id max63xx_id_table[] = {
> };
> MODULE_DEVICE_TABLE(platform, max63xx_id_table);
>
> +static const struct of_device_id max63xx_dt_id_table[] = {
> + { .compatible = "maxim,max6369", .data = max6369_table, },
> + { .compatible = "maxim,max6370", .data = max6369_table, },
> + { .compatible = "maxim,max6371", .data = max6371_table, },
> + { .compatible = "maxim,max6372", .data = max6371_table, },
> + { .compatible = "maxim,max6373", .data = max6373_table, },
> + { .compatible = "maxim,max6374", .data = max6373_table, },
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, max63xx_dt_id_table);
> +
> static struct platform_driver max63xx_wdt_driver = {
> .probe = max63xx_wdt_probe,
> .id_table = max63xx_id_table,
> .driver = {
> .name = "max63xx_wdt",
> + .of_match_table = max63xx_dt_id_table,
> },
> };
>
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-07-17 14:08 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-14 15:33 [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Linus Walleij
2021-07-14 15:33 ` [PATCH 2/2] watchdog: max63xx_wdt: Add device tree probing Linus Walleij
2021-07-17 14:08 ` Guenter Roeck
2021-07-16 19:27 ` [PATCH 1/2] dt-bindings: watchdog: Add Maxim MAX63xx bindings Rob Herring
2021-07-17 14:08 ` Guenter Roeck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).