Provided by: freebsd-manpages_12.2-2_all bug

NAME

       DEVICE_IDENTIFY — identify a device, register it

SYNOPSIS

       #include <sys/param.h>
       #include <sys/bus.h>

       void
       DEVICE_IDENTIFY(driver_t *driver, device_t parent);

DESCRIPTION

       The  identify  function  for  a  device  is  only  needed for devices on buses that cannot identify their
       children independently, e.g. the ISA bus.  It is used to recognize the device (usually done by  accessing
       non-ambiguous  registers  in the hardware) and to tell the kernel about it and thus creating a new device
       instance.

       BUS_ADD_CHILD(9) is used to register the device as a child of the bus.  The device's resources  (such  as
       IRQ  and I/O ports) are registered with the kernel by calling bus_set_resource() for each resource (refer
       to bus_set_resource(9) for more information).

       Since the device tree and the device driver tree are disjoint, the  DEVICE_IDENTIFY()  routine  needs  to
       take  this  into  account.   If you load and unload your device driver that has the identify routine, the
       child node has the potential for adding the same node multiple times unless specific measure are taken to
       preclude that possibility.

EXAMPLES

       The following pseudo-code shows an example of a  function  that  probes  for  a  piece  of  hardware  and
       registers it and its resource (an I/O port) with the kernel.

       void
       foo_identify(driver_t *driver, device_t parent)
       {
               device_t child;

               retrieve_device_information;
               if (devices matches one of your supported devices &&
                   not already in device tree) {
                       child = BUS_ADD_CHILD(parent, 0, "foo", -1);
                       bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1);
               }
       }

SEE ALSO

       BUS_ADD_CHILD(9),      bus_set_resource(9),     device(9),     device_add_child(9),     DEVICE_ATTACH(9),
       DEVICE_DETACH(9), DEVICE_PROBE(9), DEVICE_SHUTDOWN(9)

AUTHORS

       This manual page was written by Alexander Langer <alex@FreeBSD.org>.

Debian                                          January 15, 2017                              DEVICE_IDENTIFY(9)