Lines Matching refs:hu
59 struct hci_uart *hu; member
71 struct hci_uart *hu; member
107 static int intel_wait_booting(struct hci_uart *hu) in intel_wait_booting() argument
109 struct intel_data *intel = hu->priv; in intel_wait_booting()
117 bt_dev_err(hu->hdev, "Device boot interrupted"); in intel_wait_booting()
122 bt_dev_err(hu->hdev, "Device boot timeout"); in intel_wait_booting()
129 static int intel_wait_lpm_transaction(struct hci_uart *hu) in intel_wait_lpm_transaction() argument
131 struct intel_data *intel = hu->priv; in intel_wait_lpm_transaction()
139 bt_dev_err(hu->hdev, "LPM transaction interrupted"); in intel_wait_lpm_transaction()
144 bt_dev_err(hu->hdev, "LPM transaction timeout"); in intel_wait_lpm_transaction()
151 static int intel_lpm_suspend(struct hci_uart *hu) in intel_lpm_suspend() argument
154 struct intel_data *intel = hu->priv; in intel_lpm_suspend()
164 bt_dev_dbg(hu->hdev, "Suspending"); in intel_lpm_suspend()
168 bt_dev_err(hu->hdev, "Failed to alloc memory for LPM packet"); in intel_lpm_suspend()
179 hci_uart_tx_wakeup(hu); in intel_lpm_suspend()
181 intel_wait_lpm_transaction(hu); in intel_lpm_suspend()
187 bt_dev_err(hu->hdev, "Device suspend error"); in intel_lpm_suspend()
191 bt_dev_dbg(hu->hdev, "Suspended"); in intel_lpm_suspend()
193 hci_uart_set_flow_control(hu, true); in intel_lpm_suspend()
198 static int intel_lpm_resume(struct hci_uart *hu) in intel_lpm_resume() argument
200 struct intel_data *intel = hu->priv; in intel_lpm_resume()
207 bt_dev_dbg(hu->hdev, "Resuming"); in intel_lpm_resume()
209 hci_uart_set_flow_control(hu, false); in intel_lpm_resume()
213 bt_dev_err(hu->hdev, "Failed to alloc memory for LPM packet"); in intel_lpm_resume()
223 hci_uart_tx_wakeup(hu); in intel_lpm_resume()
225 intel_wait_lpm_transaction(hu); in intel_lpm_resume()
231 bt_dev_err(hu->hdev, "Device resume error"); in intel_lpm_resume()
235 bt_dev_dbg(hu->hdev, "Resumed"); in intel_lpm_resume()
240 static int intel_lpm_host_wake(struct hci_uart *hu) in intel_lpm_host_wake() argument
243 struct intel_data *intel = hu->priv; in intel_lpm_host_wake()
246 hci_uart_set_flow_control(hu, false); in intel_lpm_host_wake()
252 bt_dev_err(hu->hdev, "Failed to alloc memory for LPM packet"); in intel_lpm_host_wake()
261 hci_uart_tx_wakeup(hu); in intel_lpm_host_wake()
263 bt_dev_dbg(hu->hdev, "Resumed by controller"); in intel_lpm_host_wake()
275 if (idev->hu) in intel_irq()
276 intel_lpm_host_wake(idev->hu); in intel_irq()
286 static int intel_set_power(struct hci_uart *hu, bool powered) in intel_set_power() argument
291 if (!hu->tty->dev) in intel_set_power()
300 if (hu->tty->dev->parent != idev->pdev->dev.parent) in intel_set_power()
309 hu, dev_name(&idev->pdev->dev), powered); in intel_set_power()
319 idev->hu = powered ? hu : NULL; in intel_set_power()
333 hu, idev->irq); in intel_set_power()
363 if (!intel->hu->tty->dev) in intel_busy_work()
369 if (intel->hu->tty->dev->parent == idev->pdev->dev.parent) { in intel_busy_work()
378 static int intel_open(struct hci_uart *hu) in intel_open() argument
382 BT_DBG("hu %p", hu); in intel_open()
384 if (!hci_uart_has_flow_control(hu)) in intel_open()
394 intel->hu = hu; in intel_open()
396 hu->priv = intel; in intel_open()
398 if (!intel_set_power(hu, true)) in intel_open()
404 static int intel_close(struct hci_uart *hu) in intel_close() argument
406 struct intel_data *intel = hu->priv; in intel_close()
408 BT_DBG("hu %p", hu); in intel_close()
412 intel_set_power(hu, false); in intel_close()
418 hu->priv = NULL; in intel_close()
422 static int intel_flush(struct hci_uart *hu) in intel_flush() argument
424 struct intel_data *intel = hu->priv; in intel_flush()
426 BT_DBG("hu %p", hu); in intel_flush()
458 static int intel_set_baudrate(struct hci_uart *hu, unsigned int speed) in intel_set_baudrate() argument
460 struct intel_data *intel = hu->priv; in intel_set_baudrate()
461 struct hci_dev *hdev = hu->hdev; in intel_set_baudrate()
469 err = intel_wait_booting(hu); in intel_set_baudrate()
505 hci_uart_set_flow_control(hu, true); in intel_set_baudrate()
508 hci_uart_tx_wakeup(hu); in intel_set_baudrate()
513 hci_uart_set_baudrate(hu, speed); in intel_set_baudrate()
514 hci_uart_set_flow_control(hu, false); in intel_set_baudrate()
519 static int intel_setup(struct hci_uart *hu) in intel_setup() argument
521 struct intel_data *intel = hu->priv; in intel_setup()
522 struct hci_dev *hdev = hu->hdev; in intel_setup()
538 hu->hdev->set_diag = btintel_set_diag; in intel_setup()
539 hu->hdev->set_bdaddr = btintel_set_bdaddr; in intel_setup()
549 if (hu->init_speed) in intel_setup()
550 init_speed = hu->init_speed; in intel_setup()
552 init_speed = hu->proto->init_speed; in intel_setup()
554 if (hu->oper_speed) in intel_setup()
555 oper_speed = hu->oper_speed; in intel_setup()
557 oper_speed = hu->proto->oper_speed; in intel_setup()
563 err = intel_wait_booting(hu); in intel_setup()
791 err = intel_set_baudrate(hu, init_speed); in intel_setup()
813 err = intel_wait_booting(hu); in intel_setup()
830 if (!hu->tty->dev) in intel_setup()
832 if (hu->tty->dev->parent == idev->pdev->dev.parent) { in intel_setup()
851 err = intel_set_baudrate(hu, oper_speed); in intel_setup()
865 struct hci_uart *hu = hci_get_drvdata(hdev); in intel_recv_event() local
866 struct intel_data *intel = hu->priv; in intel_recv_event()
903 struct hci_uart *hu = hci_get_drvdata(hdev); in intel_recv_lpm_notify() local
904 struct intel_data *intel = hu->priv; in intel_recv_lpm_notify()
919 struct hci_uart *hu = hci_get_drvdata(hdev); in intel_recv_lpm() local
920 struct intel_data *intel = hu->priv; in intel_recv_lpm()
925 bt_dev_err(hu->hdev, "Invalid LPM notification packet"); in intel_recv_lpm()
964 static int intel_recv(struct hci_uart *hu, const void *data, int count) in intel_recv() argument
966 struct intel_data *intel = hu->priv; in intel_recv()
968 if (!test_bit(HCI_UART_REGISTERED, &hu->flags)) in intel_recv()
971 intel->rx_skb = h4_recv_buf(hu, intel->rx_skb, data, count, in intel_recv()
977 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err); in intel_recv()
985 static int intel_enqueue(struct hci_uart *hu, struct sk_buff *skb) in intel_enqueue() argument
987 struct intel_data *intel = hu->priv; in intel_enqueue()
990 BT_DBG("hu %p skb %p", hu, skb); in intel_enqueue()
992 if (!hu->tty->dev) in intel_enqueue()
1000 if (hu->tty->dev->parent == idev->pdev->dev.parent) { in intel_enqueue()
1013 static struct sk_buff *intel_dequeue(struct hci_uart *hu) in intel_dequeue() argument
1015 struct intel_data *intel = hu->priv; in intel_dequeue()
1033 inject_cmd_complete(hu->hdev, opcode); in intel_dequeue()
1072 if (idev->hu) in intel_suspend_device()
1073 intel_lpm_suspend(idev->hu); in intel_suspend_device()
1084 if (idev->hu) in intel_resume_device()
1085 intel_lpm_resume(idev->hu); in intel_resume_device()