Hi I have been working with McASP configuration for the Hawkboard, I
test Audio with ALSA utils, I create a FS from

http://www.angstrom-distribution.org/narcissus/

and in

Additional console packages:

Alsa utils

I boot it from NFS (last patch that I send) I attach the boot process
in a file.
Then I apply the patch

0001-davinci-AUDIO-support-for-Omapl138-Hawkboard.patch


and when I boot whit my patch for audio the command alsamixer works,
as expected.
but the problem is that with the command aplay it produce an error.

r...@hawkboard:~# aplay audio-samples/beethoven_44100.wav
Unable to handle kernel NULL pointer dereference at virtual address 0000005c
pgd = c7a7c000
[0000005c] *pgd=c7bf5031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT
last sysfs file: /sys/kernel/uevent_seqnum
Modules linked in:
CPU: 0    Not tainted  (2.6.36-rc4-07515-g6c9df1b-dirty #37)
PC is at _clear_bit_le+0x14/0x2c
LR is at prepare_unused_channel_list+0x54/0x70
pc : [<c014e590>]    lr : [<c0032454>]    psr: 20000093
sp : c7a17d40  ip : 20000013  fp : 00000001
r10: c7bf6800  r9 : c7823800  r8 : c7b64c60
r7 : c035b0bc  r6 : c0340a90  r5 : 00000002  r4 : 0000001c
r3 : 00000002  r2 : 00000001  r1 : 0000005c  r0 : 00000001
Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: c7a7c000  DAC: 00000015
Process aplay (pid: 1051, stack limit = 0xc7a16270)
Stack: (0xc7a17d40 to 0xc7a18000)
7d40: 00000000 c0032400 00000000 c0191e50 c78074b8 c78415d0 c01c35c8 00000001
7d60: ffffffff c00327f4 00000001 c01c35c8 c7823800 c7b64c60 00000001 ffffffff
7d80: c7823800 c7b64c60 c78e7300 c7bf6800 c0355c44 c01c32cc c7823800 00000000
7da0: c03559f8 c0354df0 c7823800 c0355ce0 c0355938 c7bf6800 00000000 c01bde60
7dc0: c0354d00 c7a17e14 00000000 c7a16000 c7925ee0 c7925ef8 00000000 00000000
7de0: bedeb764 c01b50f4 c7925e00 c7823800 c7b0d400 c7925e00 c7b0d400 c01b5224
7e00: 00000000 c7aefb00 c0037d30 c7925ef8 c7925ef8 c01a9594 c0279680 c7b0d400
7e20: 00000000 c7ac7060 c792a9e0 00000000 00000000 c01a9a88 c7ac7060 c7b0d400
7e40: c78593c0 00000000 00000000 c0099f10 c7ac7060 00000010 c7b0d400 c7805a00
7e60: c7500d80 c7ac7060 c0099d64 c0095910 00000000 c7b0d400 00000000 00080802
7e80: 00000000 00000026 00000000 c0095ae8 c7b4bc60 00000026 c7a17ef0 c00a1048
7ea0: c7a17ef0 c7a17f50 00080802 00000026 c7a16000 00000026 00000000 00080803
7ec0: c7078000 c00a2b0c 00000000 c7078000 00000000 c794e000 00000000 00000000
7ee0: 00000000 00000000 00000000 ffffff9c c7805a00 c7500d80 c4254b62 00000008
7f00: c7078009 c7805820 c740e500 00000101 00000000 00000000 bedeb764 c00a3ff8
7f20: 00002000 c00a4750 c7b0d480 c034b168 c034b01c 40000013 60000093 00080803
7f40: 00000000 c7b0d400 c7b0f600 00000000 c7805a00 c7500d80 bedeb764 ffffff9c
7f60: 00000004 c7078000 00080802 bedeb60c c7a16000 ffffffff bedeb764 c00956dc
7f80: 00000000 bedeb764 00000802 00000000 401eb3b4 00000005 c0028024 c7a16000
7fa0: ffffffff c0027ea0 00000802 00000000 bedeb764 00080802 bedeb60c 0001e610
7fc0: 00000802 00000000 401eb3b4 00000005 00000000 00000001 ffffffff bedeb764
7fe0: 00000001 bedeb620 4018c204 400f34fc 60000010 bedeb764 00000000 00000000
Code: e3a03001 e1a03213 e10fc000 e321f093 (e7d121a0)
---[ end trace 1528f4db4f65a69b ]---
Segmentation fault
r...@hawkboard:~#

I think is a problem with the configuration of the pins because is
exactly the same if in the file arch/arm/mach-davinci/da850.c in the
code

const short da850_mcasp_pins[] __initdata = {
        DA850_AHCLKX, DA850_ACLKX, DA850_AFSX,
        DA850_AHCLKR, DA850_ACLKR, DA850_AFSR, DA850_AMUTE,
        DA850_AXR_11, DA850_AXR_12, DA850_AXR_13, DA850_AXR_14,
        -1
};

I change line

        DA850_AXR_11, DA850_AXR_12, DA850_AXR_13, DA850_AXR_14,

to

        DA850_AXR_11, DA850_AXR_12,

I am based my patch on Khasim patch [1]

Thanks for all the help

Sincerely yours

Victor Rodriguez


[1]http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/linux/linux-davinci/hawkboard/patch-2.6.33rc4-psp-to-hawkboard.patch

Attachment: bootprocess
Description: Binary data

From ee3f2c10d8adcd0cf2dae3cc329abb72480a58fb Mon Sep 17 00:00:00 2001
From: Victor Rodriguez <[email protected]>
Date: Mon, 27 Sep 2010 17:44:43 -0500
Subject: [PATCH v1] davinci: AUDIO support for Omapl138-Hawkboard

This patch adds AUDIO support for the Hawkboard-L138 system
It is under the machine name "omapl138_hawkboard".
This system is based on the da850 davinci CPU architecture.

Signed-off-by: Victor Rodriguez <[email protected]>
---
 arch/arm/configs/da8xx_omapl_defconfig      |    9 +++--
 arch/arm/mach-davinci/board-omapl138-hawk.c |   52 +++++++++++++++++++++++++++
 arch/arm/mach-davinci/da850.c               |    2 +-
 sound/soc/davinci/Kconfig                   |    4 +-
 sound/soc/davinci/davinci-evm.c             |    6 ++-
 5 files changed, 64 insertions(+), 9 deletions(-)

diff --git a/arch/arm/configs/da8xx_omapl_defconfig b/arch/arm/configs/da8xx_omapl_defconfig
index cdc40c4..6b5cee5 100644
--- a/arch/arm/configs/da8xx_omapl_defconfig
+++ b/arch/arm/configs/da8xx_omapl_defconfig
@@ -88,10 +88,11 @@ CONFIG_FB_DA8XX=y
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_LOGO=y
-CONFIG_SOUND=m
-CONFIG_SND=m
-CONFIG_SND_SOC=m
-CONFIG_SND_DAVINCI_SOC=m
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_SOC=y
+CONFIG_SND_DAVINCI_SOC=y
+CONFIG_SND_DA850_SOC_EVM=y
 # CONFIG_HID_SUPPORT is not set
 # CONFIG_USB_SUPPORT is not set
 CONFIG_EXT2_FS=y
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index fd1f458..cdbbdf8 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -13,6 +13,7 @@
 #include <linux/init.h>
 #include <linux/console.h>
 #include <linux/gpio.h>
+#include <linux/i2c.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -69,16 +70,67 @@ static int __init omapl138_hawk_config_emac(void)
 }
 device_initcall(omapl138_hawk_config_emac);
 
