diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2013-05-02 08:29:43 -0300 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-03-20 17:35:16 +0900 |
commit | c8b69578a0f2947d5e25bdf2dbaacba8cf1c587c (patch) | |
tree | 20c0ccc79540abc92c20f1e467286d758fef9161 /drivers/media | |
parent | 54438c9d368d4d27d28e9e20640d2a88c09968a5 (diff) | |
download | linux-3.10-c8b69578a0f2947d5e25bdf2dbaacba8cf1c587c.tar.gz linux-3.10-c8b69578a0f2947d5e25bdf2dbaacba8cf1c587c.tar.bz2 linux-3.10-c8b69578a0f2947d5e25bdf2dbaacba8cf1c587c.zip |
[media] m5mols: Convert to devm_request_irq()
Using the managed function the free_irq() calls can be removed from the
probe error path and the remove handler.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/i2c/m5mols/m5mols_core.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/media/i2c/m5mols/m5mols_core.c b/drivers/media/i2c/m5mols/m5mols_core.c index ff15e33cb33..8119b309091 100644 --- a/drivers/media/i2c/m5mols/m5mols_core.c +++ b/drivers/media/i2c/m5mols/m5mols_core.c @@ -1009,11 +1009,11 @@ static int m5mols_probe(struct i2c_client *client, init_waitqueue_head(&info->irq_waitq); mutex_init(&info->lock); - ret = request_irq(client->irq, m5mols_irq_handler, - IRQF_TRIGGER_RISING, MODULE_NAME, sd); + ret = devm_request_irq(&client->dev, client->irq, m5mols_irq_handler, + IRQF_TRIGGER_RISING, MODULE_NAME, sd); if (ret) { dev_err(&client->dev, "Interrupt request failed: %d\n", ret); - goto out_me; + goto error; } info->res_type = M5MOLS_RESTYPE_MONITOR; info->ffmt[0] = m5mols_default_ffmt[0]; @@ -1021,7 +1021,7 @@ static int m5mols_probe(struct i2c_client *client, ret = m5mols_sensor_power(info, true); if (ret) - goto out_irq; + goto error; ret = m5mols_fw_start(sd); if (!ret) @@ -1030,9 +1030,7 @@ static int m5mols_probe(struct i2c_client *client, ret = m5mols_sensor_power(info, false); if (!ret) return 0; -out_irq: - free_irq(client->irq, sd); -out_me: +error: media_entity_cleanup(&sd->entity); return ret; } @@ -1043,8 +1041,6 @@ static int m5mols_remove(struct i2c_client *client) v4l2_device_unregister_subdev(sd); v4l2_ctrl_handler_free(sd->ctrl_handler); - free_irq(client->irq, sd); - media_entity_cleanup(&sd->entity); return 0; |