diff options
Diffstat (limited to 'sound/soc/codecs/adav80x.c')
-rw-r--r-- | sound/soc/codecs/adav80x.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c index f78b27a7c461..a4bd051c5430 100644 --- a/sound/soc/codecs/adav80x.c +++ b/sound/soc/codecs/adav80x.c | |||
@@ -872,27 +872,15 @@ static int adav80x_bus_probe(struct device *dev, struct regmap *regmap) | |||
872 | if (IS_ERR(regmap)) | 872 | if (IS_ERR(regmap)) |
873 | return PTR_ERR(regmap); | 873 | return PTR_ERR(regmap); |
874 | 874 | ||
875 | adav80x = kzalloc(sizeof(*adav80x), GFP_KERNEL); | 875 | adav80x = devm_kzalloc(dev, sizeof(*adav80x), GFP_KERNEL); |
876 | if (!adav80x) | 876 | if (!adav80x) |
877 | return -ENOMEM; | 877 | return -ENOMEM; |
878 | 878 | ||
879 | |||
880 | dev_set_drvdata(dev, adav80x); | 879 | dev_set_drvdata(dev, adav80x); |
881 | adav80x->regmap = regmap; | 880 | adav80x->regmap = regmap; |
882 | 881 | ||
883 | ret = snd_soc_register_codec(dev, &adav80x_codec_driver, | 882 | return snd_soc_register_codec(dev, &adav80x_codec_driver, |
884 | adav80x_dais, ARRAY_SIZE(adav80x_dais)); | 883 | adav80x_dais, ARRAY_SIZE(adav80x_dais)); |
885 | if (ret) | ||
886 | kfree(adav80x); | ||
887 | |||
888 | return ret; | ||
889 | } | ||
890 | |||
891 | static int adav80x_bus_remove(struct device *dev) | ||
892 | { | ||
893 | snd_soc_unregister_codec(dev); | ||
894 | kfree(dev_get_drvdata(dev)); | ||
895 | return 0; | ||
896 | } | 884 | } |
897 | 885 | ||
898 | #if defined(CONFIG_SPI_MASTER) | 886 | #if defined(CONFIG_SPI_MASTER) |
@@ -923,7 +911,8 @@ static int adav80x_spi_probe(struct spi_device *spi) | |||
923 | 911 | ||
924 | static int adav80x_spi_remove(struct spi_device *spi) | 912 | static int adav80x_spi_remove(struct spi_device *spi) |
925 | { | 913 | { |
926 | return adav80x_bus_remove(&spi->dev); | 914 | snd_soc_unregister_codec(dev); |
915 | return 0; | ||
927 | } | 916 | } |
928 | 917 | ||
929 | static struct spi_driver adav80x_spi_driver = { | 918 | static struct spi_driver adav80x_spi_driver = { |
@@ -965,7 +954,8 @@ static int adav80x_i2c_probe(struct i2c_client *client, | |||
965 | 954 | ||
966 | static int adav80x_i2c_remove(struct i2c_client *client) | 955 | static int adav80x_i2c_remove(struct i2c_client *client) |
967 | { | 956 | { |
968 | return adav80x_bus_remove(&client->dev); | 957 | snd_soc_unregister_codec(dev); |
958 | return 0; | ||
969 | } | 959 | } |
970 | 960 | ||
971 | static struct i2c_driver adav80x_i2c_driver = { | 961 | static struct i2c_driver adav80x_i2c_driver = { |