Lines Matching refs:hu

112 	struct hci_uart		*hu;  member
133 static inline void host_set_baudrate(struct hci_uart *hu, unsigned int speed) in host_set_baudrate() argument
135 if (hu->serdev) in host_set_baudrate()
136 serdev_device_set_baudrate(hu->serdev, speed); in host_set_baudrate()
138 hci_uart_set_baudrate(hu, speed); in host_set_baudrate()
141 static int bcm_set_baudrate(struct hci_uart *hu, unsigned int speed) in bcm_set_baudrate() argument
143 struct hci_dev *hdev = hu->hdev; in bcm_set_baudrate()
197 if (device && device->hu && device->hu->serdev) in bcm_device_exists()
352 static int bcm_setup_sleep(struct hci_uart *hu) in bcm_setup_sleep() argument
354 struct bcm_data *bcm = hu->priv; in bcm_setup_sleep()
360 skb = __hci_cmd_sync(hu->hdev, 0xfc27, sizeof(sleep_params), in bcm_setup_sleep()
364 bt_dev_err(hu->hdev, "Sleep VSC failed (%d)", err); in bcm_setup_sleep()
369 bt_dev_dbg(hu->hdev, "Set Sleep Parameters VSC succeeded"); in bcm_setup_sleep()
375 static inline int bcm_setup_sleep(struct hci_uart *hu) { return 0; } in bcm_setup_sleep() argument
380 struct hci_uart *hu = hci_get_drvdata(hdev); in bcm_set_diag() local
381 struct bcm_data *bcm = hu->priv; in bcm_set_diag()
396 hci_uart_tx_wakeup(hu); in bcm_set_diag()
401 static int bcm_open(struct hci_uart *hu) in bcm_open() argument
407 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_open()
409 if (!hci_uart_has_flow_control(hu)) in bcm_open()
418 hu->priv = bcm; in bcm_open()
422 if (hu->serdev) { in bcm_open()
423 bcm->dev = serdev_device_get_drvdata(hu->serdev); in bcm_open()
427 if (!hu->tty->dev) in bcm_open()
437 if (hu->tty->dev->parent == dev->dev->parent) { in bcm_open()
440 dev->hu = hu; in bcm_open()
448 hu->init_speed = bcm->dev->init_speed; in bcm_open()
449 hu->oper_speed = bcm->dev->oper_speed; in bcm_open()
460 if (!hu->serdev) in bcm_open()
461 bcm->dev->hu = NULL; in bcm_open()
464 hu->priv = NULL; in bcm_open()
469 static int bcm_close(struct hci_uart *hu) in bcm_close() argument
471 struct bcm_data *bcm = hu->priv; in bcm_close()
475 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_close()
480 if (hu->serdev) { in bcm_close()
481 bdev = serdev_device_get_drvdata(hu->serdev); in bcm_close()
485 bdev->hu = NULL; in bcm_close()
498 bt_dev_err(hu->hdev, "Failed to power down"); in bcm_close()
508 hu->priv = NULL; in bcm_close()
512 static int bcm_flush(struct hci_uart *hu) in bcm_flush() argument
514 struct bcm_data *bcm = hu->priv; in bcm_flush()
516 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_flush()
523 static int bcm_setup(struct hci_uart *hu) in bcm_setup() argument
525 struct bcm_data *bcm = hu->priv; in bcm_setup()
531 bt_dev_dbg(hu->hdev, "hu %p", hu); in bcm_setup()
533 hu->hdev->set_diag = bcm_set_diag; in bcm_setup()
534 hu->hdev->set_bdaddr = btbcm_set_bdaddr; in bcm_setup()
536 err = btbcm_initialize(hu->hdev, fw_name, sizeof(fw_name), false); in bcm_setup()
540 err = request_firmware(&fw, fw_name, &hu->hdev->dev); in bcm_setup()
542 bt_dev_info(hu->hdev, "BCM: Patch %s not found", fw_name); in bcm_setup()
546 err = btbcm_patchram(hu->hdev, fw); in bcm_setup()
548 bt_dev_info(hu->hdev, "BCM: Patch failed (%d)", err); in bcm_setup()
553 if (hu->init_speed) in bcm_setup()
554 speed = hu->init_speed; in bcm_setup()
555 else if (hu->proto->init_speed) in bcm_setup()
556 speed = hu->proto->init_speed; in bcm_setup()
561 host_set_baudrate(hu, speed); in bcm_setup()
564 if (hu->oper_speed) in bcm_setup()
565 speed = hu->oper_speed; in bcm_setup()
566 else if (hu->proto->oper_speed) in bcm_setup()
567 speed = hu->proto->oper_speed; in bcm_setup()
572 err = bcm_set_baudrate(hu, speed); in bcm_setup()
574 host_set_baudrate(hu, speed); in bcm_setup()
580 err = btbcm_finalize(hu->hdev); in bcm_setup()
585 err = bcm_setup_sleep(hu); in bcm_setup()
628 static int bcm_recv(struct hci_uart *hu, const void *data, int count) in bcm_recv() argument
630 struct bcm_data *bcm = hu->priv; in bcm_recv()
632 if (!test_bit(HCI_UART_REGISTERED, &hu->flags)) in bcm_recv()
635 bcm->rx_skb = h4_recv_buf(hu->hdev, bcm->rx_skb, data, count, in bcm_recv()
639 bt_dev_err(hu->hdev, "Frame reassembly failed (%d)", err); in bcm_recv()
656 static int bcm_enqueue(struct hci_uart *hu, struct sk_buff *skb) in bcm_enqueue() argument
658 struct bcm_data *bcm = hu->priv; in bcm_enqueue()
660 bt_dev_dbg(hu->hdev, "hu %p skb %p", hu, skb); in bcm_enqueue()
669 static struct sk_buff *bcm_dequeue(struct hci_uart *hu) in bcm_dequeue() argument
671 struct bcm_data *bcm = hu->priv; in bcm_dequeue()
703 if (!bdev->is_suspended && bdev->hu) { in bcm_suspend_device()
704 hci_uart_set_flow_control(bdev->hu, true); in bcm_suspend_device()
713 if (bdev->is_suspended && bdev->hu) { in bcm_suspend_device()
715 hci_uart_set_flow_control(bdev->hu, false); in bcm_suspend_device()
743 if (bdev->is_suspended && bdev->hu) { in bcm_resume_device()
746 hci_uart_set_flow_control(bdev->hu, false); in bcm_resume_device()
770 if (!bdev->hu) in bcm_suspend()
804 if (!bdev->hu) in bcm_resume()
1383 bcmdev->hu = &bcmdev->serdev_hu; in bcm_serdev_probe()