OF_DEVICE_FROM_XREF(9) FreeBSD Kernel Developer's Manual OF_DEVICE_FROM_XREF(9)

NAME

OF_device_from_xref, OF_xref_from_device, OF_device_register_xrefmanage 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 device tree node references another node, the driver may need to get device associated with the referenced node. For instance, ethernet driver accessing PHY device. To make this possible, the kernel maintains the table that maps effective handles to device_t instances.
OF_device_register_xref() adds map entry from effective phandle xref to device dev. If mapping entry for xref already exists, it is replaced with new one. The function always returns 0.
OF_device_from_xref() returns device_t instance associated with effective phandle xref. If no such mapping exists, the function returns NULL.
OF_xref_from_device() returns effective phandle associated with 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>.
February 25, 2018 FreeBSD 12.0-CURRENT