summaryrefslogtreecommitdiff
path: root/patches.tizen/0740-media-m5mols-Convert-to-devm_request_irq.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches.tizen/0740-media-m5mols-Convert-to-devm_request_irq.patch')
-rw-r--r--patches.tizen/0740-media-m5mols-Convert-to-devm_request_irq.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/patches.tizen/0740-media-m5mols-Convert-to-devm_request_irq.patch b/patches.tizen/0740-media-m5mols-Convert-to-devm_request_irq.patch
new file mode 100644
index 00000000000..bdc361b54d5
--- /dev/null
+++ b/patches.tizen/0740-media-m5mols-Convert-to-devm_request_irq.patch
@@ -0,0 +1,67 @@
+From 27c097c100348917d71432a5e1f5132a073552b8 Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Thu, 2 May 2013 08:29:43 -0300
+Subject: [PATCH 0740/1302] [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>
+Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
+---
+ drivers/media/i2c/m5mols/m5mols_core.c | 14 +++++---------
+ 1 file changed, 5 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/media/i2c/m5mols/m5mols_core.c b/drivers/media/i2c/m5mols/m5mols_core.c
+index ff15e33..8119b30 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;
+--
+1.8.3.2
+