Skip to contentSkip to conversation

Input: h3600_ts_input - bugfix for request_irq()/free_irq() parameters

PATCH In review Axel Lin 2 participants 4 messages Apr 13, 2011 – May 1, 2011

Subsystems (2)
lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/1 Input: h3600_ts_input - bugfix for request_irq()/free_irq() parameters

The dev field of h3600_dev is a pointer, thus use ts->dev instead of &ts->dev as the dev_id argument while calling request_irq()/free_irq().

---
 drivers/input/touchscreen/h3600_ts_input.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
drivers/input/touchscreen/h3600_ts_input.c +4 -4
index 45f93d0..211811a 100644
@@ -396,14 +396,14 @@ static int h3600ts_connect(struct serio *serio, struct serio_driver *drv)
 	set_GPIO_IRQ_edge(GPIO_BITSY_NPOWER_BUTTON, GPIO_RISING_EDGE);
 
 	if (request_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, action_button_handler,
-			IRQF_SHARED | IRQF_DISABLED, "h3600_action", &ts->dev)) {
+			IRQF_SHARED | IRQF_DISABLED, "h3600_action", ts->dev)) {
 		printk(KERN_ERR "h3600ts.c: Could not allocate Action Button IRQ!\n");
 		err = -EBUSY;
 		goto fail1;
 	}
 
 	if (request_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, npower_button_handler,
-			IRQF_SHARED | IRQF_DISABLED, "h3600_suspend", &ts->dev)) {
+			IRQF_SHARED | IRQF_DISABLED, "h3600_suspend", ts->dev)) {
 		printk(KERN_ERR "h3600ts.c: Could not allocate Power Button IRQ!\n");
 		err = -EBUSY;
 		goto fail2;
@@ -439,8 +439,8 @@ static void h3600ts_disconnect(struct serio *serio)
 {
 	struct h3600_dev *ts = serio_get_drvdata(serio);
 
-	free_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, &ts->dev);
-	free_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, &ts->dev);
+	free_irq(IRQ_GPIO_BITSY_ACTION_BUTTON, ts->dev);
+	free_irq(IRQ_GPIO_BITSY_NPOWER_BUTTON, ts->dev);
 	input_get_device(ts->dev);
 	input_unregister_device(ts->dev);
 	serio_close(serio);
Signature · 1 line
1.7.1
maintainer
#1 lore raw
Quoted 2 lines · Axel Lin

The dev field of h3600_dev is a pointer, thus use ts->dev instead of &ts->dev as the dev_id argument while calling request_irq()/free_irq().

dev_id does not need to have specific type, it is just a cookie so as long as it's value is unique we are OK. &ts->dev works as well as ts->dev.

Thanks.

Signature · 1 line
Dmitry
author
#2 lore raw

Hi Dmitry,

2011/4/29 Dmitry Torokhov <[email protected]>:

Quoted 7 lines · Axel Lin
Quoted 2 lines

The dev field of h3600_dev is a pointer, thus use ts->dev instead of &ts->dev as the dev_id argument while calling request_irq()/free_irq().

dev_id does not need to have specific type, it is just a cookie so as long as it's value is unique we are OK. &ts->dev works as well as ts->dev.

Then you might want to apply below patch:
http://www.spinics.net/lists/linux-input/msg15042.html

My original intension was to fix the irq driver data mismatch.

Regards,
Axel

maintainer
#3 lore raw
Quoted 7 lines · Axel Lin

Hi Dmitry,

2011/4/29 Dmitry Torokhov <[email protected]>:

Quoted 4 lines · Axel Lin
Quoted 2 lines

The dev field of h3600_dev is a pointer, thus use ts->dev instead of &ts->dev as the dev_id argument while calling request_irq()/free_irq().

Quoted 9 lines
Quoted 3 lines

dev_id does not need to have specific type, it is just a cookie so as long as it's value is unique we are OK. &ts->dev works as well as ts->dev.

Then you might want to apply below patch:
http://www.spinics.net/lists/linux-input/msg15042.html

My original intension was to fix the irq driver data mismatch.

Ah, I see. Then I'll apply it but with teh above as commit message.

Signature · 1 line
Dmitry