diff options
| -rw-r--r-- | sound/soc/at91/at91-i2s.c | 43 | ||||
| -rw-r--r-- | sound/soc/at91/at91-pcm.c | 20 |
2 files changed, 32 insertions, 31 deletions
diff --git a/sound/soc/at91/at91-i2s.c b/sound/soc/at91/at91-i2s.c index fcc544a96ba3..9fc0c0388881 100644 --- a/sound/soc/at91/at91-i2s.c +++ b/sound/soc/at91/at91-i2s.c | |||
| @@ -20,6 +20,8 @@ | |||
| 20 | #include <linux/device.h> | 20 | #include <linux/device.h> |
| 21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
| 22 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
| 23 | #include <linux/atmel_pdc.h> | ||
| 24 | |||
| 23 | #include <sound/driver.h> | 25 | #include <sound/driver.h> |
| 24 | #include <sound/core.h> | 26 | #include <sound/core.h> |
| 25 | #include <sound/pcm.h> | 27 | #include <sound/pcm.h> |
| @@ -29,7 +31,6 @@ | |||
| 29 | #include <asm/arch/hardware.h> | 31 | #include <asm/arch/hardware.h> |
| 30 | #include <asm/arch/at91_pmc.h> | 32 | #include <asm/arch/at91_pmc.h> |
| 31 | #include <asm/arch/at91_ssc.h> | 33 | #include <asm/arch/at91_ssc.h> |
| 32 | #include <asm/arch/at91_pdc.h> | ||
| 33 | 34 | ||
| 34 | #include "at91-pcm.h" | 35 | #include "at91-pcm.h" |
| 35 | #include "at91-i2s.h" | 36 | #include "at91-i2s.h" |
| @@ -51,17 +52,17 @@ | |||
| 51 | * SSC PDC registers required by the PCM DMA engine. | 52 | * SSC PDC registers required by the PCM DMA engine. |
| 52 | */ | 53 | */ |
| 53 | static struct at91_pdc_regs pdc_tx_reg = { | 54 | static struct at91_pdc_regs pdc_tx_reg = { |
| 54 | .xpr = AT91_PDC_TPR, | 55 | .xpr = ATMEL_PDC_TPR, |
| 55 | .xcr = AT91_PDC_TCR, | 56 | .xcr = ATMEL_PDC_TCR, |
| 56 | .xnpr = AT91_PDC_TNPR, | 57 | .xnpr = ATMEL_PDC_TNPR, |
| 57 | .xncr = AT91_PDC_TNCR, | 58 | .xncr = ATMEL_PDC_TNCR, |
| 58 | }; | 59 | }; |
| 59 | 60 | ||
| 60 | static struct at91_pdc_regs pdc_rx_reg = { | 61 | static struct at91_pdc_regs pdc_rx_reg = { |
| 61 | .xpr = AT91_PDC_RPR, | 62 | .xpr = ATMEL_PDC_RPR, |
| 62 | .xcr = AT91_PDC_RCR, | 63 | .xcr = ATMEL_PDC_RCR, |
| 63 | .xnpr = AT91_PDC_RNPR, | 64 | .xnpr = ATMEL_PDC_RNPR, |
| 64 | .xncr = AT91_PDC_RNCR, | 65 | .xncr = ATMEL_PDC_RNCR, |
| 65 | }; | 66 | }; |
| 66 | 67 | ||
| 67 | /* | 68 | /* |
| @@ -72,8 +73,8 @@ static struct at91_ssc_mask ssc_tx_mask = { | |||
| 72 | .ssc_disable = AT91_SSC_TXDIS, | 73 | .ssc_disable = AT91_SSC_TXDIS, |
| 73 | .ssc_endx = AT91_SSC_ENDTX, | 74 | .ssc_endx = AT91_SSC_ENDTX, |
| 74 | .ssc_endbuf = AT91_SSC_TXBUFE, | 75 | .ssc_endbuf = AT91_SSC_TXBUFE, |
| 75 | .pdc_enable = AT91_PDC_TXTEN, | 76 | .pdc_enable = ATMEL_PDC_TXTEN, |
| 76 | .pdc_disable = AT91_PDC_TXTDIS, | 77 | .pdc_disable = ATMEL_PDC_TXTDIS, |
| 77 | }; | 78 | }; |
| 78 | 79 | ||
| 79 | static struct at91_ssc_mask ssc_rx_mask = { | 80 | static struct at91_ssc_mask ssc_rx_mask = { |
| @@ -81,8 +82,8 @@ static struct at91_ssc_mask ssc_rx_mask = { | |||
| 81 | .ssc_disable = AT91_SSC_RXDIS, | 82 | .ssc_disable = AT91_SSC_RXDIS, |
| 82 | .ssc_endx = AT91_SSC_ENDRX, | 83 | .ssc_endx = AT91_SSC_ENDRX, |
| 83 | .ssc_endbuf = AT91_SSC_RXBUFF, | 84 | .ssc_endbuf = AT91_SSC_RXBUFF, |
| 84 | .pdc_enable = AT91_PDC_RXTEN, | 85 | .pdc_enable = ATMEL_PDC_RXTEN, |
| 85 | .pdc_disable = AT91_PDC_RXTDIS, | 86 | .pdc_disable = ATMEL_PDC_RXTDIS, |
| 86 | }; | 87 | }; |
| 87 | 88 | ||
| 88 | 89 | ||
| @@ -508,14 +509,14 @@ static int at91_i2s_hw_params(struct snd_pcm_substream *substream, | |||
| 508 | /* Reset the SSC and its PDC registers */ | 509 | /* Reset the SSC and its PDC registers */ |
| 509 | at91_ssc_write(ssc_p->ssc.base + AT91_SSC_CR, AT91_SSC_SWRST); | 510 | at91_ssc_write(ssc_p->ssc.base + AT91_SSC_CR, AT91_SSC_SWRST); |
| 510 | 511 | ||
| 511 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RPR, 0); | 512 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RPR, 0); |
| 512 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RCR, 0); | 513 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RCR, 0); |
| 513 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RNPR, 0); | 514 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RNPR, 0); |
| 514 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_RNCR, 0); | 515 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_RNCR, 0); |
| 515 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TPR, 0); | 516 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TPR, 0); |
| 516 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TCR, 0); | 517 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TCR, 0); |
| 517 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TNPR, 0); | 518 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TNPR, 0); |
| 518 | at91_ssc_write(ssc_p->ssc.base + AT91_PDC_TNCR, 0); | 519 | at91_ssc_write(ssc_p->ssc.base + ATMEL_PDC_TNCR, 0); |
| 519 | 520 | ||
| 520 | if ((ret = request_irq(ssc_p->ssc.pid, at91_i2s_interrupt, | 521 | if ((ret = request_irq(ssc_p->ssc.pid, at91_i2s_interrupt, |
| 521 | 0, ssc_p->name, ssc_p)) < 0) { | 522 | 0, ssc_p->name, ssc_p)) < 0) { |
diff --git a/sound/soc/at91/at91-pcm.c b/sound/soc/at91/at91-pcm.c index e88b12e7cc40..b39b95a47040 100644 --- a/sound/soc/at91/at91-pcm.c +++ b/sound/soc/at91/at91-pcm.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
| 22 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
| 23 | #include <linux/dma-mapping.h> | 23 | #include <linux/dma-mapping.h> |
| 24 | #include <linux/atmel_pdc.h> | ||
| 24 | 25 | ||
| 25 | #include <sound/driver.h> | 26 | #include <sound/driver.h> |
| 26 | #include <sound/core.h> | 27 | #include <sound/core.h> |
| @@ -30,7 +31,6 @@ | |||
| 30 | 31 | ||
| 31 | #include <asm/arch/hardware.h> | 32 | #include <asm/arch/hardware.h> |
| 32 | #include <asm/arch/at91_ssc.h> | 33 | #include <asm/arch/at91_ssc.h> |
| 33 | #include <asm/arch/at91_pdc.h> | ||
| 34 | 34 | ||
| 35 | #include "at91-pcm.h" | 35 | #include "at91-pcm.h" |
| 36 | 36 | ||
| @@ -83,7 +83,7 @@ static void at91_pcm_dma_irq(u32 ssc_sr, | |||
| 83 | params->name, ssc_sr, count); | 83 | params->name, ssc_sr, count); |
| 84 | 84 | ||
| 85 | /* re-start the PDC */ | 85 | /* re-start the PDC */ |
| 86 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable); | 86 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable); |
| 87 | 87 | ||
| 88 | prtd->period_ptr += prtd->period_size; | 88 | prtd->period_ptr += prtd->period_size; |
| 89 | if (prtd->period_ptr >= prtd->dma_buffer_end) { | 89 | if (prtd->period_ptr >= prtd->dma_buffer_end) { |
| @@ -94,7 +94,7 @@ static void at91_pcm_dma_irq(u32 ssc_sr, | |||
| 94 | at91_ssc_write(params->ssc_base + params->pdc->xcr, | 94 | at91_ssc_write(params->ssc_base + params->pdc->xcr, |
| 95 | prtd->period_size / params->pdc_xfer_size); | 95 | prtd->period_size / params->pdc_xfer_size); |
| 96 | 96 | ||
| 97 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable); | 97 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable); |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | if (ssc_sr & params->mask->ssc_endx) { | 100 | if (ssc_sr & params->mask->ssc_endx) { |
| @@ -143,7 +143,7 @@ static int at91_pcm_hw_free(struct snd_pcm_substream *substream) | |||
| 143 | struct at91_pcm_dma_params *params = prtd->params; | 143 | struct at91_pcm_dma_params *params = prtd->params; |
| 144 | 144 | ||
| 145 | if (params != NULL) { | 145 | if (params != NULL) { |
| 146 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable); | 146 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable); |
| 147 | prtd->params->dma_intr_handler = NULL; | 147 | prtd->params->dma_intr_handler = NULL; |
| 148 | } | 148 | } |
| 149 | 149 | ||
| @@ -158,7 +158,7 @@ static int at91_pcm_prepare(struct snd_pcm_substream *substream) | |||
| 158 | at91_ssc_write(params->ssc_base + AT91_SSC_IDR, | 158 | at91_ssc_write(params->ssc_base + AT91_SSC_IDR, |
| 159 | params->mask->ssc_endx | params->mask->ssc_endbuf); | 159 | params->mask->ssc_endx | params->mask->ssc_endbuf); |
| 160 | 160 | ||
| 161 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable); | 161 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable); |
| 162 | return 0; | 162 | return 0; |
| 163 | } | 163 | } |
| 164 | 164 | ||
| @@ -192,7 +192,7 @@ static int at91_pcm_trigger(struct snd_pcm_substream *substream, | |||
| 192 | at91_ssc_write(params->ssc_base + AT91_SSC_IER, | 192 | at91_ssc_write(params->ssc_base + AT91_SSC_IER, |
| 193 | params->mask->ssc_endx | params->mask->ssc_endbuf); | 193 | params->mask->ssc_endx | params->mask->ssc_endbuf); |
| 194 | 194 | ||
| 195 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable); | 195 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable); |
| 196 | 196 | ||
| 197 | DBG("sr=%lx imr=%lx\n", at91_ssc_read(params->ssc_base + AT91_SSC_SR), | 197 | DBG("sr=%lx imr=%lx\n", at91_ssc_read(params->ssc_base + AT91_SSC_SR), |
| 198 | at91_ssc_read(params->ssc_base + AT91_SSC_IER)); | 198 | at91_ssc_read(params->ssc_base + AT91_SSC_IER)); |
| @@ -201,12 +201,12 @@ static int at91_pcm_trigger(struct snd_pcm_substream *substream, | |||
| 201 | case SNDRV_PCM_TRIGGER_STOP: | 201 | case SNDRV_PCM_TRIGGER_STOP: |
| 202 | case SNDRV_PCM_TRIGGER_SUSPEND: | 202 | case SNDRV_PCM_TRIGGER_SUSPEND: |
| 203 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: | 203 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
| 204 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable); | 204 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable); |
| 205 | break; | 205 | break; |
| 206 | 206 | ||
| 207 | case SNDRV_PCM_TRIGGER_RESUME: | 207 | case SNDRV_PCM_TRIGGER_RESUME: |
| 208 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: | 208 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: |
| 209 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable); | 209 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable); |
| 210 | break; | 210 | break; |
| 211 | 211 | ||
| 212 | default: | 212 | default: |
| @@ -379,7 +379,7 @@ static int at91_pcm_suspend(struct platform_device *pdev, | |||
| 379 | 379 | ||
| 380 | /* disable the PDC and save the PDC registers */ | 380 | /* disable the PDC and save the PDC registers */ |
| 381 | 381 | ||
| 382 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_disable); | 382 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_disable); |
| 383 | 383 | ||
| 384 | prtd->pdc_xpr_save = at91_ssc_read(params->ssc_base + params->pdc->xpr); | 384 | prtd->pdc_xpr_save = at91_ssc_read(params->ssc_base + params->pdc->xpr); |
| 385 | prtd->pdc_xcr_save = at91_ssc_read(params->ssc_base + params->pdc->xcr); | 385 | prtd->pdc_xcr_save = at91_ssc_read(params->ssc_base + params->pdc->xcr); |
| @@ -408,7 +408,7 @@ static int at91_pcm_resume(struct platform_device *pdev, | |||
| 408 | at91_ssc_write(params->ssc_base + params->pdc->xnpr, prtd->pdc_xnpr_save); | 408 | at91_ssc_write(params->ssc_base + params->pdc->xnpr, prtd->pdc_xnpr_save); |
| 409 | at91_ssc_write(params->ssc_base + params->pdc->xncr, prtd->pdc_xncr_save); | 409 | at91_ssc_write(params->ssc_base + params->pdc->xncr, prtd->pdc_xncr_save); |
| 410 | 410 | ||
| 411 | at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable); | 411 | at91_ssc_write(params->ssc_base + ATMEL_PDC_PTCR, params->mask->pdc_enable); |
| 412 | return 0; | 412 | return 0; |
| 413 | } | 413 | } |
| 414 | #else | 414 | #else |
