static int bluecard_close(bluecard_info_t *info) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) unsigned int iobase = info->p_dev->resource[0]->start; #else unsigned int iobase = info->p_dev->io.BasePort1; #endif struct hci_dev *hdev = info->hdev; if (!hdev) return -ENODEV; bluecard_hci_close(hdev); clear_bit(CARD_READY, &(info->hw_state)); /* Reset card */ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET; outb(info->ctrl_reg, iobase + REG_CONTROL); /* Turn FPGA off */ outb(0x80, iobase + 0x30); hci_unregister_dev(hdev); hci_free_dev(hdev); return 0; }
static int bluecard_close(bluecard_info_t *info) { unsigned int iobase = info->p_dev->io.BasePort1; struct hci_dev *hdev = info->hdev; if (!hdev) return -ENODEV; bluecard_hci_close(hdev); clear_bit(CARD_READY, &(info->hw_state)); /* Reset card */ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET; outb(info->ctrl_reg, iobase + REG_CONTROL); /* Turn FPGA off */ outb(0x80, iobase + 0x30); if (hci_unregister_dev(hdev) < 0) BT_ERR("Can't unregister HCI device %s", hdev->name); hci_free_dev(hdev); return 0; }
int bluecard_close(bluecard_info_t *info) { unsigned int iobase = info->link.io.BasePort1; struct hci_dev *hdev = &(info->hdev); bluecard_hci_close(hdev); clear_bit(CARD_READY, &(info->hw_state)); /* Reset card */ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET; outb(info->ctrl_reg, iobase + REG_CONTROL); /* Turn FPGA off */ outb(0x80, iobase + 0x30); if (hci_unregister_dev(hdev) < 0) printk(KERN_WARNING "bluecard_cs: Can't unregister HCI device %s.\n", hdev->name); return 0; }
static int bluecard_close(struct bluecard_info *info) { unsigned int iobase = info->p_dev->resource[0]->start; struct hci_dev *hdev = info->hdev; if (!hdev) return -ENODEV; bluecard_hci_close(hdev); clear_bit(CARD_READY, &(info->hw_state)); /* Reset card */ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET; outb(info->ctrl_reg, iobase + REG_CONTROL); /* Turn FPGA off */ outb(0x80, iobase + 0x30); hci_unregister_dev(hdev); hci_free_dev(hdev); return 0; }