Lines Matching refs:hu

143 	struct hci_uart		*hu;  member
170 static inline void host_set_baudrate(struct hci_uart *hu, unsigned int speed) in host_set_baudrate() argument
172 if (hu->serdev) in host_set_baudrate()
173 serdev_device_set_baudrate(hu->serdev, speed); in host_set_baudrate()
175 hci_uart_set_baudrate(hu, speed); in host_set_baudrate()
178 static int bcm_set_baudrate(struct hci_uart *hu, unsigned int speed) in bcm_set_baudrate() argument
180 struct hci_dev *hdev = hu->hdev; in bcm_set_baudrate()
181 struct bcm_data *bcm = hu->priv; in bcm_set_baudrate()
235 if (device && device->hu && device->hu->serdev) in bcm_device_exists()
392 static int bcm_setup_sleep(struct hci_uart *hu) in bcm_setup_sleep() argument
394 struct bcm_data *bcm = hu->priv; in bcm_setup_sleep()
400 skb = __hci_cmd_sync(hu->hdev, 0xfc27, sizeof(sleep_params), in bcm_setup_sleep()
404 bt_dev_err(hu->hdev, "Sleep VSC failed (%d)", err); in bcm_setup_sleep()
409 bt_dev_dbg(hu->hdev, "Set Sleep Parameters VSC succeeded"); in bcm_setup_sleep()
415 static inline int bcm_setup_sleep(struct hci_uart *hu) { return 0; } in bcm_setup_sleep() argument
420 struct hci_uart *hu = hci_get_drvdata(hdev); in bcm_set_diag() local
421 struct bcm_data *bcm = hu->priv; in bcm_set_diag()
436 hci_uart_tx_wakeup(hu); in bcm_set_diag()
441 static int bcm_open(struct hci_uart *hu) in bcm_open() argument
447 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_open()
449 if (!hci_uart_has_flow_control(hu)) in bcm_open()
458 hu->priv = bcm; in bcm_open()
462 if (hu->serdev) { in bcm_open()
463 bcm->dev = serdev_device_get_drvdata(hu->serdev); in bcm_open()
467 if (!hu->tty->dev) in bcm_open()
477 if (hu->tty->dev->parent == dev->dev->parent) { in bcm_open()
480 dev->hu = hu; in bcm_open()
489 hci_uart_set_flow_control(hu, false); /* Assert BT_UART_CTS_N */ in bcm_open()
491 hci_uart_set_flow_control(hu, true); in bcm_open()
494 hu->init_speed = min(bcm->dev->oper_speed, bcm->dev->max_autobaud_speed); in bcm_open()
496 hu->init_speed = bcm->dev->init_speed; in bcm_open()
502 hu->oper_speed = bcm->dev->oper_speed; in bcm_open()
507 hci_uart_set_flow_control(hu, false); in bcm_open()
518 if (!hu->serdev) in bcm_open()
519 bcm->dev->hu = NULL; in bcm_open()
522 hu->priv = NULL; in bcm_open()
527 static int bcm_close(struct hci_uart *hu) in bcm_close() argument
529 struct bcm_data *bcm = hu->priv; in bcm_close()
533 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_close()
538 if (hu->serdev) { in bcm_close()
539 bdev = serdev_device_get_drvdata(hu->serdev); in bcm_close()
543 bdev->hu = NULL; in bcm_close()
556 bt_dev_err(hu->hdev, "Failed to power down"); in bcm_close()
566 hu->priv = NULL; in bcm_close()
570 static int bcm_flush(struct hci_uart *hu) in bcm_flush() argument
572 struct bcm_data *bcm = hu->priv; in bcm_flush()
574 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_flush()
581 static int bcm_setup(struct hci_uart *hu) in bcm_setup() argument
583 struct bcm_data *bcm = hu->priv; in bcm_setup()
589 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_setup()
591 hu->hdev->set_diag = bcm_set_diag; in bcm_setup()
592 hu->hdev->set_bdaddr = btbcm_set_bdaddr; in bcm_setup()
594 err = btbcm_initialize(hu->hdev, &fw_load_done, use_autobaud_mode); in bcm_setup()
604 else if (hu->proto->init_speed) in bcm_setup()
605 speed = hu->proto->init_speed; in bcm_setup()
610 host_set_baudrate(hu, speed); in bcm_setup()
613 if (hu->oper_speed) in bcm_setup()
614 speed = hu->oper_speed; in bcm_setup()
617 else if (hu->proto->oper_speed) in bcm_setup()
618 speed = hu->proto->oper_speed; in bcm_setup()
623 err = bcm_set_baudrate(hu, speed); in bcm_setup()
625 host_set_baudrate(hu, speed); in bcm_setup()
632 btbcm_read_pcm_int_params(hu->hdev, &params); in bcm_setup()
635 btbcm_write_pcm_int_params(hu->hdev, &params); in bcm_setup()
638 err = btbcm_finalize(hu->hdev, &fw_load_done, use_autobaud_mode); in bcm_setup()
646 if (test_bit(HCI_QUIRK_INVALID_BDADDR, &hu->hdev->quirks)) in bcm_setup()
647 set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hu->hdev->quirks); in bcm_setup()
650 err = bcm_setup_sleep(hu); in bcm_setup()
694 static int bcm_recv(struct hci_uart *hu, const void *data, int count) in bcm_recv() argument
696 struct bcm_data *bcm = hu->priv; in bcm_recv()
698 if (!test_bit(HCI_UART_REGISTERED, &hu->flags)) in bcm_recv()
701 bcm->rx_skb = h4_recv_buf(hu->hdev, bcm->rx_skb, data, count, in bcm_recv()
705 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err); in bcm_recv()
722 static int bcm_enqueue(struct hci_uart *hu, struct sk_buff *skb) in bcm_enqueue() argument
724 struct bcm_data *bcm = hu->priv; in bcm_enqueue()
726 bt_dev_dbg(hu->hdev, "hu %p skb %p", hu, skb); in bcm_enqueue()
735 static struct sk_buff *bcm_dequeue(struct hci_uart *hu) in bcm_dequeue() argument
737 struct bcm_data *bcm = hu->priv; in bcm_dequeue()
769 if (!bdev->is_suspended && bdev->hu) { in bcm_suspend_device()
770 hci_uart_set_flow_control(bdev->hu, true); in bcm_suspend_device()
779 if (bdev->is_suspended && bdev->hu) { in bcm_suspend_device()
781 hci_uart_set_flow_control(bdev->hu, false); in bcm_suspend_device()
809 if (bdev->is_suspended && bdev->hu) { in bcm_resume_device()
812 hci_uart_set_flow_control(bdev->hu, false); in bcm_resume_device()
836 if (!bdev->hu) in bcm_suspend()
870 if (!bdev->hu) in bcm_resume()
1532 bcmdev->hu = &bcmdev->serdev_hu; in bcm_serdev_probe()