aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2013-02-02 19:59:00 -0500
committerJonathan Cameron <jic23@kernel.org>2013-02-06 13:38:40 -0500
commit7c3e8675f37503337d901dc254cba253326b572a (patch)
tree2bb58a795813c4d4b5b2281c3be963bc4a63638b /drivers/iio
parent82e9ee616a89f152f42c7051c5f9f5f0d7663652 (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>
Diffstat (limited to 'drivers/iio')
-rw-r--r--drivers/iio/adc/max1363.c29
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;
1560error_free_irq: 1561
1561 if (client->irq)
1562 free_irq(st->client->irq, indio_dev);
1563error_uninit_buffer: 1562error_uninit_buffer:
1564 iio_triggered_buffer_cleanup(indio_dev); 1563 iio_triggered_buffer_cleanup(indio_dev);
1565error_free_available_scan_masks:
1566 kfree(indio_dev->available_scan_masks);
1567error_disable_reg: 1564error_disable_reg:
1568 regulator_disable(st->reg); 1565 regulator_disable(st->reg);
1569error_put_reg:
1570 regulator_put(st->reg);
1571error_unregister_map: 1566error_unregister_map:
1572 iio_map_array_unregister(indio_dev); 1567 iio_map_array_unregister(indio_dev);
1573error_free_device: 1568error_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