diff mbox

[v3,1/2] watchdog: at91sam9_wdt: add device tree support

Message ID 1348558114-31750-2-git-send-email-fabio.porcedda@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Fabio Porcedda Sept. 25, 2012, 7:28 a.m. UTC
Tested on an at91sam9260 board (evk-pro3)

Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
---
 .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
 drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt

Comments

Jean-Christophe PLAGNIOL-VILLARD Sept. 25, 2012, 8:10 a.m. UTC | #1
On 09:28 Tue 25 Sep     , Fabio Porcedda wrote:
> Tested on an at91sam9260 board (evk-pro3)
> 
> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> ---
>  .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
>  drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
>  2 files changed, 40 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> 
> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> new file mode 100644
> index 0000000..724fad1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> @@ -0,0 +1,19 @@
> +* Atmel Watchdog Timers
> +
> +** at91sam9-wdt
> +
> +Required properties:
> +- compatible: must be "atmel,at91sam9-wdt".
> +- reg: physical base address of the controller and length of memory mapped
> +  region.
> +
> +Optional properties:
> +- heartbeat: contains the watchdog heartbeats in seconds.
> +
> +Example:
> +
> +	watchdog@fffffd40 {
> +		compatible = "atmel,at91sam9-wdt";
for the secind time atmel,at91sam9260-watchdog

you need to put the first soc that use it in the compatible
> +		reg = <0xfffffd40 0x10>;
> +		heartbeat = <10>;
need put second in the property name so need to read the doc

Best Regards,
J.
Nicolas Ferre Sept. 25, 2012, 9:40 a.m. UTC | #2
On 09/25/2012 09:28 AM, Fabio Porcedda :
> Tested on an at91sam9260 board (evk-pro3)
> 
> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> ---
>  .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
>  drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
>  2 files changed, 40 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> 
> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> new file mode 100644
> index 0000000..724fad1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> @@ -0,0 +1,19 @@
> +* Atmel Watchdog Timers
> +
> +** at91sam9-wdt
> +
> +Required properties:
> +- compatible: must be "atmel,at91sam9-wdt".

As Jean-Christophe said, you should use the complete name of the fist
SoC that used this WDT version:

So please change all compatibility strings to:

atmel,at91sam9260-wdt


> +- reg: physical base address of the controller and length of memory mapped
> +  region.
> +
> +Optional properties:
> +- heartbeat: contains the watchdog heartbeats in seconds.
> +
> +Example:
> +
> +	watchdog@fffffd40 {
> +		compatible = "atmel,at91sam9-wdt";
> +		reg = <0xfffffd40 0x10>;
> +		heartbeat = <10>;
> +	};
> diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c
> index 05e1be8..56b8836 100644
> --- a/drivers/watchdog/at91sam9_wdt.c
> +++ b/drivers/watchdog/at91sam9_wdt.c
> @@ -32,6 +32,7 @@
>  #include <linux/timer.h>
>  #include <linux/bitops.h>
>  #include <linux/uaccess.h>
> +#include <linux/of.h>
>  
>  #include "at91sam9_wdt.h"
>  
> @@ -254,6 +255,14 @@ static struct miscdevice at91wdt_miscdev = {
>  	.fops		= &at91wdt_fops,
>  };
>  
> +static inline void __init at91wdt_probe_dt(struct device_node *node)
> +{
> +	if (!node)
> +		return;
> +
> +	of_property_read_u32(node, "heartbeat", &heartbeat);
> +}
> +
>  static int __init at91wdt_probe(struct platform_device *pdev)
>  {
>  	struct resource	*r;
> @@ -272,6 +281,8 @@ static int __init at91wdt_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  	}
>  
> +	at91wdt_probe_dt(pdev->dev.of_node);
> +
>  	/* Set watchdog */
>  	res = at91_wdt_settimeout(ms_to_ticks(WDT_HW_TIMEOUT * 1000));
>  	if (res)
> @@ -302,11 +313,21 @@ static int __exit at91wdt_remove(struct platform_device *pdev)
>  	return res;
>  }
>  
> +#if defined(CONFIG_OF)
> +static const struct of_device_id at91_wdt_dt_ids[] = {
> +	{ .compatible = "atmel,at91sam9-wdt" },
> +	{ /* sentinel */ }
> +};
> +
> +MODULE_DEVICE_TABLE(of, at91_wdt_dt_ids);
> +#endif
> +
>  static struct platform_driver at91wdt_driver = {
>  	.remove		= __exit_p(at91wdt_remove),
>  	.driver		= {
>  		.name	= "at91_wdt",
>  		.owner	= THIS_MODULE,
> +		.of_match_table = of_match_ptr(at91_wdt_dt_ids),
>  	},
>  };
>  
> 

