Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
resources:tools-software:linux-drivers:sound:adau1373 [30 Aug 2011 03:06]
larsc [DAI sysclk] typo
resources:tools-software:linux-drivers:sound:adau1373 [23 Feb 2017 12:47] (current)
larsc
Line 1: Line 1:
 ====== ADAU1373 Sound CODEC Linux Driver ====== ====== ADAU1373 Sound CODEC Linux Driver ======
 +
  
 ===== Supported Devices ===== ===== Supported Devices =====
  
-This driver supports the\\ +  * [[adi>​ADAU1373]]
-[[adi>​ADAU1373]]+
  
-====== Source Code ======+===== Evaluation Boards ===== 
 +  * [[adi>​EVAL-ADAU1373Z]] 
 + 
 +===== Source Code =====
  
 ==== Status ==== ==== Status ====
  
- Source ​  Mainlined? ​ +^ Source ^ Mainlined? ^ 
-| [[bfgit>linux-kernel?sound/​soc/​codecs/​adau1373.c|git]] | [[git.linux.org>​sound/​soc/​codecs/​adau1373.c|In progress]] |+| [[git.linux.org>sound/​soc/​codecs/​adau1373.c|git]] | [[git.linux.org>​sound/​soc/​codecs/​adau1373.c|Yes]] |
  
 ==== Files ==== ==== Files ====
Line 20: Line 23:
 | include | [[git.linux.org>​include/​sound/​adau1373.h]] | | include | [[git.linux.org>​include/​sound/​adau1373.h]] |
  
