Lines Matching refs:hu

71 	int			(*rx_func)(struct hci_uart *hu, u8 c);
74 struct hci_uart *hu; /* Parent HCI UART */ member
110 static void h5_link_control(struct hci_uart *hu, const void *data, size_t len) in h5_link_control() argument
112 struct h5 *h5 = hu->priv; in h5_link_control()
137 struct hci_uart *hu = h5->hu; in h5_timed_event() local
141 BT_DBG("%s", hu->hdev->name); in h5_timed_event()
144 h5_link_control(hu, sync_req, sizeof(sync_req)); in h5_timed_event()
148 h5_link_control(hu, conf_req, sizeof(conf_req)); in h5_timed_event()
161 BT_DBG("hu %p retransmitting %u pkts", hu, h5->unack.qlen); in h5_timed_event()
173 hci_uart_tx_wakeup(hu); in h5_timed_event()
176 static void h5_peer_reset(struct hci_uart *hu) in h5_peer_reset() argument
178 struct h5 *h5 = hu->priv; in h5_peer_reset()
194 hci_reset_dev(hu->hdev); in h5_peer_reset()
197 static int h5_open(struct hci_uart *hu) in h5_open() argument
202 BT_DBG("hu %p", hu); in h5_open()
204 if (hu->serdev) { in h5_open()
205 h5 = serdev_device_get_drvdata(hu->serdev); in h5_open()
212 hu->priv = h5; in h5_open()
213 h5->hu = hu; in h5_open()
228 set_bit(HCI_UART_INIT_PENDING, &hu->hdev_flags); in h5_open()
231 h5_link_control(hu, sync, sizeof(sync)); in h5_open()
237 static int h5_close(struct hci_uart *hu) in h5_close() argument
239 struct h5 *h5 = hu->priv; in h5_close()
250 if (!hu->serdev) in h5_close()
256 static int h5_setup(struct hci_uart *hu) in h5_setup() argument
258 struct h5 *h5 = hu->priv; in h5_setup()
308 static void h5_handle_internal_rx(struct hci_uart *hu) in h5_handle_internal_rx() argument
310 struct h5 *h5 = hu->priv; in h5_handle_internal_rx()
321 BT_DBG("%s", hu->hdev->name); in h5_handle_internal_rx()
333 h5_peer_reset(hu); in h5_handle_internal_rx()
334 h5_link_control(hu, sync_rsp, 2); in h5_handle_internal_rx()
337 h5_peer_reset(hu); in h5_handle_internal_rx()
339 h5_link_control(hu, conf_req, 3); in h5_handle_internal_rx()
341 h5_link_control(hu, conf_rsp, 2); in h5_handle_internal_rx()
342 h5_link_control(hu, conf_req, 3); in h5_handle_internal_rx()
348 hci_uart_init_ready(hu); in h5_handle_internal_rx()
359 h5_link_control(hu, woken_req, 2); in h5_handle_internal_rx()
366 hci_uart_tx_wakeup(hu); in h5_handle_internal_rx()
369 static void h5_complete_rx_pkt(struct hci_uart *hu) in h5_complete_rx_pkt() argument
371 struct h5 *h5 = hu->priv; in h5_complete_rx_pkt()
377 hci_uart_tx_wakeup(hu); in h5_complete_rx_pkt()
393 hci_recv_frame(hu->hdev, h5->rx_skb); in h5_complete_rx_pkt()
399 h5_handle_internal_rx(hu); in h5_complete_rx_pkt()
406 static int h5_rx_crc(struct hci_uart *hu, unsigned char c) in h5_rx_crc() argument
408 h5_complete_rx_pkt(hu); in h5_rx_crc()
413 static int h5_rx_payload(struct hci_uart *hu, unsigned char c) in h5_rx_payload() argument
415 struct h5 *h5 = hu->priv; in h5_rx_payload()
422 h5_complete_rx_pkt(hu); in h5_rx_payload()
428 static int h5_rx_3wire_hdr(struct hci_uart *hu, unsigned char c) in h5_rx_3wire_hdr() argument
430 struct h5 *h5 = hu->priv; in h5_rx_3wire_hdr()
434 hu->hdev->name, H5_HDR_SEQ(hdr), H5_HDR_ACK(hdr), in h5_rx_3wire_hdr()
464 static int h5_rx_pkt_start(struct hci_uart *hu, unsigned char c) in h5_rx_pkt_start() argument
466 struct h5 *h5 = hu->priv; in h5_rx_pkt_start()
481 h5->rx_skb->dev = (void *)hu->hdev; in h5_rx_pkt_start()
486 static int h5_rx_delimiter(struct hci_uart *hu, unsigned char c) in h5_rx_delimiter() argument
488 struct h5 *h5 = hu->priv; in h5_rx_delimiter()
539 static int h5_recv(struct hci_uart *hu, const void *data, int count) in h5_recv() argument
541 struct h5 *h5 = hu->priv; in h5_recv()
544 BT_DBG("%s pending %zu count %d", hu->hdev->name, h5->rx_pending, in h5_recv()
563 processed = h5->rx_func(hu, *ptr); in h5_recv()
574 static int h5_enqueue(struct hci_uart *hu, struct sk_buff *skb) in h5_enqueue() argument
576 struct h5 *h5 = hu->priv; in h5_enqueue()
647 static struct sk_buff *h5_prepare_pkt(struct hci_uart *hu, u8 pkt_type, in h5_prepare_pkt() argument
650 struct h5 *h5 = hu->priv; in h5_prepare_pkt()
689 hu->hdev->name, H5_HDR_SEQ(hdr), H5_HDR_ACK(hdr), in h5_prepare_pkt()
704 static struct sk_buff *h5_dequeue(struct hci_uart *hu) in h5_dequeue() argument
706 struct h5 *h5 = hu->priv; in h5_dequeue()
720 return h5_prepare_pkt(hu, HCI_3WIRE_LINK_PKT, wakeup_req, 2); in h5_dequeue()
725 nskb = h5_prepare_pkt(hu, hci_skb_pkt_type(skb), in h5_dequeue()
743 nskb = h5_prepare_pkt(hu, hci_skb_pkt_type(skb), in h5_dequeue()
760 return h5_prepare_pkt(hu, HCI_3WIRE_ACK_PKT, NULL, 0); in h5_dequeue()
765 static int h5_flush(struct hci_uart *hu) in h5_flush() argument
767 BT_DBG("hu %p", hu); in h5_flush()
795 h5->hu = &h5->serdev_hu; in h5_serdev_probe()
864 btrtl_dev = btrtl_initialize(h5->hu->hdev, h5->id); in h5_btrtl_setup()
868 err = btrtl_get_uart_settings(h5->hu->hdev, btrtl_dev, in h5_btrtl_setup()
875 skb = __hci_cmd_sync(h5->hu->hdev, 0xfc17, sizeof(baudrate_data), in h5_btrtl_setup()
878 rtl_dev_err(h5->hu->hdev, "set baud rate command failed\n"); in h5_btrtl_setup()
887 serdev_device_set_baudrate(h5->hu->serdev, controller_baudrate); in h5_btrtl_setup()
888 serdev_device_set_flow_control(h5->hu->serdev, flow_control); in h5_btrtl_setup()
890 err = btrtl_download_firmware(h5->hu->hdev, btrtl_dev); in h5_btrtl_setup()
903 serdev_device_set_flow_control(h5->hu->serdev, false); in h5_btrtl_open()
904 serdev_device_set_parity(h5->hu->serdev, SERDEV_PARITY_EVEN); in h5_btrtl_open()
905 serdev_device_set_baudrate(h5->hu->serdev, 115200); in h5_btrtl_open()
927 serdev_device_set_flow_control(h5->hu->serdev, false); in h5_btrtl_suspend()
964 reprobe->dev = get_device(&h5->hu->serdev->dev); in h5_btrtl_resume()