Re: [PATCH 3/6] OF: Export all DT proc update functions

2013-03-19 Thread Grant Likely
On Tue, 19 Mar 2013 13:42:32 +0200, Pantelis Antoniou 
 wrote:
> Hi Grant,
> 
> The 3rd patch is in preparation for some patches I have in WIP that would 
> allow
> drivers to set notifications for properties that are changed in runtime.

Okay, submit it with that series then please.

g.

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


Re: [PATCH 3/6] OF: Export all DT proc update functions

2013-03-19 Thread Pantelis Antoniou
Hi Grant,

The 3rd patch is in preparation for some patches I have in WIP that would allow
drivers to set notifications for properties that are changed in runtime.

I think that since you have the all configuration taking place via DT and you
have a method to alter DT properties in run-time via /proc/device-tree, it's 
quite
straightforward to be able to alter runtime behavior via the same mechanism.

I.e. if you have some property that controls a devices behavior, it's intuitive 
that
when you modify that property, the device's state changes accordingly.

Regards

-- Pantelis

On Mar 16, 2013, at 11:45 AM, Grant Likely wrote:

> On Fri,  4 Jan 2013 21:31:07 +0200, Pantelis Antoniou 
>  wrote:
>> There are other users for the proc DT functions.
>> Export them.
>> 
>> Signed-off-by: Pantelis Antoniou 
> 
> Hi Pantelis.
> 
> Patches 1 & 2 look good. No comments there.
> 
> This patch bothers me. The manipulation of the proc entries is part and
> parcel of adding and removing nodes. The real problem seems to be that
> the node addition/removal APIs need to be made usable by the overlay
> code.
> 
> g.

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


Re: [PATCH 3/6] OF: Export all DT proc update functions

2013-03-16 Thread Grant Likely
On Fri,  4 Jan 2013 21:31:07 +0200, Pantelis Antoniou 
 wrote:
> There are other users for the proc DT functions.
> Export them.
> 
> Signed-off-by: Pantelis Antoniou 

Hi Pantelis.

Patches 1 & 2 look good. No comments there.

This patch bothers me. The manipulation of the proc entries is part and
parcel of adding and removing nodes. The real problem seems to be that
the node addition/removal APIs need to be made usable by the overlay
code.

g.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/6] OF: Export all DT proc update functions

2013-03-16 Thread Grant Likely
On Fri,  4 Jan 2013 21:31:07 +0200, Pantelis Antoniou 
 wrote:
> There are other users for the proc DT functions.
> Export them.
> 
> Signed-off-by: Pantelis Antoniou 

Actually, I cannot find the user of this patch. Why is it needed?

g.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/6] OF: Export all DT proc update functions

2013-01-04 Thread Pantelis Antoniou
There are other users for the proc DT functions.
Export them.

Signed-off-by: Pantelis Antoniou 
---
 drivers/of/base.c  | 108 -
 include/linux/of.h |  29 ++
 2 files changed, 87 insertions(+), 50 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index d598216..526db99 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1126,6 +1126,61 @@ int of_property_notify(int action, struct device_node 
*np,
 }
 #endif
 
+#ifdef CONFIG_PROC_DEVICETREE
+
+void of_add_proc_dt_entry(struct device_node *dn)
+{
+   struct proc_dir_entry *ent;
+
+   ent = proc_mkdir(strrchr(dn->full_name, '/') + 1, dn->parent->pde);
+   if (ent)
+   proc_device_tree_add_node(dn, ent);
+}
+
+void of_remove_proc_dt_entry(struct device_node *dn)
+{
+   struct device_node *parent;
+   struct property *prop;
+
+   if (!dn)
+   return;
+
+   parent = dn->parent;
+   prop = dn->properties;
+   while (prop) {
+   if (dn->pde)
+   remove_proc_entry(prop->name, dn->pde);
+   prop = prop->next;
+   }
+
+   if (dn->pde)
+   remove_proc_entry(dn->pde->name,
+   parent ? parent->pde : NULL);
+}
+
+void of_add_proc_dt_prop_entry(struct device_node *np,
+   struct property *prop)
+{
+   if (np && prop && np->pde)
+   proc_device_tree_add_prop(np->pde, prop);
+}
+
+void of_remove_proc_dt_prop_entry(struct device_node *np,
+   struct property *prop)
+{
+   if (np && prop && np->pde)
+   proc_device_tree_remove_prop(np->pde, prop);
+}
+
+void of_update_proc_dt_prop_entry(struct device_node *np,
+   struct property *newprop, struct property *oldprop)
+{
+   if (np && newprop && oldprop && np->pde)
+   proc_device_tree_update_prop(np->pde, newprop, oldprop);
+}
+
+#endif /* CONFIG_PROC_DEVICETREE */
+
 /**
  * of_add_property - Add a property to a node
  */
