Lines Matching refs:hu

46 	struct hci_uart hu;
55 static int mrvl_open(struct hci_uart *hu)
60 BT_DBG("hu %p", hu);
62 if (!hci_uart_has_flow_control(hu))
74 hu->priv = mrvl;
76 if (hu->serdev) {
77 ret = serdev_device_open(hu->serdev);
89 static int mrvl_close(struct hci_uart *hu)
91 struct mrvl_data *mrvl = hu->priv;
93 BT_DBG("hu %p", hu);
95 if (hu->serdev)
96 serdev_device_close(hu->serdev);
103 hu->priv = NULL;
107 static int mrvl_flush(struct hci_uart *hu)
109 struct mrvl_data *mrvl = hu->priv;
111 BT_DBG("hu %p", hu);
119 static struct sk_buff *mrvl_dequeue(struct hci_uart *hu)
121 struct mrvl_data *mrvl = hu->priv;
136 static int mrvl_enqueue(struct hci_uart *hu, struct sk_buff *skb)
138 struct mrvl_data *mrvl = hu->priv;
144 static void mrvl_send_ack(struct hci_uart *hu, unsigned char type)
146 struct mrvl_data *mrvl = hu->priv;
152 bt_dev_err(hu->hdev, "Unable to alloc ack/nak packet");
158 hci_uart_tx_wakeup(hu);
164 struct hci_uart *hu = hci_get_drvdata(hdev);
165 struct mrvl_data *mrvl = hu->priv;
170 mrvl_send_ack(hu, MRVL_NAK);
174 mrvl_send_ack(hu, MRVL_ACK);
196 struct hci_uart *hu = hci_get_drvdata(hdev);
197 struct mrvl_data *mrvl = hu->priv;
203 mrvl_send_ack(hu, MRVL_NAK);
207 mrvl_send_ack(hu, MRVL_ACK);
250 static int mrvl_recv(struct hci_uart *hu, const void *data, int count)
252 struct mrvl_data *mrvl = hu->priv;
254 if (!test_bit(HCI_UART_REGISTERED, &hu->flags))
257 mrvl->rx_skb = h4_recv_buf(hu->hdev, mrvl->rx_skb, data, count,
262 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err);
272 struct hci_uart *hu = hci_get_drvdata(hdev);
273 struct mrvl_data *mrvl = hu->priv;
347 hci_uart_tx_wakeup(hu);
354 static int mrvl_setup(struct hci_uart *hu)
358 hci_uart_set_flow_control(hu, true);
360 err = mrvl_load_firmware(hu->hdev, "mrvl/helper_uart_3000000.bin");
362 bt_dev_err(hu->hdev, "Unable to download firmware helper");
367 hci_uart_wait_until_sent(hu);
369 if (hu->serdev)
370 serdev_device_set_baudrate(hu->serdev, 3000000);
372 hci_uart_set_baudrate(hu, 3000000);
374 hci_uart_set_flow_control(hu, false);
376 err = mrvl_load_firmware(hu->hdev, "mrvl/uart8897_bt.bin");
404 mrvldev->hu.serdev = serdev;
407 return hci_uart_register_device(&mrvldev->hu, &mrvl_proto);
414 hci_uart_unregister_device(&mrvldev->hu);