* [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device
@ 2019-04-09 10:16 Alexandre Belloni
2019-04-09 10:16 ` [PATCH 2/6] rtc: lpc32xx: set range Alexandre Belloni
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Alexandre Belloni @ 2019-04-09 10:16 UTC (permalink / raw)
To: linux-rtc
Cc: Vladimir Zapolskiy, Sylvain Lemieux, linux-kernel, Alexandre Belloni
This allows further improvement of the driver.
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/rtc-lpc32xx.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index 910e600275b9..295dc6ddac6d 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -47,8 +47,6 @@
#define LPC32XX_RTC_KEY_ONSW_LOADVAL 0xB5C13F27
-#define RTC_NAME "rtc-lpc32xx"
-
#define rtc_readl(dev, reg) \
__raw_readl((dev)->rtc_base + (reg))
#define rtc_writel(dev, reg, val) \
@@ -201,7 +199,7 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
{
struct resource *res;
struct lpc32xx_rtc *rtc;
- int rtcirq;
+ int rtcirq, err;
u32 tmp;
rtcirq = platform_get_irq(pdev, 0);
@@ -256,12 +254,15 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, rtc);
- rtc->rtc = devm_rtc_device_register(&pdev->dev, RTC_NAME,
- &lpc32xx_rtc_ops, THIS_MODULE);
- if (IS_ERR(rtc->rtc)) {
- dev_err(&pdev->dev, "Can't get RTC\n");
+ rtc->rtc = devm_rtc_allocate_device(&pdev->dev);
+ if (IS_ERR(rtc->rtc))
return PTR_ERR(rtc->rtc);
- }
+
+ rtc->rtc->ops = &lpc32xx_rtc_ops;
+
+ err = rtc_register_device(rtc->rtc);
+ if (err)
+ return err;
/*
* IRQ is enabled after device registration in case alarm IRQ
@@ -374,7 +375,7 @@ static struct platform_driver lpc32xx_rtc_driver = {
.probe = lpc32xx_rtc_probe,
.remove = lpc32xx_rtc_remove,
.driver = {
- .name = RTC_NAME,
+ .name = "rtc-lpc32xx",
.pm = LPC32XX_RTC_PM_OPS,
.of_match_table = of_match_ptr(lpc32xx_rtc_match),
},
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/6] rtc: lpc32xx: set range
2019-04-09 10:16 [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device Alexandre Belloni
@ 2019-04-09 10:16 ` Alexandre Belloni
2019-04-09 10:16 ` [PATCH 3/6] rtc: lpc32xx: simplify IRQ setup Alexandre Belloni
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexandre Belloni @ 2019-04-09 10:16 UTC (permalink / raw)
To: linux-rtc
Cc: Vladimir Zapolskiy, Sylvain Lemieux, linux-kernel, Alexandre Belloni
The LPC32xx RTC is a 32bit second counter.
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/rtc-lpc32xx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index 295dc6ddac6d..f9e899fc4889 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -259,6 +259,7 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
return PTR_ERR(rtc->rtc);
rtc->rtc->ops = &lpc32xx_rtc_ops;
+ rtc->rtc->range_max = U32_MAX;
err = rtc_register_device(rtc->rtc);
if (err)
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/6] rtc: lpc32xx: simplify IRQ setup
2019-04-09 10:16 [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device Alexandre Belloni
2019-04-09 10:16 ` [PATCH 2/6] rtc: lpc32xx: set range Alexandre Belloni
@ 2019-04-09 10:16 ` Alexandre Belloni
2019-04-09 10:16 ` [PATCH 4/6] rtc: lpc32xx: switch to rtc_time64_to_tm/rtc_tm_to_time64 Alexandre Belloni
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexandre Belloni @ 2019-04-09 10:16 UTC (permalink / raw)
To: linux-rtc
Cc: Vladimir Zapolskiy, Sylvain Lemieux, linux-kernel, Alexandre Belloni
Move the optional IRQ setup to a single location.
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/rtc-lpc32xx.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index f9e899fc4889..652b969158d4 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -199,21 +199,13 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
{
struct resource *res;
struct lpc32xx_rtc *rtc;
- int rtcirq, err;
+ int err;
u32 tmp;
- rtcirq = platform_get_irq(pdev, 0);
- if (rtcirq < 0) {
- dev_warn(&pdev->dev, "Can't get interrupt resource\n");
- rtcirq = -1;
- }
-
rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
if (unlikely(!rtc))
return -ENOMEM;
- rtc->irq = rtcirq;
-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
rtc->rtc_base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(rtc->rtc_base))
@@ -269,7 +261,10 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
* IRQ is enabled after device registration in case alarm IRQ
* is pending upon suspend exit.
*/
- if (rtc->irq >= 0) {
+ rtc->irq = platform_get_irq(pdev, 0);
+ if (rtc->irq < 0) {
+ dev_warn(&pdev->dev, "Can't get interrupt resource\n");
+ } else {
if (devm_request_irq(&pdev->dev, rtc->irq,
lpc32xx_rtc_alarm_interrupt,
0, pdev->name, rtc) < 0) {
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/6] rtc: lpc32xx: switch to rtc_time64_to_tm/rtc_tm_to_time64
2019-04-09 10:16 [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device Alexandre Belloni
2019-04-09 10:16 ` [PATCH 2/6] rtc: lpc32xx: set range Alexandre Belloni
2019-04-09 10:16 ` [PATCH 3/6] rtc: lpc32xx: simplify IRQ setup Alexandre Belloni
@ 2019-04-09 10:16 ` Alexandre Belloni
2019-04-09 10:16 ` [PATCH 5/6] rtc: lpc32xx: use .set_time Alexandre Belloni
2019-04-09 10:16 ` [PATCH 6/6] rtc: lpc32xx: convert to SPDX identifier Alexandre Belloni
4 siblings, 0 replies; 6+ messages in thread
From: Alexandre Belloni @ 2019-04-09 10:16 UTC (permalink / raw)
To: linux-rtc
Cc: Vladimir Zapolskiy, Sylvain Lemieux, linux-kernel, Alexandre Belloni
Call the 64bit versions of rtc_tm time conversion now that the range is
enforced by the core.
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/rtc-lpc32xx.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index 652b969158d4..bd5186928eae 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -66,7 +66,7 @@ static int lpc32xx_rtc_read_time(struct device *dev, struct rtc_time *time)
struct lpc32xx_rtc *rtc = dev_get_drvdata(dev);
elapsed_sec = rtc_readl(rtc, LPC32XX_RTC_UCOUNT);
- rtc_time_to_tm(elapsed_sec, time);
+ rtc_time64_to_tm(elapsed_sec, time);
return 0;
}
@@ -95,7 +95,7 @@ static int lpc32xx_rtc_read_alarm(struct device *dev,
{
struct lpc32xx_rtc *rtc = dev_get_drvdata(dev);
- rtc_time_to_tm(rtc_readl(rtc, LPC32XX_RTC_MATCH0), &wkalrm->time);
+ rtc_time64_to_tm(rtc_readl(rtc, LPC32XX_RTC_MATCH0), &wkalrm->time);
wkalrm->enabled = rtc->alarm_enabled;
wkalrm->pending = !!(rtc_readl(rtc, LPC32XX_RTC_INTSTAT) &
LPC32XX_RTC_INTSTAT_MATCH0);
@@ -109,13 +109,8 @@ static int lpc32xx_rtc_set_alarm(struct device *dev,
struct lpc32xx_rtc *rtc = dev_get_drvdata(dev);
unsigned long alarmsecs;
u32 tmp;
- int ret;
- ret = rtc_tm_to_time(&wkalrm->time, &alarmsecs);
- if (ret < 0) {
- dev_warn(dev, "Failed to convert time: %d\n", ret);
- return ret;
- }
+ alarmsecs = rtc_tm_to_time64(&wkalrm->time);
spin_lock_irq(&rtc->lock);
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/6] rtc: lpc32xx: use .set_time
2019-04-09 10:16 [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device Alexandre Belloni
` (2 preceding siblings ...)
2019-04-09 10:16 ` [PATCH 4/6] rtc: lpc32xx: switch to rtc_time64_to_tm/rtc_tm_to_time64 Alexandre Belloni
@ 2019-04-09 10:16 ` Alexandre Belloni
2019-04-09 10:16 ` [PATCH 6/6] rtc: lpc32xx: convert to SPDX identifier Alexandre Belloni
4 siblings, 0 replies; 6+ messages in thread
From: Alexandre Belloni @ 2019-04-09 10:16 UTC (permalink / raw)
To: linux-rtc
Cc: Vladimir Zapolskiy, Sylvain Lemieux, linux-kernel, Alexandre Belloni
Use .set_time instead of the deprecated .set_mmss.
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/rtc-lpc32xx.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index bd5186928eae..0ddb1ef98121 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -71,9 +71,10 @@ static int lpc32xx_rtc_read_time(struct device *dev, struct rtc_time *time)
return 0;
}
-static int lpc32xx_rtc_set_mmss(struct device *dev, unsigned long secs)
+static int lpc32xx_rtc_set_time(struct device *dev, struct rtc_time *time)
{
struct lpc32xx_rtc *rtc = dev_get_drvdata(dev);
+ u32 secs = rtc_tm_to_time64(time);
u32 tmp;
spin_lock_irq(&rtc->lock);
@@ -184,7 +185,7 @@ static irqreturn_t lpc32xx_rtc_alarm_interrupt(int irq, void *dev)
static const struct rtc_class_ops lpc32xx_rtc_ops = {
.read_time = lpc32xx_rtc_read_time,
- .set_mmss = lpc32xx_rtc_set_mmss,
+ .set_time = lpc32xx_rtc_set_time,
.read_alarm = lpc32xx_rtc_read_alarm,
.set_alarm = lpc32xx_rtc_set_alarm,
.alarm_irq_enable = lpc32xx_rtc_alarm_irq_enable,
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 6/6] rtc: lpc32xx: convert to SPDX identifier
2019-04-09 10:16 [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device Alexandre Belloni
` (3 preceding siblings ...)
2019-04-09 10:16 ` [PATCH 5/6] rtc: lpc32xx: use .set_time Alexandre Belloni
@ 2019-04-09 10:16 ` Alexandre Belloni
4 siblings, 0 replies; 6+ messages in thread
From: Alexandre Belloni @ 2019-04-09 10:16 UTC (permalink / raw)
To: linux-rtc
Cc: Vladimir Zapolskiy, Sylvain Lemieux, linux-kernel, Alexandre Belloni
Use SPDX-License-Identifier instead of a verbose license text.
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
drivers/rtc/rtc-lpc32xx.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index 0ddb1ef98121..ac393230e592 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -1,14 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2010 NXP Semiconductors
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <linux/kernel.h>
--
2.20.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-04-09 10:17 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-09 10:16 [PATCH 1/6] rtc: lpc32xx: convert to devm_rtc_allocate_device Alexandre Belloni
2019-04-09 10:16 ` [PATCH 2/6] rtc: lpc32xx: set range Alexandre Belloni
2019-04-09 10:16 ` [PATCH 3/6] rtc: lpc32xx: simplify IRQ setup Alexandre Belloni
2019-04-09 10:16 ` [PATCH 4/6] rtc: lpc32xx: switch to rtc_time64_to_tm/rtc_tm_to_time64 Alexandre Belloni
2019-04-09 10:16 ` [PATCH 5/6] rtc: lpc32xx: use .set_time Alexandre Belloni
2019-04-09 10:16 ` [PATCH 6/6] rtc: lpc32xx: convert to SPDX identifier Alexandre Belloni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).