Post Go back to editing

No audio output with MAX98090

Category: Software
Product Number: MAX98090
Software Version: Linux Kernel 6.6

Hello!

I'm trying to get a MAX98090AETL Audio Codec working on my custom carrier board for an i.MX8MP SOM Module. The SOM is a "i.MX8M Plus DHCOM", and there's a device tree for its demo board (PDK3) with another audio chip mainline here: github.com/.../imx8mp-dhcom-pdk3.dts . I'm on Linux 6.6 LTS, and I'm building a yocto scarthgap image.

My audio codec is connected like this:

Assumptions:
* Since we're only using the audio output for internal speakers, the IRQ connection (for jack detection) is not needed.
* Since we're not using microphones, SDDOut connection is not needed.
* Connecting only one speaker to SPKR should work as a "Mono" output

I've created the changes below to my device tree, based on my supplier's demo board configuration that works with another audio codec, and based on the max98090 examples that I could find online.

The following things are a bit unclear to me:
* When I don't add an interrupt to the max98090 configuration, I get an error "request_irq failed" from the driver probe function. So I simply added an unused GPIO here. Is this problematic in any way?
* how is the "clocks" property of the max98090 meant to be configured? I found many examples where it is derived from the i2s node in some way, but since I have mclk connected to an oscillator, I believe this is what I should use here?
* Do I need anything special to configure a single ("Mono") speaker here? I wanted to rule out problems here and configured it as stereo with SPKL and SPKR instead for now.

Anyhow and finally, my problem is quite simple: I have connected a speaker to theSPKR output, and I don't get any sound on it.

I tried this the following way:
aplay example.wav

... and I got the following output:
Playing WAVE 'example.wav' : Signed 16 bit Little Endi[ 9268.175541] max98090 4-0010: No better method found
an, Rate 44100 Hz, Stereo
[ 9268.181906] max98090 4-0010: Calculating ni 22579 with mi 65536

So I guess that I either configured or connected something in a wrong way. What could be my issue here?

I also attach the result of alsa-info.sh, in the hope that this might be helpful ...

Best regards
Markus

// DTS file changes:
/ {
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "MAX98090-Card";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&codec_dai>;
simple-audio-card,frame-master = <&codec_dai>;
simple-audio-card,widgets = "Speaker", "Speaker Internal";
simple-audio-card,routing = "Speaker Internal", "SPKR","Speaker Internal", "SPKL";

cpu_dai: simple-audio-card,cpu {
sound-dai = <&sai3>;
};
codec_dai: simple-audio-card,codec {
sound-dai = <&max98090>;
};
};
clk_ext_audio_codec: oscillator {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <12288000>;
};
}

&i2c5 {
max98090: audio-codec@10 {
compatible = "maxim,max98090";
reg = <0x10>;
clocks = <&clk_ext_audio_codec>;
clock-names = "mclk";
// Use a dummy (unused gpio) interrupt pin that's not connected
interrupt-parent = <&supply_io_expander>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
#sound-dai-cells = <0>;
};
}

