2019-06-04 11:11:29 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2015-08-27 12:35:20 +03:00
/*
* I2S MEMS microphone driver for InvenSense ICS - 43432
*
* - Non configurable .
* - I2S interface , 64 BCLs per frame , 32 bits per channel , 24 bit data
*
* Copyright ( c ) 2015 Axis Communications AB
*/
# include <linux/module.h>
# include <linux/init.h>
# include <linux/slab.h>
# include <sound/core.h>
# include <sound/pcm.h>
# include <sound/pcm_params.h>
# include <sound/soc.h>
# include <sound/initval.h>
# include <sound/tlv.h>
# define ICS43432_RATE_MIN 7190 /* Hz, from data sheet */
# define ICS43432_RATE_MAX 52800 /* Hz, from data sheet */
# define ICS43432_FORMATS (SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32)
static struct snd_soc_dai_driver ics43432_dai = {
. name = " ics43432-hifi " ,
. capture = {
. stream_name = " Capture " ,
. channels_min = 1 ,
. channels_max = 2 ,
. rate_min = ICS43432_RATE_MIN ,
. rate_max = ICS43432_RATE_MAX ,
. rates = SNDRV_PCM_RATE_CONTINUOUS ,
. formats = ICS43432_FORMATS ,
} ,
} ;
2018-01-29 07:46:16 +03:00
static const struct snd_soc_component_driver ics43432_component_driver = {
. idle_bias_on = 1 ,
. use_pmdown_time = 1 ,
. endianness = 1 ,
. non_legacy_dai_naming = 1 ,
2015-08-27 12:35:20 +03:00
} ;
static int ics43432_probe ( struct platform_device * pdev )
{
2018-01-29 07:46:16 +03:00
return devm_snd_soc_register_component ( & pdev - > dev ,
& ics43432_component_driver ,
2015-08-27 12:35:20 +03:00
& ics43432_dai , 1 ) ;
}
# ifdef CONFIG_OF
static const struct of_device_id ics43432_ids [ ] = {
{ . compatible = " invensense,ics43432 " , } ,
{ }
} ;
2015-08-28 13:11:48 +03:00
MODULE_DEVICE_TABLE ( of , ics43432_ids ) ;
2015-08-27 12:35:20 +03:00
# endif
static struct platform_driver ics43432_driver = {
. driver = {
. name = " ics43432 " ,
. of_match_table = of_match_ptr ( ics43432_ids ) ,
} ,
. probe = ics43432_probe ,
} ;
module_platform_driver ( ics43432_driver ) ;
MODULE_DESCRIPTION ( " ASoC ICS43432 driver " ) ;
MODULE_AUTHOR ( " Ricard Wanderlof <ricardw@axis.com> " ) ;
2015-08-28 06:23:05 +03:00
MODULE_LICENSE ( " GPL v2 " ) ;