All of lore.kernel.org
 help / color / mirror / Atom feed
* [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration
@ 2016-02-15 14:49 Akinobu Mita
  2016-02-15 14:49 ` [rtc-linux] [PATCH 2/4] rtc-rx8025: protect ctrl1 register update by rtc->ops_lock Akinobu Mita
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Akinobu Mita @ 2016-02-15 14:49 UTC (permalink / raw)
  To: rtc-linux
  Cc: Akinobu Mita, Wolfgang Grandegger, Alessandro Zummo, Alexandre Belloni

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

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [rtc-linux] [PATCH 2/4] rtc-rx8025: protect ctrl1 register update by rtc->ops_lock
  2016-02-15 14:49 [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration Akinobu Mita
@ 2016-02-15 14:49 ` Akinobu Mita
  2016-02-15 14:49 ` [rtc-linux] [PATCH 3/4] rtc-rx8025: round up to nearest minute for a minute accuracy alarm Akinobu Mita
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Akinobu Mita @ 2016-02-15 14:49 UTC (permalink / raw)
  To: rtc-linux
  Cc: Akinobu Mita, Wolfgang Grandegger, Alessandro Zummo, Alexandre Belloni

The ctrl1 register is accessed by alarm operations.  But it is updated
in threaded interrupt handler without acquiring rtc->ops_lock.

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 | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/rtc/rtc-rx8025.c b/drivers/rtc/rtc-rx8025.c
index 561248a..e667f01 100644
--- a/drivers/rtc/rtc-rx8025.c
+++ b/drivers/rtc/rtc-rx8025.c
@@ -147,8 +147,10 @@ static irqreturn_t rx8025_handle_irq(int irq, void *dev_id)
 {
 	struct i2c_client *client = dev_id;
 	struct rx8025_data *rx8025 = i2c_get_clientdata(client);
+	struct mutex *lock = &rx8025->rtc->ops_lock;
 	int status;
 
+	mutex_lock(lock);
 	status = rx8025_read_reg(client, RX8025_REG_CTRL2);
 	if (status < 0)
 		goto out;
@@ -173,6 +175,8 @@ static irqreturn_t rx8025_handle_irq(int irq, void *dev_id)
 	}
 
 out:
+	mutex_unlock(lock);
+
 	return IRQ_HANDLED;
 }
 
-- 
2.5.0

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [rtc-linux] [PATCH 3/4] rtc-rx8025: round up to nearest minute for a minute accuracy alarm
  2016-02-15 14:49 [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration Akinobu Mita
  2016-02-15 14:49 ` [rtc-linux] [PATCH 2/4] rtc-rx8025: protect ctrl1 register update by rtc->ops_lock Akinobu Mita
@ 2016-02-15 14:49 ` Akinobu Mita
  2016-02-15 14:49 ` [rtc-linux] [PATCH 4/4] rtc-rx8025: unsupport UIE mode Akinobu Mita
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Akinobu Mita @ 2016-02-15 14:49 UTC (permalink / raw)
  To: rtc-linux
  Cc: Akinobu Mita, Wolfgang Grandegger, Alessandro Zummo, Alexandre Belloni

The alarm for rx8025 only has a minute accuracy, so round up to nearest
minute when setting alarm.  Without doing this, rtctest blocks one day
after setting alarm to 5 seconds later.

pcf8563 and hym8563 also have similar handling.

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 | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-rx8025.c b/drivers/rtc/rtc-rx8025.c
index e667f01..23fe242 100644
--- a/drivers/rtc/rtc-rx8025.c
+++ b/drivers/rtc/rtc-rx8025.c
@@ -345,7 +345,17 @@ static int rx8025_set_alarm(struct device *dev, struct rtc_wkalrm *t)
 	if (client->irq <= 0)
 		return -EINVAL;
 
-	/* Hardware alarm precision is 1 minute! */
+	/*
+	 * Hardware alarm precision is 1 minute!
+	 * round up to nearest minute
+	 */
+	if (t->time.tm_sec) {
+		time64_t alarm_time = rtc_tm_to_time64(&t->time);
+
+		alarm_time += 60 - t->time.tm_sec;
+		rtc_time64_to_tm(alarm_time, &t->time);
+	}
+
 	ald[0] = bin2bcd(t->time.tm_min);
 	if (rx8025->ctrl1 & RX8025_BIT_CTRL1_1224)
 		ald[1] = bin2bcd(t->time.tm_hour);
-- 
2.5.0

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [rtc-linux] [PATCH 4/4] rtc-rx8025: unsupport UIE mode
  2016-02-15 14:49 [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration Akinobu Mita
  2016-02-15 14:49 ` [rtc-linux] [PATCH 2/4] rtc-rx8025: protect ctrl1 register update by rtc->ops_lock Akinobu Mita
  2016-02-15 14:49 ` [rtc-linux] [PATCH 3/4] rtc-rx8025: round up to nearest minute for a minute accuracy alarm Akinobu Mita
@ 2016-02-15 14:49 ` Akinobu Mita
  2016-02-16  1:25 ` [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration Alexandre Belloni
  2016-02-23 23:23 ` Alexandre Belloni
  4 siblings, 0 replies; 7+ messages in thread
From: Akinobu Mita @ 2016-02-15 14:49 UTC (permalink / raw)
  To: rtc-linux
  Cc: Akinobu Mita, Wolfgang Grandegger, Alessandro Zummo, Alexandre Belloni

The alarm for rx8025 only has a minute accuracy, so unsupport UIE mode.

pcf8563 and hym8563 also have a minute accuracy and unsupport it.

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 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/rtc/rtc-rx8025.c b/drivers/rtc/rtc-rx8025.c
index 23fe242..4199556 100644
--- a/drivers/rtc/rtc-rx8025.c
+++ b/drivers/rtc/rtc-rx8025.c
@@ -564,6 +564,9 @@ static int rx8025_probe(struct i2c_client *client,
 
 	rx8025->rtc->max_user_freq = 1;
 
+	/* the rx8025 alarm only supports a minute accuracy */
+	rx8025->rtc->uie_unsupported = 1;
+
 	err = rx8025_sysfs_register(&client->dev);
 	return err;
 }
-- 
2.5.0

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration
  2016-02-15 14:49 [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration Akinobu Mita
                   ` (2 preceding siblings ...)
  2016-02-15 14:49 ` [rtc-linux] [PATCH 4/4] rtc-rx8025: unsupport UIE mode Akinobu Mita
@ 2016-02-16  1:25 ` Alexandre Belloni
  2016-02-16 14:41   ` Akinobu Mita
  2016-02-23 23:23 ` Alexandre Belloni
  4 siblings, 1 reply; 7+ messages in thread
From: Alexandre Belloni @ 2016-02-16  1:25 UTC (permalink / raw)
  To: Akinobu Mita; +Cc: rtc-linux, Wolfgang Grandegger, Alessandro Zummo

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
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration
  2016-02-16  1:25 ` [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration Alexandre Belloni
@ 2016-02-16 14:41   ` Akinobu Mita
  0 siblings, 0 replies; 7+ messages in thread
From: Akinobu Mita @ 2016-02-16 14:41 UTC (permalink / raw)
  To: Alexandre Belloni; +Cc: rtc-linux, Wolfgang Grandegger, Alessandro Zummo

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.

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration
  2016-02-15 14:49 [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration Akinobu Mita
                   ` (3 preceding siblings ...)
  2016-02-16  1:25 ` [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration Alexandre Belloni
@ 2016-02-23 23:23 ` Alexandre Belloni
  4 siblings, 0 replies; 7+ messages in thread
From: Alexandre Belloni @ 2016-02-23 23:23 UTC (permalink / raw)
  To: Akinobu Mita; +Cc: rtc-linux, Wolfgang Grandegger, Alessandro Zummo

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.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-02-23 23:23 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-15 14:49 [rtc-linux] [PATCH 1/4] rtc-rx8025: fix irq handler registration Akinobu Mita
2016-02-15 14:49 ` [rtc-linux] [PATCH 2/4] rtc-rx8025: protect ctrl1 register update by rtc->ops_lock Akinobu Mita
2016-02-15 14:49 ` [rtc-linux] [PATCH 3/4] rtc-rx8025: round up to nearest minute for a minute accuracy alarm Akinobu Mita
2016-02-15 14:49 ` [rtc-linux] [PATCH 4/4] rtc-rx8025: unsupport UIE mode Akinobu Mita
2016-02-16  1:25 ` [rtc-linux] Re: [PATCH 1/4] rtc-rx8025: fix irq handler registration Alexandre Belloni
2016-02-16 14:41   ` Akinobu Mita
2016-02-23 23:23 ` Alexandre Belloni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.