usb: gadget: u_audio: factorize ssize to alsa fmt conversion
Factorize format related code common to the capture and playback path. Acked-by: Felipe Balbi <balbi@kernel.org> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Link: https://lore.kernel.org/r/20210118084642.322510-3-jbrunet@baylibre.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
7de8681be2
commit
25dbd75dd5
@@ -244,6 +244,25 @@ static snd_pcm_uframes_t uac_pcm_pointer(struct snd_pcm_substream *substream)
|
||||
return bytes_to_frames(substream->runtime, prm->hw_ptr);
|
||||
}
|
||||
|
||||
static u64 uac_ssize_to_fmt(int ssize)
|
||||
{
|
||||
u64 ret;
|
||||
|
||||
switch (ssize) {
|
||||
case 3:
|
||||
ret = SNDRV_PCM_FMTBIT_S24_3LE;
|
||||
break;
|
||||
case 4:
|
||||
ret = SNDRV_PCM_FMTBIT_S32_LE;
|
||||
break;
|
||||
default:
|
||||
ret = SNDRV_PCM_FMTBIT_S16_LE;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int uac_pcm_open(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_uac_chip *uac = snd_pcm_substream_chip(substream);
|
||||
@@ -269,34 +288,14 @@ static int uac_pcm_open(struct snd_pcm_substream *substream)
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
spin_lock_init(&uac->p_prm.lock);
|
||||
runtime->hw.rate_min = p_srate;
|
||||
switch (p_ssize) {
|
||||
case 3:
|
||||
runtime->hw.formats = SNDRV_PCM_FMTBIT_S24_3LE;
|
||||
break;
|
||||
case 4:
|
||||
runtime->hw.formats = SNDRV_PCM_FMTBIT_S32_LE;
|
||||
break;
|
||||
default:
|
||||
runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE;
|
||||
break;
|
||||
}
|
||||
runtime->hw.formats = uac_ssize_to_fmt(p_ssize);
|
||||
runtime->hw.channels_min = num_channels(p_chmask);
|
||||
runtime->hw.period_bytes_min = 2 * uac->p_prm.max_psize
|
||||
/ runtime->hw.periods_min;
|
||||
} else {
|
||||
spin_lock_init(&uac->c_prm.lock);
|
||||
runtime->hw.rate_min = c_srate;
|
||||
switch (c_ssize) {
|
||||
case 3:
|
||||
runtime->hw.formats = SNDRV_PCM_FMTBIT_S24_3LE;
|
||||
break;
|
||||
case 4:
|
||||
runtime->hw.formats = SNDRV_PCM_FMTBIT_S32_LE;
|
||||
break;
|
||||
default:
|
||||
runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE;
|
||||
break;
|
||||
}
|
||||
runtime->hw.formats = uac_ssize_to_fmt(c_ssize);
|
||||
runtime->hw.channels_min = num_channels(c_chmask);
|
||||
runtime->hw.period_bytes_min = 2 * uac->c_prm.max_psize
|
||||
/ runtime->hw.periods_min;
|
||||
|
||||
Reference in New Issue
Block a user