Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-10-27 Thread Wim Van Sebroeck
Hi Justin,

> Currently there is no way to easily differentiate multiple
> watchdog devices. The watchdogs are named by the order they
> are probed.
> 1st probed watchdog: /dev/watchdog0
> 2nd probed watchdog: /dev/watchdog1
> ...
> 
> This change uses the alias of the watchdog device node for
> the name of the watchdog.
> aliases {
> watchdog0 = "/./"
> watchdog3 = "//."
> watchdog2 = "//."
> ...
> }
> 
> This will translate to...
> /dev/watchdog0
> /dev/watchdog3
> /dev/watchdog2
> 
> v2
> Assign alias number to id in watchdog_core instead of watchdog_dev.
> If failed to get id, fallback to original ida_simple_get call.
> 
> Signed-off-by: Justin Chen 
> ---
>  drivers/watchdog/watchdog_core.c | 15 +--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/watchdog/watchdog_core.c 
> b/drivers/watchdog/watchdog_core.c
> index 1a80594..873f139 100644
> --- a/drivers/watchdog/watchdog_core.c
> +++ b/drivers/watchdog/watchdog_core.c
> @@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(watchdog_init_timeout);
>  
>  static int __watchdog_register_device(struct watchdog_device *wdd)
>  {
> - int ret, id, devno;
> + int ret, id = -1, devno;
>  
>   if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
>   return -EINVAL;
> @@ -157,7 +157,18 @@ static int __watchdog_register_device(struct 
> watchdog_device *wdd)
>*/
>  
>   mutex_init(>lock);
> - id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
> + /* Use alias for watchdog id if possible */
> + if (wdd->parent) {
> + ret = of_alias_get_id(wdd->parent->of_node, "watchdog");
> + if (ret >= 0)
> + id = ida_simple_get(_ida, ret,
> + ret + 1, GFP_KERNEL);
> + }
> +
> + if (id < 0)
> + id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
>   if (id < 0)
>   return id;
>   wdd->id = id;
> -- 
> 2.1.0
> 

Added to linux-watchdog-next.

Kind regards,
Wim.

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


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-10-27 Thread Wim Van Sebroeck
Hi Justin,

> Currently there is no way to easily differentiate multiple
> watchdog devices. The watchdogs are named by the order they
> are probed.
> 1st probed watchdog: /dev/watchdog0
> 2nd probed watchdog: /dev/watchdog1
> ...
> 
> This change uses the alias of the watchdog device node for
> the name of the watchdog.
> aliases {
> watchdog0 = "/./"
> watchdog3 = "//."
> watchdog2 = "//."
> ...
> }
> 
> This will translate to...
> /dev/watchdog0
> /dev/watchdog3
> /dev/watchdog2
> 
> v2
> Assign alias number to id in watchdog_core instead of watchdog_dev.
> If failed to get id, fallback to original ida_simple_get call.
> 
> Signed-off-by: Justin Chen 
> ---
>  drivers/watchdog/watchdog_core.c | 15 +--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/watchdog/watchdog_core.c 
> b/drivers/watchdog/watchdog_core.c
> index 1a80594..873f139 100644
> --- a/drivers/watchdog/watchdog_core.c
> +++ b/drivers/watchdog/watchdog_core.c
> @@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(watchdog_init_timeout);
>  
>  static int __watchdog_register_device(struct watchdog_device *wdd)
>  {
> - int ret, id, devno;
> + int ret, id = -1, devno;
>  
>   if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
>   return -EINVAL;
> @@ -157,7 +157,18 @@ static int __watchdog_register_device(struct 
> watchdog_device *wdd)
>*/
>  
>   mutex_init(>lock);
> - id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
> + /* Use alias for watchdog id if possible */
> + if (wdd->parent) {
> + ret = of_alias_get_id(wdd->parent->of_node, "watchdog");
> + if (ret >= 0)
> + id = ida_simple_get(_ida, ret,
> + ret + 1, GFP_KERNEL);
> + }
> +
> + if (id < 0)
> + id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
>   if (id < 0)
>   return id;
>   wdd->id = id;
> -- 
> 2.1.0
> 

Added to linux-watchdog-next.

Kind regards,
Wim.

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


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-09-02 Thread Guenter Roeck
Hi Justin,

On Wed, Sep 02, 2015 at 11:00:17AM -0700, Justin Chen wrote:
> Currently there is no way to easily differentiate multiple
> watchdog devices. The watchdogs are named by the order they
> are probed.
> 1st probed watchdog: /dev/watchdog0
> 2nd probed watchdog: /dev/watchdog1
> ...
> 
> This change uses the alias of the watchdog device node for
> the name of the watchdog.
> aliases {
> watchdog0 = "/./"
> watchdog3 = "//."
> watchdog2 = "//."
> ...
> }
> 
> This will translate to...
> /dev/watchdog0
> /dev/watchdog3
> /dev/watchdog2
> 
> v2
> Assign alias number to id in watchdog_core instead of watchdog_dev.
> If failed to get id, fallback to original ida_simple_get call.
> 
> Signed-off-by: Justin Chen 

Minor nitpick: the changelog should be after the '---'.

Other than that, I really like it. Well done.

Reviewed-by: Guenter Roeck 

Thanks,
Guenter

> ---
>  drivers/watchdog/watchdog_core.c | 15 +--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/watchdog/watchdog_core.c 
> b/drivers/watchdog/watchdog_core.c
> index 1a80594..873f139 100644
> --- a/drivers/watchdog/watchdog_core.c
> +++ b/drivers/watchdog/watchdog_core.c
> @@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(watchdog_init_timeout);
>  
>  static int __watchdog_register_device(struct watchdog_device *wdd)
>  {
> - int ret, id, devno;
> + int ret, id = -1, devno;
>  
>   if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
>   return -EINVAL;
> @@ -157,7 +157,18 @@ static int __watchdog_register_device(struct 
> watchdog_device *wdd)
>*/
>  
>   mutex_init(>lock);
> - id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
> + /* Use alias for watchdog id if possible */
> + if (wdd->parent) {
> + ret = of_alias_get_id(wdd->parent->of_node, "watchdog");
> + if (ret >= 0)
> + id = ida_simple_get(_ida, ret,
> + ret + 1, GFP_KERNEL);
> + }
> +
> + if (id < 0)
> + id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
>   if (id < 0)
>   return id;
>   wdd->id = id;
> -- 
> 2.1.0
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-09-02 Thread Justin Chen
Currently there is no way to easily differentiate multiple
watchdog devices. The watchdogs are named by the order they
are probed.
1st probed watchdog: /dev/watchdog0
2nd probed watchdog: /dev/watchdog1
...

This change uses the alias of the watchdog device node for
the name of the watchdog.
aliases {
watchdog0 = "/./"
watchdog3 = "//."
watchdog2 = "//."
...
}

This will translate to...
/dev/watchdog0
/dev/watchdog3
/dev/watchdog2

v2
Assign alias number to id in watchdog_core instead of watchdog_dev.
If failed to get id, fallback to original ida_simple_get call.

Signed-off-by: Justin Chen 
---
 drivers/watchdog/watchdog_core.c | 15 +--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
index 1a80594..873f139 100644
--- a/drivers/watchdog/watchdog_core.c
+++ b/drivers/watchdog/watchdog_core.c
@@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(watchdog_init_timeout);
 
 static int __watchdog_register_device(struct watchdog_device *wdd)
 {
-   int ret, id, devno;
+   int ret, id = -1, devno;
 
if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
return -EINVAL;
@@ -157,7 +157,18 @@ static int __watchdog_register_device(struct 
watchdog_device *wdd)
 */
 
mutex_init(>lock);
-   id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
+
+   /* Use alias for watchdog id if possible */
+   if (wdd->parent) {
+   ret = of_alias_get_id(wdd->parent->of_node, "watchdog");
+   if (ret >= 0)
+   id = ida_simple_get(_ida, ret,
+   ret + 1, GFP_KERNEL);
+   }
+
+   if (id < 0)
+   id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
+
if (id < 0)
return id;
wdd->id = id;
-- 
2.1.0

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


[PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-09-02 Thread Justin Chen
Currently there is no way to easily differentiate multiple
watchdog devices. The watchdogs are named by the order they
are probed.
1st probed watchdog: /dev/watchdog0
2nd probed watchdog: /dev/watchdog1
...

This change uses the alias of the watchdog device node for
the name of the watchdog.
aliases {
watchdog0 = "/./"
watchdog3 = "//."
watchdog2 = "//."
...
}

This will translate to...
/dev/watchdog0
/dev/watchdog3
/dev/watchdog2

v2
Assign alias number to id in watchdog_core instead of watchdog_dev.
If failed to get id, fallback to original ida_simple_get call.

Signed-off-by: Justin Chen 
---
 drivers/watchdog/watchdog_core.c | 15 +--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
index 1a80594..873f139 100644
--- a/drivers/watchdog/watchdog_core.c
+++ b/drivers/watchdog/watchdog_core.c
@@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(watchdog_init_timeout);
 
 static int __watchdog_register_device(struct watchdog_device *wdd)
 {
-   int ret, id, devno;
+   int ret, id = -1, devno;
 
if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
return -EINVAL;
@@ -157,7 +157,18 @@ static int __watchdog_register_device(struct 
watchdog_device *wdd)
 */
 
mutex_init(>lock);
-   id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
+
+   /* Use alias for watchdog id if possible */
+   if (wdd->parent) {
+   ret = of_alias_get_id(wdd->parent->of_node, "watchdog");
+   if (ret >= 0)
+   id = ida_simple_get(_ida, ret,
+   ret + 1, GFP_KERNEL);
+   }
+
+   if (id < 0)
+   id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
+
if (id < 0)
return id;
wdd->id = id;
-- 
2.1.0

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


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-09-02 Thread Guenter Roeck
Hi Justin,

On Wed, Sep 02, 2015 at 11:00:17AM -0700, Justin Chen wrote:
> Currently there is no way to easily differentiate multiple
> watchdog devices. The watchdogs are named by the order they
> are probed.
> 1st probed watchdog: /dev/watchdog0
> 2nd probed watchdog: /dev/watchdog1
> ...
> 
> This change uses the alias of the watchdog device node for
> the name of the watchdog.
> aliases {
> watchdog0 = "/./"
> watchdog3 = "//."
> watchdog2 = "//."
> ...
> }
> 
> This will translate to...
> /dev/watchdog0
> /dev/watchdog3
> /dev/watchdog2
> 
> v2
> Assign alias number to id in watchdog_core instead of watchdog_dev.
> If failed to get id, fallback to original ida_simple_get call.
> 
> Signed-off-by: Justin Chen 

Minor nitpick: the changelog should be after the '---'.

Other than that, I really like it. Well done.

Reviewed-by: Guenter Roeck 

Thanks,
Guenter

> ---
>  drivers/watchdog/watchdog_core.c | 15 +--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/watchdog/watchdog_core.c 
> b/drivers/watchdog/watchdog_core.c
> index 1a80594..873f139 100644
> --- a/drivers/watchdog/watchdog_core.c
> +++ b/drivers/watchdog/watchdog_core.c
> @@ -139,7 +139,7 @@ EXPORT_SYMBOL_GPL(watchdog_init_timeout);
>  
>  static int __watchdog_register_device(struct watchdog_device *wdd)
>  {
> - int ret, id, devno;
> + int ret, id = -1, devno;
>  
>   if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
>   return -EINVAL;
> @@ -157,7 +157,18 @@ static int __watchdog_register_device(struct 
> watchdog_device *wdd)
>*/
>  
>   mutex_init(>lock);
> - id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
> + /* Use alias for watchdog id if possible */
> + if (wdd->parent) {
> + ret = of_alias_get_id(wdd->parent->of_node, "watchdog");
> + if (ret >= 0)
> + id = ida_simple_get(_ida, ret,
> + ret + 1, GFP_KERNEL);
> + }
> +
> + if (id < 0)
> + id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
> +
>   if (id < 0)
>   return id;
>   wdd->id = id;
> -- 
> 2.1.0
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-09-01 Thread Guenter Roeck
On Tue, Sep 01, 2015 at 10:20:36AM -0700, Justin Chen wrote:
> On Sat, Aug 29, 2015 at 2:53 AM, Guenter Roeck  wrote:
> > On 08/28/2015 02:58 PM, Justin Chen wrote:
> >>
> >> Currently there is no way to easily differentiate multiple
> >> watchdog devices. The watchdogs are named by the order they
> >> are probed.
> >> 1st probed watchdog: /dev/watchdog0
> >> 2nd probed watchdog: /dev/watchdog1
> >> ...
> >>
> >> This change uses the alias of the watchdog device node for
> >> the name of the watchdog.
> >> aliases {
> >> watchdog0 = "/./"
> >> watchdog3 = "//."
> >> watchdog2 = "//."
> >> ...
> >> }
> >>
> >> This will translate to...
> >> /dev/watchdog0
> >> /dev/watchdog3
> >> /dev/watchdog2
> >>
> >> Signed-off-by: Justin Chen 
> >
> >
> > Interesting idea. Checking through other subsystems, many others do the
> > same,
> > so it makes sense to use that mechanism.
> >
> > However, the id assignment should be in the calling code, in
> > __watchdog_register_device,
> > to avoid that another id, possibly conflicting, is assigned through the
> ida
> > mechanism.
> >
> > This is a bit more complicated than it looks like to ensure correct id
> > assignment.
> > Have a look into the i2c code to see how it is handled. Essentially we
> must
> > pass
> > the requested number to ida_simple_get().
> >
> > Thanks,
> > Guenter
> 
> Ok that makes sense. I will put a wrapper function around ida_simple_get()
> that will request a specific number, if that fails then do a normal request.
> Something like this...
> 
> ret = of_alias_get_id()
> 
> id = ida_simple_get(_ida, ret, ret, GFP_KERNEL);
> 
ret, ret + 1

but something like
ret =  of_alias_get_id(...);
if (ret >= 0)
id = ida_simple_get(_ida, ret, ret + 1, GFP_KERNEL);
else
id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
if (id < 0)
return id;

would be better. Passing 'ret' directly would not work, because
ida_simple_get() expects an unsigned range as parameters, and
of_alias_get_id() can return a negative error code.

Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-09-01 Thread Guenter Roeck
On Tue, Sep 01, 2015 at 10:20:36AM -0700, Justin Chen wrote:
> On Sat, Aug 29, 2015 at 2:53 AM, Guenter Roeck  wrote:
> > On 08/28/2015 02:58 PM, Justin Chen wrote:
> >>
> >> Currently there is no way to easily differentiate multiple
> >> watchdog devices. The watchdogs are named by the order they
> >> are probed.
> >> 1st probed watchdog: /dev/watchdog0
> >> 2nd probed watchdog: /dev/watchdog1
> >> ...
> >>
> >> This change uses the alias of the watchdog device node for
> >> the name of the watchdog.
> >> aliases {
> >> watchdog0 = "/./"
> >> watchdog3 = "//."
> >> watchdog2 = "//."
> >> ...
> >> }
> >>
> >> This will translate to...
> >> /dev/watchdog0
> >> /dev/watchdog3
> >> /dev/watchdog2
> >>
> >> Signed-off-by: Justin Chen 
> >
> >
> > Interesting idea. Checking through other subsystems, many others do the
> > same,
> > so it makes sense to use that mechanism.
> >
> > However, the id assignment should be in the calling code, in
> > __watchdog_register_device,
> > to avoid that another id, possibly conflicting, is assigned through the
> ida
> > mechanism.
> >
> > This is a bit more complicated than it looks like to ensure correct id
> > assignment.
> > Have a look into the i2c code to see how it is handled. Essentially we
> must
> > pass
> > the requested number to ida_simple_get().
> >
> > Thanks,
> > Guenter
> 
> Ok that makes sense. I will put a wrapper function around ida_simple_get()
> that will request a specific number, if that fails then do a normal request.
> Something like this...
> 
> ret = of_alias_get_id()
> 
> id = ida_simple_get(_ida, ret, ret, GFP_KERNEL);
> 
ret, ret + 1

but something like
ret =  of_alias_get_id(...);
if (ret >= 0)
id = ida_simple_get(_ida, ret, ret + 1, GFP_KERNEL);
else
id = ida_simple_get(_ida, 0, MAX_DOGS, GFP_KERNEL);
if (id < 0)
return id;

would be better. Passing 'ret' directly would not work, because
ida_simple_get() expects an unsigned range as parameters, and
of_alias_get_id() can return a negative error code.

Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-08-29 Thread Guenter Roeck

On 08/28/2015 02:58 PM, Justin Chen wrote:

Currently there is no way to easily differentiate multiple
watchdog devices. The watchdogs are named by the order they
are probed.
1st probed watchdog: /dev/watchdog0
2nd probed watchdog: /dev/watchdog1
...

This change uses the alias of the watchdog device node for
the name of the watchdog.
aliases {
watchdog0 = "/./"
watchdog3 = "//."
watchdog2 = "//."
...
}

This will translate to...
/dev/watchdog0
/dev/watchdog3
/dev/watchdog2

Signed-off-by: Justin Chen 


Interesting idea. Checking through other subsystems, many others do the same,
so it makes sense to use that mechanism.

However, the id assignment should be in the calling code, in 
__watchdog_register_device,
to avoid that another id, possibly conflicting, is assigned through the ida 
mechanism.

This is a bit more complicated than it looks like to ensure correct id 
assignment.
Have a look into the i2c code to see how it is handled. Essentially we must pass
the requested number to ida_simple_get().

Thanks,
Guenter


---
  drivers/watchdog/watchdog_dev.c | 9 -
  1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
index 6aaefba..52b1f0b 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
@@ -41,6 +41,7 @@
  #include/* For handling misc devices */
  #include  /* For __init/__exit/... */
  #include   /* For copy_to_user/put_user/... */
+#include 

  #include "watchdog_core.h"

@@ -522,7 +523,13 @@ static struct miscdevice watchdog_miscdev = {

  int watchdog_dev_register(struct watchdog_device *watchdog)
  {
-   int err, devno;
+   int err, devno, ret;
+
+   if (watchdog->parent) {
+   ret = of_alias_get_id(watchdog->parent->of_node, "watchdog");
+   if (ret >= 0)
+   watchdog->id = ret;
+   }

if (watchdog->id == 0) {
old_wdd = watchdog;



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


Re: [PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-08-29 Thread Guenter Roeck

On 08/28/2015 02:58 PM, Justin Chen wrote:

Currently there is no way to easily differentiate multiple
watchdog devices. The watchdogs are named by the order they
are probed.
1st probed watchdog: /dev/watchdog0
2nd probed watchdog: /dev/watchdog1
...

This change uses the alias of the watchdog device node for
the name of the watchdog.
aliases {
watchdog0 = /./
watchdog3 = //.
watchdog2 = //.
...
}

This will translate to...
/dev/watchdog0
/dev/watchdog3
/dev/watchdog2

Signed-off-by: Justin Chen justinpo...@gmail.com


Interesting idea. Checking through other subsystems, many others do the same,
so it makes sense to use that mechanism.

However, the id assignment should be in the calling code, in 
__watchdog_register_device,
to avoid that another id, possibly conflicting, is assigned through the ida 
mechanism.

This is a bit more complicated than it looks like to ensure correct id 
assignment.
Have a look into the i2c code to see how it is handled. Essentially we must pass
the requested number to ida_simple_get().

Thanks,
Guenter


---
  drivers/watchdog/watchdog_dev.c | 9 -
  1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
index 6aaefba..52b1f0b 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
@@ -41,6 +41,7 @@
  #include linux/miscdevice.h   /* For handling misc devices */
  #include linux/init.h /* For __init/__exit/... */
  #include linux/uaccess.h  /* For copy_to_user/put_user/... */
+#include linux/of.h

  #include watchdog_core.h

@@ -522,7 +523,13 @@ static struct miscdevice watchdog_miscdev = {

  int watchdog_dev_register(struct watchdog_device *watchdog)
  {
-   int err, devno;
+   int err, devno, ret;
+
+   if (watchdog-parent) {
+   ret = of_alias_get_id(watchdog-parent-of_node, watchdog);
+   if (ret = 0)
+   watchdog-id = ret;
+   }

if (watchdog-id == 0) {
old_wdd = watchdog;



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


[PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-08-28 Thread Justin Chen
Currently there is no way to easily differentiate multiple
watchdog devices. The watchdogs are named by the order they
are probed.
1st probed watchdog: /dev/watchdog0
2nd probed watchdog: /dev/watchdog1
...

This change uses the alias of the watchdog device node for
the name of the watchdog.
aliases {
watchdog0 = "/./"
watchdog3 = "//."
watchdog2 = "//."
...
}

This will translate to...
/dev/watchdog0
/dev/watchdog3
/dev/watchdog2

Signed-off-by: Justin Chen 
---
 drivers/watchdog/watchdog_dev.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
index 6aaefba..52b1f0b 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
@@ -41,6 +41,7 @@
 #include   /* For handling misc devices */
 #include /* For __init/__exit/... */
 #include  /* For copy_to_user/put_user/... */
+#include 
 
 #include "watchdog_core.h"
 
@@ -522,7 +523,13 @@ static struct miscdevice watchdog_miscdev = {
 
 int watchdog_dev_register(struct watchdog_device *watchdog)
 {
-   int err, devno;
+   int err, devno, ret;
+
+   if (watchdog->parent) {
+   ret = of_alias_get_id(watchdog->parent->of_node, "watchdog");
+   if (ret >= 0)
+   watchdog->id = ret;
+   }
 
if (watchdog->id == 0) {
old_wdd = watchdog;
-- 
2.1.0

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


[PATCH] watchdog_dev: Use device tree alias for naming watchdogs

2015-08-28 Thread Justin Chen
Currently there is no way to easily differentiate multiple
watchdog devices. The watchdogs are named by the order they
are probed.
1st probed watchdog: /dev/watchdog0
2nd probed watchdog: /dev/watchdog1
...

This change uses the alias of the watchdog device node for
the name of the watchdog.
aliases {
watchdog0 = /./
watchdog3 = //.
watchdog2 = //.
...
}

This will translate to...
/dev/watchdog0
/dev/watchdog3
/dev/watchdog2

Signed-off-by: Justin Chen justinpo...@gmail.com
---
 drivers/watchdog/watchdog_dev.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
index 6aaefba..52b1f0b 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
@@ -41,6 +41,7 @@
 #include linux/miscdevice.h  /* For handling misc devices */
 #include linux/init.h/* For __init/__exit/... */
 #include linux/uaccess.h /* For copy_to_user/put_user/... */
+#include linux/of.h
 
 #include watchdog_core.h
 
@@ -522,7 +523,13 @@ static struct miscdevice watchdog_miscdev = {
 
 int watchdog_dev_register(struct watchdog_device *watchdog)
 {
-   int err, devno;
+   int err, devno, ret;
+
+   if (watchdog-parent) {
+   ret = of_alias_get_id(watchdog-parent-of_node, watchdog);
+   if (ret = 0)
+   watchdog-id = ret;
+   }
 
if (watchdog-id == 0) {
old_wdd = watchdog;
-- 
2.1.0

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