| RADIO(9) | Kernel Developer's Manual | RADIO(9) | 
radio —
#include <dev/radio_if.h>
device_t
  
  radio_attach_mi(const struct
    radio_hw_if *rhwp, void *hdlp,
    device_t dev);
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)NULL should be passed in this field. Returns 0 on
      success, otherwise an error code.(*close)(sc,
    flags, fmt,
    lwp)NULL should be passed in thie field. Returns 0 on
      success, otherwise an error code.(*get_info)(sc,
    ri)RIOCGINFO on a device file managed by the
      high-level driver. Returns 0 on success, otherwise an error code.(*set_info)(sc,
    ri)RIOCSINFO on a device file managed by the
      high-level driver. Returns 0 on success, otherwise an error code.(*search)(sc,
    ri)RIOCSSRCH on a device file
      managed by the high-level driver. Returns 0 on success, otherwise an error
      code.radio API was written by Vladimir
  Popov and Maxim Tsyplakov for
  OpenBSD and ported to NetBSD
  by Lennart Augustsson.
| July 9, 2018 | NetBSD 9.4 |