Lines Matching defs:hci

10 #include <ddk/protocol/bt-hci.h>
17 #include <zircon/device/bt-hci.h>
74 bt_hci_protocol_t hci;
85 bcm_hci_t* hci = ctx;
89 hci_proto->ops = hci->hci.ops;
90 hci_proto->ctx = hci->hci.ctx;
97 bcm_hci_t* hci = ctx;
106 status = bt_hci_open_command_channel(&hci->hci, reply);
108 status = bt_hci_open_acl_data_channel(&hci->hci, reply);
110 status = bt_hci_open_snoop_channel(&hci->hci, reply);
122 bcm_hci_t* hci = ctx;
124 device_remove(hci->zxdev);
128 bcm_hci_t* hci = ctx;
130 if (hci->command_channel != ZX_HANDLE_INVALID) {
131 zx_handle_close(hci->command_channel);
134 free(hci);
146 static zx_status_t bcm_hci_send_command(bcm_hci_t* hci, const hci_command_header_t* command,
149 zx_status_t status = zx_channel_write(hci->command_channel, 0, command, length, NULL, 0);
161 status = zx_channel_read(hci->command_channel, 0, event_buf, NULL, sizeof(event_buf), 0,
164 zx_object_wait_one(hci->command_channel, ZX_CHANNEL_READABLE | ZX_CHANNEL_PEER_CLOSED,
190 static zx_status_t bcm_hci_set_baud_rate(bcm_hci_t* hci, uint32_t baud_rate) {
200 zx_status_t status = bcm_hci_send_command(hci, &command.header, sizeof(command));
205 return serial_config(&hci->serial, TARGET_BAUD_RATE, SERIAL_SET_BAUD_RATE_ONLY);
210 bcm_hci_t* hci = arg;
213 zx_status_t status = bt_hci_open_command_channel(&hci->hci, &hci->command_channel);
219 status = bcm_hci_send_command(hci, &RESET_CMD, sizeof(RESET_CMD));
224 if (hci->is_uart) {
226 status = bcm_hci_set_baud_rate(hci, TARGET_BAUD_RATE);
233 status = load_firmware(hci->zxdev, FIRMWARE_PATH, &fw_vmo, &fw_size);
235 status = bcm_hci_send_command(hci, &START_FIRMWARE_DOWNLOAD_CMD,
269 status = bcm_hci_send_command(hci, header, length);
280 if (hci->is_uart) {
282 status = serial_config(&hci->serial, 115200, SERIAL_SET_BAUD_RATE_ONLY);
289 status = bcm_hci_set_baud_rate(hci, TARGET_BAUD_RATE);
295 zxlogf(INFO, "bcm-hci: no firmware file found\n");
300 zx_handle_close(hci->command_channel);
301 hci->command_channel = ZX_HANDLE_INVALID;
303 device_make_visible(hci->zxdev);
312 device_remove(hci->zxdev);
317 bcm_hci_t* hci = calloc(1, sizeof(bcm_hci_t));
318 if (!hci) {
322 zx_status_t status = device_get_protocol(device, ZX_PROTOCOL_BT_HCI, &hci->hci);
327 status = device_get_protocol(device, ZX_PROTOCOL_SERIAL, &hci->serial);
329 hci->is_uart = true;
334 .name = "bcm-hci",
335 .ctx = hci,
341 hci->transport_dev = device;
343 status = device_add(device, &args, &hci->zxdev);
345 bcm_hci_release(hci);
351 int thrd_rc = thrd_create_with_name(&t, bcm_hci_start_thread, hci, "bcm_hci_start_thread");
353 device_remove(hci->zxdev);
354 bcm_hci_release(hci);