Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 170151
b: refs/heads/master
c: 4fa9c1a
h: refs/heads/master
i:
  170149: d9825df
  170147: 4970214
  170143: e447554
v: v3
  • Loading branch information
Chaithrika U S authored and Mark Brown committed Sep 30, 2009
1 parent 4bee0fc commit f2cdf27
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 14 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: be2500b8353d41463399e997fe8562f772dcaaba
refs/heads/master: 4fa9c1a5953441e06dbde7b6a655cbf6618e61dd
2 changes: 2 additions & 0 deletions trunk/sound/soc/davinci/davinci-i2s.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,8 @@ static int davinci_i2s_hw_params(struct snd_pcm_substream *substream,
}

dma_params->acnt = dma_params->data_type;
dma_params->fifo_level = 0;

rcr |= DAVINCI_MCBSP_RCR_RFRLEN1(1);
xcr |= DAVINCI_MCBSP_XCR_XFRLEN1(1);

Expand Down
17 changes: 7 additions & 10 deletions trunk/sound/soc/davinci/davinci-mcasp.c
Original file line number Diff line number Diff line change
Expand Up @@ -714,16 +714,13 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
struct davinci_pcm_dma_params *dma_params =
&dev->dma_params[substream->stream];
int word_length;
u8 numevt;
u8 fifo_level;

davinci_hw_common_param(dev, substream->stream);
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
numevt = dev->txnumevt;
fifo_level = dev->txnumevt;
else
numevt = dev->rxnumevt;

if (!numevt)
numevt = 1;
fifo_level = dev->rxnumevt;

if (dev->op_mode == DAVINCI_MCASP_DIT_MODE)
davinci_hw_dit_param(dev);
Expand Down Expand Up @@ -751,12 +748,12 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
return -EINVAL;
}

if (dev->version == MCASP_VERSION_2) {
dma_params->data_type *= numevt;
dma_params->acnt = 4 * numevt;
} else
if (dev->version == MCASP_VERSION_2 && !fifo_level)
dma_params->acnt = 4;
else
dma_params->acnt = dma_params->data_type;

dma_params->fifo_level = fifo_level;
davinci_config_channel_size(dev, word_length);

return 0;
Expand Down
21 changes: 18 additions & 3 deletions trunk/sound/soc/davinci/davinci-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,38 +66,53 @@ static void davinci_pcm_enqueue_dma(struct snd_pcm_substream *substream)
dma_addr_t dma_pos;
dma_addr_t src, dst;
unsigned short src_bidx, dst_bidx;
unsigned short src_cidx, dst_cidx;
unsigned int data_type;
unsigned short acnt;
unsigned int count;
unsigned int fifo_level;

period_size = snd_pcm_lib_period_bytes(substream);
dma_offset = prtd->period * period_size;
dma_pos = runtime->dma_addr + dma_offset;
fifo_level = prtd->params->fifo_level;

pr_debug("davinci_pcm: audio_set_dma_params_play channel = %d "
"dma_ptr = %x period_size=%x\n", lch, dma_pos, period_size);

data_type = prtd->params->data_type;
count = period_size / data_type;
if (fifo_level)
count /= fifo_level;

if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
src = dma_pos;
dst = prtd->params->dma_addr;
src_bidx = data_type;
dst_bidx = 0;
src_cidx = data_type * fifo_level;
dst_cidx = 0;
} else {
src = prtd->params->dma_addr;
dst = dma_pos;
src_bidx = 0;
dst_bidx = data_type;
src_cidx = 0;
dst_cidx = data_type * fifo_level;
}

acnt = prtd->params->acnt;
edma_set_src(lch, src, INCR, W8BIT);
edma_set_dest(lch, dst, INCR, W8BIT);
edma_set_src_index(lch, src_bidx, 0);
edma_set_dest_index(lch, dst_bidx, 0);
edma_set_transfer_params(lch, acnt, count, 1, 0, ASYNC);

edma_set_src_index(lch, src_bidx, src_cidx);
edma_set_dest_index(lch, dst_bidx, dst_cidx);

if (!fifo_level)
edma_set_transfer_params(lch, acnt, count, 1, 0, ASYNC);
else
edma_set_transfer_params(lch, acnt, fifo_level, count,
fifo_level, ABSYNC);

prtd->period++;
if (unlikely(prtd->period >= runtime->periods))
Expand Down
1 change: 1 addition & 0 deletions trunk/sound/soc/davinci/davinci-pcm.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ struct davinci_pcm_dma_params {
enum dma_event_q eventq_no; /* event queue number */
unsigned char data_type; /* xfer data type */
unsigned char convert_mono_stereo;
unsigned int fifo_level;
};


Expand Down

0 comments on commit f2cdf27

Please sign in to comment.