Commit c29287bb authored by Jihed Chaibi's avatar Jihed Chaibi Committed by Takashi Iwai
Browse files

ALSA: asihpi: Simplify error handling in PCM substream setup



Refactor error handling in the PCM substream setup to combine redundant
checks and improve code readability. Free the dpcm structure and return
appropriate error codes (-EBUSY for HPI_ERROR_OBJ_ALREADY_OPEN, -EIO
for other errors) in a single block.

Signed-off-by: default avatarJihed Chaibi <jihed.chaibi.dev@gmail.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent e135eeef
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -982,12 +982,12 @@ static int snd_card_asihpi_playback_open(struct snd_pcm_substream *substream)
	err = hpi_outstream_open(card->hpi->adapter->index,
			      substream->number, &dpcm->h_stream);
	hpi_handle_error(err);
	if (err)
	if (err) {
		kfree(dpcm);
		if (err == HPI_ERROR_OBJ_ALREADY_OPEN)
			return -EBUSY;
	if (err)
		return -EIO;
	}

	/*? also check ASI5000 samplerate source
	    If external, only support external rate.
@@ -1156,12 +1156,12 @@ static int snd_card_asihpi_capture_open(struct snd_pcm_substream *substream)
	err = hpi_handle_error(
	    hpi_instream_open(card->hpi->adapter->index,
			     substream->number, &dpcm->h_stream));
	if (err)
	if (err) {
		kfree(dpcm);
		if (err == HPI_ERROR_OBJ_ALREADY_OPEN)
			return -EBUSY;
	if (err)
		return -EIO;
	}

	timer_setup(&dpcm->timer, snd_card_asihpi_timer_function, 0);
	dpcm->substream = substream;