Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e33ef5e3 authored by Chaithrika U S's avatar Chaithrika U S Committed by Kevin Hilman
Browse files

davinci: Audio support for DA830 EVM



Define resources for McASP1 used on DA830/OMAP-L137 EVM, add platform
device defintion, initialization function.  Additionally, this patch
also adds version and FIFO related members to platform data structure.

Signed-off-by: default avatarChaithrika U S <chaithrika@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent 5a8d5441
Loading
Loading
Loading
Loading
+27 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@
#include <mach/irqs.h>
#include <mach/irqs.h>
#include <mach/cp_intc.h>
#include <mach/cp_intc.h>
#include <mach/da8xx.h>
#include <mach/da8xx.h>
#include <mach/asp.h>


#define DA830_EVM_PHY_MASK		0x0
#define DA830_EVM_PHY_MASK		0x0
#define DA830_EVM_MDIO_FREQUENCY	2200000	/* PHY bus frequency */
#define DA830_EVM_MDIO_FREQUENCY	2200000	/* PHY bus frequency */
@@ -51,6 +52,25 @@ static struct davinci_uart_config da830_evm_uart_config __initdata = {
	.enabled_uarts = 0x7,
	.enabled_uarts = 0x7,
};
};


static u8 da830_iis_serializer_direction[] = {
	RX_MODE,	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
	INACTIVE_MODE,	TX_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
};

static struct snd_platform_data da830_evm_snd_data = {
	.tx_dma_offset  = 0x2000,
	.rx_dma_offset  = 0x2000,
	.op_mode        = DAVINCI_MCASP_IIS_MODE,
	.num_serializer = ARRAY_SIZE(da830_iis_serializer_direction),
	.tdm_slots      = 2,
	.serial_dir     = da830_iis_serializer_direction,
	.eventq_no      = EVENTQ_0,
	.version	= MCASP_VERSION_2,
	.txnumevt	= 1,
	.rxnumevt	= 1,
};

static __init void da830_evm_init(void)
static __init void da830_evm_init(void)
{
{
	struct davinci_soc_info *soc_info = &davinci_soc_info;
	struct davinci_soc_info *soc_info = &davinci_soc_info;
@@ -93,6 +113,13 @@ static __init void da830_evm_init(void)
	davinci_serial_init(&da830_evm_uart_config);
	davinci_serial_init(&da830_evm_uart_config);
	i2c_register_board_info(1, da830_evm_i2c_devices,
	i2c_register_board_info(1, da830_evm_i2c_devices,
			ARRAY_SIZE(da830_evm_i2c_devices));
			ARRAY_SIZE(da830_evm_i2c_devices));

	ret = da8xx_pinmux_setup(da830_mcasp1_pins);
	if (ret)
		pr_warning("da830_evm_init: mcasp1 mux setup failed: %d\n",
				ret);

	da8xx_init_mcasp(1, &da830_evm_snd_data);
}
}


#ifdef CONFIG_SERIAL_8250_CONSOLE
#ifdef CONFIG_SERIAL_8250_CONSOLE
+4 −3
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@
#include <mach/common.h>
#include <mach/common.h>
#include <mach/time.h>
#include <mach/time.h>
#include <mach/da8xx.h>
#include <mach/da8xx.h>
#include <mach/asp.h>


#include "clock.h"
#include "clock.h"
#include "mux.h"
#include "mux.h"
@@ -411,9 +412,9 @@ static struct davinci_clk da830_clks[] = {
	CLK("eqep.0",		NULL,		&eqep0_clk),
	CLK("eqep.0",		NULL,		&eqep0_clk),
	CLK("eqep.1",		NULL,		&eqep1_clk),
	CLK("eqep.1",		NULL,		&eqep1_clk),
	CLK("da830_lcdc",	NULL,		&lcdc_clk),
	CLK("da830_lcdc",	NULL,		&lcdc_clk),
	CLK("soc-audio.0",	NULL,		&mcasp0_clk),
	CLK("davinci-mcasp.0",	NULL,		&mcasp0_clk),
	CLK("soc-audio.1",	NULL,		&mcasp1_clk),
	CLK("davinci-mcasp.1",	NULL,		&mcasp1_clk),
	CLK("soc-audio.2",	NULL,		&mcasp2_clk),
	CLK("davinci-mcasp.2",	NULL,		&mcasp2_clk),
	CLK("musb_hdrc",	NULL,		&usb20_clk),
	CLK("musb_hdrc",	NULL,		&usb20_clk),
	CLK(NULL,		"aemif",	&aemif_clk),
	CLK(NULL,		"aemif",	&aemif_clk),
	CLK(NULL,		"aintc",	&aintc_clk),
	CLK(NULL,		"aintc",	&aintc_clk),
+36 −0
Original line number Original line Diff line number Diff line
@@ -281,7 +281,43 @@ static struct platform_device da8xx_emac_device = {
	.resource	= da8xx_emac_resources,
	.resource	= da8xx_emac_resources,
};
};