Otherwise, looks ok...
Fabio Porcedda Sept. 25, 2012, 9:45 a.m. UTC | #3
On Tue, Sep 25, 2012 at 10:10 AM, Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com> wrote:
> On 09:28 Tue 25 Sep     , Fabio Porcedda wrote:
>> Tested on an at91sam9260 board (evk-pro3)
>>
>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>> ---
>>  .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
>>  drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
>>  2 files changed, 40 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>>
>> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>> new file mode 100644
>> index 0000000..724fad1
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>> @@ -0,0 +1,19 @@
>> +* Atmel Watchdog Timers
>> +
>> +** at91sam9-wdt
>> +
>> +Required properties:
>> +- compatible: must be "atmel,at91sam9-wdt".
>> +- reg: physical base address of the controller and length of memory mapped
>> +  region.
>> +
>> +Optional properties:
>> +- heartbeat: contains the watchdog heartbeats in seconds.
>> +
>> +Example:
>> +
>> +     watchdog@fffffd40 {
>> +             compatible = "atmel,at91sam9-wdt";
> for the secind time atmel,at91sam9260-watchdog

Ok, i will fix this.

> you need to put the first soc that use it in the compatible
>> +             reg = <0xfffffd40 0x10>;
>> +             heartbeat = <10>;
> need put second in the property name so need to read the doc

I didn't found any example about a property with "second" in the name.
Which It's best "heartbeat-seconds", "heartbeat-sec" or "heartbeat-s" ?

> Best Regards,
> J.


Thanks for the review and my best regards
Nicolas Ferre Sept. 25, 2012, 10 a.m. UTC | #4
On 09/25/2012 11:45 AM, Fabio Porcedda :
> On Tue, Sep 25, 2012 at 10:10 AM, Jean-Christophe PLAGNIOL-VILLARD
> <plagnioj@jcrosoft.com> wrote:
>> On 09:28 Tue 25 Sep     , Fabio Porcedda wrote:
>>> Tested on an at91sam9260 board (evk-pro3)
>>>
>>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>>> ---
>>>  .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
>>>  drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
>>>  2 files changed, 40 insertions(+)
>>>  create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>>>
>>> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>>> new file mode 100644
>>> index 0000000..724fad1
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>>> @@ -0,0 +1,19 @@
>>> +* Atmel Watchdog Timers
>>> +
>>> +** at91sam9-wdt
>>> +
>>> +Required properties:
>>> +- compatible: must be "atmel,at91sam9-wdt".
>>> +- reg: physical base address of the controller and length of memory mapped
>>> +  region.
>>> +
>>> +Optional properties:
>>> +- heartbeat: contains the watchdog heartbeats in seconds.
>>> +
>>> +Example:
>>> +
>>> +     watchdog@fffffd40 {
>>> +             compatible = "atmel,at91sam9-wdt";
>> for the secind time atmel,at91sam9260-watchdog
> 
> Ok, i will fix this.
> 
>> you need to put the first soc that use it in the compatible
>>> +             reg = <0xfffffd40 0x10>;
>>> +             heartbeat = <10>;
>> need put second in the property name so need to read the doc
> 
> I didn't found any example about a property with "second" in the name.
> Which It's best "heartbeat-seconds", "heartbeat-sec" or "heartbeat-s" ?

I think that, as it is indicated in the documentation, we should not
worry too much about that... but "heartbeat" and "heartbeat-s" is ok
with me.

Maybe people @ devicetree-discuss have an advice for this?

Bye,
Jean-Christophe PLAGNIOL-VILLARD Sept. 25, 2012, 10:49 a.m. UTC | #5
On 12:00 Tue 25 Sep     , Nicolas Ferre wrote:
> On 09/25/2012 11:45 AM, Fabio Porcedda :
> > On Tue, Sep 25, 2012 at 10:10 AM, Jean-Christophe PLAGNIOL-VILLARD
> > <plagnioj@jcrosoft.com> wrote:
> >> On 09:28 Tue 25 Sep     , Fabio Porcedda wrote:
> >>> Tested on an at91sam9260 board (evk-pro3)
> >>>
> >>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> >>> ---
> >>>  .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
> >>>  drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
> >>>  2 files changed, 40 insertions(+)
> >>>  create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> >>> new file mode 100644
> >>> index 0000000..724fad1
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
> >>> @@ -0,0 +1,19 @@
> >>> +* Atmel Watchdog Timers
> >>> +
> >>> +** at91sam9-wdt
> >>> +
> >>> +Required properties:
> >>> +- compatible: must be "atmel,at91sam9-wdt".
> >>> +- reg: physical base address of the controller and length of memory mapped
> >>> +  region.
> >>> +
> >>> +Optional properties:
> >>> +- heartbeat: contains the watchdog heartbeats in seconds.
> >>> +
> >>> +Example:
> >>> +
> >>> +     watchdog@fffffd40 {
> >>> +             compatible = "atmel,at91sam9-wdt";
> >> for the secind time atmel,at91sam9260-watchdog
> > 
> > Ok, i will fix this.
> > 
> >> you need to put the first soc that use it in the compatible
> >>> +             reg = <0xfffffd40 0x10>;
> >>> +             heartbeat = <10>;
> >> need put second in the property name so need to read the doc
> > 
> > I didn't found any example about a property with "second" in the name.
> > Which It's best "heartbeat-seconds", "heartbeat-sec" or "heartbeat-s" ?
> 
> I think that, as it is indicated in the documentation, we should not
> worry too much about that... but "heartbeat" and "heartbeat-s" is ok
> with me.
> 
> Maybe people @ devicetree-discuss have an advice for this?
for i2c-gpio mandatory as example cf discussion with Jean and Russell

Best Regards,
J.
Fabio Porcedda Sept. 26, 2012, 2:53 p.m. UTC | #6
On Tue, Sep 25, 2012 at 12:49 PM, Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com> wrote:
> On 12:00 Tue 25 Sep     , Nicolas Ferre wrote:
>> On 09/25/2012 11:45 AM, Fabio Porcedda :
>> > On Tue, Sep 25, 2012 at 10:10 AM, Jean-Christophe PLAGNIOL-VILLARD
>> > <plagnioj@jcrosoft.com> wrote:
>> >> On 09:28 Tue 25 Sep     , Fabio Porcedda wrote:
>> >>> Tested on an at91sam9260 board (evk-pro3)
>> >>>
>> >>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>> >>> ---
>> >>>  .../devicetree/bindings/watchdog/atmel-wdt.txt      | 19 +++++++++++++++++++
>> >>>  drivers/watchdog/at91sam9_wdt.c                     | 21 +++++++++++++++++++++
>> >>>  2 files changed, 40 insertions(+)
>> >>>  create mode 100644 Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>> >>>
>> >>> diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>> >>> new file mode 100644
>> >>> index 0000000..724fad1
>> >>> --- /dev/null
>> >>> +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
>> >>> @@ -0,0 +1,19 @@
>> >>> +* Atmel Watchdog Timers
>> >>> +
>> >>> +** at91sam9-wdt
>> >>> +
>> >>> +Required properties:
>> >>> +- compatible: must be "atmel,at91sam9-wdt".
>> >>> +- reg: physical base address of the controller and length of memory mapped
>> >>> +  region.
>> >>> +
>> >>> +Optional properties:
>> >>> +- heartbeat: contains the watchdog heartbeats in seconds.
>> >>> +
>> >>> +Example:
>> >>> +
>> >>> +     watchdog@fffffd40 {
>> >>> +             compatible = "atmel,at91sam9-wdt";
>> >> for the secind time atmel,at91sam9260-watchdog
>> >
>> > Ok, i will fix this.
>> >
>> >> you need to put the first soc that use it in the compatible
>> >>> +             reg = <0xfffffd40 0x10>;
>> >>> +             heartbeat = <10>;
>> >> need put second in the property name so need to read the doc
>> >
>> > I didn't found any example about a property with "second" in the name.
>> > Which It's best "heartbeat-seconds", "heartbeat-sec" or "heartbeat-s" ?
>>
>> I think that, as it is indicated in the documentation, we should not
>> worry too much about that... but "heartbeat" and "heartbeat-s" is ok
>> with me.
>>
>> Maybe people @ devicetree-discuss have an advice for this?
> for i2c-gpio mandatory as example cf discussion with Jean and Russell

Russell King - ARM Linux linux at arm.linux.org.uk
Mon Feb 20 08:51:06 EST 2012
> I'm saying that's a completely absurd proposal, as the proposal is
> for two opaque numeric properties with different units.  At least
> make the units the same, or as Karol said, incorporate the units
> into the property names.

If i understand correctly the issue was that two different units where used for
the same device.
IMHO there is no problem if only one unit is used in the same device.

Best regards
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
new file mode 100644
index 0000000..724fad1
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
@@ -0,0 +1,19 @@ 
+* Atmel Watchdog Timers
+
+** at91sam9-wdt
+
+Required properties:
+- compatible: must be "atmel,at91sam9-wdt".
+- reg: physical base address of the controller and length of memory mapped
+  region.
+
+Optional properties:
+- heartbeat: contains the watchdog heartbeats in seconds.
+
+Example:
+
+	watchdog@fffffd40 {
+		compatible = "atmel,at91sam9-wdt";
+		reg = <0xfffffd40 0x10>;
+		heartbeat = <10>;
+	};
diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c
index 05e1be8..56b8836 100644
--- a/drivers/watchdog/at91sam9_wdt.c
+++ b/drivers/watchdog/at91sam9_wdt.c
@@ -32,6 +32,7 @@ 
 #include <linux/timer.h>
 #include <linux/bitops.h>
 #include <linux/uaccess.h>
+#include <linux/of.h>
 
 #include "at91sam9_wdt.h"
 
@@ -254,6 +255,14 @@  static struct miscdevice at91wdt_miscdev = {
 	.fops		= &at91wdt_fops,
 };
 
+static inline void __init at91wdt_probe_dt(struct device_node *node)
+{
+	if (!node)
+		return;
+
+	of_property_read_u32(node, "heartbeat", &heartbeat);
+}
+
 static int __init at91wdt_probe(struct platform_device *pdev)
 {
 	struct resource	*r;
@@ -272,6 +281,8 @@  static int __init at91wdt_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	}
 
+	at91wdt_probe_dt(pdev->dev.of_node);
+
 	/* Set watchdog */
 	res = at91_wdt_settimeout(ms_to_ticks(WDT_HW_TIMEOUT * 1000));
 	if (res)
@@ -302,11 +313,21 @@  static int __exit at91wdt_remove(struct platform_device *pdev)
 	return res;
 }
 
+#if defined(CONFIG_OF)
+static const struct of_device_id at91_wdt_dt_ids[] = {
+	{ .compatible = "atmel,at91sam9-wdt" },
+	{ /* sentinel */ }
+};
+
+MODULE_DEVICE_TABLE(of, at91_wdt_dt_ids);
+#endif
+
 static struct platform_driver at91wdt_driver = {
 	.remove		= __exit_p(at91wdt_remove),
 	.driver		= {
 		.name	= "at91_wdt",
 		.owner	= THIS_MODULE,
+		.of_match_table = of_match_ptr(at91_wdt_dt_ids),
 	},
 };