aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap2/mcbsp.c41
-rw-r--r--arch/arm/plat-omap/include/mach/mcbsp.h8
-rw-r--r--arch/arm/plat-omap/mcbsp.c2
3 files changed, 49 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c
index a5c0f0435cd6..d49dfb5e931f 100644
--- a/arch/arm/mach-omap2/mcbsp.c
+++ b/arch/arm/mach-omap2/mcbsp.c
@@ -169,6 +169,42 @@ static struct omap_mcbsp_platform_data omap34xx_mcbsp_pdata[] = {
169#define OMAP34XX_MCBSP_PDATA_SZ 0 169#define OMAP34XX_MCBSP_PDATA_SZ 0
170#endif 170#endif
171 171
172static struct omap_mcbsp_platform_data omap44xx_mcbsp_pdata[] = {
173 {
174 .phys_base = OMAP44XX_MCBSP1_BASE,
175 .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX,
176 .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX,
177 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
178 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
179 .ops = &omap2_mcbsp_ops,
180 },
181 {
182 .phys_base = OMAP44XX_MCBSP2_BASE,
183 .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX,
184 .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX,
185 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
186 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
187 .ops = &omap2_mcbsp_ops,
188 },
189 {
190 .phys_base = OMAP44XX_MCBSP3_BASE,
191 .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX,
192 .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX,
193 .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
194 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
195 .ops = &omap2_mcbsp_ops,
196 },
197 {
198 .phys_base = OMAP44XX_MCBSP4_BASE,
199 .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX,
200 .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX,
201 .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
202 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
203 .ops = &omap2_mcbsp_ops,
204 },
205};
206#define OMAP44XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap44xx_mcbsp_pdata)
207
172static int __init omap2_mcbsp_init(void) 208static int __init omap2_mcbsp_init(void)
173{ 209{
174 if (cpu_is_omap2420()) 210 if (cpu_is_omap2420())
@@ -177,6 +213,8 @@ static int __init omap2_mcbsp_init(void)
177 omap_mcbsp_count = OMAP2430_MCBSP_PDATA_SZ; 213 omap_mcbsp_count = OMAP2430_MCBSP_PDATA_SZ;
178 if (cpu_is_omap34xx()) 214 if (cpu_is_omap34xx())
179 omap_mcbsp_count = OMAP34XX_MCBSP_PDATA_SZ; 215 omap_mcbsp_count = OMAP34XX_MCBSP_PDATA_SZ;
216 if (cpu_is_omap44xx())
217 omap_mcbsp_count = OMAP44XX_MCBSP_PDATA_SZ;
180 218
181 mcbsp_ptr = kzalloc(omap_mcbsp_count * sizeof(struct omap_mcbsp *), 219 mcbsp_ptr = kzalloc(omap_mcbsp_count * sizeof(struct omap_mcbsp *),
182 GFP_KERNEL); 220 GFP_KERNEL);
@@ -192,6 +230,9 @@ static int __init omap2_mcbsp_init(void)
192 if (cpu_is_omap34xx()) 230 if (cpu_is_omap34xx())
193 omap_mcbsp_register_board_cfg(omap34xx_mcbsp_pdata, 231 omap_mcbsp_register_board_cfg(omap34xx_mcbsp_pdata,
194 OMAP34XX_MCBSP_PDATA_SZ); 232 OMAP34XX_MCBSP_PDATA_SZ);
233 if (cpu_is_omap44xx())
234 omap_mcbsp_register_board_cfg(omap44xx_mcbsp_pdata,
235 OMAP44XX_MCBSP_PDATA_SZ);
195 236
196 return omap_mcbsp_init(); 237 return omap_mcbsp_init();
197} 238}
diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h b/arch/arm/plat-omap/include/mach/mcbsp.h
index bb154ea76769..ec6f81e06d39 100644
--- a/arch/arm/plat-omap/include/mach/mcbsp.h
+++ b/arch/arm/plat-omap/include/mach/mcbsp.h
@@ -53,6 +53,11 @@
53#define OMAP34XX_MCBSP4_BASE 0x49026000 53#define OMAP34XX_MCBSP4_BASE 0x49026000
54#define OMAP34XX_MCBSP5_BASE 0x48096000 54#define OMAP34XX_MCBSP5_BASE 0x48096000
55 55
56#define OMAP44XX_MCBSP1_BASE 0x49022000
57#define OMAP44XX_MCBSP2_BASE 0x49024000
58#define OMAP44XX_MCBSP3_BASE 0x49026000
59#define OMAP44XX_MCBSP4_BASE 0x48074000
60
56#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730) 61#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP730)
57 62
58#define OMAP_MCBSP_REG_DRR2 0x00 63#define OMAP_MCBSP_REG_DRR2 0x00
@@ -98,7 +103,8 @@
98#define AUDIO_DMA_TX OMAP_DMA_MCBSP1_TX 103#define AUDIO_DMA_TX OMAP_DMA_MCBSP1_TX
99#define AUDIO_DMA_RX OMAP_DMA_MCBSP1_RX 104#define AUDIO_DMA_RX OMAP_DMA_MCBSP1_RX
100 105
101#elif defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) 106#elif defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) || \
107 defined(CONFIG_ARCH_OMAP4)
102 108
103#define OMAP_MCBSP_REG_DRR2 0x00 109#define OMAP_MCBSP_REG_DRR2 0x00
104#define OMAP_MCBSP_REG_DRR1 0x04 110#define OMAP_MCBSP_REG_DRR1 0x04
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index efa0e0111f38..e42fa7cfc795 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -191,7 +191,7 @@ void omap_mcbsp_config(unsigned int id, const struct omap_mcbsp_reg_cfg *config)
191 OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2); 191 OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2);
192 OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1); 192 OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1);
193 OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0); 193 OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0);
194 if (cpu_is_omap2430() || cpu_is_omap34xx()) { 194 if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
195 OMAP_MCBSP_WRITE(io_base, XCCR, config->xccr); 195 OMAP_MCBSP_WRITE(io_base, XCCR, config->xccr);
196 OMAP_MCBSP_WRITE(io_base, RCCR, config->rccr); 196 OMAP_MCBSP_WRITE(io_base, RCCR, config->rccr);
197 } 197 }