Commit 43d2c498 authored by Angelo Dureghello's avatar Angelo Dureghello Committed by Mark Brown

ASoC: ics43432: add CMM-4030D-261 support

Despite minimal datasheet differences, the driver seems
perfectly compatible with CMM-4030D-261.

Tested CMM-4030D-261 to work with this changes:

/ {
        cmm4030d: cmm4030d {
                #sound-dai-cells = <0>;
                compatible = "cui,cmm-4030d-261";
        };

        sound_mic {
                compatible = "simple-audio-card";
                simple-audio-card,name = "i2s mem mic";
                simple-audio-card,format = "i2s";
                simple-audio-card,bitclock-master = <&sound_master>;
                simple-audio-card,frame-master = <&sound_master>;
                sound_master: simple-audio-card,cpu {
                        sound-dai = <&ssi2>;
                        system-clock-frequency = <2822400>;
                };
                simple-audio-card,codec {
                        sound-dai = <&cmm4030d>;
                };
        };
};

Audio has been captured and tested successfully by:

arecord -D "hw:1,0" -f S24_LE > test.wav
aplay test.wav
Signed-off-by: default avatarAngelo Dureghello <angelo.dureghello@timesys.com>
Link: https://lore.kernel.org/r/20210821082658.4147595-1-angelo.dureghello@timesys.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 77eca00f
...@@ -848,7 +848,7 @@ config SND_SOC_HDAC_HDA ...@@ -848,7 +848,7 @@ config SND_SOC_HDAC_HDA
select SND_HDA select SND_HDA
config SND_SOC_ICS43432 config SND_SOC_ICS43432
tristate tristate "ICS43423 and compatible i2s microphones"
config SND_SOC_INNO_RK3036 config SND_SOC_INNO_RK3036
tristate "Inno codec driver for RK3036 SoC" tristate "Inno codec driver for RK3036 SoC"
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* I2S MEMS microphone driver for InvenSense ICS-43432 * I2S MEMS microphone driver for InvenSense ICS-43432 and similar
* MEMS-based microphones.
* *
* - Non configurable. * - Non configurable.
* - I2S interface, 64 BCLs per frame, 32 bits per channel, 24 bit data * - I2S interface, 64 BCLs per frame, 32 bits per channel, 24 bit data
...@@ -53,6 +54,7 @@ static int ics43432_probe(struct platform_device *pdev) ...@@ -53,6 +54,7 @@ static int ics43432_probe(struct platform_device *pdev)
#ifdef CONFIG_OF #ifdef CONFIG_OF
static const struct of_device_id ics43432_ids[] = { static const struct of_device_id ics43432_ids[] = {
{ .compatible = "invensense,ics43432", }, { .compatible = "invensense,ics43432", },
{ .compatible = "cui,cmm-4030d-261", },
{ } { }
}; };
MODULE_DEVICE_TABLE(of, ics43432_ids); MODULE_DEVICE_TABLE(of, ics43432_ids);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment