Lines Matching refs:iodev
48 static struct cras_iodev *active_profile_dev(const struct cras_iodev *iodev) in active_profile_dev() argument
50 struct bt_node *active = (struct bt_node *)iodev->active_node; in active_profile_dev()
124 static int open_dev(struct cras_iodev *iodev) in open_dev() argument
126 struct bt_io *btio = (struct bt_io *)iodev; in open_dev()
127 struct cras_iodev *dev = active_profile_dev(iodev); in open_dev()
132 iodev->direction == CRAS_STREAM_INPUT) { in open_dev()
135 cras_bt_device_switch_profile_enable_dev(btio->device, iodev); in open_dev()
145 static int update_supported_formats(struct cras_iodev *iodev) in update_supported_formats() argument
147 struct cras_iodev *dev = active_profile_dev(iodev); in update_supported_formats()
156 *dev->format = *iodev->format; in update_supported_formats()
168 free(iodev->supported_rates); in update_supported_formats()
169 iodev->supported_rates = (size_t *)malloc( in update_supported_formats()
170 (length + 1) * sizeof(*iodev->supported_rates)); in update_supported_formats()
172 iodev->supported_rates[i] = dev->supported_rates[i]; in update_supported_formats()
176 iodev->supported_channel_counts = (size_t *)malloc( in update_supported_formats()
177 (length + 1) * sizeof(*iodev->supported_channel_counts)); in update_supported_formats()
179 iodev->supported_channel_counts[i] = in update_supported_formats()
185 iodev->supported_formats = (snd_pcm_format_t *)malloc( in update_supported_formats()
186 (length + 1) * sizeof(*iodev->supported_formats)); in update_supported_formats()
188 iodev->supported_formats[i] = dev->supported_formats[i]; in update_supported_formats()
192 static int configure_dev(struct cras_iodev *iodev) in configure_dev() argument
195 struct cras_iodev *dev = active_profile_dev(iodev); in configure_dev()
200 *dev->format = *iodev->format; in configure_dev()
206 iodev->buffer_size = dev->buffer_size; in configure_dev()
207 iodev->min_buffer_level = dev->min_buffer_level; in configure_dev()
211 static int close_dev(struct cras_iodev *iodev) in close_dev() argument
213 struct bt_io *btio = (struct bt_io *)iodev; in close_dev()
215 struct cras_iodev *dev = active_profile_dev(iodev); in close_dev()
224 iodev->direction == CRAS_STREAM_INPUT && in close_dev()
228 cras_bt_device_switch_profile(btio->device, iodev); in close_dev()
234 cras_iodev_free_format(iodev); in close_dev()
238 static void set_bt_volume(struct cras_iodev *iodev) in set_bt_volume() argument
240 struct cras_iodev *dev = active_profile_dev(iodev); in set_bt_volume()
245 dev->active_node->volume = iodev->active_node->volume; in set_bt_volume()
251 if (dev->set_volume && !iodev->software_volume_needed) in set_bt_volume()
255 static int frames_queued(const struct cras_iodev *iodev, in frames_queued() argument
258 struct cras_iodev *dev = active_profile_dev(iodev); in frames_queued()
264 static int delay_frames(const struct cras_iodev *iodev) in delay_frames() argument
266 struct cras_iodev *dev = active_profile_dev(iodev); in delay_frames()
272 static int get_buffer(struct cras_iodev *iodev, struct cras_audio_area **area, in get_buffer() argument
275 struct cras_iodev *dev = active_profile_dev(iodev); in get_buffer()
281 static int put_buffer(struct cras_iodev *iodev, unsigned nwritten) in put_buffer() argument
283 struct cras_iodev *dev = active_profile_dev(iodev); in put_buffer()
289 static int flush_buffer(struct cras_iodev *iodev) in flush_buffer() argument
291 struct cras_iodev *dev = active_profile_dev(iodev); in flush_buffer()
300 static void update_active_node(struct cras_iodev *iodev, unsigned node_idx, in update_active_node() argument
303 struct bt_io *btio = (struct bt_io *)iodev; in update_active_node()
305 struct bt_node *active = (struct bt_node *)iodev->active_node; in update_active_node()
312 DL_FOREACH (iodev->nodes, node) { in update_active_node()
322 set_bt_volume(iodev); in update_active_node()
327 dev = active_profile_dev(iodev); in update_active_node()
332 static int no_stream(struct cras_iodev *iodev, int enable) in no_stream() argument
334 struct cras_iodev *dev = active_profile_dev(iodev); in no_stream()
346 dev->min_cb_level = iodev->min_cb_level; in no_stream()
347 dev->max_cb_level = iodev->max_cb_level; in no_stream()
348 dev->buffer_size = iodev->buffer_size; in no_stream()
354 static int is_free_running(const struct cras_iodev *iodev) in is_free_running() argument
356 struct cras_iodev *dev = active_profile_dev(iodev); in is_free_running()
366 static int start(const struct cras_iodev *iodev) in start() argument
368 struct cras_iodev *dev = active_profile_dev(iodev); in start()
383 struct cras_iodev *iodev; in cras_bt_io_create() local
395 iodev = &btio->base; in cras_bt_io_create()
396 iodev->direction = dev->direction; in cras_bt_io_create()
397 strcpy(iodev->info.name, dev->info.name); in cras_bt_io_create()
398 iodev->info.stable_id = dev->info.stable_id; in cras_bt_io_create()
400 iodev->open_dev = open_dev; in cras_bt_io_create()
401 iodev->configure_dev = configure_dev; in cras_bt_io_create()
402 iodev->frames_queued = frames_queued; in cras_bt_io_create()
403 iodev->delay_frames = delay_frames; in cras_bt_io_create()
404 iodev->get_buffer = get_buffer; in cras_bt_io_create()
405 iodev->put_buffer = put_buffer; in cras_bt_io_create()
406 iodev->flush_buffer = flush_buffer; in cras_bt_io_create()
407 iodev->close_dev = close_dev; in cras_bt_io_create()
408 iodev->update_supported_formats = update_supported_formats; in cras_bt_io_create()
409 iodev->update_active_node = update_active_node; in cras_bt_io_create()
410 iodev->no_stream = no_stream; in cras_bt_io_create()
411 iodev->is_free_running = is_free_running; in cras_bt_io_create()
412 iodev->start = start; in cras_bt_io_create()
420 iodev->software_volume_needed = in cras_bt_io_create()
422 iodev->set_volume = set_bt_volume; in cras_bt_io_create()
430 active->base.dev = iodev; in cras_bt_io_create()
446 cras_iodev_add_node(iodev, &active->base); in cras_bt_io_create()
458 if (iodev->direction == CRAS_STREAM_OUTPUT) in cras_bt_io_create()
459 err = cras_iodev_list_add_output(iodev); in cras_bt_io_create()
461 err = cras_iodev_list_add_input(iodev); in cras_bt_io_create()
465 cras_iodev_set_active_node(iodev, &active->base); in cras_bt_io_create()