// Audio interface configuration (copied from PDK3 demo board with same SOM module but other)
&sai3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai3>;
assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
assigned-clock-rates = <12288000>;
fsl,sai-mclk-direction-output;
status = "okay";
};

  • And here the output of alsa-info.sh:

    upload=true&script=true&cardinfo=
    !!################################
    !!ALSA Information Script v 0.5.3
    !!################################
    
    !!Script ran on: Tue Feb 27 17:54:27 UTC 2024
    
    
    !!Linux Distribution
    !!------------------
    
    
    
    
    !!DMI Information
    !!---------------
    
    Manufacturer:      
    Product Name:      
    Product Version:   
    Firmware Version:  
    System SKU:        
    Board Vendor:      
    Board Name:        
    
    
    !!ACPI Device Status Information
    !!---------------
    
    
    
    !!Kernel Information
    !!------------------
    
    Kernel release:    #1 SMP Sun Nov 17 14:08:59 UTC 2024
    Operating System:  GNU/Linux
    Architecture:      aarch64
    Processor:         unknown
    SMP Enabled:       Yes
    
    
    !!ALSA Version
    !!------------
    
    Driver version:     k6.6.62-stable-standard-00052-geaa641e9be61
    Library version:    1.2.11
    Utilities version:  1.2.11
    
    
    !!Loaded ALSA modules
    !!-------------------
    
    
    
    !!Sound Servers on this system
    !!----------------------------
    
    Pulseaudio:
          Installed - Yes (/usr/bin/pulseaudio)
          Running - Yes
    
    
    !!Soundcards recognised by ALSA
    !!-----------------------------
    
     0 [MAX98090Card   ]: simple-card - MAX98090-Card
                          MAX98090-Card
    
    
    !!PCI Soundcards installed in the system
    !!--------------------------------------
    
    
    
    !!Loaded sound module options
    !!---------------------------
    
    
    !!Sysfs card info
    !!---------------
    
    !!Card: /sys/class/sound/card0
    Driver: /sys/bus/platform/drivers/asoc-simple-card
    Tree:
    	/sys/class/sound/card0
    	|-- controlC0
    	|   |-- dev
    	|   |-- device -> ../../card0
    	|   |-- power
    	|   |-- subsystem -> ../../../../../../class/sound
    	|   `-- uevent
    	|-- device -> ../../../sound
    	|-- id
    	|-- number
    	|-- pcmC0D0c
    	|   |-- dev
    	|   |-- device -> ../../card0
    	|   |-- pcm_class
    	|   |-- power
    	|   |-- subsystem -> ../../../../../../class/sound
    	|   `-- uevent
    	|-- pcmC0D0p
    	|   |-- dev
    	|   |-- device -> ../../card0
    	|   |-- pcm_class
    	|   |-- power
    	|   |-- subsystem -> ../../../../../../class/sound
    	|   `-- uevent
    	|-- power
    	|   |-- autosuspend_delay_ms
    	|   |-- control
    	|   |-- runtime_active_time
    	|   |-- runtime_status
    	|   `-- runtime_suspended_time
    	|-- subsystem -> ../../../../../class/sound
    	`-- uevent
    
    
    !!ALSA Device nodes
    !!-----------------
    
    crw-rw---- 1 root audio 116,  0 Feb 27 17:26 /dev/snd/controlC0
    crw-rw---- 1 root audio 116, 24 Feb 27 17:26 /dev/snd/pcmC0D0c
    crw-rw---- 1 root audio 116, 16 Feb 27 17:26 /dev/snd/pcmC0D0p
    crw-rw---- 1 root audio 116, 33 Feb 27 17:26 /dev/snd/timer
    
    /dev/snd/by-path:
    total 0
    drwxr-xr-x 2 root root  60 Feb 27 17:26 .
    drwxr-xr-x 3 root root 140 Feb 27 17:26 ..
    lrwxrwxrwx 1 root root  12 Feb 27 17:26 platform-sound -> ../controlC0
    
    
    !!Aplay/Arecord output
    !!--------------------
    
    APLAY
    
    **** List of PLAYBACK Hardware Devices ****
    card 0: MAX98090Card [MAX98090-Card], device 0: 30c30000.sai-HiFi HiFi-0 [30c30000.sai-HiFi HiFi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    
    ARECORD
    
    **** List of CAPTURE Hardware Devices ****
    card 0: MAX98090Card [MAX98090-Card], device 0: 30c30000.sai-HiFi HiFi-0 [30c30000.sai-HiFi HiFi-0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    
    !!Amixer output
    !!-------------
    
    !!-------Mixer controls for card MAX98090Card
    
    Card sysdefault:0 'MAX98090Card'/'MAX98090-Card'
      Mixer name	: ''
      Components	: ''
      Controls      : 136
      Simple ctrls  : 134
    Simple mixer control 'Headphone',0
      Capabilities: volume
      Playback channels: Front Left - Front Right
      Capture channels: Front Left - Front Right
      Limits: 0 - 31
      Front Left: 0 [0%] [-67.00dB]
      Front Right: 0 [0%] [-67.00dB]
    Simple mixer control 'Headphone Left',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Headphone Left Mixer',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 3 [100%] [0.00dB]
    Simple mixer control 'Headphone Right',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Headphone Right Mixer',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 3 [100%] [0.00dB]
    Simple mixer control 'Speaker',0
      Capabilities: volume
      Playback channels: Front Left - Front Right
      Capture channels: Front Left - Front Right
      Limits: 0 - 39
      Front Left: 20 [51%] [0.00dB]
      Front Right: 20 [51%] [0.00dB]
    Simple mixer control 'Speaker Left',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Speaker Left Mixer',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 3 [100%] [0.00dB]
    Simple mixer control 'Speaker Right',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Speaker Right Mixer',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 3 [100%] [0.00dB]
    Simple mixer control 'Playback Path DC Blocking',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'ADC High Performance Mode',0
      Capabilities: enum
      Items: 'Low Power' 'High Performance'
      Item0: 'High Performance'
    Simple mixer control 'ADC Oversampling Rate',0
      Capabilities: enum
      Items: '64*fs' '128*fs'
      Item0: '128*fs'
    Simple mixer control 'ADC Quantizer Dither',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'ADCL',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 15
      Mono: 12 [80%] [0.00dB]
    Simple mixer control 'ADCL Boost',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 7
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'ADCR',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 15
      Mono: 12 [80%] [0.00dB]
    Simple mixer control 'ADCR Boost',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 7
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'ALC Attack Time',0
      Capabilities: enum
      Items: '0.5ms' '1ms' '5ms' '10ms' '25ms' '50ms' '100ms' '200ms'
      Item0: '0.5ms'
    Simple mixer control 'ALC Compression Ratio',0
      Capabilities: enum
      Items: '1:1' '1:1.5' '1:2' '1:4' '1:INF'
      Item0: '1:1'
    Simple mixer control 'ALC Compression Threshold',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 31
      Mono: 31 [100%] [0.00dB]
    Simple mixer control 'ALC Enable',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'ALC Expansion Ratio',0
      Capabilities: enum
      Items: '1:1' '2:1' '3:1'
      Item0: '1:1'
    Simple mixer control 'ALC Expansion Threshold',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 31
      Mono: 31 [100%] [-35.00dB]
    Simple mixer control 'ALC Make Up',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 12
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'ALC Release Time',0
      Capabilities: enum
      Items: '8s' '4s' '2s' '1s' '0.5s' '0.25s' '0.125s' '0.0625s'
      Item0: '8s'
    Simple mixer control 'Biquad',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'DAC HP Playback Performance Mode',0
      Capabilities: enum
      Items: 'High Performance' 'Low Power'
      Item0: 'High Performance'
    Simple mixer control 'DAC High Performance Mode',0
      Capabilities: enum
      Items: 'Low Power' 'High Performance'
      Item0: 'High Performance'
    Simple mixer control 'DAC Mono Mode',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'DMIC MIC Comp Filter Config',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 15
      Mono: 6 [40%]
    Simple mixer control 'DMIC Mux',0
      Capabilities: enum
      Items: 'ADC' 'DMIC'
      Item0: 'ADC'
    Simple mixer control 'Digital',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 15
      Mono: 15 [100%] [0.00dB]
    Simple mixer control 'Digital BQ',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 15
      Mono: 15 [100%] [0.00dB]
    Simple mixer control 'Digital Coarse',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'Digital EQ',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 15
      Mono: 15 [100%] [0.00dB]
    Simple mixer control 'Digital EQ 3 Band',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Digital EQ 5 Band',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Digital EQ 7 Band',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Digital EQ Clipping Detection',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Digital Sidetone',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 30
      Mono: 0 [0%] [0.50dB]
    Simple mixer control 'Enhanced Vol Smoothing',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Filter Mode',0
      Capabilities: enum
      Items: 'Voice' 'Music'
      Item0: 'Music'
    Simple mixer control 'LBENL Mux',0
      Capabilities: enum
      Items: 'Normal' 'Loopback'
      Item0: 'Normal'
    Simple mixer control 'LBENR Mux',0
      Capabilities: enum
      Items: 'Normal' 'Loopback'
      Item0: 'Normal'
    Simple mixer control 'LINEA',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 5
      Mono: 2 [40%] [0.00dB]
    Simple mixer control 'LINEA Ext Resistor Gain Mode',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEA Mixer IN1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEA Mixer IN3',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEA Mixer IN34',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEA Mixer IN5',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEA Single Ended',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 1
      Mono: 1 [100%] [0.00dB]
    Simple mixer control 'LINEB',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 5
      Mono: 2 [40%] [0.00dB]
    Simple mixer control 'LINEB Ext Resistor Gain Mode',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEB Mixer IN2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEB Mixer IN4',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEB Mixer IN56',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEB Mixer IN6',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'LINEB Single Ended',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 1
      Mono: 1 [100%] [0.00dB]
    Simple mixer control 'LINMOD Mux',0
      Capabilities: enum
      Items: 'Left Only' 'Left and Right'
      Item0: 'Left Only'
    Simple mixer control 'LTENL Mux',0
      Capabilities: enum
      Items: 'Normal' 'Loopthrough'
      Item0: 'Normal'
    Simple mixer control 'LTENR Mux',0
      Capabilities: enum
      Items: 'Normal' 'Loopthrough'
      Item0: 'Normal'
    Simple mixer control 'Left ADC Mixer IN12',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left ADC Mixer IN34',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left ADC Mixer IN56',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left ADC Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left ADC Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left ADC Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left ADC Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Headphone Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Headphone Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Headphone Mixer Left DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Headphone Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Headphone Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Headphone Mixer Right DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Receiver Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Receiver Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Receiver Mixer Left DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Receiver Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Receiver Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Receiver Mixer Right DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Speaker Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Speaker Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Speaker Mixer Left DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Speaker Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Speaker Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Left Speaker Mixer Right DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'MIC Bias VCM Bandgap',0
      Capabilities: enum
      Items: 'Low Power' 'High Performance'
      Item0: 'High Performance'
    Simple mixer control 'MIC1',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 20
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'MIC1 Boost',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 2
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'MIC1 Mux',0
      Capabilities: enum
      Items: 'IN12' 'IN56'
      Item0: 'IN12'
    Simple mixer control 'MIC2',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 20
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'MIC2 Boost',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 2
      Mono: 0 [0%] [0.00dB]
    Simple mixer control 'MIC2 Mux',0
      Capabilities: enum
      Items: 'IN34' 'IN56'
      Item0: 'IN34'
    Simple mixer control 'MIXHPLSEL Mux',0
      Capabilities: enum
      Items: 'DAC Only' 'HP Mixer'
      Item0: 'DAC Only'
    Simple mixer control 'MIXHPRSEL Mux',0
      Capabilities: enum
      Items: 'DAC Only' 'HP Mixer'
      Item0: 'DAC Only'
    Simple mixer control 'Receiver',0
      Capabilities: volume
      Playback channels: Front Left - Front Right
      Capture channels: Front Left - Front Right
      Limits: 0 - 31
      Front Left: 21 [68%] [0.00dB]
      Front Right: 21 [68%] [0.00dB]
    Simple mixer control 'Receiver Left',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Receiver Left Mixer',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 3 [100%] [0.00dB]
    Simple mixer control 'Receiver Right',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Receiver Right Mixer',0
      Capabilities: volume volume-joined
      Playback channels: Mono
      Capture channels: Mono
      Limits: 0 - 3
      Mono: 3 [100%] [0.00dB]
    Simple mixer control 'Record Path DC Blocking',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer IN12',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer IN34',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer IN56',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right ADC Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Headphone Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Headphone Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Headphone Mixer Left DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Headphone Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Headphone Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Headphone Mixer Right DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Receiver Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Receiver Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Receiver Mixer Left DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Receiver Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Receiver Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Receiver Mixer Right DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Speaker Mixer LINEA',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Speaker Mixer LINEB',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Speaker Mixer Left DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Speaker Mixer MIC1',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Speaker Mixer MIC2',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'Right Speaker Mixer Right DAC',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'SDIN Mode',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'SDOUT Hi-Z Mode',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'SDOUT Mode',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [off]
    Simple mixer control 'STENL Mux',0
      Capabilities: enum
      Items: 'Normal' 'Sidetone Left'
      Item0: 'Normal'
    Simple mixer control 'STENR Mux',0
      Capabilities: enum
      Items: 'Normal' 'Sidetone Right'
      Item0: 'Normal'
    Simple mixer control 'Volume Adjustment Smoothing',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    Simple mixer control 'Zero-Crossing Detection',0
      Capabilities: pswitch pswitch-joined
      Playback channels: Mono
      Mono: Playback [on]
    
    
    !!Alsactl output
    !!--------------
    
    --startcollapse--
    state.MAX98090Card {
    	control.1 {
    		iface MIXER
    		name 'MIC Bias VCM Bandgap'
    		value 'High Performance'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'Low Power'
    			item.1 'High Performance'
    		}
    	}
    	control.2 {
    		iface MIXER
    		name 'DMIC MIC Comp Filter Config'
    		value 6
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 15'
    		}
    	}
    	control.3 {
    		iface MIXER
    		name 'MIC1 Boost Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 2'
    			dbmin 0
    			dbmax 3000
    			dbvalue.0 0
    		}
    	}
    	control.4 {
    		iface MIXER
    		name 'MIC2 Boost Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 2'
    			dbmin 0
    			dbmax 3000
    			dbvalue.0 0
    		}
    	}
    	control.5 {
    		iface MIXER
    		name 'MIC1 Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 20'
    			dbmin 0
    			dbmax 2000
    			dbvalue.0 0
    		}
    	}
    	control.6 {
    		iface MIXER
    		name 'MIC2 Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 20'
    			dbmin 0
    			dbmax 2000
    			dbvalue.0 0
    		}
    	}
    	control.7 {
    		iface MIXER
    		name 'LINEA Single Ended Volume'
    		value 1
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 1'
    			dbmin -600
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.8 {
    		iface MIXER
    		name 'LINEB Single Ended Volume'
    		value 1
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 1'
    			dbmin -600
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.9 {
    		iface MIXER
    		name 'LINEA Volume'
    		value 2
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 5'
    			dbmin -600
    			dbmax 2000
    			dbvalue.0 0
    		}
    	}
    	control.10 {
    		iface MIXER
    		name 'LINEB Volume'
    		value 2
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 5'
    			dbmin -600
    			dbmax 2000
    			dbvalue.0 0
    		}
    	}
    	control.11 {
    		iface MIXER
    		name 'LINEA Ext Resistor Gain Mode'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.12 {
    		iface MIXER
    		name 'LINEB Ext Resistor Gain Mode'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.13 {
    		iface MIXER
    		name 'ADCL Boost Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 7'
    			dbmin 0
    			dbmax 4200
    			dbvalue.0 0
    		}
    	}
    	control.14 {
    		iface MIXER
    		name 'ADCR Boost Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 7'
    			dbmin 0
    			dbmax 4200
    			dbvalue.0 0
    		}
    	}
    	control.15 {
    		iface MIXER
    		name 'ADCL Volume'
    		value 12
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 15'
    			dbmin -1200
    			dbmax 300
    			dbvalue.0 0
    		}
    	}
    	control.16 {
    		iface MIXER
    		name 'ADCR Volume'
    		value 12
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 15'
    			dbmin -1200
    			dbmax 300
    			dbvalue.0 0
    		}
    	}
    	control.17 {
    		iface MIXER
    		name 'ADC Oversampling Rate'
    		value '128*fs'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 '64*fs'
    			item.1 '128*fs'
    		}
    	}
    	control.18 {
    		iface MIXER
    		name 'ADC Quantizer Dither'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.19 {
    		iface MIXER
    		name 'ADC High Performance Mode'
    		value 'High Performance'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'Low Power'
    			item.1 'High Performance'
    		}
    	}
    	control.20 {
    		iface MIXER
    		name 'DAC Mono Mode'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.21 {
    		iface MIXER
    		name 'SDIN Mode'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.22 {
    		iface MIXER
    		name 'SDOUT Mode'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.23 {
    		iface MIXER
    		name 'SDOUT Hi-Z Mode'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.24 {
    		iface MIXER
    		name 'Filter Mode'
    		value Music
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Voice
    			item.1 Music
    		}
    	}
    	control.25 {
    		iface MIXER
    		name 'Record Path DC Blocking'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.26 {
    		iface MIXER
    		name 'Playback Path DC Blocking'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.27 {
    		iface MIXER
    		name 'Digital BQ Volume'
    		value 15
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 15'
    			dbmin -1500
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.28 {
    		iface MIXER
    		name 'Digital Sidetone Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 30'
    			dbmin 50
    			dbmax 6050
    			dbvalue.0 50
    		}
    	}
    	control.29 {
    		iface MIXER
    		name 'Digital Coarse Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin 0
    			dbmax 1800
    			dbvalue.0 0
    		}
    	}
    	control.30 {
    		iface MIXER
    		name 'Digital Volume'
    		value 15
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 15'
    			dbmin -1500
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.31 {
    		iface MIXER
    		name 'EQ Coefficients'
    		value '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
    		comment {
    			access 'read write'
    			type BYTES
    			count 105
    		}
    	}
    	control.32 {
    		iface MIXER
    		name 'Digital EQ 3 Band Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.33 {
    		iface MIXER
    		name 'Digital EQ 5 Band Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.34 {
    		iface MIXER
    		name 'Digital EQ 7 Band Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.35 {
    		iface MIXER
    		name 'Digital EQ Clipping Detection'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.36 {
    		iface MIXER
    		name 'Digital EQ Volume'
    		value 15
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 15'
    			dbmin -1500
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.37 {
    		iface MIXER
    		name 'ALC Enable'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.38 {
    		iface MIXER
    		name 'ALC Attack Time'
    		value '0.5ms'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 '0.5ms'
    			item.1 '1ms'
    			item.2 '5ms'
    			item.3 '10ms'
    			item.4 '25ms'
    			item.5 '50ms'
    			item.6 '100ms'
    			item.7 '200ms'
    		}
    	}
    	control.39 {
    		iface MIXER
    		name 'ALC Release Time'
    		value '8s'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 '8s'
    			item.1 '4s'
    			item.2 '2s'
    			item.3 '1s'
    			item.4 '0.5s'
    			item.5 '0.25s'
    			item.6 '0.125s'
    			item.7 '0.0625s'
    		}
    	}
    	control.40 {
    		iface MIXER
    		name 'ALC Make Up Volume'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 12'
    			dbmin 0
    			dbmax 1200
    			dbvalue.0 0
    		}
    	}
    	control.41 {
    		iface MIXER
    		name 'ALC Compression Ratio'
    		value '1:1'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 '1:1'
    			item.1 '1:1.5'
    			item.2 '1:2'
    			item.3 '1:4'
    			item.4 '1:INF'
    		}
    	}
    	control.42 {
    		iface MIXER
    		name 'ALC Expansion Ratio'
    		value '1:1'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 '1:1'
    			item.1 '2:1'
    			item.2 '3:1'
    		}
    	}
    	control.43 {
    		iface MIXER
    		name 'ALC Compression Threshold Volume'
    		value 31
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 31'
    			dbmin -3100
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.44 {
    		iface MIXER
    		name 'ALC Expansion Threshold Volume'
    		value 31
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 31'
    			dbmin -6600
    			dbmax -3500
    			dbvalue.0 -3500
    		}
    	}
    	control.45 {
    		iface MIXER
    		name 'DAC HP Playback Performance Mode'
    		value 'High Performance'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'High Performance'
    			item.1 'Low Power'
    		}
    	}
    	control.46 {
    		iface MIXER
    		name 'DAC High Performance Mode'
    		value 'High Performance'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'Low Power'
    			item.1 'High Performance'
    		}
    	}
    	control.47 {
    		iface MIXER
    		name 'Headphone Left Mixer Volume'
    		value 3
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin -1200
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.48 {
    		iface MIXER
    		name 'Headphone Right Mixer Volume'
    		value 3
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin -1200
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.49 {
    		iface MIXER
    		name 'Speaker Left Mixer Volume'
    		value 3
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin -1200
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.50 {
    		iface MIXER
    		name 'Speaker Right Mixer Volume'
    		value 3
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin -1200
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.51 {
    		iface MIXER
    		name 'Receiver Left Mixer Volume'
    		value 3
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin -1200
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.52 {
    		iface MIXER
    		name 'Receiver Right Mixer Volume'
    		value 3
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 3'
    			dbmin -1200
    			dbmax 0
    			dbvalue.0 0
    		}
    	}
    	control.53 {
    		iface MIXER
    		name 'Headphone Volume'
    		value.0 0
    		value.1 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 2
    			range '0 - 31'
    			dbmin -6700
    			dbmax 300
    			dbvalue.0 -6700
    			dbvalue.1 -6700
    		}
    	}
    	control.54 {
    		iface MIXER
    		name 'Speaker Volume'
    		value.0 20
    		value.1 20
    		comment {
    			access 'read write'
    			type INTEGER
    			count 2
    			range '0 - 39'
    			dbmin -4800
    			dbmax 1400
    			dbvalue.0 0
    			dbvalue.1 0
    		}
    	}
    	control.55 {
    		iface MIXER
    		name 'Receiver Volume'
    		value.0 21
    		value.1 21
    		comment {
    			access 'read write'
    			type INTEGER
    			count 2
    			range '0 - 31'
    			dbmin -6200
    			dbmax 800
    			dbvalue.0 0
    			dbvalue.1 0
    		}
    	}
    	control.56 {
    		iface MIXER
    		name 'Headphone Left Switch'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.57 {
    		iface MIXER
    		name 'Headphone Right Switch'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.58 {
    		iface MIXER
    		name 'Speaker Left Switch'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.59 {
    		iface MIXER
    		name 'Speaker Right Switch'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.60 {
    		iface MIXER
    		name 'Receiver Left Switch'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.61 {
    		iface MIXER
    		name 'Receiver Right Switch'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.62 {
    		iface MIXER
    		name 'Zero-Crossing Detection'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.63 {
    		iface MIXER
    		name 'Enhanced Vol Smoothing'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.64 {
    		iface MIXER
    		name 'Volume Adjustment Smoothing'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.65 {
    		iface MIXER
    		name 'Biquad Coefficients'
    		value '000000000000000000000000000000'
    		comment {
    			access 'read write'
    			type BYTES
    			count 15
    		}
    	}
    	control.66 {
    		iface MIXER
    		name 'Biquad Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.67 {
    		iface MIXER
    		name 'MIC1 Mux'
    		value IN12
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 IN12
    			item.1 IN56
    		}
    	}
    	control.68 {
    		iface MIXER
    		name 'MIC2 Mux'
    		value IN34
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 IN34
    			item.1 IN56
    		}
    	}
    	control.69 {
    		iface MIXER
    		name 'DMIC Mux'
    		value ADC
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 ADC
    			item.1 DMIC
    		}
    	}
    	control.70 {
    		iface MIXER
    		name 'LINEA Mixer IN1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.71 {
    		iface MIXER
    		name 'LINEA Mixer IN3 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.72 {
    		iface MIXER
    		name 'LINEA Mixer IN5 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.73 {
    		iface MIXER
    		name 'LINEA Mixer IN34 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.74 {
    		iface MIXER
    		name 'LINEB Mixer IN2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.75 {
    		iface MIXER
    		name 'LINEB Mixer IN4 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.76 {
    		iface MIXER
    		name 'LINEB Mixer IN6 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.77 {
    		iface MIXER
    		name 'LINEB Mixer IN56 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.78 {
    		iface MIXER
    		name 'Left ADC Mixer IN12 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.79 {
    		iface MIXER
    		name 'Left ADC Mixer IN34 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.80 {
    		iface MIXER
    		name 'Left ADC Mixer IN56 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.81 {
    		iface MIXER
    		name 'Left ADC Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.82 {
    		iface MIXER
    		name 'Left ADC Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.83 {
    		iface MIXER
    		name 'Left ADC Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.84 {
    		iface MIXER
    		name 'Left ADC Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.85 {
    		iface MIXER
    		name 'Right ADC Mixer IN12 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.86 {
    		iface MIXER
    		name 'Right ADC Mixer IN34 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.87 {
    		iface MIXER
    		name 'Right ADC Mixer IN56 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.88 {
    		iface MIXER
    		name 'Right ADC Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.89 {
    		iface MIXER
    		name 'Right ADC Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.90 {
    		iface MIXER
    		name 'Right ADC Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.91 {
    		iface MIXER
    		name 'Right ADC Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.92 {
    		iface MIXER
    		name 'LBENL Mux'
    		value Normal
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Normal
    			item.1 Loopback
    		}
    	}
    	control.93 {
    		iface MIXER
    		name 'LBENR Mux'
    		value Normal
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Normal
    			item.1 Loopback
    		}
    	}
    	control.94 {
    		iface MIXER
    		name 'LTENL Mux'
    		value Normal
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Normal
    			item.1 Loopthrough
    		}
    	}
    	control.95 {
    		iface MIXER
    		name 'LTENR Mux'
    		value Normal
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Normal
    			item.1 Loopthrough
    		}
    	}
    	control.96 {
    		iface MIXER
    		name 'STENL Mux'
    		value Normal
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Normal
    			item.1 'Sidetone Left'
    		}
    	}
    	control.97 {
    		iface MIXER
    		name 'STENR Mux'
    		value Normal
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 Normal
    			item.1 'Sidetone Right'
    		}
    	}
    	control.98 {
    		iface MIXER
    		name 'Left Headphone Mixer Left DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.99 {
    		iface MIXER
    		name 'Left Headphone Mixer Right DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.100 {
    		iface MIXER
    		name 'Left Headphone Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.101 {
    		iface MIXER
    		name 'Left Headphone Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.102 {
    		iface MIXER
    		name 'Left Headphone Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.103 {
    		iface MIXER
    		name 'Left Headphone Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.104 {
    		iface MIXER
    		name 'Right Headphone Mixer Left DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.105 {
    		iface MIXER
    		name 'Right Headphone Mixer Right DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.106 {
    		iface MIXER
    		name 'Right Headphone Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.107 {
    		iface MIXER
    		name 'Right Headphone Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.108 {
    		iface MIXER
    		name 'Right Headphone Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.109 {
    		iface MIXER
    		name 'Right Headphone Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.110 {
    		iface MIXER
    		name 'Left Speaker Mixer Left DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.111 {
    		iface MIXER
    		name 'Left Speaker Mixer Right DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.112 {
    		iface MIXER
    		name 'Left Speaker Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.113 {
    		iface MIXER
    		name 'Left Speaker Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.114 {
    		iface MIXER
    		name 'Left Speaker Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.115 {
    		iface MIXER
    		name 'Left Speaker Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.116 {
    		iface MIXER
    		name 'Right Speaker Mixer Left DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.117 {
    		iface MIXER
    		name 'Right Speaker Mixer Right DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.118 {
    		iface MIXER
    		name 'Right Speaker Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.119 {
    		iface MIXER
    		name 'Right Speaker Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.120 {
    		iface MIXER
    		name 'Right Speaker Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.121 {
    		iface MIXER
    		name 'Right Speaker Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.122 {
    		iface MIXER
    		name 'Left Receiver Mixer Left DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.123 {
    		iface MIXER
    		name 'Left Receiver Mixer Right DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.124 {
    		iface MIXER
    		name 'Left Receiver Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.125 {
    		iface MIXER
    		name 'Left Receiver Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.126 {
    		iface MIXER
    		name 'Left Receiver Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.127 {
    		iface MIXER
    		name 'Left Receiver Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.128 {
    		iface MIXER
    		name 'Right Receiver Mixer Left DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.129 {
    		iface MIXER
    		name 'Right Receiver Mixer Right DAC Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.130 {
    		iface MIXER
    		name 'Right Receiver Mixer LINEA Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.131 {
    		iface MIXER
    		name 'Right Receiver Mixer LINEB Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.132 {
    		iface MIXER
    		name 'Right Receiver Mixer MIC1 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.133 {
    		iface MIXER
    		name 'Right Receiver Mixer MIC2 Switch'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.134 {
    		iface MIXER
    		name 'LINMOD Mux'
    		value 'Left Only'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'Left Only'
    			item.1 'Left and Right'
    		}
    	}
    	control.135 {
    		iface MIXER
    		name 'MIXHPLSEL Mux'
    		value 'DAC Only'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'DAC Only'
    			item.1 'HP Mixer'
    		}
    	}
    	control.136 {
    		iface MIXER
    		name 'MIXHPRSEL Mux'
    		value 'DAC Only'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'DAC Only'
    			item.1 'HP Mixer'
    		}
    	}
    }
    --endcollapse--
    
    
    !!All Loaded Modules
    !!------------------
    
    btbcm
    cfg80211
    hci_uart
    imx_pcm_dma
    imx_sdma
    nfnetlink
    snd_pcm_dmaengine
    snd_soc_core
    snd_soc_fsl_sai
    snd_soc_fsl_utils
    snd_soc_max98090
    snd_soc_simple_card
    snd_soc_simple_card_utils
    virt_dma
    
    
    !!ALSA/HDA dmesg
    !!--------------
    
    [    4.181737] clk: Disabling unused clocks
    [    4.198902] ALSA device list:
    [    4.203878]   No soundcards found.
    [    4.224687] mmc1: SDHCI controller on 30b50000.mmc [30b50000.mmc] using ADMA
    
    
    

  • Hi Markus,

    Let's discuss the assumptions first:

    • According to the MAX98090 driver the IRQ is not used only for jack detection. Take this line code for example it monitors the PLL locking and if PLL looses lock it will try to restart the part.
    • SDOut is not required if you use the codec only for playback
    • If you connect only one speaker it will be in mono configuration

    An IRQ is mandatory as is stated on the devicetree bindings : max98090.yaml and also because if the IRQ is not found the probe function will exit with and error. If &supply_io_expander is an interrupt controller and you see the new registered interrupt in /proc/interrupts it is fine.

    For clocks devicetree property you can reference the yaml devicetree bindings but it looks fine for your usecase where you have the MCLK provided externally with a fixed oscillator.

    But the oscillator you use is 12288000 Hz. That's integer dividable for 48Khz multiple sampling rates but it is not for 44100Khz. So that's why you see the print:
    Playing WAVE 'example.wav' : Signed 16 bit Little Endi[ 9268.175541] max98090 4-0010: No better method found
    an, Rate 44100 Hz, Stereo
    [ 9268.181906] max98090 4-0010: Calculating ni 22579 with mi 65536

    For audio outtput check the DAC-> SPK mixers for example:
    Simple mixer control 'Right Receiver Mixer Right DAC',0
    Capabilities: pswitch pswitch-joined
    Playback channels: Mono
    Mono: Playback [off]
    And set them to ON

    I think the reason you don't get audio at all is in the ALSA mixer configuration.

    -Regards, Bogdan

  • Hi Bogdan,

    thanks for your reply! I can confirm that I get sound now after enabling the missing mixers.

    What is the typical way to make these mixers default-on in a Yocto/Weston-based system, is there a way to do this via the drivers? Any suggestions/pointers would be very welcome here :-)

    I tried a bit more regarding the "no better method found" messages that I get. And I get the same message when using 48 kHz playback, which shouldn't be the case according to your explanation. What am I missing here? I believe these messages should not be printed in a properly configured system, right?

    root@board:~# aplay piano2.wav
    Playing WAVE 'piano2.wav' : Signed 16 bit Little Endi[ 7864.605075] max98090 4-0010: No better method found
    an, Rate 48000 Hz, Stereo
    [ 7864.611378] max98090 4-0010: Calculating ni 24576 with mi 65536


    root@board:~# aplay example.wav
    Playing WAVE 'example.wav' : Signed 16 bit Little Endi[ 7879.796059] max98090 4-0010: No better method found
    an, Rate 44100 Hz, Stereo
    [ 7879.803331] max98090 4-0010: Calculating ni 22579 with mi 65536

    Best regards
    Markus