• Vitaly Rodionov's avatar
    ALSA: hda/cirrus: Add support for CS8409 HDA bridge and CS42L42 companion codec. · 6cc7e93f
    Vitaly Rodionov authored
    Dell's laptops Inspiron 3500, Inspiron 3501, Inspiron 3505 are using Cirrus Logic
    CS8409 HDA bridge with CS42L42 companion codec.
    
    The CS8409 is a multichannel HD audio routing controller.
    CS8409 includes support for four channels of digital
    microphone data and two bidirectional ASPs for up to 32
    channels of TDM data or 4 channels of I2S data. The CS8409 is
    intended to be used with a remote companion codec that implements
    high performance analog functions in close physical
    proximity to the end-equipment audio port or speaker driver.
    
    The CS42L42 is a low-power audio codec with integrated MIPI
    SoundWire interface or I2C/I2S/TDM interfaces designed
    for portable applications. It provides a high-dynamic range,
    stereo DAC for audio playback and a mono high-dynamic-range
    ADC for audio capture
    
    CS42L42 is connected to CS8409 HDA bridge via I2C and I2S.
    
    CS8409          CS42L42
    -------         --------
    ASP1.A TX  -->  ASP_SDIN
    ASP1.A RX  <--  ASP_SDOUT
    GPIO5      -->  RST#
    GPIO4      <--  INT#
    GPIO3      <--  WAKE#
    GPIO7      <->  I2C SDA
    GPIO6      -->  I2C CLK
    
    Tested on DELL Inspiron-3500, DELL Inspiron-3501, DELL Inspiron-3505
    
    This patch will register CS8409 with sound card and create
    input/output paths and two input devices, initialise CS42L42
    companion codec and configure it for ASP TX/RX TDM mode,
    24bit, 48kHz.
    
    cat /proc/asound/pcm
    00-00: CS8409 Analog : CS8409 Analog : playback 1 : capture 1
    00-03: HDMI 0 : HDMI 0 : playback 1
    
    dmesg
    snd_hda_codec_cirrus hdaudioC0D0: autoconfig for CS8409: line_outs=1 (0x2c/0x0/0x0/0x0/0x0) type:speaker
    snd_hda_codec_cirrus hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
    snd_hda_codec_cirrus hdaudioC0D0:    hp_outs=1 (0x24/0x0/0x0/0x0/0x0)
    snd_hda_codec_cirrus hdaudioC0D0:    mono: mono_out=0x0
    snd_hda_codec_cirrus hdaudioC0D0:    inputs:
    snd_hda_codec_cirrus hdaudioC0D0:      Internal Mic=0x44
    snd_hda_codec_cirrus hdaudioC0D0:      Mic=0x34
    input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8
    input: HDA Intel PCH Headset Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9
    Signed-off-by: default avatarVitaly Rodionov <vitalyr@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20210306111934.4832-3-vitalyr@opensource.cirrus.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    6cc7e93f
patch_cirrus.c 48.6 KB