Skip to content

CTAG face2|4 Audio Card Driver

Henrik Langer edited this page Mar 4, 2017 · 10 revisions

Development

For audio card driver development, the official BeagleBoard Linux kernel has been forked and extended.
The main components of the driver are:

  • ASoC Machine Driver (glues together digital audio interface (DAI) of CPU and audio codec)
  • Device Tree (configures and loads required kernel modules (e.g. SPI, McASP, ...))

The clocks are configured differently on BeagleBone Black/Green and BeagleBoard-X15. For this reason the probe() function (which configures CPU / codec clocks) of ASoC Machine Driver had to be modified. Based on the device tree property "bb-device" of node "sound2" the clocks are configured according to hardware device. To be still backwards compatible with the old driver version, the BeagleBone Black/Green is selected by default, if the device tree property "bb-device" is not set.

The audio card driver supports all features of the AD1938 audio codec (e.g. playback de-emphasis, ADC high pass, ...).
Moreover the driver supports a maximum sample rate of 96 kHz with all channels active.

The (three) new commits I have made to the forked kernel in my Google Summer of Code project can be found here. Moreover a pull request for the official BeagleBoard Kernel has been created and accepted.

The pin connections diagram between BeagleBoard-X15 and CTAG face2|4 Audio Card can be found here.

For a detailed explanation of the build process checkout Build Instructions page.

CTAG face2|4 Audio Card Image

Issues

Note: The following issue has been fixed

A big problem during my GSoC project was a kernel crash which occurred when sound card is triggered (i.e. sound is played / captured). The kernel crash is caused due to DSP firmware (dra7-dsp1-fw.xe66) crash and recovery from remoteproc. It turned out that the kernel crash can be avoided by disabling recovery of remoteproc2 and remoteproc3:<br&> nano /sys/kernel/debug/remoteproc/remoteproc2/recovery and set to "disabled"

References

Important Sources

Clone this wiki locally