2019-06-04 11:11:33 +03:00
// SPDX-License-Identifier: GPL-2.0-only
2014-03-06 14:04:41 +04:00
/*
* ALSA SoC TLV320AIC23 codec driver I2C 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/i2c.h>
# include <linux/module.h>
2014-04-04 09:59:12 +04:00
# include <linux/of.h>
2014-03-06 14:04:41 +04:00
# include <linux/regmap.h>
# include <sound/soc.h>
# include "tlv320aic23.h"
2022-04-05 19:58:34 +03:00
static int tlv320aic23_i2c_probe ( struct i2c_client * i2c )
2014-03-06 14:04:41 +04:00
{
struct regmap * regmap ;
if ( ! i2c_check_functionality ( i2c - > adapter , I2C_FUNC_SMBUS_BYTE_DATA ) )
return - EINVAL ;
regmap = devm_regmap_init_i2c ( i2c , & tlv320aic23_regmap ) ;
return tlv320aic23_probe ( & i2c - > dev , regmap ) ;
}
static const struct i2c_device_id tlv320aic23_id [ ] = {
{ " tlv320aic23 " , 0 } ,
{ }
} ;
MODULE_DEVICE_TABLE ( i2c , tlv320aic23_id ) ;
2020-11-25 19:44:44 +03:00
# ifdef CONFIG_OF
2014-03-31 22:38:17 +04:00
static const struct of_device_id tlv320aic23_of_match [ ] = {
{ . compatible = " ti,tlv320aic23 " , } ,
{ }
} ;
MODULE_DEVICE_TABLE ( of , tlv320aic23_of_match ) ;
2020-11-25 19:44:44 +03:00
# endif
2014-03-31 22:38:17 +04:00
2014-03-06 14:04:41 +04:00
static struct i2c_driver tlv320aic23_i2c_driver = {
. driver = {
. name = " tlv320aic23-codec " ,
2014-03-31 22:38:17 +04:00
. of_match_table = of_match_ptr ( tlv320aic23_of_match ) ,
2014-03-06 14:04:41 +04:00
} ,
2023-04-25 12:57:16 +03:00
. probe = tlv320aic23_i2c_probe ,
2014-03-06 14:04:41 +04:00
. id_table = tlv320aic23_id ,
} ;
module_i2c_driver ( tlv320aic23_i2c_driver ) ;
MODULE_DESCRIPTION ( " ASoC TLV320AIC23 codec driver I2C " ) ;
MODULE_AUTHOR ( " Arun KS <arunks@mistralsolutions.com> " ) ;
MODULE_LICENSE ( " GPL " ) ;