Lines Matching refs:hu
48 struct hci_uart hu;
57 static int mrvl_open(struct hci_uart *hu)
62 BT_DBG("hu %p", hu);
64 if (!hci_uart_has_flow_control(hu))
76 hu->priv = mrvl;
78 if (hu->serdev) {
79 ret = serdev_device_open(hu->serdev);
91 static int mrvl_close(struct hci_uart *hu)
93 struct mrvl_data *mrvl = hu->priv;
95 BT_DBG("hu %p", hu);
97 if (hu->serdev)
98 serdev_device_close(hu->serdev);
105 hu->priv = NULL;
109 static int mrvl_flush(struct hci_uart *hu)
111 struct mrvl_data *mrvl = hu->priv;
113 BT_DBG("hu %p", hu);
121 static struct sk_buff *mrvl_dequeue(struct hci_uart *hu)
123 struct mrvl_data *mrvl = hu->priv;
138 static int mrvl_enqueue(struct hci_uart *hu, struct sk_buff *skb)
140 struct mrvl_data *mrvl = hu->priv;
146 static void mrvl_send_ack(struct hci_uart *hu, unsigned char type)
148 struct mrvl_data *mrvl = hu->priv;
154 bt_dev_err(hu->hdev, "Unable to alloc ack/nak packet");
160 hci_uart_tx_wakeup(hu);
166 struct hci_uart *hu = hci_get_drvdata(hdev);
167 struct mrvl_data *mrvl = hu->priv;
172 mrvl_send_ack(hu, MRVL_NAK);
176 mrvl_send_ack(hu, MRVL_ACK);
198 struct hci_uart *hu = hci_get_drvdata(hdev);
199 struct mrvl_data *mrvl = hu->priv;
205 mrvl_send_ack(hu, MRVL_NAK);
209 mrvl_send_ack(hu, MRVL_ACK);
252 static int mrvl_recv(struct hci_uart *hu, const void *data, int count)
254 struct mrvl_data *mrvl = hu->priv;
256 if (!test_bit(HCI_UART_REGISTERED, &hu->flags))
267 mrvl->rx_skb = h4_recv_buf(hu->hdev, mrvl->rx_skb, data, count,
272 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err);
282 struct hci_uart *hu = hci_get_drvdata(hdev);
283 struct mrvl_data *mrvl = hu->priv;
357 hci_uart_tx_wakeup(hu);
364 static int mrvl_setup(struct hci_uart *hu)
367 struct mrvl_data *mrvl = hu->priv;
369 hci_uart_set_flow_control(hu, true);
371 err = mrvl_load_firmware(hu->hdev, "mrvl/helper_uart_3000000.bin");
373 bt_dev_err(hu->hdev, "Unable to download firmware helper");
378 hci_uart_wait_until_sent(hu);
380 if (hu->serdev)
381 serdev_device_set_baudrate(hu->serdev, hu->oper_speed);
383 hci_uart_set_baudrate(hu, hu->oper_speed);
385 hci_uart_set_flow_control(hu, false);
387 err = mrvl_load_firmware(hu->hdev, "mrvl/uart8897_bt.bin");
396 static int mrvl_set_baudrate(struct hci_uart *hu, unsigned int speed)
399 struct mrvl_data *mrvl = hu->priv;
406 err = serdev_device_wait_for_cts(hu->serdev, true, 10000);
408 bt_dev_err(hu->hdev, "Wait for CTS failed with %d\n", err);
414 err = __hci_cmd_sync_status(hu->hdev, MRVL_SET_BAUDRATE,
418 bt_dev_err(hu->hdev, "send command failed: %d", err);
422 serdev_device_set_baudrate(hu->serdev, speed);
429 set_bit(HCI_UART_VND_DETECT, &hu->hdev_flags);
471 mrvldev->hu.oper_speed = mrvl_proto->oper_speed;
473 of_property_read_u32(serdev->dev.of_node, "max-speed", &mrvldev->hu.oper_speed);
475 mrvldev->hu.serdev = serdev;
478 return hci_uart_register_device(&mrvldev->hu, mrvl_proto);
485 hci_uart_unregister_device(&mrvldev->hu);