• Simon Ho's avatar
    ASoC: Add support for Conexant CX2072X CODEC · a497a436
    Simon Ho authored
    Initial commit of the Conexant CX2072X CODEC driver. Some features are
    not present.
    
    The CX2072X is a ultra low power stereo audio codec supports I2S/TDM
    host interface with EQ, DRC features in playback mode.
    
    Featues of CX2072X codec:
    
     * Two 24 bits DACs and DACs.
     * Stereo Headphone AMP.
     * 2.8W per channel class-D output.
     * Integrated seven bands per channel EQ and DRC.
     * Fully integrated headset support with detect/switch.
     * Stereo digital microphone for array applications.
     * S/PDIF output.
     * Bi-directional GPIOs.
     * Support analog and digital PC Beeep.
     * One headset button support.
     * Supports a wide variety of host interfaces.
       -wide variety of I2S and similar bit-stream formats
        with word lengths of up to 24 bits.
       -TDM stream supports up to 4 channels.
     * AEC loopback support.
    
    Further fixes by tiwai:
     * Rebase to 5.2+
     * Missing DAPM entry definitions
     * Missing power hooks
     * Fix uninitialized variable warning
     * Rewrite jack detection stuff to use set_jack callback
     * Plumbing jack detection code for Intel ASoC
     * Move clk management into runtime PM
     * Drop incorrect regcache usages
     * Drop untested stuff: OF table, EQ/DRC handling
     * Lots of code cleanups and minor refactoring
    
    The OF code was dropped due to the lack of testability.
    It should be easy to re-add once if someone can test it.
    
    v1->v2: No change
    v2->v3: Move register tables to appropriate place
    	Remove some confusing codes
    	Set snd_ctl_boolean_* helpers directly
    	Fix EQ put callback
    	Rename to "DAC1 Switch" from "DAC1 Mute Switch"
    	Drop superfluous regmap calls at shutdown
    	Avoid regmap_register_patch()
    	Add missing register definitions
    	Fix register access on big-endian machine
    	Remove regcache messes
    v3->v4: Fix the wrong endianess conversion in reg write
    	Minor code cleanups
    v4->v5: Move clk management to runtime PM
    	Sparse warning fixes
    	Some more code simplification
    	Drop tricky regcache fiddling
    	Apply mutex locks around possible racy sequences
    	Move exported jack detection stuff into set_jack callback
    v5->v6: Drop buggy&untested EQ and DRC codes
    	Lots of code reduction/cleanup
    	Add more comments about platform-specific stuff
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=115531Signed-off-by: default avatarSimon Ho <simon.ho@conexant.com>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    a497a436
Kconfig 31.8 KB