Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ofw_bus_is_compatib... FreeBSD Kernel Developer's Manualofw_bus_is_compatib...

     ofw_bus_is_compatible ofw_bus_is_compatible_strict
     ofw_bus_node_is_compatible	ofw_bus_search_compatible -- check device tree
     nodes for compatibility with drivers

     #include <dev/ofw/openfirm.h>
     #include <dev/ofw/ofw_bus.h>
     #include <dev/ofw/ofw_bus_subr.h>

     ofw_bus_is_compatible(device_t dev, const char *compatstr);

     ofw_bus_is_compatible_strict(device_t dev,	const char *compatstr);

     ofw_bus_node_is_compatible(phandle_t node,	const char *compatstr);

     const struct ofw_compat_data *
     ofw_bus_search_compatible(device_t	dev,
	 const struct ofw_compat_data *compat);

     The "compatible" property of the device tree node is used to identify the
     type of the device	the node represents.  The property is a	list of	one or
     more strings that represent hardware types	the device is compatible with.
     The common	format for such	strings	is "vendor,hardware" where "vendor" is
     an	abbreviated name of the	manufacturer and "hardware" is a device	iden-
     tifier, for instance, "fsl" for "Freescale" and "imx6ul-i2c" for the I2C
     controller.  More than one	string is required for compatibility with
     older revisions of	the driver.  If	hardware revision B is backward	com-
     patible with revision A device tree node can signal this compatibility by
     providing both "vndr,hrdwrA" and "vndr,hrdwrB" strings in the "compati-
     bile" property value.  This way older driver can use features available
     only in revision A, and the new version of	the driver can take advantage
     of	revision B feature set.

     ofw_bus_is_compatible() returns 1 if the compatstr	value occurs in	the
     "compatible" property list	of the device tree node	associated with	the
     device dev, and 0 otherwise.

     ofw_bus_is_compatible_strict() return 1 if	the "compatible" property of
     the device	tree node associated with the device dev consists of only one
     string and	this string is equal to	compatstr, and 0 otherwise.

     ofw_bus_node_is_compatible() returns 1 if the compatstr value occurs in
     the "compatible" property list of the device tree node node, and 0	other-

     ofw_bus_search_compatible() returns pointer to the	first entry of the
     compat table whose	ocd_str	field occurs in	"compatible" property of the
     device tree node associated with the device dev.  The compat table	is an
     array of struct ofw_compat_data elements defined as follows:

	   struct ofw_compat_data {
		   const char *ocd_str;
		   uintptr_t  ocd_data;
     The compat	table must be terminated by the	entry with ocd_str set to
     NULL.  If the device tree node is not compatible with any of the entries,
     the function returns the pointer to the terminating entry.

	   static struct ofw_compat_data compat_data[] = {
		   {"arm,hrdwrA",	   FEATURE_A},
		   {"arm,hrdwrB",	   FEATURE_A | FEATURE_B},
		   {NULL,		   0}

	   static int
	   hrdwr_probe(device_t	dev)
		   if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data)
			   return (ENXIO);

	   static int
	   hrdwr_attach(device_t dev)
		   sc =	device_get_softc(dev);
		   sc->sc_features = ofw_bus_search_compatible(dev, compat_data)->ocd_data;


     This manual page was written by Oleksandr Tymoshenko.

FreeBSD	13.0			 April 8, 2018			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help