@ -3624,7 +3624,7 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
return ret ;
}
wm8962 - > regmap = regmap_init_i2c ( i2c , & wm8962_regmap ) ;
wm8962 - > regmap = devm_ regmap_init_i2c( i2c , & wm8962_regmap ) ;
if ( IS_ERR ( wm8962 - > regmap ) ) {
ret = PTR_ERR ( wm8962 - > regmap ) ;
dev_err ( & i2c - > dev , " Failed to allocate regmap: %d \n " , ret ) ;
@ -3641,20 +3641,20 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
ret = regmap_read ( wm8962 - > regmap , WM8962_SOFTWARE_RESET , & reg ) ;
if ( ret < 0 ) {
dev_err ( & i2c - > dev , " Failed to read ID register \n " ) ;
goto err_regmap ;
goto err_enable ;
}
if ( reg ! = 0x6243 ) {
dev_err ( & i2c - > dev ,
" Device is not a WM8962, ID %x != 0x6243 \n " , reg ) ;
ret = - EINVAL ;
goto err_regmap ;
goto err_enable ;
}
ret = regmap_read ( wm8962 - > regmap , WM8962_RIGHT_INPUT_VOLUME , & reg ) ;
if ( ret < 0 ) {
dev_err ( & i2c - > dev , " Failed to read device revision: %d \n " ,
ret ) ;
goto err_regmap ;
goto err_enable ;
}
dev_info ( & i2c - > dev , " customer id %x revision %c \n " ,
@ -3667,7 +3667,7 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
ret = wm8962_reset ( wm8962 ) ;
if ( ret < 0 ) {
dev_err ( & i2c - > dev , " Failed to issue reset \n " ) ;
goto err_regmap ;
goto err_enable ;
}
if ( pdata & & pdata - > in4_dc_measure ) {
@ -3686,15 +3686,13 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c,
ret = snd_soc_register_codec ( & i2c - > dev ,
& soc_codec_dev_wm8962 , & wm8962_dai , 1 ) ;
if ( ret < 0 )
goto err_regmap ;
goto err_enable ;
/* The drivers should power up as needed */
regulator_bulk_disable ( ARRAY_SIZE ( wm8962 - > supplies ) , wm8962 - > supplies ) ;
return 0 ;
err_regmap :
regmap_exit ( wm8962 - > regmap ) ;
err_enable :
regulator_bulk_disable ( ARRAY_SIZE ( wm8962 - > supplies ) , wm8962 - > supplies ) ;
err :
@ -3703,10 +3701,7 @@ err:
static __devexit int wm8962_i2c_remove ( struct i2c_client * client )
{
struct wm8962_priv * wm8962 = dev_get_drvdata ( & client - > dev ) ;
snd_soc_unregister_codec ( & client - > dev ) ;
regmap_exit ( wm8962 - > regmap ) ;
return 0 ;
}