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: Jihed Chaibi <jihed.chaibi.dev@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Jihed Chaibi 2025-09-14 22:59:45 +02:00 committed by Takashi Iwai
parent e135eeef0b
commit c29287bb32
1 changed files with 8 additions and 8 deletions

View File

@ -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)
if (err == HPI_ERROR_OBJ_ALREADY_OPEN)
return -EBUSY;
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)
if (err == HPI_ERROR_OBJ_ALREADY_OPEN)
return -EBUSY;
return -EIO;
}
timer_setup(&dpcm->timer, snd_card_asihpi_timer_function, 0);
dpcm->substream = substream;