diff options
author | Guenter Roeck <linux@roeck-us.net> | 2013-02-02 19:59:00 -0500 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2013-02-06 13:38:40 -0500 |
commit | 7c3e8675f37503337d901dc254cba253326b572a (patch) | |
tree | 2bb58a795813c4d4b5b2281c3be963bc4a63638b | |
parent | 82e9ee616a89f152f42c7051c5f9f5f0d7663652 (diff) |
iio: max1363: Use devm_ functions whereever possible to allocate resources
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r-- | drivers/iio/adc/max1363.c | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/drivers/iio/adc/max1363.c b/drivers/iio/adc/max1363.c index 08e4feb4f6ee..c5e46c62ffbb 100644 --- a/drivers/iio/adc/max1363.c +++ b/drivers/iio/adc/max1363.c | |||
@@ -1410,8 +1410,9 @@ static int max1363_alloc_scan_masks(struct iio_dev *indio_dev) | |||
1410 | unsigned long *masks; | 1410 | unsigned long *masks; |
1411 | int i; | 1411 | int i; |
1412 | 1412 | ||
1413 | masks = kzalloc(BITS_TO_LONGS(MAX1363_MAX_CHANNELS)*sizeof(long)* | 1413 | masks = devm_kzalloc(&indio_dev->dev, |
1414 | (st->chip_info->num_modes + 1), GFP_KERNEL); | 1414 | BITS_TO_LONGS(MAX1363_MAX_CHANNELS) * sizeof(long) * |
1415 | (st->chip_info->num_modes + 1), GFP_KERNEL); | ||
1415 | if (!masks) | 1416 | if (!masks) |
1416 | return -ENOMEM; | 1417 | return -ENOMEM; |
1417 | 1418 | ||
@@ -1504,7 +1505,7 @@ static int max1363_probe(struct i2c_client *client, | |||
1504 | 1505 | ||
1505 | st = iio_priv(indio_dev); | 1506 | st = iio_priv(indio_dev); |
1506 | 1507 | ||
1507 | st->reg = regulator_get(&client->dev, "vcc"); | 1508 | st->reg = devm_regulator_get(&client->dev, "vcc"); |
1508 | if (IS_ERR(st->reg)) { | 1509 | if (IS_ERR(st->reg)) { |
1509 | ret = PTR_ERR(st->reg); | 1510 | ret = PTR_ERR(st->reg); |
1510 | goto error_unregister_map; | 1511 | goto error_unregister_map; |
@@ -1512,7 +1513,7 @@ static int max1363_probe(struct i2c_client *client, | |||
1512 | 1513 | ||
1513 | ret = regulator_enable(st->reg); | 1514 | ret = regulator_enable(st->reg); |
1514 | if (ret) | 1515 | if (ret) |
1515 | goto error_put_reg; | 1516 | goto error_unregister_map; |
1516 | 1517 | ||
1517 | /* this is only used for device removal purposes */ | 1518 | /* this is only used for device removal purposes */ |
1518 | i2c_set_clientdata(client, indio_dev); | 1519 | i2c_set_clientdata(client, indio_dev); |
@@ -1533,15 +1534,15 @@ static int max1363_probe(struct i2c_client *client, | |||
1533 | indio_dev->modes = INDIO_DIRECT_MODE; | 1534 | indio_dev->modes = INDIO_DIRECT_MODE; |
1534 | ret = max1363_initial_setup(st); | 1535 | ret = max1363_initial_setup(st); |
1535 | if (ret < 0) | 1536 | if (ret < 0) |
1536 | goto error_free_available_scan_masks; | 1537 | goto error_disable_reg; |
1537 | 1538 | ||
1538 | ret = iio_triggered_buffer_setup(indio_dev, NULL, | 1539 | ret = iio_triggered_buffer_setup(indio_dev, NULL, |
1539 | &max1363_trigger_handler, &max1363_buffered_setup_ops); | 1540 | &max1363_trigger_handler, &max1363_buffered_setup_ops); |
1540 | if (ret) | 1541 | if (ret) |
1541 | goto error_free_available_scan_masks; | 1542 | goto error_disable_reg; |
1542 | 1543 | ||
1543 | if (client->irq) { | 1544 | if (client->irq) { |
1544 | ret = request_threaded_irq(st->client->irq, | 1545 | ret = devm_request_threaded_irq(&client->dev, st->client->irq, |
1545 | NULL, | 1546 | NULL, |
1546 | &max1363_event_handler, | 1547 | &max1363_event_handler, |
1547 | IRQF_TRIGGER_RISING | IRQF_ONESHOT, | 1548 | IRQF_TRIGGER_RISING | IRQF_ONESHOT, |
@@ -1554,20 +1555,14 @@ static int max1363_probe(struct i2c_client *client, | |||
1554 | 1555 | ||
1555 | ret = iio_device_register(indio_dev); | 1556 | ret = iio_device_register(indio_dev); |
1556 | if (ret < 0) | 1557 | if (ret < 0) |
1557 | goto error_free_irq; | 1558 | goto error_uninit_buffer; |
1558 | 1559 | ||
1559 | return 0; | 1560 | return 0; |
1560 | error_free_irq: | 1561 | |
1561 | if (client->irq) | ||
1562 | free_irq(st->client->irq, indio_dev); | ||
1563 | error_uninit_buffer: | 1562 | error_uninit_buffer: |
1564 | iio_triggered_buffer_cleanup(indio_dev); | 1563 | iio_triggered_buffer_cleanup(indio_dev); |
1565 | error_free_available_scan_masks: | ||
1566 | kfree(indio_dev->available_scan_masks); | ||
1567 | error_disable_reg: | 1564 | error_disable_reg: |
1568 | regulator_disable(st->reg); | 1565 | regulator_disable(st->reg); |
1569 | error_put_reg: | ||
1570 | regulator_put(st->reg); | ||
1571 | error_unregister_map: | 1566 | error_unregister_map: |
1572 | iio_map_array_unregister(indio_dev); | 1567 | iio_map_array_unregister(indio_dev); |
1573 | error_free_device: | 1568 | error_free_device: |
@@ -1582,12 +1577,8 @@ static int max1363_remove(struct i2c_client *client) | |||
1582 | struct max1363_state *st = iio_priv(indio_dev); | 1577 | struct max1363_state *st = iio_priv(indio_dev); |
1583 | 1578 | ||
1584 | iio_device_unregister(indio_dev); | 1579 | iio_device_unregister(indio_dev); |
1585 | if (client->irq) | ||
1586 | free_irq(st->client->irq, indio_dev); | ||
1587 | iio_triggered_buffer_cleanup(indio_dev); | 1580 | iio_triggered_buffer_cleanup(indio_dev); |
1588 | kfree(indio_dev->available_scan_masks); | ||
1589 | regulator_disable(st->reg); | 1581 | regulator_disable(st->reg); |
1590 | regulator_put(st->reg); | ||
1591 | iio_map_array_unregister(indio_dev); | 1582 | iio_map_array_unregister(indio_dev); |
1592 | iio_device_free(indio_dev); | 1583 | iio_device_free(indio_dev); |
1593 | 1584 | ||