<p>Patrick Rudolph has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26191">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lib/device_tree: Add method to get phandle<br><br>Add a method to retrieve a node's phandle.<br>Useful for board specific devicetree manipulations.<br><br>Change-Id: I966151ad7e82fc678ab4f56cf9b5868ef39398e0<br>Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com><br>---<br>M src/include/device_tree.h<br>M src/lib/device_tree.c<br>2 files changed, 26 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/91/26191/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/include/device_tree.h b/src/include/device_tree.h</span><br><span>index 107fcf6..5c62ff6 100644</span><br><span>--- a/src/include/device_tree.h</span><br><span>+++ b/src/include/device_tree.h</span><br><span>@@ -147,6 +147,8 @@</span><br><span> // Look up a node relative to a parent node, through its property value.</span><br><span> struct device_tree_node *dt_find_prop_value(struct device_tree_node *parent, const char *name,</span><br><span>                              void *data, size_t size);</span><br><span style="color: hsl(120, 100%, 40%);">+// Return the phandle</span><br><span style="color: hsl(120, 100%, 40%);">+uint32_t dt_get_phandle(struct device_tree_node *parent);</span><br><span> // Write src into *dest as a 'length'-byte big-endian integer.</span><br><span> void dt_write_int(u8 *dest, u64 src, size_t length);</span><br><span> // Add different kinds of properties to a node, or update existing ones.</span><br><span>diff --git a/src/lib/device_tree.c b/src/lib/device_tree.c</span><br><span>index 0a88c1f..bbb892a 100644</span><br><span>--- a/src/lib/device_tree.c</span><br><span>+++ b/src/lib/device_tree.c</span><br><span>@@ -725,6 +725,30 @@</span><br><span>         return NULL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/**</span><br><span style="color: hsl(120, 100%, 40%);">+ * Find the phandle of a node.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * @param parent Pointer to node containing the phandle</span><br><span style="color: hsl(120, 100%, 40%);">+ * @return Zero on error, the phandle on success</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+uint32_t dt_get_phandle(struct device_tree_node *parent)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   uint32_t *phandle = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+     size_t len = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     dt_find_bin_prop(parent, "phandle", (void **)&phandle, &len);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (phandle != NULL && len == sizeof(*phandle))</span><br><span style="color: hsl(120, 100%, 40%);">+               return be32_to_cpu(*phandle);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       phandle = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+       len = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      dt_find_bin_prop(parent, "linux,phandle", (void **)&phandle, &len);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (phandle != NULL && len == sizeof(*phandle))</span><br><span style="color: hsl(120, 100%, 40%);">+               return be32_to_cpu(*phandle);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*</span><br><span>  * Write an arbitrary sized big-endian integer into a pointer.</span><br><span>  *</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26191">change 26191</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26191"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I966151ad7e82fc678ab4f56cf9b5868ef39398e0 </div>
<div style="display:none"> Gerrit-Change-Number: 26191 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Patrick Rudolph <patrick.rudolph@9elements.com> </div>