Lines Matching defs:hdev
129 struct hci_dev *hdev;
144 static int mtk_hci_wmt_sync(struct hci_dev *hdev,
147 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
174 err = __hci_cmd_send(hdev, 0xfc6f, hlen, wc);
192 bt_dev_err(hdev, "Execution of wmt command interrupted");
198 bt_dev_err(hdev, "Execution of wmt command timed out");
207 bt_dev_err(hdev, "Wrong op received %d expected %d",
284 bdev->hdev->stat.byte_tx += skb->len;
326 bt_dev_err(bdev->hdev, "mailbox ACK not cleared");
343 bt_dev_err(bdev->hdev, "Cannot return ownership to device");
373 bt_dev_err(bdev->hdev, "Cannot get ownership from device");
378 static int btmtksdio_recv_event(struct hci_dev *hdev, struct sk_buff *skb)
380 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
396 err = hci_recv_frame(hdev, skb);
419 static int btmtksdio_recv_acl(struct hci_dev *hdev, struct sk_buff *skb)
421 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
434 return hci_recv_diag(hdev, skb);
437 return hci_recv_frame(hdev, skb);
477 bt_dev_err(bdev->hdev, "Rx size in sdio header is mismatched ");
496 bt_dev_err(bdev->hdev, "Invalid bt type 0x%02x",
503 bt_dev_err(bdev->hdev, "The size of bt header is mismatched");
523 bt_dev_err(bdev->hdev, "The size of bt payload is mismatched");
531 (&pkts[i])->recv(bdev->hdev, skb);
533 bdev->hdev->stat.byte_rx += rx_size;
583 bt_dev_dbg(bdev->hdev, "Get fw own back");
589 bt_dev_warn(bdev->hdev, "Tx fifo overflow");
596 bdev->hdev->stat.err_tx++;
606 bdev->hdev->stat.err_rx++;
629 static int btmtksdio_open(struct hci_dev *hdev)
631 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
713 static int btmtksdio_close(struct hci_dev *hdev)
715 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
736 static int btmtksdio_flush(struct hci_dev *hdev)
738 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
747 static int btmtksdio_func_query(struct hci_dev *hdev)
760 err = mtk_hci_wmt_sync(hdev, &wmt_params);
762 bt_dev_err(hdev, "Failed to query function status (%d)", err);
769 static int mt76xx_setup(struct hci_dev *hdev, const char *fwname)
771 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
785 err = mtk_hci_wmt_sync(hdev, &wmt_params);
787 bt_dev_err(hdev, "Failed to query firmware status (%d)", err);
792 bt_dev_info(hdev, "Firmware already downloaded");
797 err = btmtk_setup_firmware(hdev, fwname, mtk_hci_wmt_sync);
803 err = readx_poll_timeout(btmtksdio_func_query, hdev, status,
815 bt_dev_info(hdev, "function already on");
826 err = mtk_hci_wmt_sync(hdev, &wmt_params);
828 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
842 skb = __hci_cmd_sync(hdev, 0xfc7a, sizeof(tci_sleep), &tci_sleep,
846 bt_dev_err(hdev, "Failed to apply low power setting (%d)", err);
854 static int mt79xx_setup(struct hci_dev *hdev, const char *fwname)
856 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
861 err = btmtk_setup_firmware_79xx(hdev, fwname, mtk_hci_wmt_sync);
863 bt_dev_err(hdev, "Failed to setup 79xx firmware (%d)", err);
882 err = mtk_hci_wmt_sync(hdev, &wmt_params);
884 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
888 hci_set_msft_opcode(hdev, 0xFD30);
889 hci_set_aosp_capable(hdev);
895 static int btmtksdio_mtk_reg_read(struct hci_dev *hdev, u32 reg, u32 *val)
912 err = mtk_hci_wmt_sync(hdev, &wmt_params);
914 bt_dev_err(hdev, "Failed to read reg (%d)", err);
923 static int btmtksdio_mtk_reg_write(struct hci_dev *hdev, u32 reg, u32 val, u32 mask)
941 err = mtk_hci_wmt_sync(hdev, &wmt_params);
943 bt_dev_err(hdev, "Failed to write reg (%d)", err);
948 static int btmtksdio_get_data_path_id(struct hci_dev *hdev, __u8 *data_path_id)
955 static int btmtksdio_get_codec_config_data(struct hci_dev *hdev,
968 bt_dev_err(hdev, "Invalid link type(%u)", link);
988 bt_dev_err(hdev, "Invalid codec id(%u)", codec->id);
1004 static int btmtksdio_sco_setting(struct hci_dev *hdev)
1015 skb = __hci_cmd_sync(hdev, 0xfc72, sizeof(sco_setting),
1022 err = btmtksdio_mtk_reg_read(hdev, MT7921_PINMUX_0, &val);
1027 err = btmtksdio_mtk_reg_write(hdev, MT7921_PINMUX_0, val, ~0);
1031 err = btmtksdio_mtk_reg_read(hdev, MT7921_PINMUX_1, &val);
1036 err = btmtksdio_mtk_reg_write(hdev, MT7921_PINMUX_1, val, ~0);
1040 hdev->get_data_path_id = btmtksdio_get_data_path_id;
1041 hdev->get_codec_config_data = btmtksdio_get_codec_config_data;
1046 static int btmtksdio_reset_setting(struct hci_dev *hdev)
1051 err = btmtksdio_mtk_reg_read(hdev, MT7921_PINMUX_1, &val);
1056 err = btmtksdio_mtk_reg_write(hdev, MT7921_PINMUX_1, val, ~0);
1060 err = btmtksdio_mtk_reg_read(hdev, MT7921_BTSYS_RST, &val);
1065 return btmtksdio_mtk_reg_write(hdev, MT7921_BTSYS_RST, val, ~0);
1068 static int btmtksdio_setup(struct hci_dev *hdev)
1070 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
1083 err = btmtksdio_mtk_reg_read(hdev, MT7921_DLSTATUS,
1089 err = btmtksdio_mtk_reg_write(hdev, MT7921_DLSTATUS,
1101 err = btmtksdio_mtk_reg_read(hdev, 0x70010200, &dev_id);
1103 bt_dev_err(hdev, "Failed to get device id (%d)", err);
1107 err = btmtksdio_mtk_reg_read(hdev, 0x80021004, &fw_version);
1109 bt_dev_err(hdev, "Failed to get fw version (%d)", err);
1116 err = mt79xx_setup(hdev, fwname);
1121 err = btmtksdio_sco_setting(hdev);
1123 bt_dev_err(hdev, "Failed to enable SCO setting (%d)", err);
1128 set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
1132 err = btmtksdio_reset_setting(hdev);
1134 bt_dev_err(hdev, "Failed to enable Reset setting (%d)", err);
1141 set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
1146 err = mt76xx_setup(hdev, bdev->data->fwname);
1175 bt_dev_info(hdev, "Device setup in %llu usecs", duration);
1180 static int btmtksdio_shutdown(struct hci_dev *hdev)
1182 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
1203 err = mtk_hci_wmt_sync(hdev, &wmt_params);
1205 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
1216 static int btmtksdio_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
1218 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
1222 hdev->stat.cmd_tx++;
1226 hdev->stat.acl_tx++;
1230 hdev->stat.sco_tx++;
1244 static void btmtksdio_cmd_timeout(struct hci_dev *hdev)
1246 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
1271 bt_dev_err(hdev, "Failed to reset (%d)", err);
1282 hci_reset_dev(hdev);
1285 static bool btmtksdio_sdio_inband_wakeup(struct hci_dev *hdev)
1287 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
1292 static bool btmtksdio_sdio_wakeup(struct hci_dev *hdev)
1294 struct btmtksdio_dev *bdev = hci_get_drvdata(hdev);
1307 skb = __hci_cmd_sync(hdev, 0xfc27, sizeof(bt_awake),
1322 struct hci_dev *hdev;
1340 hdev = hci_alloc_dev();
1341 if (!hdev) {
1346 bdev->hdev = hdev;
1348 hdev->bus = HCI_SDIO;
1349 hci_set_drvdata(hdev, bdev);
1351 hdev->open = btmtksdio_open;
1352 hdev->close = btmtksdio_close;
1353 hdev->cmd_timeout = btmtksdio_cmd_timeout;
1354 hdev->flush = btmtksdio_flush;
1355 hdev->setup = btmtksdio_setup;
1356 hdev->shutdown = btmtksdio_shutdown;
1357 hdev->send = btmtksdio_send_frame;
1358 hdev->wakeup = btmtksdio_sdio_wakeup;
1364 hdev->wakeup = btmtksdio_sdio_inband_wakeup;
1366 hdev->wakeup = btmtksdio_sdio_wakeup;
1367 hdev->set_bdaddr = btmtk_set_bdaddr;
1369 SET_HCIDEV_DEV(hdev, &func->dev);
1371 hdev->manufacturer = 70;
1372 set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
1376 err = hci_register_dev(hdev);
1379 hci_free_dev(hdev);
1404 bt_dev_err(hdev, "failed to initialize device wakeup");
1419 struct hci_dev *hdev;
1427 hdev = bdev->hdev;
1430 hci_unregister_dev(hdev);
1431 hci_free_dev(hdev);
1452 bt_dev_dbg(bdev->hdev, "status (%d) return ownership to device", err);
1472 bt_dev_dbg(bdev->hdev, "status (%d) get ownership from device", err);