Reference

OF_device_from_xref(9)

manage mappings between xrefs and devices

NAME

OF_device_from_xref, OF_xref_from_device, OF_device_register_xref OF_device_unregister_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);

void

OF_device_unregister_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_unregister_xref() removes a map entry from the effective phandle xref to device dev. If a mapping entry for xref does not exists, it silently returns.

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 ⟨[email protected]⟩.

History