@@ -1153,11 +1208,8 @@ int of_add_property(struct device_node *np, struct 
property *prop)
*next = prop;
write_unlock_irqrestore(&devtree_lock, flags);
 
-#ifdef CONFIG_PROC_DEVICETREE
/* try to add to proc as well if it was initialized */
-   if (np->pde)
-   proc_device_tree_add_prop(np->pde, prop);
-#endif /* CONFIG_PROC_DEVICETREE */
+   of_add_proc_dt_prop_entry(np, prop);
 
return 0;
 }
@@ -1199,11 +1251,7 @@ int of_remove_property(struct device_node *np, struct 
property *prop)
if (!found)
return -ENODEV;
 
-#ifdef CONFIG_PROC_DEVICETREE
-   /* try to remove the proc node as well */
-   if (np->pde)
-   proc_device_tree_remove_prop(np->pde, prop);
-#endif /* CONFIG_PROC_DEVICETREE */
+   of_remove_proc_dt_prop_entry(np, prop);
 
return 0;
 }
@@ -1253,11 +1301,8 @@ int of_update_property(struct device_node *np, struct 
property *newprop)
if (!found)
return -ENODEV;
 
-#ifdef CONFIG_PROC_DEVICETREE
/* try to add to proc as well if it was initialized */
-   if (np->pde)
-   proc_device_tree_update_prop(np->pde, newprop, oldprop);
-#endif /* CONFIG_PROC_DEVICETREE */
+   of_update_proc_dt_prop_entry(np, newprop, oldprop);
 
return 0;
 }
@@ -1293,22 +1338,6 @@ int of_reconfig_notify(unsigned long action, void *p)
return notifier_to_errno(rc);
 }
 
-#ifdef CONFIG_PROC_DEVICETREE
-static void of_add_proc_dt_entry(struct device_node *dn)
-{
-   struct proc_dir_entry *ent;
-
-   ent = proc_mkdir(strrchr(dn->full_name, '/') + 1, dn->parent->pde);
-   if (ent)
-   proc_device_tree_add_node(dn, ent);
-}
-#else
-static void of_add_proc_dt_entry(struct device_node *dn)
-{
-   return;
-}
-#endif
-
 /**
  * of_attach_node - Plug a device node into the tree and global list.
  */
@@ -1332,27 +1361,6 @@ int of_attach_node(struct device_node *np)
return 0;
 }
 
-#ifdef CONFIG_PROC_DEVICETREE
-static void of_remove_proc_dt_entry(struct device_node *dn)
-{
-   struct device_node *parent = dn->parent;
-   struct property *prop = dn->properties;
-
-   while (prop) {
-   remove_proc_entry(prop->name, dn->pde);
-   prop = prop->next;
-   }
-
-   if (dn->pde)
-   remove_proc_entry(dn->pde->name, parent->pde);
-}
-#else
-static void of_remove_proc_dt_entry(struct device_node *dn)
-{
-   return;
-}
-#endif
-
 /**
  * of_detach_node - "Unplug" a node from the device tree.
  *
diff --git a/include/linux/of.h b/include/linux/of.h
index aea3694..305b087 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -309,6 +309,35 @@ static inline int of_property_notify(int action, struct 
device_node *np,
 }
 #endif
 
+#ifdef CONFIG_PROC_DEVICETREE
+
+extern void of_add_proc_dt_entry(struct device_node *dn);
+extern void of_remove_proc_dt_entry(struct d