ASoC: nuc900: patch for SUBSTREAM_TYPE', 'PCM_TX' and 'PCM_RX' removal
This patch is to remove the 'SUBSTREAM_TYPE','PCM_TX' and 'PCM_RX' definition. There is no need to redefine SNDRV_PCM_STREAM_PLAYBACK as PCM_TX, the SUBSTREAM_TYPE(substream) can be deleted too, the playback or record can be judged by 'if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)' directly rather than 'if (PCM_TX == stype)', which makes the codes easy to read. Signed-off-by: Wan ZongShun <mcuos.com@gmail.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Родитель
1fab79b8a1
Коммит
018334c045
|
@ -222,7 +222,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream *substream,
|
||||||
int cmd, struct snd_soc_dai *dai)
|
int cmd, struct snd_soc_dai *dai)
|
||||||
{
|
{
|
||||||
struct nuc900_audio *nuc900_audio = nuc900_ac97_data;
|
struct nuc900_audio *nuc900_audio = nuc900_ac97_data;
|
||||||
int ret, stype = SUBSTREAM_TYPE(substream);
|
int ret;
|
||||||
unsigned long val, tmp;
|
unsigned long val, tmp;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
@ -231,7 +231,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream *substream,
|
||||||
case SNDRV_PCM_TRIGGER_START:
|
case SNDRV_PCM_TRIGGER_START:
|
||||||
case SNDRV_PCM_TRIGGER_RESUME:
|
case SNDRV_PCM_TRIGGER_RESUME:
|
||||||
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
|
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
|
||||||
if (PCM_TX == stype) {
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||||
tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
|
tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
|
||||||
tmp |= (SLOT3_VALID | SLOT4_VALID | VALID_FRAME);
|
tmp |= (SLOT3_VALID | SLOT4_VALID | VALID_FRAME);
|
||||||
AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
|
AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
|
||||||
|
@ -254,7 +254,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream *substream,
|
||||||
case SNDRV_PCM_TRIGGER_STOP:
|
case SNDRV_PCM_TRIGGER_STOP:
|
||||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||||
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
|
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
|
||||||
if (PCM_TX == stype) {
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||||
tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
|
tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
|
||||||
tmp &= ~(SLOT3_VALID | SLOT4_VALID);
|
tmp &= ~(SLOT3_VALID | SLOT4_VALID);
|
||||||
AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
|
AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
|
||||||
|
|
|
@ -96,10 +96,6 @@
|
||||||
#define RESET_PRSR 0x00
|
#define RESET_PRSR 0x00
|
||||||
#define AUDIO_WRITE(addr, val) __raw_writel(val, addr)
|
#define AUDIO_WRITE(addr, val) __raw_writel(val, addr)
|
||||||
#define AUDIO_READ(addr) __raw_readl(addr)
|
#define AUDIO_READ(addr) __raw_readl(addr)
|
||||||
#define PCM_TX 0
|
|
||||||
#define PCM_RX 1
|
|
||||||
#define SUBSTREAM_TYPE(substream) \
|
|
||||||
((substream)->stream == SNDRV_PCM_STREAM_PLAYBACK ? PCM_TX : PCM_RX)
|
|
||||||
|
|
||||||
struct nuc900_audio {
|
struct nuc900_audio {
|
||||||
void __iomem *mmio;
|
void __iomem *mmio;
|
||||||
|
|
|
@ -47,7 +47,7 @@ static int nuc900_dma_hw_params(struct snd_pcm_substream *substream,
|
||||||
{
|
{
|
||||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||||
struct nuc900_audio *nuc900_audio = runtime->private_data;
|
struct nuc900_audio *nuc900_audio = runtime->private_data;
|
||||||
unsigned long flags, stype = SUBSTREAM_TYPE(substream);
|
unsigned long flags;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
spin_lock_irqsave(&nuc900_audio->lock, flags);
|
spin_lock_irqsave(&nuc900_audio->lock, flags);
|
||||||
|
@ -57,8 +57,9 @@ static int nuc900_dma_hw_params(struct snd_pcm_substream *substream,
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
nuc900_audio->substream = substream;
|
nuc900_audio->substream = substream;
|
||||||
nuc900_audio->dma_addr[stype] = runtime->dma_addr;
|
nuc900_audio->dma_addr[substream->stream] = runtime->dma_addr;
|
||||||
nuc900_audio->buffersize[stype] = params_buffer_bytes(params);
|
nuc900_audio->buffersize[substream->stream] =
|
||||||
|
params_buffer_bytes(params);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&nuc900_audio->lock, flags);
|
spin_unlock_irqrestore(&nuc900_audio->lock, flags);
|
||||||
|
|
||||||
|
@ -72,7 +73,7 @@ static void nuc900_update_dma_register(struct snd_pcm_substream *substream,
|
||||||
struct nuc900_audio *nuc900_audio = runtime->private_data;
|
struct nuc900_audio *nuc900_audio = runtime->private_data;
|
||||||
void __iomem *mmio_addr, *mmio_len;
|
void __iomem *mmio_addr, *mmio_len;
|
||||||
|
|
||||||
if (SUBSTREAM_TYPE(substream) == PCM_TX) {
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||||
mmio_addr = nuc900_audio->mmio + ACTL_PDSTB;
|
mmio_addr = nuc900_audio->mmio + ACTL_PDSTB;
|
||||||
mmio_len = nuc900_audio->mmio + ACTL_PDST_LENGTH;
|
mmio_len = nuc900_audio->mmio + ACTL_PDST_LENGTH;
|
||||||
} else {
|
} else {
|
||||||
|
@ -167,18 +168,19 @@ static int nuc900_dma_prepare(struct snd_pcm_substream *substream)
|
||||||
{
|
{
|
||||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||||
struct nuc900_audio *nuc900_audio = runtime->private_data;
|
struct nuc900_audio *nuc900_audio = runtime->private_data;
|
||||||
unsigned long flags, val, stype = SUBSTREAM_TYPE(substream);;
|
unsigned long flags, val;
|
||||||
|
|
||||||
spin_lock_irqsave(&nuc900_audio->lock, flags);
|
spin_lock_irqsave(&nuc900_audio->lock, flags);
|
||||||
|
|
||||||
nuc900_update_dma_register(substream,
|
nuc900_update_dma_register(substream,
|
||||||
nuc900_audio->dma_addr[stype], nuc900_audio->buffersize[stype]);
|
nuc900_audio->dma_addr[substream->stream],
|
||||||
|
nuc900_audio->buffersize[substream->stream]);
|
||||||
|
|
||||||
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
|
val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
|
||||||
|
|
||||||
switch (runtime->channels) {
|
switch (runtime->channels) {
|
||||||
case 1:
|
case 1:
|
||||||
if (PCM_TX == stype) {
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||||
val &= ~(PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
|
val &= ~(PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
|
||||||
val |= PLAY_RIGHT_CHNNEL;
|
val |= PLAY_RIGHT_CHNNEL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -188,7 +190,7 @@ static int nuc900_dma_prepare(struct snd_pcm_substream *substream)
|
||||||
AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
|
AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (PCM_TX == stype)
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||||
val |= (PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
|
val |= (PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
|
||||||
else
|
else
|
||||||
val |= (RECORD_LEFT_CHNNEL | RECORD_RIGHT_CHNNEL);
|
val |= (RECORD_LEFT_CHNNEL | RECORD_RIGHT_CHNNEL);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче