Skip to contentSkip to conversation

input/rtc: da9055: Remove conflicting use of regmap_irq_get_virq()

PATCH RESEND New Adam Thomson 1 participant 3 messages Mar 11, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover input/rtc: da9055: Remove conflicting use of regmap_irq_get_virq()

This patch set removes the use of regmap_irq_get_virq() in driver probes for da9055 (in particular RTC and ONKEY) which was conflicting with use of platform_get_irq_byname(). platform_get_irq_byname() already returns the VIRQ number due to MFD core translation so using regmap_irq_get_virq() on that returned value results in an incorrect IRQ being requested. The driver probes then fail because of this.

Resend again due to lack of response.

Adam Thomson (2):
input: da9055_onkey: Remove use of regmap_irq_get_virq()
rtc: da9055: Remove use of regmap_irq_get_virq()

 drivers/input/misc/da9055_onkey.c |    1 -
 drivers/rtc/rtc-da9055.c          |    4 +++-
 2 files changed, 3 insertions(+), 2 deletions(-)
#1 lore raw

PATCH RESEND 1/2 input: da9055_onkey: Remove use of regmap_irq_get_virq()

Using platform_get_irq_byname() to retrieve the IRQ number returns the VIRQ number rather than the local IRQ number for the device. Passing that value then into regmap_irq_get_virq() causes a failure because the function is expecting the local IRQ number (e.g. 0, 1, 2, 3, etc). This patch removes use of regmap_irq_get_virq() to prevent this failure from happening.

---
 drivers/input/misc/da9055_onkey.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
drivers/input/misc/da9055_onkey.c +0 -1
index 4b11ede..4765799 100644
@@ -109,7 +109,6 @@ static int da9055_onkey_probe(struct platform_device *pdev)
 
 	INIT_DELAYED_WORK(&onkey->work, da9055_onkey_work);
 
-	irq = regmap_irq_get_virq(da9055->irq_data, irq);
 	err = request_threaded_irq(irq, NULL, da9055_onkey_irq,
 				   IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
 				   "ONKEY", onkey);

--
1.7.0.4

#2 lore raw

PATCH RESEND 2/2 rtc: da9055: Remove use of regmap_irq_get_virq()

In reply to Adam Thomson

Using platform_get_irq_byname() to retrieve the IRQ number returns the VIRQ number rather than the local IRQ number for the device. Passing that value then into regmap_irq_get_virq() causes a failure because the function is expecting the local IRQ number (e.g. 0, 1, 2, 3, etc). This patch removes use of regmap_irq_get_virq() to prevent this failure from happening

---
 drivers/rtc/rtc-da9055.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
drivers/rtc/rtc-da9055.c +3 -1
index 48cb2ac..a825491 100644
@@ -302,7 +302,9 @@ static int da9055_rtc_probe(struct platform_device *pdev)
 	}
 
 	alm_irq = platform_get_irq_byname(pdev, "ALM");
-	alm_irq = regmap_irq_get_virq(rtc->da9055->irq_data, alm_irq);
+	if (alm_irq < 0)
+		return alm_irq;
+
 	ret = devm_request_threaded_irq(&pdev->dev, alm_irq, NULL,
 					da9055_rtc_alm_irq,
 					IRQF_TRIGGER_HIGH | IRQF_ONESHOT,

--
1.7.0.4