Commit 9d1b1f61 authored by Krzysztof Hałasa's avatar Krzysztof Hałasa Committed by Mauro Carvalho Chehab

[media] SOLO6x10: Fix G.723 minimum audio period count

The period count is fixed, don't confuse ALSA.
Signed-off-by: default avatarKrzysztof Ha?asa <khalasa@piap.pl>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent e3e30f63
...@@ -48,10 +48,8 @@ ...@@ -48,10 +48,8 @@
/* The solo writes to 1k byte pages, 32 pages, in the dma. Each 1k page /* The solo writes to 1k byte pages, 32 pages, in the dma. Each 1k page
* is broken down to 20 * 48 byte regions (one for each channel possible) * is broken down to 20 * 48 byte regions (one for each channel possible)
* with the rest of the page being dummy data. */ * with the rest of the page being dummy data. */
#define G723_MAX_BUFFER (G723_PERIOD_BYTES * PERIODS_MAX) #define PERIODS G723_FDMA_PAGES
#define G723_INTR_ORDER 4 /* 0 - 4 */ #define G723_INTR_ORDER 4 /* 0 - 4 */
#define PERIODS_MIN (1 << G723_INTR_ORDER)
#define PERIODS_MAX G723_FDMA_PAGES
struct solo_snd_pcm { struct solo_snd_pcm {
int on; int on;
...@@ -130,11 +128,11 @@ static const struct snd_pcm_hardware snd_solo_pcm_hw = { ...@@ -130,11 +128,11 @@ static const struct snd_pcm_hardware snd_solo_pcm_hw = {
.rate_max = SAMPLERATE, .rate_max = SAMPLERATE,
.channels_min = 1, .channels_min = 1,
.channels_max = 1, .channels_max = 1,
.buffer_bytes_max = G723_MAX_BUFFER, .buffer_bytes_max = G723_PERIOD_BYTES * PERIODS,
.period_bytes_min = G723_PERIOD_BYTES, .period_bytes_min = G723_PERIOD_BYTES,
.period_bytes_max = G723_PERIOD_BYTES, .period_bytes_max = G723_PERIOD_BYTES,
.periods_min = PERIODS_MIN, .periods_min = PERIODS,
.periods_max = PERIODS_MAX, .periods_max = PERIODS,
}; };
static int snd_solo_pcm_open(struct snd_pcm_substream *ss) static int snd_solo_pcm_open(struct snd_pcm_substream *ss)
...@@ -340,7 +338,8 @@ static int solo_snd_pcm_init(struct solo_dev *solo_dev) ...@@ -340,7 +338,8 @@ static int solo_snd_pcm_init(struct solo_dev *solo_dev)
ret = snd_pcm_lib_preallocate_pages_for_all(pcm, ret = snd_pcm_lib_preallocate_pages_for_all(pcm,
SNDRV_DMA_TYPE_CONTINUOUS, SNDRV_DMA_TYPE_CONTINUOUS,
snd_dma_continuous_data(GFP_KERNEL), snd_dma_continuous_data(GFP_KERNEL),
G723_MAX_BUFFER, G723_MAX_BUFFER); G723_PERIOD_BYTES * PERIODS,
G723_PERIOD_BYTES * PERIODS);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment