This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Audio



Hi,

I am trying to make an application can record sound and play back sound on OMAP35x EVM with Linux 2.6.29. I read several articles, but I am still not clear:

 

First, I understand that TI OMAP offer Audio driver (ALSA), and they provide examples too - minimal_playback.c and minimal_capture.c, but I can not compile it - it always state that alsa/asoundlib.h can not be found. I was able to find this find under my dvsdk folder, should I add this path to my INC_PATH in the makefile?

Second, I found examples to use device driver to open /dev/dsp, I was able to compile and execute the example, but no sound came out of my speaker - no error was reported either.

Third, eventually I will use Qt for my application, so I found Qt Audio example using QIODevice. I was able to build it into my Qt application, but when I execute it, the application did not find any audio devices.

so my question is what is the relation between this ALSA driver, /dev/dsp and QIODevice? Does this sound like my kernel was build without sound driver module included? If this is the case, can I just build the sound module by itself without rebuilding the whole kernel and insert the module on the fly?

Thank you very much for helping out.

 

Annie

 

 

  • Hi Annie,

    Annie Zhang said:
    it always state that alsa/asoundlib.h can not be found

    To compile the examples and other ALSA applications you need to link it against the ALSA library (asound).

    You need to add additional parameters to the command line:

    -Iincdir

    To add an additional incdir directory to look for header files.

    -Llibdir

    To add a libdir library directory.

    -llibname

    To link against a libname library in the libdir directory (the name should not have the "lib" prefix).

    The resulting command would look like:

    $ arm-none-linux-gnueabi-gcc -o sndtest sndtest.c -I./usr/include/ -L./usr/lib/ -lasound

    Annie Zhang said:
    I found examples to use device driver to open /dev/dsp, I was able to compile and execute the example, but no sound came out of my speaker - no error was reported either.

    /dev/dsp is associated with the OSS class of drivers. However, starting with kernel version 2.6 ALSA has replaced OSS as the standard audio framework.

    ALSA does provide OSS emulation for backward compatibility but most TI audio drivers don't support this feature. Please refer to the TI audio user guide for more details.

    Annie Zhang said:
    what is the relation between this ALSA driver, /dev/dsp and QIODevice?

    I haven't looked at Qt applications but you should look for more info on how the Qt applications use ALSA.

    Annie Zhang said:
    Does this sound like my kernel was build without sound driver module included

    This is possible. To confirm this, see if there are entries under /proc/asound and /dev/snd. You can also check the messages displayed while the kernel boots and see if something related to ALSA version and soundcard being registered is there or not. If these are not there then the kernel does not have audio support compiled in. You can build the modules related to sound and insert them on the fly like you mentioned.

    Regards,

    Vaibhav

     

     

     

     

     

  • Annie,

    I haven't tried the Qt audio examples myself but I have seen that Qt relies on ALSA. So once you got ALSA working you need to check the Qt configure output (-v option) to see if the ALSA test fails (I assume this is the case now). Then you will have to adapt the Qt mkspec to add the ALSA include and lib dirs accordingly. I had similar issues adding touchscreen support (aka tslib) to Qt. Usually I google the Qt docs on the web to find the right defines to change. I would assume someone else ran into the issue before anyway...

    Hope it helps.

  • Hi,

    Here is what I got when I running my simple audio test file and check /proc/asound and /dev/snd. The audio2.elf was created by using the TI sample code minimum_playback.c. Any idea about what is wrong? Thanks.

    -sh-4.1# ./audio2.elf
    ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
    ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
    ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
    ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
    ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
    ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
    ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
    ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
    cannot open audio device (No such file or directory)
    -sh-4.1# ls -als /proc/asound
    total 0
    0 dr-xr-xr-x 4 root root 0 Jan 1 00:01 .
    0 dr-xr-xr-x 42 root root 0 Jan 1 00:00 ..
    0 dr-xr-xr-x 4 root root 0 Jan 1 00:01 card0
    0 -r--r--r-- 1 root root 0 Jan 1 00:01 cards
    0 -r--r--r-- 1 root root 0 Jan 1 00:01 devices
    0 -r--r--r-- 1 root root 0 Jan 1 00:01 hwdep
    0 lrwxrwxrwx 1 root root 5 Jan 1 00:01 omap3evm -> card0
    0 dr-xr-xr-x 2 root root 0 Jan 1 00:01 oss
    0 -r--r--r-- 1 root root 0 Jan 1 00:01 pcm
    0 -r--r--r-- 1 root root 0 Jan 1 00:01 timers
    0 -r--r--r-- 1 root root 0 Jan 1 00:01 version
    -sh-4.1# ls -als /dev/snd
    total 0
    0 drw-r--r-- 3 root root 180 Jan 1 00:00 .
    0 drwxr-xr-x 11 root root 3120 Jan 1 00:00 ..
    0 drwxr-xr-x 2 root root 60 Jan 1 00:00 by-path
    0 crw-r--r-- 1 root root 116, 0 Jan 1 00:00 controlC0
    0 crw-r--r-- 1 root root 116, 24 Jan 1 00:00 pcmC0D0c
    0 crw-r--r-- 1 root root 116, 16 Jan 1 00:00 pcmC0D0p
    0 crw-r--r-- 1 root root 116, 25 Jan 1 00:00 pcmC0D1c
    0 crw-r--r-- 1 root root 116, 1 Jan 1 00:00 seq
    0 crw-r--r-- 1 root root 116, 33 Jan 1 00:00 timer

     

     

    Below is the source for minimum_playback.c

     

     

    /*
    * minimal_playback.c
    *
    * ALSA test file to demonstrate minimal playback functionality.
    *
    * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
    *
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    *
    * Redistributions of source code must retain the above copyright
    * notice, this list of conditions and the following disclaimer.
    *
    * Redistributions in binary form must reproduce the above copyright
    * notice, this list of conditions and the following disclaimer in the
    * documentation and/or other materials provided with the
    * distribution.
    *
    * Neither the name of Texas Instruments Incorporated nor the names of
    * its contributors may be used to endorse or promote products derived
    * from this software without specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */

     



    /******************************************************************************
    Header File Inclusion
    ******************************************************************************/

    #include <stdio.h>
    #include <stdlib.h>
    #include <alsa/asoundlib.h>

    #define BUFF_SIZE 4096

    int main (int argc, char *argv[])
    {
    int err;
    short buf[BUFF_SIZE];
    int rate = 44100; /* Sample rate */
    unsigned int exact_rate; /* Sample rate returned by */

    /* Handle for the PCM device */
    snd_pcm_t *playback_handle;

    /* Playback stream */
    snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;

    /* This structure contains information about */
    /* the hardware and can be used to specify the */
    /* configuration to be used for the PCM stream. */
    snd_pcm_hw_params_t *hw_params;

    /* Name of the PCM device, like hw:0,0 */
    /* The first number is the number of the soundcard, */
    /* the second number is the number of the device. */
    static char *device = "default"; /* playback device */

    /* Open PCM. The last parameter of this function is the mode. */
    if ((err = snd_pcm_open (&playback_handle, device, stream, 0)) < 0) {
    fprintf (stderr, "cannot open audio device (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Allocate the snd_pcm_hw_params_t structure on the stack. */
    if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
    fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Init hwparams with full configuration space */
    if ((err = snd_pcm_hw_params_any (playback_handle, hw_params)) < 0) {
    fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Set access type. */
    if ((err = snd_pcm_hw_params_set_access (playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
    fprintf (stderr, "cannot set access type (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Set sample format */
    if ((err = snd_pcm_hw_params_set_format (playback_handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
    fprintf (stderr, "cannot set sample format (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Set sample rate. If the exact rate is not supported */
    /* by the hardware, use nearest possible rate. */
    exact_rate = rate;
    if ((err = snd_pcm_hw_params_set_rate_near (playback_handle, hw_params, &exact_rate, 0)) < 0) {
    fprintf (stderr, "cannot set sample rate (%s)\n",
    snd_strerror (err));
    exit (1);
    }
    if (rate != exact_rate) {
    fprintf(stderr, "The rate %d Hz is not supported by your hardware.\n"
    "==> Using %d Hz instead.\n", rate, exact_rate);
    }

    /* Set number of channels */
    if ((err = snd_pcm_hw_params_set_channels (playback_handle, hw_params, 2)) < 0) {
    fprintf (stderr, "cannot set channel count (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Apply HW parameter settings to PCM device and prepare device */
    if ((err = snd_pcm_hw_params (playback_handle, hw_params)) < 0) {
    fprintf (stderr, "cannot set parameters (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    snd_pcm_hw_params_free (hw_params);

    if ((err = snd_pcm_prepare (playback_handle)) < 0) {
    fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
    snd_strerror (err));
    exit (1);
    }

    /* Write some junk data to produce sound. */
    if ((err = snd_pcm_writei (playback_handle, buf, BUFF_SIZE/2)) != BUFF_SIZE/2) {
    fprintf (stderr, "write to audio interface failed (%s)\n",
    snd_strerror (err));
    exit (1);
    } else {
    fprintf (stdout, "snd_pcm_writei successful\n");
    }

    snd_pcm_close (playback_handle);
    exit (0);
    }

  • Were you able to load all the sound module without any errors?

    Are you running a plain vanilla kernel or some distro? In case you are running a distro is there some sound server like pulseaudio running?

    What is the output of command "aplay -l"?

    Can you attach your alsa.conf file ( it should be under /usr/share/alsa)

  • Hi,

    Thanks for looking into this. I am using 2.6.29 based linux, we are using the timesys linux BSP with our patch for camera driver.

    The following is the output when I type aplay -I.

    ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
    ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
    ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
    ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
    ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
    ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
    ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
    ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
    aplay: main:654: audio open error: No such file or directory

     

    And this is alsa.conf

    -sh-4.1# cat alsa.conf
    #
    # ALSA library configuration file
    #

    # pre-load the configuration files

    @hooks [
    {
    func load
    files [
    "/etc/asound.conf"
    "~/.asoundrc"
    ]
    errors false
    }
    ]

    # load card-specific configuration files (on request)

    cards.@hooks [
    {
    func load
    files [
    {
    @func concat
    strings [
    { @func datadir }
    "/cards/aliases.conf"
    ]
    }
    ]
    }
    {
    func load_for_all_cards
    files [
    {
    @func concat
    strings [
    { @func datadir }
    "/cards/"
    { @func private_string }
    ".conf"
    ]
    }
    ]
    errors false
    }
    ]

    #
    # defaults
    #

    # show all name hints also for definitions without hint {} section
    defaults.namehint.showall off
    # show just basic name hints
    defaults.namehint.basic on
    # show extended name hints
    defaults.namehint.extended off
    #
    defaults.ctl.card 0
    defaults.pcm.card 0
    defaults.pcm.device 0
    defaults.pcm.subdevice -1
    defaults.pcm.nonblock 1
    defaults.pcm.ipc_key 5678293
    defaults.pcm.ipc_gid audio
    defaults.pcm.ipc_perm 0660
    defaults.pcm.dmix.max_periods 0
    defaults.pcm.dmix.rate 48000
    defaults.pcm.dmix.format "unchanged"
    defaults.pcm.dmix.card defaults.pcm.card
    defaults.pcm.dmix.device defaults.pcm.device
    defaults.pcm.dsnoop.card defaults.pcm.card
    defaults.pcm.dsnoop.device defaults.pcm.device
    defaults.pcm.front.card defaults.pcm.card
    defaults.pcm.front.device defaults.pcm.device
    defaults.pcm.rear.card defaults.pcm.card
    defaults.pcm.rear.device defaults.pcm.device
    defaults.pcm.center_lfe.card defaults.pcm.card
    defaults.pcm.center_lfe.device defaults.pcm.device
    defaults.pcm.side.card defaults.pcm.card
    defaults.pcm.side.device defaults.pcm.device
    defaults.pcm.surround40.card defaults.pcm.card
    defaults.pcm.surround40.device defaults.pcm.device
    defaults.pcm.surround41.card defaults.pcm.card
    defaults.pcm.surround41.device defaults.pcm.device
    defaults.pcm.surround50.card defaults.pcm.card
    defaults.pcm.surround50.device defaults.pcm.device
    defaults.pcm.surround51.card defaults.pcm.card
    defaults.pcm.surround51.device defaults.pcm.device
    defaults.pcm.surround71.card defaults.pcm.card
    defaults.pcm.surround71.device defaults.pcm.device
    defaults.pcm.iec958.card defaults.pcm.card
    defaults.pcm.iec958.device defaults.pcm.device
    defaults.pcm.modem.card defaults.pcm.card
    defaults.pcm.modem.device defaults.pcm.device
    # truncate files via file or tee PCM
    defaults.pcm.file_format "raw"
    defaults.pcm.file_truncate true
    defaults.rawmidi.card 0
    defaults.rawmidi.device 0
    defaults.rawmidi.subdevice -1
    defaults.hwdep.card 0
    defaults.hwdep.device 0
    defaults.timer.class 2
    defaults.timer.sclass 0
    defaults.timer.card 0
    defaults.timer.device 0
    defaults.timer.subdevice 0

    #
    # PCM interface
    #

    # redirect to load-on-demand extended pcm definitions
    pcm.cards cards.pcm

    pcm.default cards.pcm.default
    pcm.front cards.pcm.front
    pcm.rear cards.pcm.rear
    pcm.center_lfe cards.pcm.center_lfe
    pcm.side cards.pcm.side
    pcm.surround40 cards.pcm.surround40
    pcm.surround41 cards.pcm.surround41
    pcm.surround50 cards.pcm.surround50
    pcm.surround51 cards.pcm.surround51
    pcm.surround71 cards.pcm.surround71
    pcm.iec958 cards.pcm.iec958
    pcm.spdif iec958
    pcm.hdmi cards.pcm.hdmi
    pcm.dmix cards.pcm.dmix
    pcm.dsnoop cards.pcm.dsnoop
    pcm.modem cards.pcm.modem
    pcm.phoneline cards.pcm.phoneline

    pcm.hw {
    @args [ CARD DEV SUBDEV ]
    @args.CARD {
    type string
    default {
    @func getenv
    vars [
    ALSA_PCM_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.pcm.card
    }
    }
    }
    @args.DEV {
    type integer
    default {
    @func igetenv
    vars [
    ALSA_PCM_DEVICE
    ]
    default {
    @func refer
    name defaults.pcm.device
    }
    }
    }
    @args.SUBDEV {
    type integer
    default {
    @func refer
    name defaults.pcm.subdevice
    }
    }
    type hw
    card $CARD
    device $DEV
    subdevice $SUBDEV
    hint {
    show {
    @func refer
    name defaults.namehint.extended
    }
    description "Direct hardware device without any conversions"
    }
    }

    pcm.plughw {
    @args [ CARD DEV SUBDEV ]
    @args.CARD {
    type string
    default {
    @func getenv
    vars [
    ALSA_PCM_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.pcm.card
    }
    }
    }
    @args.DEV {
    type integer
    default {
    @func igetenv
    vars [
    ALSA_PCM_DEVICE
    ]
    default {
    @func refer
    name defaults.pcm.device
    }
    }
    }
    @args.SUBDEV {
    type integer
    default {
    @func refer
    name defaults.pcm.subdevice
    }
    }
    type plug
    slave.pcm {
    type hw
    card $CARD
    device $DEV
    subdevice $SUBDEV
    }
    hint {
    show {
    @func refer
    name defaults.namehint.extended
    }
    description "Hardware device with all software conversions"
    }
    }

    pcm.plug {
    @args [ SLAVE ]
    @args.SLAVE {
    type string
    }
    type plug
    slave.pcm $SLAVE
    }

    pcm.shm {
    @args [ SOCKET PCM ]
    @args.SOCKET {
    type string
    }
    @args.PCM {
    type string
    }
    type shm
    server $SOCKET
    pcm $PCM
    }

    pcm.tee {
    @args [ SLAVE FILE FORMAT ]
    @args.SLAVE {
    type string
    }
    @args.FILE {
    type string
    }
    @args.FORMAT {
    type string
    default {
    @func refer
    name defaults.pcm.file_format
    }
    }
    type file
    slave.pcm $SLAVE
    file $FILE
    format $FORMAT
    truncate {
    @func refer
    name defaults.pcm.file_truncate
    }
    }

    pcm.file {
    @args [ FILE FORMAT ]
    @args.FILE {
    type string
    }
    @args.FORMAT {
    type string
    default {
    @func refer
    name defaults.pcm.file_format
    }
    }
    type file
    slave.pcm null
    file $FILE
    format $FORMAT
    truncate {
    @func refer
    name defaults.pcm.file_truncate
    }
    }

    pcm.null {
    type null
    hint {
    show {
    @func refer
    name defaults.namehint.basic
    }
    description "Discard all samples (playback) or generate zero samples (capture)"
    }
    }

    #
    # Control interface
    #

    ctl.default {
    type hw
    card {
    @func getenv
    vars [
    ALSA_CTL_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.ctl.card
    }
    }
    }

    ctl.hw {
    @args [ CARD ]
    @args.CARD {
    type string
    default {
    @func getenv
    vars [
    ALSA_CTL_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.ctl.card
    }
    }
    }
    type hw
    card $CARD
    }

    ctl.shm {
    @args [ SOCKET CTL ]
    @args.SOCKET {
    type string
    }
    @args.CTL {
    type string
    }
    type shm
    server $SOCKET
    ctl $CTL
    }

    #
    # RawMidi interface
    #

    rawmidi.default {
    type hw
    card {
    @func getenv
    vars [
    ALSA_RAWMIDI_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.rawmidi.card
    }
    }
    device {
    @func igetenv
    vars [
    ALSA_RAWMIDI_DEVICE
    ]
    default {
    @func refer
    name defaults.rawmidi.device
    }
    }
    }

    rawmidi.hw {
    @args [ CARD DEV SUBDEV ]
    @args.CARD {
    type string
    default {
    @func getenv
    vars [
    ALSA_RAWMIDI_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.rawmidi.card
    }
    }
    }
    @args.DEV {
    type integer
    default {
    @func igetenv
    vars [
    ALSA_RAWMIDI_DEVICE
    ]
    default {
    @func refer
    name defaults.rawmidi.device
    }
    }
    }
    @args.SUBDEV {
    type integer
    default -1
    }
    type hw
    card $CARD
    device $DEV
    subdevice $SUBDEV
    hint {
    description "Direct rawmidi driver device"
    device $DEV
    }
    }

    rawmidi.virtual {
    @args [ MERGE ]
    @args.MERGE {
    type string
    default 1
    }
    type virtual
    merge $MERGE
    }

    #
    # Sequencer interface
    #

    seq.default {
    type hw
    }

    seq.hw {
    type hw
    }

    #
    # HwDep interface
    #

    hwdep.default {
    type hw
    card {
    @func getenv
    vars [
    ALSA_HWDEP_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.hwdep.card
    }
    }
    device {
    @func igetenv
    vars [
    ALSA_HWDEP_DEVICE
    ]
    default {
    @func refer
    name defaults.hwdep.device
    }
    }
    }

    hwdep.hw {
    @args [ CARD DEV ]
    @args.CARD {
    type string
    default {
    @func getenv
    vars [
    ALSA_HWDEP_CARD
    ALSA_CARD
    ]
    default {
    @func refer
    name defaults.hwdep.card
    }
    }
    }
    @args.DEV {
    type integer
    default {
    @func igetenv
    vars [
    ALSA_HWDEP_DEVICE
    ]
    default {
    @func refer
    name defaults.hwdep.device
    }
    }
    }
    type hw
    card $CARD
    device $DEV
    }

    #
    # Timer interface
    #

    timer_query.default {
    type hw
    }

    timer_query.hw {
    type hw
    }

    timer.default {
    type hw
    class {
    @func refer
    name defaults.timer.class
    }
    sclass {
    @func refer
    name defaults.timer.sclass
    }
    card {
    @func refer
    name defaults.timer.card
    }
    device {
    @func refer
    name defaults.timer.device
    }
    subdevice {
    @func refer
    name defaults.timer.subdevice
    }
    hint.description "Default direct hardware timer device"
    }

    timer.hw {
    @args [ CLASS SCLASS CARD DEV SUBDEV ]
    @args.CLASS {
    type integer
    default {
    @func refer
    name defaults.timer.class
    }
    }
    @args.SCLASS {
    type integer
    default {
    @func refer
    name defaults.timer.sclass
    }
    }
    @args.CARD {
    type string
    default {
    @func refer
    name defaults.timer.card
    }
    }
    @args.DEV {
    type integer
    default {
    @func refer
    name defaults.timer.device
    }
    }
    @args.SUBDEV {
    type integer
    default {
    @func refer
    name defaults.timer.subdevice
    }
    }
    type hw
    class $CLASS
    sclass $SCLASS
    card $CARD
    device $DEV
    subdevice $SUBDEV
    }

     

  • Vaibhav,

     

    I just realize you want I check the system by running aplay -l. I tried and I got "no soundcards found". I think I have sound card on the board (I am using the OMAP35x EVM board) and I can here noises when I run interface (TI demo).

    How should I fix this? Thanks.

     

    Annie

     

  • Annie,

    Sorry for the long gap. Yes, the intention was to see of any device gets listed under aplay or not. Earlier when you tried inserting the kernel modules it did list out card0 under /proc/asound. After that i would have expected a similar entry to appear under aplay also. But that doesnt seem to be the case.

    Can you try with sound related stuff compiled into the kernel and see if that helps.

    Regards,

    Vaibhav