• Home
  • Raw
  • Download

Lines Matching refs:odev

69 static int default_no_stream_playback(struct cras_iodev *odev)  in default_no_stream_playback()  argument
73 unsigned int target_hw_level = odev->min_cb_level * 2; in default_no_stream_playback()
77 rc = cras_iodev_frames_queued(odev, &hw_tstamp); in default_no_stream_playback()
84 rc = cras_iodev_output_underrun(odev); in default_no_stream_playback()
88 rc = cras_iodev_frames_queued(odev, &hw_tstamp); in default_no_stream_playback()
94 ATLOG(atlog, AUDIO_THREAD_ODEV_DEFAULT_NO_STREAMS, odev->info.idx, in default_no_stream_playback()
97 fr_to_write = cras_iodev_buffer_avail(odev, hw_level); in default_no_stream_playback()
100 return cras_iodev_fill_odev_zeros(odev, fr_to_write); in default_no_stream_playback()
126 static unsigned int dev_playback_frames(struct cras_iodev *odev) in dev_playback_frames() argument
131 DL_FOREACH (odev->streams, curr) { in dev_playback_frames()
169 static int cras_iodev_no_stream_playback_transition(struct cras_iodev *odev, in cras_iodev_no_stream_playback_transition() argument
174 if (odev->direction != CRAS_STREAM_OUTPUT) in cras_iodev_no_stream_playback_transition()
180 if ((odev->state != CRAS_IODEV_STATE_NORMAL_RUN) && in cras_iodev_no_stream_playback_transition()
181 (odev->state != CRAS_IODEV_STATE_NO_STREAM_RUN)) in cras_iodev_no_stream_playback_transition()
185 ATLOG(atlog, AUDIO_THREAD_ODEV_NO_STREAMS, odev->info.idx, 0, in cras_iodev_no_stream_playback_transition()
188 ATLOG(atlog, AUDIO_THREAD_ODEV_LEAVE_NO_STREAMS, odev->info.idx, in cras_iodev_no_stream_playback_transition()
192 rc = odev->no_stream(odev, enable); in cras_iodev_no_stream_playback_transition()
196 odev->state = CRAS_IODEV_STATE_NO_STREAM_RUN; in cras_iodev_no_stream_playback_transition()
198 odev->state = CRAS_IODEV_STATE_NORMAL_RUN; in cras_iodev_no_stream_playback_transition()
204 static int output_should_mute(struct cras_iodev *odev) in output_should_mute() argument
211 return cras_iodev_is_zero_volume(odev); in output_should_mute()
214 int cras_iodev_is_zero_volume(const struct cras_iodev *odev) in cras_iodev_is_zero_volume() argument
220 if (odev->active_node) { in cras_iodev_is_zero_volume()
222 odev->active_node, system_volume); in cras_iodev_is_zero_volume()
257 static int cras_iodev_output_event_sample_ready(struct cras_iodev *odev) in cras_iodev_output_event_sample_ready() argument
259 if (odev->state == CRAS_IODEV_STATE_OPEN || in cras_iodev_output_event_sample_ready()
260 odev->state == CRAS_IODEV_STATE_NO_STREAM_RUN) { in cras_iodev_output_event_sample_ready()
264 if (odev->ramp && !output_should_mute(odev)) in cras_iodev_output_event_sample_ready()
266 odev, in cras_iodev_output_event_sample_ready()
270 if (odev->state == CRAS_IODEV_STATE_OPEN) { in cras_iodev_output_event_sample_ready()
276 cras_iodev_fill_odev_zeros(odev, odev->min_cb_level); in cras_iodev_output_event_sample_ready()
277 ATLOG(atlog, AUDIO_THREAD_ODEV_START, odev->info.idx, in cras_iodev_output_event_sample_ready()
278 odev->min_cb_level, 0); in cras_iodev_output_event_sample_ready()
279 return cras_iodev_start(odev); in cras_iodev_output_event_sample_ready()
280 } else if (odev->state == CRAS_IODEV_STATE_NO_STREAM_RUN) { in cras_iodev_output_event_sample_ready()
284 return cras_iodev_no_stream_playback_transition(odev, 0); in cras_iodev_output_event_sample_ready()
288 odev->info.name, odev->state); in cras_iodev_output_event_sample_ready()
734 int cras_iodev_get_valid_frames(struct cras_iodev *odev, in cras_iodev_get_valid_frames() argument
739 if (odev->direction != CRAS_STREAM_OUTPUT) in cras_iodev_get_valid_frames()
742 if (odev->get_valid_frames) { in cras_iodev_get_valid_frames()
743 rc = odev->get_valid_frames(odev, hw_tstamp); in cras_iodev_get_valid_frames()
747 if (rc < odev->min_buffer_level) in cras_iodev_get_valid_frames()
750 return rc - odev->min_buffer_level; in cras_iodev_get_valid_frames()
752 return cras_iodev_frames_queued(odev, hw_tstamp); in cras_iodev_get_valid_frames()
1275 int cras_iodev_fill_odev_zeros(struct cras_iodev *odev, unsigned int frames) in cras_iodev_fill_odev_zeros() argument
1282 if (odev->direction != CRAS_STREAM_OUTPUT) in cras_iodev_fill_odev_zeros()
1285 ATLOG(atlog, AUDIO_THREAD_FILL_ODEV_ZEROS, odev->info.idx, frames, 0); in cras_iodev_fill_odev_zeros()
1287 frame_bytes = cras_get_format_bytes(odev->format); in cras_iodev_fill_odev_zeros()
1290 rc = cras_iodev_get_output_buffer(odev, &area, &frames_written); in cras_iodev_fill_odev_zeros()
1299 cras_iodev_put_output_buffer(odev, buf, frames_written, NULL, in cras_iodev_fill_odev_zeros()
1307 int cras_iodev_output_underrun(struct cras_iodev *odev) in cras_iodev_output_underrun() argument
1310 if (odev->output_underrun) in cras_iodev_output_underrun()
1311 return odev->output_underrun(odev); in cras_iodev_output_underrun()
1313 return cras_iodev_fill_odev_zeros(odev, odev->min_cb_level); in cras_iodev_output_underrun()
1316 int cras_iodev_odev_should_wake(const struct cras_iodev *odev) in cras_iodev_odev_should_wake() argument
1318 if (odev->direction != CRAS_STREAM_OUTPUT) in cras_iodev_odev_should_wake()
1321 if (odev->is_free_running && odev->is_free_running(odev)) in cras_iodev_odev_should_wake()
1325 return (odev->state == CRAS_IODEV_STATE_NORMAL_RUN || in cras_iodev_odev_should_wake()
1326 odev->state == CRAS_IODEV_STATE_NO_STREAM_RUN); in cras_iodev_odev_should_wake()
1329 unsigned int cras_iodev_frames_to_play_in_sleep(struct cras_iodev *odev, in cras_iodev_frames_to_play_in_sleep() argument
1333 int rc = cras_iodev_frames_queued(odev, hw_tstamp); in cras_iodev_frames_to_play_in_sleep()
1338 if (odev->streams) { in cras_iodev_frames_to_play_in_sleep()
1349 if (*hw_level > odev->min_cb_level && dev_playback_frames(odev)) in cras_iodev_frames_to_play_in_sleep()
1350 return *hw_level - odev->min_cb_level; in cras_iodev_frames_to_play_in_sleep()
1353 &dev_normal_run_wake_up_time, odev->format->frame_rate); in cras_iodev_frames_to_play_in_sleep()
1367 odev->format->frame_rate); in cras_iodev_frames_to_play_in_sleep()
1368 if (level > MIN(odev->min_cb_level, wakeup_frames)) in cras_iodev_frames_to_play_in_sleep()
1369 return level - MIN(odev->min_cb_level, wakeup_frames); in cras_iodev_frames_to_play_in_sleep()
1374 int cras_iodev_default_no_stream_playback(struct cras_iodev *odev, int enable) in cras_iodev_default_no_stream_playback() argument
1377 return default_no_stream_playback(odev); in cras_iodev_default_no_stream_playback()
1381 int cras_iodev_prepare_output_before_write_samples(struct cras_iodev *odev) in cras_iodev_prepare_output_before_write_samples() argument
1386 if (odev->direction != CRAS_STREAM_OUTPUT) in cras_iodev_prepare_output_before_write_samples()
1389 state = cras_iodev_state(odev); in cras_iodev_prepare_output_before_write_samples()
1394 if (may_enter_normal_run && dev_playback_frames(odev)) in cras_iodev_prepare_output_before_write_samples()
1395 return cras_iodev_output_event_sample_ready(odev); in cras_iodev_prepare_output_before_write_samples()
1399 return odev->no_stream(odev, 1); in cras_iodev_prepare_output_before_write_samples()
1438 struct cras_iodev *odev = (struct cras_iodev *)data; in ramp_mute_callback() local
1439 cras_device_monitor_set_device_mute_state(odev->info.idx); in ramp_mute_callback()
1443 int cras_iodev_start_ramp(struct cras_iodev *odev, in cras_iodev_start_ramp() argument
1452 if (!cras_iodev_is_open(odev)) in cras_iodev_start_ramp()
1473 cb_data = (void *)odev; in cras_iodev_start_ramp()
1480 rc = cras_mute_ramp_start(odev->ramp, from, to, in cras_iodev_start_ramp()
1481 duration_secs * odev->format->frame_rate, cb, in cras_iodev_start_ramp()
1490 cras_device_monitor_set_device_mute_state(odev->info.idx); in cras_iodev_start_ramp()
1495 int cras_iodev_start_volume_ramp(struct cras_iodev *odev, in cras_iodev_start_volume_ramp() argument
1504 if (!cras_iodev_is_open(odev)) in cras_iodev_start_volume_ramp()
1506 if (!odev->format) in cras_iodev_start_volume_ramp()
1508 if (odev->active_node && odev->active_node->softvol_scalers) { in cras_iodev_start_volume_ramp()
1509 old_scaler = odev->active_node->softvol_scalers[old_volume]; in cras_iodev_start_volume_ramp()
1510 new_scaler = odev->active_node->softvol_scalers[new_volume]; in cras_iodev_start_volume_ramp()
1525 return cras_volume_ramp_start(odev->ramp, from, to, in cras_iodev_start_volume_ramp()
1527 odev->format->frame_rate, in cras_iodev_start_volume_ramp()