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()
130 static int intel_wait_lpm_transaction(struct hci_uart *hu) in intel_wait_lpm_transaction() argument
132 struct intel_data *intel = hu->priv; in intel_wait_lpm_transaction()
140 bt_dev_err(hu->hdev, "LPM transaction interrupted"); in intel_wait_lpm_transaction()
145 bt_dev_err(hu->hdev, "LPM transaction timeout"); in intel_wait_lpm_transaction()
152 static int intel_lpm_suspend(struct hci_uart *hu) in intel_lpm_suspend() argument
155 struct intel_data *intel = hu->priv; in intel_lpm_suspend()
165 bt_dev_dbg(hu->hdev, "Suspending"); in intel_lpm_suspend()
169 bt_dev_err(hu->hdev, "Failed to alloc memory for LPM packet"); in intel_lpm_suspend()
180 hci_uart_tx_wakeup(hu); in intel_lpm_suspend()
182 intel_wait_lpm_transaction(hu); in intel_lpm_suspend()
188 bt_dev_err(hu->hdev, "Device suspend error"); in intel_lpm_suspend()
192 bt_dev_dbg(hu->hdev, "Suspended"); in intel_lpm_suspend()
194 hci_uart_set_flow_control(hu, true); in intel_lpm_suspend()
199 static int intel_lpm_resume(struct hci_uart *hu) in intel_lpm_resume() argument
201 struct intel_data *intel = hu->priv; in intel_lpm_resume()
208 bt_dev_dbg(hu->hdev, "Resuming"); in intel_lpm_resume()
210 hci_uart_set_flow_control(hu, false); in intel_lpm_resume()
214 bt_dev_err(hu->hdev, "Failed to alloc memory for LPM packet"); in intel_lpm_resume()
224 hci_uart_tx_wakeup(hu); in intel_lpm_resume()
226 intel_wait_lpm_transaction(hu); in intel_lpm_resume()
232 bt_dev_err(hu->hdev, "Device resume error"); in intel_lpm_resume()
236 bt_dev_dbg(hu->hdev, "Resumed"); in intel_lpm_resume()
242 static int intel_lpm_host_wake(struct hci_uart *hu) in intel_lpm_host_wake() argument
245 struct intel_data *intel = hu->priv; in intel_lpm_host_wake()
248 hci_uart_set_flow_control(hu, false); in intel_lpm_host_wake()
254 bt_dev_err(hu->hdev, "Failed to alloc memory for LPM packet"); in intel_lpm_host_wake()
263 hci_uart_tx_wakeup(hu); in intel_lpm_host_wake()
265 bt_dev_dbg(hu->hdev, "Resumed by controller"); in intel_lpm_host_wake()
277 if (idev->hu) in intel_irq()
278 intel_lpm_host_wake(idev->hu); in intel_irq()
289 static int intel_set_power(struct hci_uart *hu, bool powered) in intel_set_power() argument
294 if (!hu->tty->dev) in intel_set_power()
306 if (hu->tty->dev->parent != idev->pdev->dev.parent) in intel_set_power()
315 hu, dev_name(&idev->pdev->dev), powered); in intel_set_power()
325 idev->hu = powered ? hu : NULL; in intel_set_power()
339 hu, idev->irq); in intel_set_power()
369 if (!intel->hu->tty->dev) in intel_busy_work()
378 if (intel->hu->tty->dev->parent == idev->pdev->dev.parent) { in intel_busy_work()
388 static int intel_open(struct hci_uart *hu) in intel_open() argument
392 BT_DBG("hu %p", hu); in intel_open()
394 if (!hci_uart_has_flow_control(hu)) in intel_open()
404 intel->hu = hu; in intel_open()
406 hu->priv = intel; in intel_open()
408 if (!intel_set_power(hu, true)) in intel_open()
414 static int intel_close(struct hci_uart *hu) in intel_close() argument
416 struct intel_data *intel = hu->priv; in intel_close()
418 BT_DBG("hu %p", hu); in intel_close()
422 intel_set_power(hu, false); in intel_close()
428 hu->priv = NULL; in intel_close()
432 static int intel_flush(struct hci_uart *hu) in intel_flush() argument
434 struct intel_data *intel = hu->priv; in intel_flush()
436 BT_DBG("hu %p", hu); in intel_flush()
468 static int intel_set_baudrate(struct hci_uart *hu, unsigned int speed) in intel_set_baudrate() argument
470 struct intel_data *intel = hu->priv; in intel_set_baudrate()
471 struct hci_dev *hdev = hu->hdev; in intel_set_baudrate()
479 err = intel_wait_booting(hu); in intel_set_baudrate()
515 hci_uart_set_flow_control(hu, true); in intel_set_baudrate()
518 hci_uart_tx_wakeup(hu); in intel_set_baudrate()
523 hci_uart_set_baudrate(hu, speed); in intel_set_baudrate()
524 hci_uart_set_flow_control(hu, false); in intel_set_baudrate()
529 static int intel_setup(struct hci_uart *hu) in intel_setup() argument
531 struct intel_data *intel = hu->priv; in intel_setup()
532 struct hci_dev *hdev = hu->hdev; in intel_setup()
548 hu->hdev->set_diag = btintel_set_diag; in intel_setup()
549 hu->hdev->set_bdaddr = btintel_set_bdaddr; in intel_setup()
559 if (hu->init_speed) in intel_setup()
560 init_speed = hu->init_speed; in intel_setup()
562 init_speed = hu->proto->init_speed; in intel_setup()
564 if (hu->oper_speed) in intel_setup()
565 oper_speed = hu->oper_speed; in intel_setup()
567 oper_speed = hu->proto->oper_speed; in intel_setup()
573 err = intel_wait_booting(hu); in intel_setup()
804 err = intel_set_baudrate(hu, init_speed); in intel_setup()
826 err = intel_wait_booting(hu); in intel_setup()
845 if (!hu->tty->dev) in intel_setup()
847 if (hu->tty->dev->parent == dev->pdev->dev.parent) { in intel_setup()
866 err = intel_set_baudrate(hu, oper_speed); in intel_setup()
880 struct hci_uart *hu = hci_get_drvdata(hdev); in intel_recv_event() local
881 struct intel_data *intel = hu->priv; in intel_recv_event()
918 struct hci_uart *hu = hci_get_drvdata(hdev); in intel_recv_lpm_notify() local
919 struct intel_data *intel = hu->priv; in intel_recv_lpm_notify()
934 struct hci_uart *hu = hci_get_drvdata(hdev); in intel_recv_lpm() local
935 struct intel_data *intel = hu->priv; in intel_recv_lpm()
940 bt_dev_err(hu->hdev, "Invalid LPM notification packet"); in intel_recv_lpm()
979 static int intel_recv(struct hci_uart *hu, const void *data, int count) in intel_recv() argument
981 struct intel_data *intel = hu->priv; in intel_recv()
983 if (!test_bit(HCI_UART_REGISTERED, &hu->flags)) in intel_recv()
986 intel->rx_skb = h4_recv_buf(hu->hdev, intel->rx_skb, data, count, in intel_recv()
991 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err); in intel_recv()
999 static int intel_enqueue(struct hci_uart *hu, struct sk_buff *skb) in intel_enqueue() argument
1001 struct intel_data *intel = hu->priv; in intel_enqueue()
1004 BT_DBG("hu %p skb %p", hu, skb); in intel_enqueue()
1006 if (!hu->tty->dev) in intel_enqueue()
1017 if (hu->tty->dev->parent == idev->pdev->dev.parent) { in intel_enqueue()
1031 static struct sk_buff *intel_dequeue(struct hci_uart *hu) in intel_dequeue() argument
1033 struct intel_data *intel = hu->priv; in intel_dequeue()
1051 inject_cmd_complete(hu->hdev, opcode); in intel_dequeue()
1090 if (idev->hu) in intel_suspend_device()
1091 intel_lpm_suspend(idev->hu); in intel_suspend_device()
1102 if (idev->hu) in intel_resume_device()
1103 intel_lpm_resume(idev->hu); in intel_resume_device()