FreeBSD manual
download PDF document: OF_device_from_xref.9.pdf
OF_DEVICE_FROM_XREF(9) FreeBSD Kernel Developer's Manual
NAME
OF_device_from_xref, OF_xref_from_device, OF_device_register_xref -
manage mappings between xrefs and devices
SYNOPSIS
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/ofw_bus_subr.h>
int
OF_device_register_xref(phandle_t xref, device_t dev);
device_t
OF_device_from_xref(phandle_t xref);
phandle_t
OF_xref_from_device(device_t dev);
DESCRIPTION
When a device tree node references another node, the driver may need to
get a device_t instance associated with the referenced node. For
instance, an Ethernet driver accessing a PHY device. To make this
possible, the kernel maintains a table that maps effective handles to
device_t instances.
OF_device_register_xref() adds a map entry from the effective phandle
xref to device dev. If a mapping entry for xref already exists, it is
replaced with the new one. The function always returns 0.
OF_device_from_xref() returns a device_t instance associated with the
effective phandle xref. If no such mapping exists, the function returns
NULL.
OF_xref_from_device() returns the effective phandle associated with the
device dev. If no such mapping exists, the function returns 0.
EXAMPLES
static int
acmephy_attach(device_t dev)
{
phandle_t node;
/* PHY node is referenced from eth device, register it */
node = ofw_bus_get_node(dev);
OF_device_register_xref(OF_xref_from_node(node), dev);
return (0);
}
SEE ALSO
OF_node_to_xref(9)
AUTHORS
This manual page was written by Oleksandr Tymoshenko <gonzo@FreeBSD.org>.
FreeBSD 14.0-RELEASE-p11 April 9, 2018 FreeBSD 14.0-RELEASE-p11