summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/OF_node_from_xref.9
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man9/OF_node_from_xref.9')
-rw-r--r--static/freebsd/man9/OF_node_from_xref.999
1 files changed, 99 insertions, 0 deletions
diff --git a/static/freebsd/man9/OF_node_from_xref.9 b/static/freebsd/man9/OF_node_from_xref.9
new file mode 100644
index 00000000..755c8295
--- /dev/null
+++ b/static/freebsd/man9/OF_node_from_xref.9
@@ -0,0 +1,99 @@
+.\"
+.\" SPDX-License-Identifier: BSD-2-Clause
+.\"
+.\" Copyright (c) 2018 Oleksandr Tymoshenko <gonzo@FreeBSD.org>
+.\"
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd April 9, 2018
+.Dt OF_NODE_FROM_XREF 9
+.Os
+.Sh NAME
+.Nm OF_node_from_xref ,
+.Nm OF_xref_from_node
+.Nd convert between kernel phandle and effective phandle
+.Sh SYNOPSIS
+.In dev/ofw/ofw_bus.h
+.In dev/ofw/ofw_bus_subr.h
+.Ft phandle_t
+.Fn OF_node_from_xref "phandle_t xref"
+.Ft phandle_t
+.Fn OF_xref_from_node "phandle_t node"
+.Sh DESCRIPTION
+Some OpenFirmware implementations (FDT, IBM) have a concept
+of effective phandle or xrefs.
+They are used to cross-reference device tree nodes.
+For instance, a framebuffer controller may refer to a GPIO
+controller and pin that controls the backlight.
+In this example, the GPIO node would have a cell (32-bit integer)
+property with a reserved name like "phandle" or "linux,phandle"
+whose value uniquely identifies the node.
+The actual name depends on the implementation.
+The framebuffer node would have a property with the name
+described by device bindings (device-specific set of properties).
+It can be a cell property or a combined property with one part
+of it being a cell.
+The value of the framebuffer node's property would be the same
+as the value of the GPIO "phandle" property so it can be said
+that the framebuffer node refers to the GPIO node.
+The kernel uses internal logic to assign unique identifiers
+to the device tree nodes, and these values do not match
+the values of "phandle" properties.
+.Fn OF_node_from_xref
+and
+.Fn OF_xref_from_node
+are used to perform conversion between these two kinds of node
+identifiers.
+.Pp
+.Fn OF_node_from_xref
+returns the kernel phandle for the effective phandle
+.Fa xref .
+If one cannot be found or the OpenFirmware implementation
+does not support effective phandles, the function returns
+the input value.
+.Pp
+.Fn OF_xref_from_node
+returns the effective phandle for the kernel phandle
+.Fa node .
+If one cannot be found or the OpenFirmware implementation
+does not support effective phandles, the function returns
+the input value.
+.Sh EXAMPLES
+.Bd -literal
+ phandle_t panelnode, panelxref;
+ char *model;
+
+ if (OF_getencprop(node, "lcd-panel", &panelxref) <= 0)
+ return;
+
+ panelnode = OF_node_from_xref(panelxref);
+ if (OF_getprop_alloc(hdminode, "model", (void **)&model) <= 0)
+ return;
+.Ed
+.Sh SEE ALSO
+.Xr OF_device_from_xref 9 ,
+.Xr OF_device_register_xref 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Oleksandr Tymoshenko Aq Mt gonzo@FreeBSD.org .