ASoC: DaVinci EVM board support buildfixes
This is a build fix, resyncing the DaVinci EVM ASoC board code with the version in the DaVinci tree. That resync includes support for the DM355 EVM, although that board isn't yet in mainline. (NOTE: also includes a bugfix to the platform_add_resources call, recently sent by Chaithrika U S <chaithrika@ti.com> but not yet merged into the DaVinci tree.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
a62114cb90
commit
f492ec9f02
25
arch/arm/mach-davinci/include/mach/asp.h
Normal file
25
arch/arm/mach-davinci/include/mach/asp.h
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* <mach/asp.h> - DaVinci Audio Serial Port support
|
||||
*/
|
||||
#ifndef __ASM_ARCH_DAVINCI_ASP_H
|
||||
#define __ASM_ARCH_DAVINCI_ASP_H
|
||||
|
||||
#include <mach/irqs.h>
|
||||
|
||||
/* Bases of register banks */
|
||||
#define DAVINCI_ASP0_BASE 0x01E02000
|
||||
#define DAVINCI_ASP1_BASE 0x01E04000
|
||||
|
||||
/* EDMA channels */
|
||||
#define DAVINCI_DMA_ASP0_TX 2
|
||||
#define DAVINCI_DMA_ASP0_RX 3
|
||||
#define DAVINCI_DMA_ASP1_TX 8
|
||||
#define DAVINCI_DMA_ASP1_RX 9
|
||||
|
||||
/* Interrupts */
|
||||
#define DAVINCI_ASP0_RX_INT IRQ_MBRINT
|
||||
#define DAVINCI_ASP0_TX_INT IRQ_MBXINT
|
||||
#define DAVINCI_ASP1_RX_INT IRQ_MBRINT
|
||||
#define DAVINCI_ASP1_TX_INT IRQ_MBXINT
|
||||
|
||||
#endif /* __ASM_ARCH_DAVINCI_ASP_H */
|
@ -10,13 +10,14 @@ config SND_DAVINCI_SOC_I2S
|
||||
tristate
|
||||
|
||||
config SND_DAVINCI_SOC_EVM
|
||||
tristate "SoC Audio support for DaVinci EVM"
|
||||
depends on SND_DAVINCI_SOC && MACH_DAVINCI_EVM
|
||||
tristate "SoC Audio support for DaVinci DM6446 or DM355 EVM"
|
||||
depends on SND_DAVINCI_SOC
|
||||
depends on MACH_DAVINCI_EVM || MACH_DAVINCI_DM355_EVM
|
||||
select SND_DAVINCI_SOC_I2S
|
||||
select SND_SOC_TLV320AIC3X
|
||||
help
|
||||
Say Y if you want to add support for SoC audio on TI
|
||||
DaVinci EVM platform.
|
||||
DaVinci DM6446 or DM355 EVM platforms.
|
||||
|
||||
config SND_DAVINCI_SOC_SFFSDR
|
||||
tristate "SoC Audio support for SFFSDR"
|
||||
|
@ -20,7 +20,11 @@
|
||||
#include <sound/soc-dapm.h>
|
||||
|
||||
#include <asm/dma.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <mach/asp.h>
|
||||
#include <mach/edma.h>
|
||||
#include <mach/mux.h>
|
||||
|
||||
#include "../codecs/tlv320aic3x.h"
|
||||
#include "davinci-pcm.h"
|
||||
@ -150,7 +154,7 @@ static struct snd_soc_card snd_soc_card_evm = {
|
||||
|
||||
/* evm audio private data */
|
||||
static struct aic3x_setup_data evm_aic3x_setup = {
|
||||
.i2c_bus = 0,
|
||||
.i2c_bus = 1,
|
||||
.i2c_address = 0x1b,
|
||||
};
|
||||
|
||||
@ -161,36 +165,73 @@ static struct snd_soc_device evm_snd_devdata = {
|
||||
.codec_data = &evm_aic3x_setup,
|
||||
};
|
||||
|
||||
/* DM6446 EVM uses ASP0; line-out is a pair of RCA jacks */
|
||||
static struct resource evm_snd_resources[] = {
|
||||
{
|
||||
.start = DAVINCI_MCBSP_BASE,
|
||||
.end = DAVINCI_MCBSP_BASE + SZ_8K - 1,
|
||||
.start = DAVINCI_ASP0_BASE,
|
||||
.end = DAVINCI_ASP0_BASE + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct evm_snd_platform_data evm_snd_data = {
|
||||
.tx_dma_ch = DM644X_DMACH_MCBSP_TX,
|
||||
.rx_dma_ch = DM644X_DMACH_MCBSP_RX,
|
||||
.tx_dma_ch = DAVINCI_DMA_ASP0_TX,
|
||||
.rx_dma_ch = DAVINCI_DMA_ASP0_RX,
|
||||
};
|
||||
|
||||
/* DM335 EVM uses ASP1; line-out is a stereo mini-jack */
|
||||
static struct resource dm335evm_snd_resources[] = {
|
||||
{
|
||||
.start = DAVINCI_ASP1_BASE,
|
||||
.end = DAVINCI_ASP1_BASE + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct evm_snd_platform_data dm335evm_snd_data = {
|
||||
.tx_dma_ch = DAVINCI_DMA_ASP1_TX,
|
||||
.rx_dma_ch = DAVINCI_DMA_ASP1_RX,
|
||||
};
|
||||
|
||||
static struct platform_device *evm_snd_device;
|
||||
|
||||
static int __init evm_init(void)
|
||||
{
|
||||
struct resource *resources;
|
||||
unsigned num_resources;
|
||||
struct evm_snd_platform_data *data;
|
||||
int index;
|
||||
int ret;
|
||||
|
||||
evm_snd_device = platform_device_alloc("soc-audio", 0);
|
||||
if (machine_is_davinci_evm()) {
|
||||
davinci_cfg_reg(DM644X_MCBSP);
|
||||
|
||||
resources = evm_snd_resources;
|
||||
num_resources = ARRAY_SIZE(evm_snd_resources);
|
||||
data = &evm_snd_data;
|
||||
index = 0;
|
||||
} else if (machine_is_davinci_dm355_evm()) {
|
||||
/* we don't use ASP1 IRQs, or we'd need to mux them ... */
|
||||
davinci_cfg_reg(DM355_EVT8_ASP1_TX);
|
||||
davinci_cfg_reg(DM355_EVT9_ASP1_RX);
|
||||
|
||||
resources = dm335evm_snd_resources;
|
||||
num_resources = ARRAY_SIZE(dm335evm_snd_resources);
|
||||
data = &dm335evm_snd_data;
|
||||
index = 1;
|
||||
} else
|
||||
return -EINVAL;
|
||||
|
||||
evm_snd_device = platform_device_alloc("soc-audio", index);
|
||||
if (!evm_snd_device)
|
||||
return -ENOMEM;
|
||||
|
||||
platform_set_drvdata(evm_snd_device, &evm_snd_devdata);
|
||||
evm_snd_devdata.dev = &evm_snd_device->dev;
|
||||
platform_device_add_data(evm_snd_device, &evm_snd_data,
|
||||
sizeof(evm_snd_data));
|
||||
platform_device_add_data(evm_snd_device, data, sizeof(*data));
|
||||
|
||||
ret = platform_device_add_resources(evm_snd_device, evm_snd_resources,
|
||||
ARRAY_SIZE(evm_snd_resources));
|
||||
ret = platform_device_add_resources(evm_snd_device, resources,
|
||||
num_resources);
|
||||
if (ret) {
|
||||
platform_device_put(evm_snd_device);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user