diff mbox

[1/4] rtc-rx8025: fix irq handler registration

Message ID 1455547749-5229-1-git-send-email-akinobu.mita@gmail.com
State Accepted
Headers show

Commit Message

Akinobu Mita Feb. 15, 2016, 2:49 p.m. UTC
When IRQ line for this chips is connected, devm_request_threaded_irq()
refuses to register irq handler with the following message.

genirq: Threaded irq requested with handler=NULL and !ONESHOT for irq

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---
 drivers/rtc/rtc-rx8025.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Alexandre Belloni Feb. 16, 2016, 1:25 a.m. UTC | #1
Hi,

Not completely related to that patch series but I was wondering if you
had access to that particular RTC.

The rtc-d1307 driver claims to also support rx8025 but my guess is that
is is not necessary anymore. Could you check which one we should keep?

Thanks!


On 15/02/2016 at 23:49:06 +0900, Akinobu Mita wrote :
> When IRQ line for this chips is connected, devm_request_threaded_irq()
> refuses to register irq handler with the following message.
> 
> genirq: Threaded irq requested with handler=NULL and !ONESHOT for irq
> 
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> Cc: Wolfgang Grandegger <wg@grandegger.com>
> Cc: Alessandro Zummo <a.zummo@towertech.it>
> Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
>  drivers/rtc/rtc-rx8025.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/rtc/rtc-rx8025.c b/drivers/rtc/rtc-rx8025.c
> index bd911ba..561248a 100644
> --- a/drivers/rtc/rtc-rx8025.c
> +++ b/drivers/rtc/rtc-rx8025.c
> @@ -539,8 +539,9 @@ static int rx8025_probe(struct i2c_client *client,
>  	if (client->irq > 0) {
>  		dev_info(&client->dev, "IRQ %d supplied\n", client->irq);
>  		err = devm_request_threaded_irq(&client->dev, client->irq, NULL,
> -						rx8025_handle_irq, 0, "rx8025",
> -						client);
> +						rx8025_handle_irq,
> +						IRQF_ONESHOT,
> +						"rx8025", client);
>  		if (err) {
>  			dev_err(&client->dev, "unable to request IRQ, alarms disabled\n");
>  			client->irq = 0;
> -- 
> 2.5.0
>
Akinobu Mita Feb. 16, 2016, 2:41 p.m. UTC | #2
2016-02-16 10:25 GMT+09:00 Alexandre Belloni
<alexandre.belloni@free-electrons.com>:
> Hi,
>
> Not completely related to that patch series but I was wondering if you
> had access to that particular RTC.
>
> The rtc-d1307 driver claims to also support rx8025 but my guess is that
> is is not necessary anymore. Could you check which one we should keep?

rx8025 in rtc-ds1307 driver doesn't support alarm, so we should keep
rtc-rx8025.  But rtc-rx8025 driver currently requires both
I2C_FUNC_SMBUS_BYTE_DATA and I2C_FUNC_SMBUS_I2C_BLOCK for i2c adapter
while rx8025 in rtc-ds1307 driver requires one of them.  So we can't
simply remove rx8025 support from rtc-ds1307 now.

Maybe we can introduce emulated read/write_i2c_block_data functions
for this.
Alexandre Belloni Feb. 23, 2016, 11:23 p.m. UTC | #3
On 15/02/2016 at 23:49:06 +0900, Akinobu Mita wrote :
> When IRQ line for this chips is connected, devm_request_threaded_irq()
> refuses to register irq handler with the following message.
> 
> genirq: Threaded irq requested with handler=NULL and !ONESHOT for irq
> 
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> Cc: Wolfgang Grandegger <wg@grandegger.com>
> Cc: Alessandro Zummo <a.zummo@towertech.it>
> Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
>  drivers/rtc/rtc-rx8025.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
All applied, thanks.
diff mbox

Patch

diff --git a/drivers/rtc/rtc-rx8025.c b/drivers/rtc/rtc-rx8025.c
index bd911ba..561248a 100644
--- a/drivers/rtc/rtc-rx8025.c
+++ b/drivers/rtc/rtc-rx8025.c
@@ -539,8 +539,9 @@  static int rx8025_probe(struct i2c_client *client,
 	if (client->irq > 0) {
 		dev_info(&client->dev, "IRQ %d supplied\n", client->irq);
 		err = devm_request_threaded_irq(&client->dev, client->irq, NULL,
-						rx8025_handle_irq, 0, "rx8025",
-						client);
+						rx8025_handle_irq,
+						IRQF_ONESHOT,
+						"rx8025", client);
 		if (err) {
 			dev_err(&client->dev, "unable to request IRQ, alarms disabled\n");
 			client->irq = 0;