aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/wm8985.c
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2013-01-29 04:48:30 -0500
committerJiri Kosina <jkosina@suse.cz>2013-01-29 04:48:30 -0500
commit617677295b53a40d0e54aac4cbbc216ffbc755dd (patch)
tree51b9e87213243ed5efff252c8e8d8fec4eebc588 /sound/soc/codecs/wm8985.c
parent5c8d1b68e01a144813e38795fe6dbe7ebb506131 (diff)
parent6abb7c25775b7fb2225ad0508236d63ca710e65f (diff)
Merge branch 'master' into for-next
Conflicts: drivers/devfreq/exynos4_bus.c Sync with Linus' tree to be able to apply patches that are against newer code (mvneta).
Diffstat (limited to 'sound/soc/codecs/wm8985.c')
-rw-r--r--sound/soc/codecs/wm8985.c44
1 files changed, 11 insertions, 33 deletions
diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c
index 3b37fc4a7ea7..7d6b9f23cfe0 100644
--- a/sound/soc/codecs/wm8985.c
+++ b/sound/soc/codecs/wm8985.c
@@ -1111,7 +1111,7 @@ static const struct regmap_config wm8985_regmap = {
1111}; 1111};
1112 1112
1113#if defined(CONFIG_SPI_MASTER) 1113#if defined(CONFIG_SPI_MASTER)
1114static int __devinit wm8985_spi_probe(struct spi_device *spi) 1114static int wm8985_spi_probe(struct spi_device *spi)
1115{ 1115{
1116 struct wm8985_priv *wm8985; 1116 struct wm8985_priv *wm8985;
1117 int ret; 1117 int ret;
@@ -1122,33 +1122,22 @@ static int __devinit wm8985_spi_probe(struct spi_device *spi)
1122 1122
1123 spi_set_drvdata(spi, wm8985); 1123 spi_set_drvdata(spi, wm8985);
1124 1124
1125 wm8985->regmap = regmap_init_spi(spi, &wm8985_regmap); 1125 wm8985->regmap = devm_regmap_init_spi(spi, &wm8985_regmap);
1126 if (IS_ERR(wm8985->regmap)) { 1126 if (IS_ERR(wm8985->regmap)) {
1127 ret = PTR_ERR(wm8985->regmap); 1127 ret = PTR_ERR(wm8985->regmap);
1128 dev_err(&spi->dev, "Failed to allocate register map: %d\n", 1128 dev_err(&spi->dev, "Failed to allocate register map: %d\n",
1129 ret); 1129 ret);
1130 goto err; 1130 return ret;
1131 } 1131 }
1132 1132
1133 ret = snd_soc_register_codec(&spi->dev, 1133 ret = snd_soc_register_codec(&spi->dev,
1134 &soc_codec_dev_wm8985, &wm8985_dai, 1); 1134 &soc_codec_dev_wm8985, &wm8985_dai, 1);
1135 if (ret != 0)
1136 goto err;
1137
1138 return 0;
1139
1140err:
1141 regmap_exit(wm8985->regmap);
1142 return ret; 1135 return ret;
1143} 1136}
1144 1137
1145static int __devexit wm8985_spi_remove(struct spi_device *spi) 1138static int wm8985_spi_remove(struct spi_device *spi)
1146{ 1139{
1147 struct wm8985_priv *wm8985 = spi_get_drvdata(spi);
1148
1149 snd_soc_unregister_codec(&spi->dev); 1140 snd_soc_unregister_codec(&spi->dev);
1150 regmap_exit(wm8985->regmap);
1151
1152 return 0; 1141 return 0;
1153} 1142}
1154 1143
@@ -1158,13 +1147,13 @@ static struct spi_driver wm8985_spi_driver = {
1158 .owner = THIS_MODULE, 1147 .owner = THIS_MODULE,
1159 }, 1148 },
1160 .probe = wm8985_spi_probe, 1149 .probe = wm8985_spi_probe,
1161 .remove = __devexit_p(wm8985_spi_remove) 1150 .remove = wm8985_spi_remove
1162}; 1151};
1163#endif 1152#endif
1164 1153
1165#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) 1154#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
1166static __devinit int wm8985_i2c_probe(struct i2c_client *i2c, 1155static int wm8985_i2c_probe(struct i2c_client *i2c,
1167 const struct i2c_device_id *id) 1156 const struct i2c_device_id *id)
1168{ 1157{
1169 struct wm8985_priv *wm8985; 1158 struct wm8985_priv *wm8985;
1170 int ret; 1159 int ret;
@@ -1175,33 +1164,22 @@ static __devinit int wm8985_i2c_probe(struct i2c_client *i2c,
1175 1164
1176 i2c_set_clientdata(i2c, wm8985); 1165 i2c_set_clientdata(i2c, wm8985);
1177 1166
1178 wm8985->regmap = regmap_init_i2c(i2c, &wm8985_regmap); 1167 wm8985->regmap = devm_regmap_init_i2c(i2c, &wm8985_regmap);
1179 if (IS_ERR(wm8985->regmap)) { 1168 if (IS_ERR(wm8985->regmap)) {
1180 ret = PTR_ERR(wm8985->regmap); 1169 ret = PTR_ERR(wm8985->regmap);
1181 dev_err(&i2c->dev, "Failed to allocate register map: %d\n", 1170 dev_err(&i2c->dev, "Failed to allocate register map: %d\n",
1182 ret); 1171 ret);
1183 goto err; 1172 return ret;
1184 } 1173 }
1185 1174
1186 ret = snd_soc_register_codec(&i2c->dev, 1175 ret = snd_soc_register_codec(&i2c->dev,
1187 &soc_codec_dev_wm8985, &wm8985_dai, 1); 1176 &soc_codec_dev_wm8985, &wm8985_dai, 1);
1188 if (ret != 0)
1189 goto err;
1190
1191 return 0;
1192
1193err:
1194 regmap_exit(wm8985->regmap);
1195 return ret; 1177 return ret;
1196} 1178}
1197 1179
1198static __devexit int wm8985_i2c_remove(struct i2c_client *i2c) 1180static int wm8985_i2c_remove(struct i2c_client *i2c)
1199{ 1181{
1200 struct wm8985_priv *wm8985 = i2c_get_clientdata(i2c);
1201
1202 snd_soc_unregister_codec(&i2c->dev); 1182 snd_soc_unregister_codec(&i2c->dev);
1203 regmap_exit(wm8985->regmap);
1204
1205 return 0; 1183 return 0;
1206} 1184}
1207 1185
@@ -1217,7 +1195,7 @@ static struct i2c_driver wm8985_i2c_driver = {
1217 .owner = THIS_MODULE, 1195 .owner = THIS_MODULE,
1218 }, 1196 },
1219 .probe = wm8985_i2c_probe, 1197 .probe = wm8985_i2c_probe,
1220 .remove = __devexit_p(wm8985_i2c_remove), 1198 .remove = wm8985_i2c_remove,
1221 .id_table = wm8985_i2c_id 1199 .id_table = wm8985_i2c_id
1222}; 1200};
1223#endif 1201#endif