Wiki

This version (18 Apr 2023 10:22) was approved by Bogdan Togorean.The Previously approved version (22 Mar 2023 14:57) is available.Diff

ADAU1860 Sound CODEC Linux Driver

Supported Devices

Evaluation Boards

Source Code

Status

Source Mainlined?
git No

Files

Example device initialization

YAML example Placeholder

I2C

The I2C device id depends on the ADDR0 and ADDR1 pin settings and needs to be set according to your board setup.

ADDR1 ADDR0 I2C device id
0 0 0x64
0 1 0x65
1 0 0x66
1 1 0x67

In this example we assume ADDR0=0 and ADDR1=0.

ASoC DAPM Widgets

Name Description Configuration
AINP0 ADC0 Differential Positive Input Differential Input
AINN0 ADC0 Differential Negative Input Differential Input
AINP1 ADC1 Differential Positive Input Differential Input
AINN1 ADC1 Differential Negative Input Differential Input
AINP2 ADC2 Differential Positive Input Differential Input
AINN2 ADC2 Differential Negative Input Differential Input
HPOUTP Left Headphone Output
HPOUTN Right Headphone Output
DMIC01 Digital Microphone 0 and 1 Input Digital Microphone
DMIC23 Digital Microphone 2 and 3 Input Digital Microphone
DMIC45 Digital Microphone 4 and 5 Input Digital Microphone
DMIC67 Digital Microphone 6 and 7 Input Digital Microphone

ALSA Controls

Name Description Configuration
ADC0 Capture Volume ADC Channel 0 digital gain control
ADC1 Capture Volume ADC Channel 1 digital gain control
ADC2 Capture Volume ADC Channel 0 digital gain control
ADC0 Capture Switch ADC Channel 0 Mute/Unmute
ADC1 Capture Switch ADC Channel 1 Mute/Unmute
ADC2 Capture Switch ADC Channel 2 Mute/Unmute
ADC0 HPF ADC Channel 0 High pass filter control Values: 'Off' '1Hz' '4Hz' '8Hz'
ADC1 HPF ADC Channel 1 High pass filter control Values: 'Off' '1Hz' '4Hz' '8Hz'
ADC2 HPF ADC Channel 2 High pass filter control Values: 'Off' '1Hz' '4Hz' '8Hz'
DMIC0 Capture Volume Digital Microphone 0 gain control
DMIC1 Capture Volume Digital Microphone 1 gain control
DMIC2 Capture Volume Digital Microphone 2 gain control
DMIC3 Capture Volume Digital Microphone 3 gain control
DMIC4 Capture Volume Digital Microphone 4 gain control
DMIC5 Capture Volume Digital Microphone 5 gain control
DMIC6 Capture Volume Digital Microphone 6 gain control
DMIC7 Capture Volume Digital Microphone 7 gain control
DMIC0 Capture Switch Digital Microphone 0 Mute/Unmute
DMIC1 Capture Switch Digital Microphone 1 Mute/Unmute
DMIC2 Capture Switch Digital Microphone 2 Mute/Unmute
DMIC3 Capture Switch Digital Microphone 3 Mute/Unmute
DMIC4 Capture Switch Digital Microphone 4 Mute/Unmute
DMIC5 Capture Switch Digital Microphone 5 Mute/Unmute
DMIC6 Capture Switch Digital Microphone 6 Mute/Unmute
DMIC7 Capture Switch Digital Microphone 7 Mute/Unmute
DAC Mux Selects the source for the DAC
DAC Playback Volume Digital volume attenuation for output from the DAC
DAC Playback Switch Mute/Unmute DAC out signal
ASRCI 0 Mux Mux to select Input ASRC Channel 0 source
ASRCI 1 Mux Mux to select Input ASRC Channel 1 source
ASRCI 2 Mux Mux to select Input ASRC Channel 2 source
ASRCI 3 Mux Mux to select Input ASRC Channel 3 source
ASRCI OUT FS Input ASRC output sample rate selector
ASRCI SAI SEL Input ASRC source serial audio interface selector
ASRCO 0 Mux Mux to select Output ASRC Channel 0 source
ASRCO 1 Mux Mux to select Output ASRC Channel 1 source
ASRCO 2 Mux Mux to select Output ASRC Channel 2 source
ASRCO 3 Mux Mux to select Output ASRC Channel 3 source
ASRCO IN FS Output ASRC input sample rate selector
ASRCO SAI SEL Output ASRC sink serial audio interface selector
SPTx_OUT_SLOTy Data Mux Output SAI x slot y data source mux Example: SPT0_OUT_SLOT3 Data Mux

ALSA controls can be modified easily using alsa-tools utilities. For example to read the current state of DMIC0 Capture Volume control one can use:

amixer -c ADAU1860 cget name='DMIC0 Capture Volume'

To set one control value the following command can be executed:

amixer -c ADAU1860 cset name='DMIC0 Capture Volume' 191

DAI configuration

The codec driver registers two DAIs:

  • adau1860-sai0
  • adau1860-sai1

Supported DAI formats

Name Supported by driver Description
SND_SOC_DAIFMT_I2S yes I2S mode
SND_SOC_DAIFMT_RIGHT_J yes Right Justified mode
SND_SOC_DAIFMT_LEFT_J yes Left Justified mode
SND_SOC_DAIFMT_DSP_A yes data MSB after FRM LRC
SND_SOC_DAIFMT_DSP_B no data MSB during FRM LRC
SND_SOC_DAIFMT_AC97 no AC97 mode
SND_SOC_DAIFMT_PDM no Pulse density modulation
SND_SOC_DAIFMT_NB_NF yes Normal bit- and frameclock
SND_SOC_DAIFMT_NB_IF yes Normal bitclock, inverted frameclock
SND_SOC_DAIFMT_IB_NF yes Inverted frameclock, normal bitclock
SND_SOC_DAIFMT_IB_IF yes Inverted bit- and frameclock
SND_SOC_DAIFMT_CBM_CFM yes Codec bit- and frameclock master
SND_SOC_DAIFMT_CBS_CFM no Codec bitclock slave, frameclock master
SND_SOC_DAIFMT_CBM_CFS no Codec bitclock master, frameclock slave
SND_SOC_DAIFMT_CBS_CFS yes Codec bit- and frameclock slave
SNDRV_PCM_FMTBIT_S16_LE yes Signed 16 bit per channel, Little Endian
SNDRV_PCM_FMTBIT_S20_LE yes Signed 20 bit per channel, Little Endian
SNDRV_PCM_FMTBIT_S24_LE yes Signed 24 bit per channel, Little Endian
SNDRV_PCM_FMTBIT_S32_LE yes Signed 32 bit per channel, Little Endian
resources/tools-software/linux-drivers/sound/adau1860.txt · Last modified: 18 Apr 2023 10:22 by Bogdan Togorean