Commit 4a0a0472 authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai
Browse files

ALSA: oxfw: unify substreams counter



In former commits, two isochronous contexts are handles at the same
time. This commit unifies stream counters to obsolete them.

Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 779f0dba
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ static int midi_capture_open(struct snd_rawmidi_substream *substream)

	mutex_lock(&oxfw->mutex);

	oxfw->capture_substreams++;
	++oxfw->substreams_count;
	err = snd_oxfw_stream_start_duplex(oxfw, &oxfw->tx_stream, 0, 0);

	mutex_unlock(&oxfw->mutex);
@@ -41,7 +41,7 @@ static int midi_playback_open(struct snd_rawmidi_substream *substream)

	mutex_lock(&oxfw->mutex);

	oxfw->playback_substreams++;
	++oxfw->substreams_count;
	err = snd_oxfw_stream_start_duplex(oxfw, &oxfw->rx_stream, 0, 0);

	mutex_unlock(&oxfw->mutex);
@@ -58,7 +58,7 @@ static int midi_capture_close(struct snd_rawmidi_substream *substream)

	mutex_lock(&oxfw->mutex);

	oxfw->capture_substreams--;
	--oxfw->substreams_count;
	snd_oxfw_stream_stop_duplex(oxfw);

	mutex_unlock(&oxfw->mutex);
@@ -73,7 +73,7 @@ static int midi_playback_close(struct snd_rawmidi_substream *substream)

	mutex_lock(&oxfw->mutex);

	oxfw->playback_substreams--;
	--oxfw->substreams_count;
	snd_oxfw_stream_stop_duplex(oxfw);

	mutex_unlock(&oxfw->mutex);
+4 −4
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ static int pcm_capture_hw_params(struct snd_pcm_substream *substream,

	if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN) {
		mutex_lock(&oxfw->mutex);
		oxfw->capture_substreams++;
		++oxfw->substreams_count;
		mutex_unlock(&oxfw->mutex);
	}

@@ -239,7 +239,7 @@ static int pcm_playback_hw_params(struct snd_pcm_substream *substream,

	if (substream->runtime->status->state == SNDRV_PCM_STATE_OPEN) {
		mutex_lock(&oxfw->mutex);
		oxfw->playback_substreams++;
		++oxfw->substreams_count;
		mutex_unlock(&oxfw->mutex);
	}

@@ -253,7 +253,7 @@ static int pcm_capture_hw_free(struct snd_pcm_substream *substream)
	mutex_lock(&oxfw->mutex);

	if (substream->runtime->status->state != SNDRV_PCM_STATE_OPEN)
		oxfw->capture_substreams--;
		--oxfw->substreams_count;

	snd_oxfw_stream_stop_duplex(oxfw);

@@ -268,7 +268,7 @@ static int pcm_playback_hw_free(struct snd_pcm_substream *substream)
	mutex_lock(&oxfw->mutex);

	if (substream->runtime->status->state != SNDRV_PCM_STATE_OPEN)
		oxfw->playback_substreams--;
		--oxfw->substreams_count;

	snd_oxfw_stream_stop_duplex(oxfw);

+2 −2
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ int snd_oxfw_stream_start_duplex(struct snd_oxfw *oxfw,
	enum avc_general_plug_dir dir;
	int err = 0;

	if (oxfw->capture_substreams == 0 && oxfw->playback_substreams == 0)
	if (oxfw->substreams_count == 0)
		return -EIO;

	// Considering JACK/FFADO streaming:
@@ -323,7 +323,7 @@ error:

void snd_oxfw_stream_stop_duplex(struct snd_oxfw *oxfw)
{
	if (oxfw->capture_substreams == 0 && oxfw->playback_substreams == 0) {
	if (oxfw->substreams_count == 0) {
		amdtp_stream_stop(&oxfw->rx_stream);
		cmp_connection_break(&oxfw->in_conn);

+1 −2
Original line number Diff line number Diff line
@@ -52,8 +52,7 @@ struct snd_oxfw {
	struct cmp_connection in_conn;
	struct amdtp_stream tx_stream;
	struct amdtp_stream rx_stream;
	unsigned int capture_substreams;
	unsigned int playback_substreams;
	unsigned int substreams_count;

	unsigned int midi_input_ports;
	unsigned int midi_output_ports;