Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


RADIO(9)                   Kernel Developer's Manual                  RADIO(9)

NAME
     radio - interface between low- and high-level FM radio drivers

SYNOPSIS
     #include <dev/radio_if.h>

     device_t
     radio_attach_mi(const struct radio_hw_if *rhwp, void *hdlp,
         device_t dev);

DESCRIPTION
     The radio layer provides support for digitally programmable FM radio
     tuners.

     It is divided into a machine independent, high-level part responsible for
     managing device files, and low-level hardware drivers.

     The high-level radio driver attaches to the low-level driver when the
     latter calls radio_attach_mi().

     The radio_hw_if struct contains pointers to functions provided by the
     low-level driver.  The hdlp argument is a handle to a low-level driver's
     softc structure.  It is sent as the first argument to all the functions
     in radio_hw_if when the high-level driver calls them.  dev is the device
     struct for the hardware device.

     The fields of radio_hw_if are described in some more detail below.

     struct radio_hw_if {
             int     (*open)(void *, int, int, struct lwp *);
             int     (*close)(void *, int, int, struct lwp *);
             int     (*get_info)(void *, struct radio_info *);
             int     (*set_info)(void *, struct radio_info *);
             int     (*search)(void *, int);
     };

     (*open)(sc, flags, fmt, lwp)
           Called when the radio device is opened.  Optionally, if there is no
           need to call a driver's function when the device file is opened,
           NULL should be passed in this field.  Returns 0 on success,
           otherwise an error code.

     (*close)(sc, flags, fmt, lwp)
           Called when the radio device is closed.  Optionally, if there is no
           need to call a driver's function when the device file is closed,
           NULL should be passed in thie field.  Returns 0 on success,
           otherwise an error code.

     (*get_info)(sc, ri)
           Fills the radio_info struct.  This function is used to obtain the
           current state of a hardware device.  It is executed as a result of
           calling RIOCGINFO on a device file managed by the high-level
           driver.  Returns 0 on success, otherwise an error code.

     (*set_info)(sc, ri)
           Set values from the radio_info struct.  This function is used to
           modify the current state of a hardware device (enable/disable
           various modes and parameters).  It is executed as a result of
           calling RIOCSINFO on a device file managed by the high-level
           driver.  Returns 0 on success, otherwise an error code.

     (*search)(sc, ri)
           Initiates automatic search for the radio station.  It is executed
           as a result of calling RIOCSSRCH on a device file managed by the
           high-level driver.  Returns 0 on success, otherwise an error code.

SEE ALSO
     radio(4)

AUTHORS
     The radio API was written by Vladimir Popov and Maxim Tsyplakov for
     OpenBSD and ported to NetBSD by Lennart Augustsson.

NetBSD 10.99                     July 9, 2018                     NetBSD 10.99