+static struct i2c_board_info __initdata omapl138_hawk_i2c_devices[] = {
+	{
+		I2C_BOARD_INFO("tlv320aic3x", 0x18),
+	},
+};
+
+static struct davinci_i2c_platform_data omapl138_hawk_i2c_0_pdata = {
+	.bus_freq	= 100,	/* kHz */
+	.bus_delay	= 0,	/* usec */
+};
+
 static struct davinci_uart_config omapl138_hawk_uart_config __initdata = {
 	.enabled_uarts = 0x7,
 };
 
+/* davinci da850 evm audio machine driver */
+static u8 da850_iis_serializer_direction[] = {
+	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
+	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
+	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,	INACTIVE_MODE,
+	INACTIVE_MODE,	TX_MODE,	RX_MODE,	INACTIVE_MODE,
+};
+
+static struct snd_platform_data omapl138_hawk_snd_data = {
+	.tx_dma_offset	= 0x2000,
+	.rx_dma_offset	= 0x2000,
+	.op_mode	= DAVINCI_MCASP_IIS_MODE,
+	.num_serializer	= ARRAY_SIZE(da850_iis_serializer_direction),
+	.tdm_slots	= 2,
+	.serial_dir	= da850_iis_serializer_direction,
+	.asp_chan_q	= EVENTQ_1,
+	.version	= MCASP_VERSION_2,
+	.txnumevt	= 1,
+	.rxnumevt	= 1,
+};
+
 static __init void omapl138_hawk_init(void)
 {
 	int ret;
 
+	/* UART */
 	davinci_serial_init(&omapl138_hawk_uart_config);
 
+	/* I2C */
+	i2c_register_board_info(1, omapl138_hawk_i2c_devices,
+			ARRAY_SIZE(omapl138_hawk_i2c_devices));
+
+	ret = da8xx_register_i2c(0, &omapl138_hawk_i2c_0_pdata);
+	if (ret)
+		pr_warning("omapl138_hawk_init: "
+			"i2c0 registration failed: %d\n",
+				ret);
+	/* AUDIO*/
+	ret = davinci_cfg_reg_list(da850_mcasp_pins);
+	if (ret)
+		pr_warning("omapl138_hawk_init: "
+			"mcasp mux setup failed: %d\n",
+				ret);
+	da8xx_register_mcasp(0, &omapl138_hawk_snd_data);
+
+	/* WDT */
 	ret = da8xx_register_watchdog();
 	if (ret)
 		pr_warning("omapl138_hawk_init: "
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 63916b9..f033a0a 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -591,7 +591,7 @@ const short da850_cpgmac_pins[] __initdata = {
 const short da850_mcasp_pins[] __initdata = {
 	DA850_AHCLKX, DA850_ACLKX, DA850_AFSX,
 	DA850_AHCLKR, DA850_ACLKR, DA850_AFSR, DA850_AMUTE,
-	DA850_AXR_11, DA850_AXR_12,
+	DA850_AXR_11, DA850_AXR_12, DA850_AXR_13, DA850_AXR_14,
 	-1
 };
 
diff --git a/sound/soc/davinci/Kconfig b/sound/soc/davinci/Kconfig
index 6bbf001..838182f 100644
--- a/sound/soc/davinci/Kconfig
+++ b/sound/soc/davinci/Kconfig
@@ -76,8 +76,8 @@ config  SND_DA830_SOC_EVM
 	  DA830/OMAP-L137 EVM
 
 config  SND_DA850_SOC_EVM
-	tristate "SoC Audio support for DA850/OMAP-L138 EVM"
-	depends on SND_DAVINCI_SOC && MACH_DAVINCI_DA850_EVM
+	tristate "SoC Audio support for DA850/OMAP-L138/AM18xx EVM / Hawkboard"
+	depends on SND_DAVINCI_SOC && (MACH_DAVINCI_DA850_EVM || MACH_OMAPL138_HAWKBOARD)
 	select SND_DAVINCI_SOC_MCASP
 	select SND_SOC_TLV320AIC3X
 	help
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 97f74d6..73093eb 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -59,7 +59,8 @@ static int evm_hw_params(struct snd_pcm_substream *substream,
 		sysclk = 12288000;
 
 	else if (machine_is_davinci_da830_evm() ||
-				machine_is_davinci_da850_evm())
+				machine_is_davinci_da850_evm() ||
+				machine_is_omapl138_hawkboard())
 		sysclk = 24576000;
 
 	else
@@ -311,7 +312,8 @@ static int __init evm_init(void)
 	} else if (machine_is_davinci_da830_evm()) {
 		evm_snd_dev_data = &da830_evm_snd_devdata;
 		index = 1;
-	} else if (machine_is_davinci_da850_evm()) {
+	} else if (machine_is_davinci_da850_evm() ||
+			machine_is_omapl138_hawkboard()) {
 		evm_snd_dev_data = &da850_evm_snd_devdata;
 		index = 0;
 	} else
-- 
1.6.0.5

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to