Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
	}
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
}