hci_if
static const struct hci_if bcsp_hci = {
static const struct hci_if bth5_hci = {
static const struct hci_if btuart_hci = {
static const struct hci_if bt3c_hci = {
static const struct hci_if btbc_hci = {
static const struct hci_if sbt_hci = {
static const struct hci_if ubt_hci = {
const struct hci_if *hci_if; /* bthci driver interface */
struct hci_unit *hci_attach_pcb(const struct hci_if *, device_t, uint16_t);
(*unit->hci_if->get_stats)(unit->hci_dev, &btr->btr_stats, 0);
(*unit->hci_if->get_stats)(unit->hci_dev, &btr->btr_stats, 1);
unit->hci_if = hci_if;
mutex_init(&unit->hci_devlock, MUTEX_DRIVER, hci_if->ipl);
err = (*unit->hci_if->enable)(unit->hci_dev);
(*unit->hci_if->disable)(unit->hci_dev);
(*unit->hci_if->disable)(unit->hci_dev);
(*unit->hci_if->output_cmd)(unit->hci_dev, m);
(*unit->hci_if->output_acl)(unit->hci_dev, m);
(*unit->hci_if->output_sco)(unit->hci_dev, m);
hci_attach_pcb(const struct hci_if *hci_if, device_t dev, uint16_t flags)
KASSERT(hci_if->enable != NULL);
KASSERT(hci_if->disable != NULL);
KASSERT(hci_if->output_cmd != NULL);
KASSERT(hci_if->output_acl != NULL);
KASSERT(hci_if->output_sco != NULL);
KASSERT(hci_if->get_stats != NULL);