diff options
-rw-r--r-- | drivers/mfd/wm8994-core.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index 74d4746086c6..a6846b04e156 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c | |||
@@ -401,9 +401,9 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) | |||
401 | goto err_regmap; | 401 | goto err_regmap; |
402 | } | 402 | } |
403 | 403 | ||
404 | wm8994->supplies = kzalloc(sizeof(struct regulator_bulk_data) * | 404 | wm8994->supplies = devm_kzalloc(wm8994->dev, |
405 | wm8994->num_supplies, | 405 | sizeof(struct regulator_bulk_data) * |
406 | GFP_KERNEL); | 406 | wm8994->num_supplies, GFP_KERNEL); |
407 | if (!wm8994->supplies) { | 407 | if (!wm8994->supplies) { |
408 | ret = -ENOMEM; | 408 | ret = -ENOMEM; |
409 | goto err_regmap; | 409 | goto err_regmap; |
@@ -431,7 +431,7 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) | |||
431 | wm8994->supplies); | 431 | wm8994->supplies); |
432 | if (ret != 0) { | 432 | if (ret != 0) { |
433 | dev_err(wm8994->dev, "Failed to get supplies: %d\n", ret); | 433 | dev_err(wm8994->dev, "Failed to get supplies: %d\n", ret); |
434 | goto err_supplies; | 434 | goto err_regmap; |
435 | } | 435 | } |
436 | 436 | ||
437 | ret = regulator_bulk_enable(wm8994->num_supplies, | 437 | ret = regulator_bulk_enable(wm8994->num_supplies, |
@@ -559,12 +559,9 @@ err_enable: | |||
559 | wm8994->supplies); | 559 | wm8994->supplies); |
560 | err_get: | 560 | err_get: |
561 | regulator_bulk_free(wm8994->num_supplies, wm8994->supplies); | 561 | regulator_bulk_free(wm8994->num_supplies, wm8994->supplies); |
562 | err_supplies: | ||
563 | kfree(wm8994->supplies); | ||
564 | err_regmap: | 562 | err_regmap: |
565 | regmap_exit(wm8994->regmap); | 563 | regmap_exit(wm8994->regmap); |
566 | mfd_remove_devices(wm8994->dev); | 564 | mfd_remove_devices(wm8994->dev); |
567 | kfree(wm8994); | ||
568 | return ret; | 565 | return ret; |
569 | } | 566 | } |
570 | 567 | ||
@@ -576,9 +573,7 @@ static void wm8994_device_exit(struct wm8994 *wm8994) | |||
576 | regulator_bulk_disable(wm8994->num_supplies, | 573 | regulator_bulk_disable(wm8994->num_supplies, |
577 | wm8994->supplies); | 574 | wm8994->supplies); |
578 | regulator_bulk_free(wm8994->num_supplies, wm8994->supplies); | 575 | regulator_bulk_free(wm8994->num_supplies, wm8994->supplies); |
579 | kfree(wm8994->supplies); | ||
580 | regmap_exit(wm8994->regmap); | 576 | regmap_exit(wm8994->regmap); |
581 | kfree(wm8994); | ||
582 | } | 577 | } |
583 | 578 | ||
584 | static const struct of_device_id wm8994_of_match[] = { | 579 | static const struct of_device_id wm8994_of_match[] = { |
@@ -595,7 +590,7 @@ static int wm8994_i2c_probe(struct i2c_client *i2c, | |||
595 | struct wm8994 *wm8994; | 590 | struct wm8994 *wm8994; |
596 | int ret; | 591 | int ret; |
597 | 592 | ||
598 | wm8994 = kzalloc(sizeof(struct wm8994), GFP_KERNEL); | 593 | wm8994 = devm_kzalloc(&i2c->dev, sizeof(struct wm8994), GFP_KERNEL); |
599 | if (wm8994 == NULL) | 594 | if (wm8994 == NULL) |
600 | return -ENOMEM; | 595 | return -ENOMEM; |
601 | 596 | ||
@@ -609,7 +604,6 @@ static int wm8994_i2c_probe(struct i2c_client *i2c, | |||
609 | ret = PTR_ERR(wm8994->regmap); | 604 | ret = PTR_ERR(wm8994->regmap); |
610 | dev_err(wm8994->dev, "Failed to allocate register map: %d\n", | 605 | dev_err(wm8994->dev, "Failed to allocate register map: %d\n", |
611 | ret); | 606 | ret); |
612 | kfree(wm8994); | ||
613 | return ret; | 607 | return ret; |
614 | } | 608 | } |
615 | 609 | ||