static void snd_bebob_update(struct fw_unit *unit) { struct snd_bebob *bebob = dev_get_drvdata(&unit->device); /* this is for firmware bootloader */ if (bebob == NULL) goto end; fcp_bus_reset(bebob->unit); /* bus reset for isochronous transmit stream */ if (cmp_connection_update(&bebob->in_conn) < 0) { amdtp_stream_pcm_abort(&bebob->tx_stream); mutex_lock(&bebob->mutex); snd_bebob_stream_stop(bebob, &bebob->tx_stream); mutex_unlock(&bebob->mutex); } amdtp_stream_update(&bebob->tx_stream); /* bus reset for isochronous receive stream */ if (cmp_connection_update(&bebob->out_conn) < 0) { amdtp_stream_pcm_abort(&bebob->rx_stream); mutex_lock(&bebob->mutex); snd_bebob_stream_stop(bebob, &bebob->rx_stream); mutex_unlock(&bebob->mutex); } amdtp_stream_update(&bebob->rx_stream); end: return; }
void snd_bebob_stream_stop_duplex(struct snd_bebob *bebob) { if (bebob->substreams_counter == 0) { amdtp_stream_pcm_abort(&bebob->rx_stream); amdtp_stream_stop(&bebob->rx_stream); amdtp_stream_pcm_abort(&bebob->tx_stream); amdtp_stream_stop(&bebob->tx_stream); break_both_connections(bebob); } }
static void stop_stream(struct snd_oxfw *oxfw, struct amdtp_stream *stream) { amdtp_stream_pcm_abort(stream); amdtp_stream_stop(stream); if (stream == &oxfw->tx_stream) cmp_connection_break(&oxfw->out_conn); else cmp_connection_break(&oxfw->in_conn); }
static void stop_stream(struct snd_oxfw *oxfw) { amdtp_stream_pcm_abort(&oxfw->rx_stream); amdtp_stream_stop(&oxfw->rx_stream); cmp_connection_break(&oxfw->in_conn); }