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:
parent
e135eeef0b
commit
c29287bb32
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue