Wiki

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
resources:tools-software:linux-drivers:sound:adau1373 [30 Aug 2011 03:06] – [DAI sysclk] typo Lars-Peter Clausenresources:tools-software:linux-drivers:sound:adau1373 [23 Feb 2017 12:47] (current) Lars-Peter Clausen
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',+
-  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.txt · Last modified: 23 Feb 2017 12:47 by Lars-Peter Clausen