Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 206632
b: refs/heads/master
c: 998a8a6
h: refs/heads/master
v: v3
  • Loading branch information
Peter Ujfalusi authored and Liam Girdwood committed Aug 2, 2010
1 parent a319f2a commit 55ac8c5
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 40 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cf80e15860852be5ce38714979db94ec36c5e288
refs/heads/master: 998a8a69f3a40f9c82e83730bfdaceb63954d753
43 changes: 4 additions & 39 deletions trunk/sound/soc/omap/omap-mcbsp.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,31 +202,6 @@ static int omap_mcbsp_hwrule_min_buffersize(struct snd_pcm_hw_params *params,
return snd_interval_refine(buffer_size, &frames);
}

static int omap_mcbsp_hwrule_max_periodsize(struct snd_pcm_hw_params *params,
struct snd_pcm_hw_rule *rule)
{
struct snd_interval *period_size = hw_param_interval(params,
SNDRV_PCM_HW_PARAM_PERIOD_SIZE);
struct snd_interval *channels = hw_param_interval(params,
SNDRV_PCM_HW_PARAM_CHANNELS);
struct snd_pcm_substream *substream = rule->private;
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
struct snd_interval frames;
int size;

snd_interval_any(&frames);
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
size = omap_mcbsp_get_max_tx_threshold(mcbsp_data->bus_id);
else
size = omap_mcbsp_get_max_rx_threshold(mcbsp_data->bus_id);

frames.max = size / channels->min;
frames.integer = 1;
return snd_interval_refine(period_size, &frames);
}

static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{
Expand Down Expand Up @@ -255,10 +230,8 @@ static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
* 4 channels: size is 128 / 4 = 32 frames (4 * 32 words)
*/
if (cpu_is_omap343x()) {
int dma_op_mode = omap_mcbsp_get_dma_op_mode(bus_id);

/*
* The first rule is for the buffer size, we should not allow
* Rule for the buffer size. We should not allow
* smaller buffer than the FIFO size to avoid underruns
*/
snd_pcm_hw_rule_add(substream->runtime, 0,
Expand All @@ -267,17 +240,9 @@ static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
mcbsp_data,
SNDRV_PCM_HW_PARAM_BUFFER_SIZE, -1);

/*
* In case of threshold mode, the rule will ensure, that the
* period size is not bigger than the maximum allowed threshold
* value.
*/
if (dma_op_mode == MCBSP_DMA_MODE_THRESHOLD)
snd_pcm_hw_rule_add(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_CHANNELS,
omap_mcbsp_hwrule_max_periodsize,
substream,
SNDRV_PCM_HW_PARAM_PERIOD_SIZE, -1);
/* Make sure, that the period size is always even */
snd_pcm_hw_constraint_step(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_PERIOD_SIZE, 2);
}

return err;
Expand Down

0 comments on commit 55ac8c5

Please sign in to comment.