diff options
-rw-r--r-- | drivers/iio/dac/ad5446.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c index cae8f6056ac3..96e9ed4c2d01 100644 --- a/drivers/iio/dac/ad5446.c +++ b/drivers/iio/dac/ad5446.c | |||
@@ -220,11 +220,11 @@ static int ad5446_probe(struct device *dev, const char *name, | |||
220 | struct regulator *reg; | 220 | struct regulator *reg; |
221 | int ret, voltage_uv = 0; | 221 | int ret, voltage_uv = 0; |
222 | 222 | ||
223 | reg = regulator_get(dev, "vcc"); | 223 | reg = devm_regulator_get(dev, "vcc"); |
224 | if (!IS_ERR(reg)) { | 224 | if (!IS_ERR(reg)) { |
225 | ret = regulator_enable(reg); | 225 | ret = regulator_enable(reg); |
226 | if (ret) | 226 | if (ret) |
227 | goto error_put_reg; | 227 | return ret; |
228 | 228 | ||
229 | ret = regulator_get_voltage(reg); | 229 | ret = regulator_get_voltage(reg); |
230 | if (ret < 0) | 230 | if (ret < 0) |
@@ -233,7 +233,7 @@ static int ad5446_probe(struct device *dev, const char *name, | |||
233 | voltage_uv = ret; | 233 | voltage_uv = ret; |
234 | } | 234 | } |
235 | 235 | ||
236 | indio_dev = iio_device_alloc(sizeof(*st)); | 236 | indio_dev = devm_iio_device_alloc(dev, sizeof(*st)); |
237 | if (indio_dev == NULL) { | 237 | if (indio_dev == NULL) { |
238 | ret = -ENOMEM; | 238 | ret = -ENOMEM; |
239 | goto error_disable_reg; | 239 | goto error_disable_reg; |
@@ -264,19 +264,13 @@ static int ad5446_probe(struct device *dev, const char *name, | |||
264 | 264 | ||
265 | ret = iio_device_register(indio_dev); | 265 | ret = iio_device_register(indio_dev); |
266 | if (ret) | 266 | if (ret) |
267 | goto error_free_device; | 267 | goto error_disable_reg; |
268 | 268 | ||
269 | return 0; | 269 | return 0; |
270 | 270 | ||
271 | error_free_device: | ||
272 | iio_device_free(indio_dev); | ||
273 | error_disable_reg: | 271 | error_disable_reg: |
274 | if (!IS_ERR(reg)) | 272 | if (!IS_ERR(reg)) |
275 | regulator_disable(reg); | 273 | regulator_disable(reg); |
276 | error_put_reg: | ||
277 | if (!IS_ERR(reg)) | ||
278 | regulator_put(reg); | ||
279 | |||
280 | return ret; | 274 | return ret; |
281 | } | 275 | } |
282 | 276 | ||
@@ -286,11 +280,8 @@ static int ad5446_remove(struct device *dev) | |||
286 | struct ad5446_state *st = iio_priv(indio_dev); | 280 | struct ad5446_state *st = iio_priv(indio_dev); |
287 | 281 | ||
288 | iio_device_unregister(indio_dev); | 282 | iio_device_unregister(indio_dev); |
289 | if (!IS_ERR(st->reg)) { | 283 | if (!IS_ERR(st->reg)) |
290 | regulator_disable(st->reg); | 284 | regulator_disable(st->reg); |
291 | regulator_put(st->reg); | ||
292 | } | ||
293 | iio_device_free(indio_dev); | ||
294 | 285 | ||
295 | return 0; | 286 | return 0; |
296 | } | 287 | } |