100 lines
3.7 KiB
Groff
100 lines
3.7 KiB
Groff
.\"
|
|
.\" 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.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.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_xref
|
|
returns the effective phandle for the kernel phandle
|
|
.Fa xref .
|
|
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 .
|