Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: pxa: use pdev resource for FIFO regs

The driver currently takes the hardwired FIFO address from
a header file that we want to eliminate. Change it to use
the mmio resource instead and stop including the here.

Acked-by: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+15 -7
+15 -7
sound/soc/pxa/pxa2xx-ac97.c
··· 21 21 #include <sound/pxa2xx-lib.h> 22 22 #include <sound/dmaengine_pcm.h> 23 23 24 - #include <mach/pxa-regs.h> 25 - #include <mach/regs-ac97.h> 26 24 #include <linux/platform_data/asoc-pxa.h> 25 + 26 + #define PCDR 0x0040 /* PCM FIFO Data Register */ 27 + #define MODR 0x0140 /* Modem FIFO Data Register */ 28 + #define MCDR 0x0060 /* Mic-in FIFO Data Register */ 27 29 28 30 static void pxa2xx_ac97_warm_reset(struct ac97_controller *adrv) 29 31 { ··· 61 59 }; 62 60 63 61 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_in = { 64 - .addr = __PREG(PCDR), 65 62 .addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES, 66 63 .chan_name = "pcm_pcm_stereo_in", 67 64 .maxburst = 32, 68 65 }; 69 66 70 67 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_out = { 71 - .addr = __PREG(PCDR), 72 68 .addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES, 73 69 .chan_name = "pcm_pcm_stereo_out", 74 70 .maxburst = 32, 75 71 }; 76 72 77 73 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_aux_mono_out = { 78 - .addr = __PREG(MODR), 79 74 .addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES, 80 75 .chan_name = "pcm_aux_mono_out", 81 76 .maxburst = 16, 82 77 }; 83 78 84 79 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_aux_mono_in = { 85 - .addr = __PREG(MODR), 86 80 .addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES, 87 81 .chan_name = "pcm_aux_mono_in", 88 82 .maxburst = 16, 89 83 }; 90 84 91 85 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_mic_mono_in = { 92 - .addr = __PREG(MCDR), 93 86 .addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES, 94 87 .chan_name = "pcm_aux_mic_mono", 95 88 .maxburst = 16, ··· 223 226 int ret; 224 227 struct ac97_controller *ctrl; 225 228 pxa2xx_audio_ops_t *pdata = pdev->dev.platform_data; 229 + struct resource *regs; 226 230 void **codecs_pdata; 227 231 228 232 if (pdev->id != -1) { 229 233 dev_err(&pdev->dev, "PXA2xx has only one AC97 port.\n"); 230 234 return -ENXIO; 231 235 } 236 + 237 + regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); 238 + if (!regs) 239 + return -ENXIO; 240 + 241 + pxa2xx_ac97_pcm_stereo_in.addr = regs->start + PCDR; 242 + pxa2xx_ac97_pcm_stereo_out.addr = regs->start + PCDR; 243 + pxa2xx_ac97_pcm_aux_mono_out.addr = regs->start + MODR; 244 + pxa2xx_ac97_pcm_aux_mono_in.addr = regs->start + MODR; 245 + pxa2xx_ac97_pcm_mic_mono_in.addr = regs->start + MCDR; 232 246 233 247 ret = pxa2xx_ac97_hw_probe(pdev); 234 248 if (ret) {