2021-04-06 17:24:39 +03:00
/* SPDX-License-Identifier: GPL-2.0
*
* ALSA SoC TLV320AIC3x codec driver SPI interface
*
* Author : Arun KS , < arunks @ mistralsolutions . com >
* Copyright : ( C ) 2008 Mistral Solutions Pvt Ltd . ,
*
* Based on sound / soc / codecs / wm8731 . c by Richard Purdie
*
*/
# include <linux/spi/spi.h>
# include <linux/module.h>
# include <linux/of.h>
# include <linux/regmap.h>
# include <sound/soc.h>
# include "tlv320aic3x.h"
static int aic3x_spi_probe ( struct spi_device * spi )
{
struct regmap * regmap ;
struct regmap_config config ;
const struct spi_device_id * id = spi_get_device_id ( spi ) ;
config = aic3x_regmap ;
config . reg_bits = 7 ;
config . pad_bits = 1 ;
config . val_bits = 8 ;
config . read_flag_mask = 0x01 ;
dev_dbg ( & spi - > dev , " probing tlv320aic3x spi device \n " ) ;
regmap = devm_regmap_init_spi ( spi , & config ) ;
return aic3x_probe ( & spi - > dev , regmap , id - > driver_data ) ;
}
2022-01-23 20:52:01 +03:00
static void aic3x_spi_remove ( struct spi_device * spi )
2021-04-06 17:24:39 +03:00
{
2021-10-19 10:41:25 +03:00
aic3x_remove ( & spi - > dev ) ;
2021-04-06 17:24:39 +03:00
}
static const struct spi_device_id aic3x_spi_id [ ] = {
{ " tlv320aic3x " , AIC3X_MODEL_3X } ,
{ " tlv320aic33 " , AIC3X_MODEL_33 } ,
{ " tlv320aic3007 " , AIC3X_MODEL_3007 } ,
{ " tlv320aic3104 " , AIC3X_MODEL_3104 } ,
2021-04-08 16:59:08 +03:00
{ " tlv320aic3106 " , AIC3X_MODEL_3106 } ,
2021-04-06 17:24:39 +03:00
{ }
} ;
MODULE_DEVICE_TABLE ( spi , aic3x_spi_id ) ;
static const struct of_device_id aic3x_of_id [ ] = {
{ . compatible = " ti,tlv320aic3x " , } ,
{ . compatible = " ti,tlv320aic33 " } ,
{ . compatible = " ti,tlv320aic3007 " } ,
{ . compatible = " ti,tlv320aic3104 " } ,
2021-04-08 16:59:08 +03:00
{ . compatible = " ti,tlv320aic3106 " } ,
2021-04-06 17:24:39 +03:00
{ } ,
} ;
MODULE_DEVICE_TABLE ( of , aic3x_of_id ) ;
static struct spi_driver aic3x_spi_driver = {
. driver = {
. name = " tlv320aic3x " ,
. of_match_table = aic3x_of_id ,
} ,
. probe = aic3x_spi_probe ,
. remove = aic3x_spi_remove ,
. id_table = aic3x_spi_id ,
} ;
module_spi_driver ( aic3x_spi_driver ) ;
MODULE_DESCRIPTION ( " ASoC TLV320AIC3x codec driver SPI " ) ;
MODULE_AUTHOR ( " Arun KS <arunks@mistralsolutions.com> " ) ;
MODULE_LICENSE ( " GPL " ) ;