@ -69,9 +69,7 @@ static unsigned int hw_read(struct snd_soc_codec *codec, unsigned int reg)
* snd_soc_codec_set_cache_io : Set up standard I / O functions .
*
* @ codec : CODEC to configure .
* @ addr_bits : Number of bits of register address data .
* @ data_bits : Number of bits of data per register .
* @ control : Control bus used .
* @ map : Register map to write to
*
* Register formats are frequently shared between many I2C and SPI
* devices . In order to promote code reuse the ASoC core provides
@ -85,41 +83,36 @@ static unsigned int hw_read(struct snd_soc_codec *codec, unsigned int reg)
* volatile registers .
*/
int snd_soc_codec_set_cache_io ( struct snd_soc_codec * codec ,
int addr_bits , int data_bits ,
enum snd_soc_control_type control )
struct regmap * regmap )
{
int ret ;
/* Device has made its own regmap arrangements */
if ( ! regmap )
codec - > control_data = dev_get_regmap ( codec - > dev , NULL ) ;
else
codec - > control_data = regmap ;
if ( IS_ERR ( codec - > control_data ) )
return PTR_ERR ( codec - > control_data ) ;
codec - > write = hw_write ;
codec - > read = hw_read ;
switch ( control ) {
case SND_SOC_REGMAP :
/* Device has made its own regmap arrangements */
codec - > using_regmap = true ;
if ( ! codec - > control_data )
codec - > control_data = dev_get_regmap ( codec - > dev , NULL ) ;
if ( codec - > control_data ) {
ret = regmap_get_val_bytes ( codec - > control_data ) ;
/* Errors are legitimate for non-integer byte
* multiples */
if ( ret > 0 )
codec - > val_bytes = ret ;
}
break ;
default :
return - EINVAL ;
}
ret = regmap_get_val_bytes ( codec - > control_data ) ;
/* Errors are legitimate for non-integer byte
* multiples */
if ( ret > 0 )
codec - > val_bytes = ret ;
codec - > using_regmap = true ;
return PTR_ERR_OR_ZERO ( codec - > control_data ) ;
return 0 ;
}
EXPORT_SYMBOL_GPL ( snd_soc_codec_set_cache_io ) ;
# else
int snd_soc_codec_set_cache_io ( struct snd_soc_codec * codec ,
int addr_bits , int data_bits ,
enum snd_soc_control_type control )
struct regmap * regmap )
{
return - ENOTSUPP ;
}