Skip to content

Commit

Permalink
[ALSA] Change AT91 PDC register defines for 2.6.20 kernel
Browse files Browse the repository at this point in the history
Use the new PDC register name defines that were updated
in Linux 2.6.20.

Signed-off-by: Frank Mandarino <fmandarino@endrelia.com>
Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
  • Loading branch information
Frank Mandarino authored and Jaroslav Kysela committed Feb 14, 2007
1 parent 2a40534 commit fa8f878
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 31 deletions.
43 changes: 22 additions & 21 deletions sound/soc/at91/at91-i2s.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
#include <linux/device.h>
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/atmel_pdc.h>

#include <sound/driver.h>
#include <sound/core.h>
#include <sound/pcm.h>
Expand All @@ -29,7 +31,6 @@
#include <asm/arch/hardware.h>
#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_ssc.h>
#include <asm/arch/at91_pdc.h>

#include "at91-pcm.h"
#include "at91-i2s.h"
Expand All @@ -51,17 +52,17 @@
* SSC PDC registers required by the PCM DMA engine.
*/
static struct at91_pdc_regs pdc_tx_reg = {
.xpr = AT91_PDC_TPR,
.xcr = AT91_PDC_TCR,
.xnpr = AT91_PDC_TNPR,
.xncr = AT91_PDC_TNCR,
.xpr = ATMEL_PDC_TPR,
.xcr = ATMEL_PDC_TCR,
.xnpr = ATMEL_PDC_TNPR,
.xncr = ATMEL_PDC_TNCR,
};

static struct at91_pdc_regs pdc_rx_reg = {
.xpr = AT91_PDC_RPR,
.xcr = AT91_PDC_RCR,
.xnpr = AT91_PDC_RNPR,
.xncr = AT91_PDC_RNCR,
.xpr = ATMEL_PDC_RPR,
.xcr = ATMEL_PDC_RCR,
.xnpr = ATMEL_PDC_RNPR,
.xncr = ATMEL_PDC_RNCR,
};

/*
Expand All @@ -72,17 +73,17 @@ static struct at91_ssc_mask ssc_tx_mask = {
.ssc_disable = AT91_SSC_TXDIS,
.ssc_endx = AT91_SSC_ENDTX,
.ssc_endbuf = AT91_SSC_TXBUFE,
.pdc_enable = AT91_PDC_TXTEN,
.pdc_disable = AT91_PDC_TXTDIS,
.pdc_enable = ATMEL_PDC_TXTEN,
.pdc_disable = ATMEL_PDC_TXTDIS,
};

static struct at91_ssc_mask ssc_rx_mask = {
.ssc_enable = AT91_SSC_RXEN,
.ssc_disable = AT91_SSC_RXDIS,
.ssc_endx = AT91_SSC_ENDRX,
.ssc_endbuf = AT91_SSC_RXBUFF,
.pdc_enable = AT91_PDC_RXTEN,
.pdc_disable = AT91_PDC_RXTDIS,
.pdc_enable = ATMEL_PDC_RXTEN,
.pdc_disable = ATMEL_PDC_RXTDIS,
};


Expand Down Expand Up @@ -508,14 +509,14 @@ static int at91_i2s_hw_params(struct snd_pcm_substream *substream,
/* Reset the SSC and its PDC registers */
at91_ssc_write(ssc_p->ssc.base + AT91_SSC_CR, AT91_SSC_SWRST);

at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RPR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RCR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RNPR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RNCR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TPR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TCR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TNPR, 0);
at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TNCR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RPR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RCR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RNPR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RNCR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TPR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TCR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TNPR, 0);
at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TNCR, 0);

if ((ret = request_irq(ssc_p->ssc.pid, at91_i2s_interrupt,
0, ssc_p->name, ssc_p)) < 0) {
Expand Down
20 changes: 10 additions & 10 deletions sound/soc/at91/at91-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/dma-mapping.h>
#include <linux/atmel_pdc.h>

#include <sound/driver.h>
#include <sound/core.h>
Expand All @@ -30,7 +31,6 @@

#include <asm/arch/hardware.h>
#include <asm/arch/at91_ssc.h>
#include <asm/arch/at91_pdc.h>

#include "at91-pcm.h"

Expand Down Expand Up @@ -83,7 +83,7 @@ static void at91_pcm_dma_irq(u32 ssc_sr,
params->name, ssc_sr, count);

/* re-start the PDC */
at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable);

prtd->period_ptr += prtd->period_size;
if (prtd->period_ptr >= prtd->dma_buffer_end) {
Expand All @@ -94,7 +94,7 @@ static void at91_pcm_dma_irq(u32 ssc_sr,
at91_ssc_write(params->ssc_base + params->pdc->xcr,
prtd->period_size / params->pdc_xfer_size);

at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable);
}

if (ssc_sr & params->mask->ssc_endx) {
Expand Down Expand Up @@ -143,7 +143,7 @@ static int at91_pcm_hw_free(struct snd_pcm_substream *substream)
struct at91_pcm_dma_params *params = prtd->params;

if (params != NULL) {
at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable);
prtd->params->dma_intr_handler = NULL;
}

Expand All @@ -158,7 +158,7 @@ static int at91_pcm_prepare(struct snd_pcm_substream *substream)
at91_ssc_write(params->ssc_base + AT91_SSC_IDR,
params->mask->ssc_endx | params->mask->ssc_endbuf);

at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable);
return 0;
}

Expand Down Expand Up @@ -192,7 +192,7 @@ static int at91_pcm_trigger(struct snd_pcm_substream *substream,
at91_ssc_write(params->ssc_base + AT91_SSC_IER,
params->mask->ssc_endx | params->mask->ssc_endbuf);

at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable);

DBG("sr=%lx imr=%lx\n", at91_ssc_read(params->ssc_base + AT91_SSC_SR),
at91_ssc_read(params->ssc_base + AT91_SSC_IER));
Expand All @@ -201,12 +201,12 @@ static int at91_pcm_trigger(struct snd_pcm_substream *substream,
case SNDRV_PCM_TRIGGER_STOP:
case SNDRV_PCM_TRIGGER_SUSPEND:
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable);
break;

case SNDRV_PCM_TRIGGER_RESUME:
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable);
break;

default:
Expand Down Expand Up @@ -379,7 +379,7 @@ static int at91_pcm_suspend(struct platform_device *pdev,

/* disable the PDC and save the PDC registers */

at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable);

prtd->pdc_xpr_save = at91_ssc_read(params->ssc_base + params->pdc->xpr);
prtd->pdc_xcr_save = at91_ssc_read(params->ssc_base + params->pdc->xcr);
Expand Down Expand Up @@ -408,7 +408,7 @@ static int at91_pcm_resume(struct platform_device *pdev,
at91_ssc_write(params->ssc_base + params->pdc->xnpr, prtd->pdc_xnpr_save);
at91_ssc_write(params->ssc_base + params->pdc->xncr, prtd->pdc_xncr_save);

at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable);
at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable);
return 0;
}
#else
Expand Down

0 comments on commit fa8f878

Please sign in to comment.