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
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