-====== Example device initialization ​======+===== Example device initialization =====
  
 {{page>​software/​linux/​docs/​platform_and_bus_model#​Platform Data&​noheader&​firstseconly&​noeditbtn}} {{page>​software/​linux/​docs/​platform_and_bus_model#​Platform Data&​noheader&​firstseconly&​noeditbtn}}
Line 100: Line 103:
 | DAC2 Playback Volume | DAC2 Playback Volume | | | DAC2 Playback Volume | DAC2 Playback Volume | |
 | Lineout1 Playback Volume | Lineout 1 Volume | | | Lineout1 Playback Volume | Lineout 1 Volume | |
-| Lineout2 Playback Volume | Lineout ​Volume | Single-ended lineout |+| Lineout2 Playback Volume | Lineout ​Volume | Single-ended lineout |
 | Speaker Playback Volume ​ | Speaker Out Volume | | | Speaker Playback Volume ​ | Speaker Out Volume | |
 | Headphone Playback Volume | Heaphone Out Volume| | | Headphone Playback Volume | Heaphone Out Volume| |
Line 180: Line 183:
  
 ^ Name ^ Supported by driver ^ Description ^ ^ Name ^ Supported by driver ^ Description ^
-| SND_SOC_DAIFMT_I2S ​    | yes | I2S Justified ​mode |+| SND_SOC_DAIFMT_I2S ​    | yes | I2S mode |
 | SND_SOC_DAIFMT_RIGHT_J | yes | Right Justified mode | | SND_SOC_DAIFMT_RIGHT_J | yes | Right Justified mode |
 | SND_SOC_DAIFMT_LEFT_J ​ | yes | Left Justified mode  | | SND_SOC_DAIFMT_LEFT_J ​ | yes | Left Justified mode  |
Line 296: Line 299:
  
 ====== ADAU1373 evaluation board driver ====== ====== ADAU1373 evaluation board driver ======
 +
 +There is no dedicated Blackfin STAMP evaluation board for the ADAU1373. During test and driver development we used the [[adi>​EVAL-ADAU1373]] board.
 +
 +It can be easily wired to the Blackfin STAMP SPORT header.
  
 ===== Source ===== ===== Source =====
Line 302: Line 309:
  
 ^  Source ​ ^  Mainlined? ​ ^ ^  Source ​ ^  Mainlined? ​ ^
-| [[bfgit>linux-kernel?sound/​soc/​blackfin/​bfin-eval-adau1373.c|In progress]] | [[git.linux.org>​sound/​soc/​blackfin/​bfin-eval-adau1373.c|In progress]]+| [[git.linux.org>sound/​soc/​blackfin/​bfin-eval-adau1373.c|git]] | [[git.linux.org>​sound/​soc/​blackfin/​bfin-eval-adau1373.c|yes]] |
  
 ==== Files ==== ==== Files ====
Line 309: Line 316:
 | driver ​ | [[git.linux.org>​sound/​soc/​blackfin/​bfin-eval-adau1373.c]] | | driver ​ | [[git.linux.org>​sound/​soc/​blackfin/​bfin-eval-adau1373.c]] |
  
-===== Adding ​Kernel ​Support - As a module ​===== +===== Kernel ​configuration ​=====
-Skip this section if you want to build the driver into the kernel directly. +
-To add support for codec ADAU1373 to the kernel build system, a few things must be enabled properly for things to work.The configuration is as following: ​    +
  
 <​code>​ <​code>​
-Linux Kernel Configuration +Device Drivers ​ ---> 
-  ​Device Drivers ​ --->  +[*] I2C support ​ ​--->​ 
-    ​Sound ​ ​--->​  +[*]   I2C Hardware Bus support ​ ---> 
-      <​M>​ Sound card support +***     I2C system bus drivers ​(mostly embedded / system-on-chip) *** 
-        Advanced Linux Sound Architecture ​ ​--->​ +<*      Blackfin TWI I2C support 
-          <​M>​ Advanced Linux Sound Architecture +(100)     ​Blackfin TWI I2C clock (kHz)
-          < > Sequencer support +
-          <M> OSS Mixer API  +
-          <M> OSS PCM (digital audio) API +
-        System ​on Chip audio support  ​---> +
-            <M> ALSA for SoC audio support +
-            <M> SoC I2S Audio for the ADI BF5xx chip  +
-            <MSoC ADAU1373 Audio support  +
-            < > SoC AC97 Audio support for BF5xx  +
-            ​(0Set a SPORT for Sound chip+
 </​code>​ </​code>​
  
-<note important>​ +Enable ALSA SoC evaluation board driver:
-I2C bus is used to configure the codec. ​ So, if the audio driver ​is built into kernel, the I2c driver is also built into kernel automatically. ​ But if the audio driver is built as module, then make sure that the I2C driver is loaded before the audio module. ​  +
-</​note>​ +
 <​code>​ <​code>​
-Linux Kernel Configuration +Device Drivers ​ ---> 
-  ​Device Drivers ​ ---> +<MSound card support ​ ---> 
-    <*I2C support ​ ---> +<​M> ​  ​Advanced Linux Sound Architecture  ​---> 
-      --- I2C support +<​M> ​    ALSA for SoC audio support  ​---> 
-          I2C Hardware Bus Support ​---> +<M      Support for the EVAL-ADAU1373 boards on Blackfin ​eval boards
-            <*> Blackfin ​TWI I2C support  ​+
 </​code>​ </​code>​
  
-Doing this will create modules (outside the kernel). The modules will be inserted automatically when it is needed. You can also build sound driver into kernel.+===== Hardware configuration =====
  
 +Connect the STAMP SPORT 0 port (P6) to the EVAL-ADAU1373 J23 and J28 headers.
  
-==== Testing ​the built in kernel driver ====+Note that the SPORT has separate signals for the capture and playback clocks, while the ADAU1373 uses the same clock signals for both, so the EVAL-ADU1373 clock signal pins need to be connected to two STAMP pins each.
  
-If audio is configured as modulesskip this section. If audio is built into kernel and you have booted the kernelthere are a few things to check to ensure audio is working:+^ STAMP pin ^ EVAL-ADAU1373 pin ^ Function ^ 
 +| P6-26 (SPORT 0 - PJ2_SCL) | J23-1 | I2C SCL | 
 +| P6-24 (SPORT 0 - PJ3_SDA) | J23-3 | I2C SDA | 
 +| P6-6  (SPORT 0 - PJ9_TSCLK0)P6-16 (SPORT 0 - PJ6_RSCLK0) | J28-6 (A_BCLK) | BCLK | 
 +| P6-11 (SPORT 0 - PJ10_TFS0)P6-7 (SPORT 0 - PJ7_RFS0) | J28-8 (A_LRC) | LRCLK | 
 +| P6-14 (SPORT 0 - PJ11_DT0PRI | J28-10 (A_DACDAT) | Playback data | 
 +| P6-8  (SPORT 0 - PJ8_DR0PRI) | J28-12 (A_ADCDAT) | Captrue data | 
 +| P6-33 | J28-1 | GND |
  
-  - Check the boot messages to see if you have booted the correct kernel. During kernel boot, it should print out: <​code>​ 
-Advanced Linux Sound Architecture Driver Version 1.0.12rc1 (Thu Jun 22 13:55:50 2006 UTC). 
-ASoC version 0.13.1 
-dma rx:3 tx:4, err irq:15, regs:​ffc00800 
-adau1371 Audio Codec 0.1<​6>​dma_alloc_init:​ dma_page @ 0x03011000 - 512 pages at 0x03e00000 
-asoc: ADAU1373 <-> bf5xx-i2s-0 mapping ok 
-ALSA device list: 
-  #0: bf5xx_adau1373 (ADAU1373) 
-</​code>​ 
  
-==== Testing the audio module ​====+===== Driver testing =====
  
-<​xterm>​root:​~>​ **modprobe snd-adau1373** +Load the driver and make sure the sound card is properly instantiated.
-root:~> **modprobe snd-pcm-oss** +
-root:~> **lsmod** +
-Module ​                 Size  Used by +
-snd_pcm_oss ​           31968  0  +
-snd_mixer_oss ​         11360  1 snd_pcm_oss +
-snd_adau1373 ​            ​1412 ​ 0  +
-snd_soc_adau1373 ​        ​8528 ​ 1 snd_adau1373 +
-snd_soc_bf5xx ​          ​2784 ​ 1 snd_adau1373 +
-snd_soc_bf5xx_i2s ​     10916  2 snd_adau1373,​snd_soc_bf5xx +
-snd_soc_core ​          ​17120 ​ 3 snd_adau1373,​snd_soc_adau1373,​snd_soc_bf5xx +
-snd_pcm ​               48356  3 snd_pcm_oss,​snd_soc_bf5xx,​snd_soc_core +
-snd_page_alloc ​         4232  1 snd_pcm +
-snd_timer ​             13796  1 snd_pcm +
-snd                    31092  6 snd_pcm_oss,​snd_mixer_oss,​snd_soc_adau1373,​snd_soc_core,​snd_pcm,​snd_timer +
-soundcore ​              ​3940 ​ 1 snd+
  
-root:~**tone** +<WRAP box bggreen><​wrap info>​This specifies any shell prompt running on the target</​wrap>​ 
-TONEgenerating sine wave at 1000 Hz...+<​xterm>​ 
 +root:/modprobe snd-bf5xx-i2s 
 +root:/> modprobe snd-soc-bf5xx-i2s 
 +root:/> modprobe snd-soc-adau1373 
 +root:/> modprobe snd-soc-bfin-eval-adau1373 
 +dma rx:3 tx:4, err irq:45, regs:​ffc00800 
 +asoc: ADAU1373 <-> bf5xx-i2s mapping ok
 </​xterm>​ </​xterm>​
 +</​WRAP>​
  
 +<WRAP box bggreen><​wrap info>​This specifies any shell prompt running on the target</​wrap>​
 +<​xterm>​
 +root:/> modprobe snd-pcm-oss
 +root:/> tone
 +TONE: generating sine wave at 1000 Hz...
  
-===== Testing Audio ===== +root:/> ​arecord ​-f cd | aplay 
- +Recording WAVE 'stdin' ​: Signed 16 bit Little EndianRate 44100 Hz, Stereo 
-  - Check the output <​xterm>​root:~> **tone** +Playing WAVE 'stdin' : Signed 16 bit Little EndianRate 44100 HzStereo
-TONE: generating sine wave at 1000 Hz... +
-</xtermYou should hear something out of the headphone Jack on the top of J8. +
-  ​Select audio input to INPB (the default is INPA, assuming you have built ALSA utils): <​xterm>​root:/>​ **amixer sset 'Input Mux' '​INPB'​** +
-Simple mixer control ​'Input Mux',0 +
-  ​Capabilities:​ enum +
-  Items: ​'INPA' ​'​INPB'​ '​INPD'​ '​INPD'​ +
-  Item0'​INPB'</​xterm>​ Also you can run "​alsamixer"​ to get graphic configuration interface. +
-  - Check to make sure mp3s work (assuming you have built mp3play), +
-    - The first step is to download a mp3 file onto the platform. The ''​wget''​ command assumes that networking is properly configured (you have an IP numberthe default gateway is set, and DNS servers can be accessed), and working. See the [[:​setting_up_the_network|network setup page]] for more info. <​xterm>​root:/>​ **cd /var** +
-root:/​var>​ **wget http://​www.radiocrazy.com/​shows/​A/​AbbottCostello/​ABCOWhosOnFirstclip.mp3** +
-</​xterm>​ +
-    - Next, play it with mp3play: <​xterm>​root:/​var>​ **mp3play ABCOWhosOnFirstclip.mp3**</​xterm>​ +
-  - You can play it in one step with: <​xterm>​root:​~>​ **mp3play http://​www.radiocrazy.com/​shows/​A/​AbbottCostello/​ABCOWhosOnFirstclip.mp3** +
-%%http://​www.radiocrazy.com/​shows/​A/​AbbottCostello/​ABCOWhosOnFirstclip.mp3:​ MPEG2-III (0 ms)%%+
 </​xterm>​ </​xterm>​
-   - Optionally check to make sure the audio out is right: ​<xterm>​root:​/> **amixer sset '​Output Mixer' '​Line'​** +</WRAP>
-Simple mixer control '​Output Mixer',​0 +
-  Capabilities:​ enum +
-  Items: '​Line'​ 'Class D' '​HeadPhone'​ +
-  Item0: '​Line'​ +
-root:~> **arecord -d 10 test.wav** +
-Recording WAVE "​test.wav"​ : Unsigned 8 bit, Rate 8000 Hz, Mono +
-root:~> **aplay test.wav** +
-Adjust playback volume can be done through command:​**amixer sset Master 80%** +
-here 80 is the ratio. +
-</​xterm>​ This should record 10 seconds of whatever is on the Line, and then play it back over the output. +
-  - You should also be able to do a "​talkthrough",​ and hear on the speakers anything you put on the line. <​xterm>​root:​~>​ **arecord | aplay**</​xterm>+
resources/tools-software/linux-drivers/sound/adau1373.1314666409.txt.gz · Last modified: 30 Aug 2011 03:06 by larsc