static struct resource da830_mcasp1_resources[] = {
	{
		.name	= "mcasp1",
		.start	= DAVINCI_DA830_MCASP1_REG_BASE,
		.end	= DAVINCI_DA830_MCASP1_REG_BASE + (SZ_1K * 12) - 1,
		.flags	= IORESOURCE_MEM,
	},
	/* TX event */
	{
		.start	= DAVINCI_DA830_DMA_MCASP1_AXEVT,
		.end	= DAVINCI_DA830_DMA_MCASP1_AXEVT,
		.flags	= IORESOURCE_DMA,
	},
	/* RX event */
	{
		.start	= DAVINCI_DA830_DMA_MCASP1_AREVT,
		.end	= DAVINCI_DA830_DMA_MCASP1_AREVT,
		.flags	= IORESOURCE_DMA,
	},
};

static struct platform_device da830_mcasp1_device = {
	.name		= "davinci-mcasp",
	.id		= 1,
	.num_resources	= ARRAY_SIZE(da830_mcasp1_resources),
	.resource	= da830_mcasp1_resources,
};

int __init da8xx_register_emac(void)
int __init da8xx_register_emac(void)
{
{
	return platform_device_register(&da8xx_emac_device);
	return platform_device_register(&da8xx_emac_device);
}
}

void __init da8xx_init_mcasp(int id, struct snd_platform_data *pdata)
{
	if (id == 1) { /* DA830/OMAP-L137 has 3 instances of McASP */
		da830_mcasp1_device.dev.platform_data = pdata;
		platform_device_register(&da830_mcasp1_device);
	}
}
+15 −0
Original line number Original line Diff line number Diff line
@@ -15,6 +15,9 @@
#define	DAVINCI_DM646X_MCASP0_REG_BASE		0x01D01000
#define	DAVINCI_DM646X_MCASP0_REG_BASE		0x01D01000
#define DAVINCI_DM646X_MCASP1_REG_BASE		0x01D01800
#define DAVINCI_DM646X_MCASP1_REG_BASE		0x01D01800


/* Bases of da830 McASP1 register banks */
#define DAVINCI_DA830_MCASP1_REG_BASE	0x01D04000

/* EDMA channels of dm644x and dm355 */
/* EDMA channels of dm644x and dm355 */
#define DAVINCI_DMA_ASP0_TX	2
#define DAVINCI_DMA_ASP0_TX	2
#define DAVINCI_DMA_ASP0_RX	3
#define DAVINCI_DMA_ASP0_RX	3
@@ -26,6 +29,10 @@
#define	DAVINCI_DM646X_DMA_MCASP0_AREVT0	9
#define	DAVINCI_DM646X_DMA_MCASP0_AREVT0	9
#define	DAVINCI_DM646X_DMA_MCASP1_AXEVT1	12
#define	DAVINCI_DM646X_DMA_MCASP1_AXEVT1	12


/* EDMA channels of da830 McASP1 */
#define	DAVINCI_DA830_DMA_MCASP1_AREVT	2
#define	DAVINCI_DA830_DMA_MCASP1_AXEVT	3

/* Interrupts */
/* Interrupts */
#define DAVINCI_ASP0_RX_INT	IRQ_MBRINT
#define DAVINCI_ASP0_RX_INT	IRQ_MBRINT
#define DAVINCI_ASP0_TX_INT	IRQ_MBXINT
#define DAVINCI_ASP0_TX_INT	IRQ_MBXINT
@@ -43,6 +50,14 @@ struct snd_platform_data {
	u8 op_mode;
	u8 op_mode;
	u8 num_serializer;
	u8 num_serializer;
	u8 *serial_dir;
	u8 *serial_dir;
	u8 version;
	u8 txnumevt;
	u8 rxnumevt;
};

enum {
	MCASP_VERSION_1 = 0,	/* DM646x */
	MCASP_VERSION_2,	/* DA8xx/OMAPL1x */
};
};


#define INACTIVE_MODE	0
#define INACTIVE_MODE	0
+3 −0
Original line number Original line Diff line number Diff line
@@ -15,6 +15,7 @@
#include <mach/edma.h>
#include <mach/edma.h>
#include <mach/i2c.h>
#include <mach/i2c.h>
#include <mach/emac.h>
#include <mach/emac.h>
#include <mach/asp.h>


/*
/*
 * The cp_intc interrupt controller for the da8xx isn't in the same
 * The cp_intc interrupt controller for the da8xx isn't in the same
@@ -65,6 +66,7 @@ int da8xx_register_edma(void);
int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
int da8xx_register_watchdog(void);
int da8xx_register_watchdog(void);
int da8xx_register_emac(void);
int da8xx_register_emac(void);
void __init da8xx_init_mcasp(int id, struct snd_platform_data *pdata);


extern struct platform_device da8xx_serial_device;
extern struct platform_device da8xx_serial_device;
extern struct emac_platform_data da8xx_emac_pdata;
extern struct emac_platform_data da8xx_emac_pdata;
@@ -100,6 +102,7 @@ extern const short da850_uart2_pins[];
extern const short da850_i2c0_pins[];
extern const short da850_i2c0_pins[];
extern const short da850_i2c1_pins[];
extern const short da850_i2c1_pins[];
extern const short da850_cpgmac_pins[];
extern const short da850_cpgmac_pins[];
extern const short da850_mcasp_pins[];


int da8xx_pinmux_setup(const short pins[]);
int da8xx_pinmux_setup(const short pins[]);