* [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs
@ 2011-05-05 10:22 Wolfram Sang
2011-05-05 10:22 ` [PATCH 1/6] rtc: remove IRQF_DISABLED Wolfram Sang
` (7 more replies)
0 siblings, 8 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
First, cleanup RTC to remove the deprecated IRQF_DISABLED which is a
nop these days.
Then, because plat-stmp is going to be removed and merged with mxs, this
patch series will convert the stmp-rtc driver for usage with mach-mxs.
Quite some platform-specific dependencies have been removed, so the
driver should be better reusable.
The driver has successfully been tested on an i.MX28-board and passed the RTC
test program.
Regards,
Wolfram
Wolfram Sang (6):
rtc: remove IRQF_DISABLED
rtc: stmp3xxx: get rid of platform-specific register include
rtc: stmp3xxx: port stmp-functions to mxs-equivalents
rtc: stmp3xxx: fix crash on boot
rtc: stmp3xxx: get rid of mach-specific accessors
rtc: stmp3xxx: remove UIE handlers
drivers/rtc/Kconfig | 6 +-
drivers/rtc/rtc-at91sam9.c | 3 +-
drivers/rtc/rtc-cmos.c | 5 +-
drivers/rtc/rtc-coh901331.c | 2 +-
drivers/rtc/rtc-davinci.c | 2 +-
drivers/rtc/rtc-ds1511.c | 2 +-
drivers/rtc/rtc-ds1553.c | 2 +-
drivers/rtc/rtc-lpc32xx.c | 2 +-
drivers/rtc/rtc-mpc5121.c | 4 +-
drivers/rtc/rtc-mrst.c | 5 +-
drivers/rtc/rtc-mv.c | 3 +-
drivers/rtc/rtc-nuc900.c | 2 +-
drivers/rtc/rtc-omap.c | 4 +-
drivers/rtc/rtc-pl030.c | 3 +-
drivers/rtc/rtc-pl031.c | 2 +-
drivers/rtc/rtc-pxa.c | 6 +-
drivers/rtc/rtc-s3c.c | 4 +-
drivers/rtc/rtc-sa1100.c | 4 +-
drivers/rtc/rtc-sh.c | 8 +-
drivers/rtc/rtc-stk17ta8.c | 3 +-
drivers/rtc/rtc-stmp3xxx.c | 150 ++++++++++++++++++++++---------------------
drivers/rtc/rtc-tx4939.c | 2 +-
drivers/rtc/rtc-vr41xx.c | 4 +-
23 files changed, 112 insertions(+), 116 deletions(-)
--
1.7.2.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/6] rtc: remove IRQF_DISABLED
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
@ 2011-05-05 10:22 ` Wolfram Sang
2011-05-05 10:22 ` [PATCH 2/6] rtc: stmp3xxx: get rid of platform-specific register include Wolfram Sang
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
It is deprecated and currently a NOP.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/rtc/rtc-at91sam9.c | 3 +--
drivers/rtc/rtc-cmos.c | 5 ++---
drivers/rtc/rtc-coh901331.c | 2 +-
drivers/rtc/rtc-davinci.c | 2 +-
drivers/rtc/rtc-ds1511.c | 2 +-
drivers/rtc/rtc-ds1553.c | 2 +-
drivers/rtc/rtc-lpc32xx.c | 2 +-
drivers/rtc/rtc-mpc5121.c | 4 ++--
drivers/rtc/rtc-mrst.c | 5 ++---
drivers/rtc/rtc-mv.c | 3 +--
drivers/rtc/rtc-nuc900.c | 2 +-
drivers/rtc/rtc-omap.c | 4 ++--
drivers/rtc/rtc-pl030.c | 3 +--
drivers/rtc/rtc-pl031.c | 2 +-
drivers/rtc/rtc-pxa.c | 6 ++----
drivers/rtc/rtc-s3c.c | 4 ++--
drivers/rtc/rtc-sa1100.c | 4 ++--
drivers/rtc/rtc-sh.c | 8 ++++----
drivers/rtc/rtc-stk17ta8.c | 3 +--
drivers/rtc/rtc-stmp3xxx.c | 4 ++--
drivers/rtc/rtc-tx4939.c | 2 +-
drivers/rtc/rtc-vr41xx.c | 4 ++--
22 files changed, 34 insertions(+), 42 deletions(-)
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c
index a3ad957..4f04a08 100644
--- a/drivers/rtc/rtc-at91sam9.c
+++ b/drivers/rtc/rtc-at91sam9.c
@@ -330,8 +330,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
}
/* register irq handler after we know what name we'll use */
- ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
- IRQF_DISABLED | IRQF_SHARED,
+ ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt, IRQF_SHARED,
dev_name(&rtc->rtcdev->dev), rtc);
if (ret) {
dev_dbg(&pdev->dev, "can't share IRQ %d?\n", AT91_ID_SYS);
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
index 911e75c..1c29245 100644
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -713,9 +713,8 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
} else
rtc_cmos_int_handler = cmos_interrupt;
- retval = request_irq(rtc_irq, rtc_cmos_int_handler,
- IRQF_DISABLED, dev_name(&cmos_rtc.rtc->dev),
- cmos_rtc.rtc);
+ retval = request_irq(rtc_irq, rtc_cmos_int_handler, 0,
+ dev_name(&cmos_rtc.rtc->dev), cmos_rtc.rtc);
if (retval < 0) {
dev_dbg(dev, "IRQ %d is already in use\n", rtc_irq);
goto cleanup1;
diff --git a/drivers/rtc/rtc-coh901331.c b/drivers/rtc/rtc-coh901331.c
index 80f9c88..a5b8a0c 100644
--- a/drivers/rtc/rtc-coh901331.c
+++ b/drivers/rtc/rtc-coh901331.c
@@ -199,7 +199,7 @@ static int __init coh901331_probe(struct platform_device *pdev)
}
rtap->irq = platform_get_irq(pdev, 0);
- if (request_irq(rtap->irq, coh901331_interrupt, IRQF_DISABLED,
+ if (request_irq(rtap->irq, coh901331_interrupt, 0,
"RTC COH 901 331 Alarm", rtap)) {
ret = -EIO;
goto out_no_irq;
diff --git a/drivers/rtc/rtc-davinci.c b/drivers/rtc/rtc-davinci.c
index 8d46838..cf5e4f9 100644
--- a/drivers/rtc/rtc-davinci.c
+++ b/drivers/rtc/rtc-davinci.c
@@ -540,7 +540,7 @@ static int __init davinci_rtc_probe(struct platform_device *pdev)
rtcss_write(davinci_rtc, 0, PRTCSS_RTC_CCTRL);
ret = request_irq(davinci_rtc->irq, davinci_rtc_interrupt,
- IRQF_DISABLED, "davinci_rtc", davinci_rtc);
+ 0, "davinci_rtc", davinci_rtc);
if (ret < 0) {
dev_err(dev, "unable to register davinci RTC interrupt\n");
goto fail4;
diff --git a/drivers/rtc/rtc-ds1511.c b/drivers/rtc/rtc-ds1511.c
index fbabc77..df14c43 100644
--- a/drivers/rtc/rtc-ds1511.c
+++ b/drivers/rtc/rtc-ds1511.c
@@ -531,7 +531,7 @@ ds1511_rtc_probe(struct platform_device *pdev)
if (pdata->irq > 0) {
rtc_read(RTC_CMD1);
if (devm_request_irq(&pdev->dev, pdata->irq, ds1511_interrupt,
- IRQF_DISABLED | IRQF_SHARED, pdev->name, pdev) < 0) {
+ IRQF_SHARED, pdev->name, pdev) < 0) {
dev_warn(&pdev->dev, "interrupt not available.\n");
pdata->irq = 0;
diff --git a/drivers/rtc/rtc-ds1553.c b/drivers/rtc/rtc-ds1553.c
index fee41b9..95a85c0 100644
--- a/drivers/rtc/rtc-ds1553.c
+++ b/drivers/rtc/rtc-ds1553.c
@@ -319,7 +319,7 @@ static int __devinit ds1553_rtc_probe(struct platform_device *pdev)
writeb(0, ioaddr + RTC_INTERRUPTS);
if (devm_request_irq(&pdev->dev, pdata->irq,
ds1553_rtc_interrupt,
- IRQF_DISABLED, pdev->name, pdev) < 0) {
+ 0, pdev->name, pdev) < 0) {
dev_warn(&pdev->dev, "interrupt not available.\n");
pdata->irq = 0;
}
diff --git a/drivers/rtc/rtc-lpc32xx.c b/drivers/rtc/rtc-lpc32xx.c
index ae16250..ba11a19 100644
--- a/drivers/rtc/rtc-lpc32xx.c
+++ b/drivers/rtc/rtc-lpc32xx.c
@@ -287,7 +287,7 @@ static int __devinit lpc32xx_rtc_probe(struct platform_device *pdev)
if (rtc->irq >= 0) {
if (devm_request_irq(&pdev->dev, rtc->irq,
lpc32xx_rtc_alarm_interrupt,
- IRQF_DISABLED, pdev->name, rtc) < 0) {
+ 0, pdev->name, rtc) < 0) {
dev_warn(&pdev->dev, "Can't request interrupt.\n");
rtc->irq = -1;
} else {
diff --git a/drivers/rtc/rtc-mpc5121.c b/drivers/rtc/rtc-mpc5121.c
index 09ccd8d..a8b603f 100644
--- a/drivers/rtc/rtc-mpc5121.c
+++ b/drivers/rtc/rtc-mpc5121.c
@@ -270,7 +270,7 @@ static int __devinit mpc5121_rtc_probe(struct platform_device *op)
dev_set_drvdata(&op->dev, rtc);
rtc->irq = irq_of_parse_and_map(op->dev.of_node, 1);
- err = request_irq(rtc->irq, mpc5121_rtc_handler, IRQF_DISABLED,
+ err = request_irq(rtc->irq, mpc5121_rtc_handler, 0,
"mpc5121-rtc", &op->dev);
if (err) {
dev_err(&op->dev, "%s: could not request irq: %i\n",
@@ -280,7 +280,7 @@ static int __devinit mpc5121_rtc_probe(struct platform_device *op)
rtc->irq_periodic = irq_of_parse_and_map(op->dev.of_node, 0);
err = request_irq(rtc->irq_periodic, mpc5121_rtc_handler_upd,
- IRQF_DISABLED, "mpc5121-rtc_upd", &op->dev);
+ 0, "mpc5121-rtc_upd", &op->dev);
if (err) {
dev_err(&op->dev, "%s: could not request irq: %i\n",
__func__, rtc->irq_periodic);
diff --git a/drivers/rtc/rtc-mrst.c b/drivers/rtc/rtc-mrst.c
index b2f0968..90dfcb2 100644
--- a/drivers/rtc/rtc-mrst.c
+++ b/drivers/rtc/rtc-mrst.c
@@ -363,9 +363,8 @@ vrtc_mrst_do_probe(struct device *dev, struct resource *iomem, int rtc_irq)
dev_dbg(dev, "TODO: support more than 24-hr BCD mode\n");
if (rtc_irq) {
- retval = request_irq(rtc_irq, mrst_rtc_irq,
- IRQF_DISABLED, dev_name(&mrst_rtc.rtc->dev),
- mrst_rtc.rtc);
+ retval = request_irq(rtc_irq, mrst_rtc_irq, 0,
+ dev_name(&mrst_rtc.rtc->dev), mrst_rtc.rtc);
if (retval < 0) {
dev_dbg(dev, "IRQ %d is already in use, err %d\n",
rtc_irq, retval);
diff --git a/drivers/rtc/rtc-mv.c b/drivers/rtc/rtc-mv.c
index 60627a7..99bce5c 100644
--- a/drivers/rtc/rtc-mv.c
+++ b/drivers/rtc/rtc-mv.c
@@ -272,8 +272,7 @@ static int __devinit mv_rtc_probe(struct platform_device *pdev)
if (pdata->irq >= 0) {
writel(0, pdata->ioaddr + RTC_ALARM_INTERRUPT_MASK_REG_OFFS);
if (devm_request_irq(&pdev->dev, pdata->irq, mv_rtc_interrupt,
- IRQF_DISABLED | IRQF_SHARED,
- pdev->name, pdata) < 0) {
+ IRQF_SHARED, pdev->name, pdata) < 0) {
dev_warn(&pdev->dev, "interrupt not available.\n");
pdata->irq = -1;
}
diff --git a/drivers/rtc/rtc-nuc900.c b/drivers/rtc/rtc-nuc900.c
index 781068d..b790109 100644
--- a/drivers/rtc/rtc-nuc900.c
+++ b/drivers/rtc/rtc-nuc900.c
@@ -269,7 +269,7 @@ static int __devinit nuc900_rtc_probe(struct platform_device *pdev)
nuc900_rtc->irq_num = platform_get_irq(pdev, 0);
if (request_irq(nuc900_rtc->irq_num, nuc900_rtc_interrupt,
- IRQF_DISABLED, "nuc900rtc", nuc900_rtc)) {
+ 0, "nuc900rtc", nuc900_rtc)) {
dev_err(&pdev->dev, "NUC900 RTC request irq failed\n");
err = -EBUSY;
goto fail4;
diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
index bcae8dd..243f3cf 100644
--- a/drivers/rtc/rtc-omap.c
+++ b/drivers/rtc/rtc-omap.c
@@ -348,14 +348,14 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
rtc_write(OMAP_RTC_STATUS_ALARM, OMAP_RTC_STATUS_REG);
/* handle periodic and alarm irqs */
- if (request_irq(omap_rtc_timer, rtc_irq, IRQF_DISABLED,
+ if (request_irq(omap_rtc_timer, rtc_irq, 0,
dev_name(&rtc->dev), rtc)) {
pr_debug("%s: RTC timer interrupt IRQ%d already claimed\n",
pdev->name, omap_rtc_timer);
goto fail1;
}
if ((omap_rtc_timer != omap_rtc_alarm) &&
- (request_irq(omap_rtc_alarm, rtc_irq, IRQF_DISABLED,
+ (request_irq(omap_rtc_alarm, rtc_irq, 0,
dev_name(&rtc->dev), rtc))) {
pr_debug("%s: RTC alarm interrupt IRQ%d already claimed\n",
pdev->name, omap_rtc_alarm);
diff --git a/drivers/rtc/rtc-pl030.c b/drivers/rtc/rtc-pl030.c
index 1d28d44..d18ec8c 100644
--- a/drivers/rtc/rtc-pl030.c
+++ b/drivers/rtc/rtc-pl030.c
@@ -123,8 +123,7 @@ static int pl030_probe(struct amba_device *dev, const struct amba_id *id)
amba_set_drvdata(dev, rtc);
- ret = request_irq(dev->irq[0], pl030_interrupt, IRQF_DISABLED,
- "rtc-pl030", rtc);
+ ret = request_irq(dev->irq[0], pl030_interrupt, 0, "rtc-pl030", rtc);
if (ret)
goto err_irq;
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
index ff1b84b..d2df59d 100644
--- a/drivers/rtc/rtc-pl031.c
+++ b/drivers/rtc/rtc-pl031.c
@@ -352,7 +352,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
}
if (request_irq(adev->irq[0], pl031_interrupt,
- IRQF_DISABLED, "rtc-pl031", ldata)) {
+ 0, "rtc-pl031", ldata)) {
ret = -EIO;
goto out_no_irq;
}
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c
index fc9f499..15b892c 100644
--- a/drivers/rtc/rtc-pxa.c
+++ b/drivers/rtc/rtc-pxa.c
@@ -174,15 +174,13 @@ static int pxa_rtc_open(struct device *dev)
struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
int ret;
- ret = request_irq(pxa_rtc->irq_1Hz, pxa_rtc_irq, IRQF_DISABLED,
- "rtc 1Hz", dev);
+ ret = request_irq(pxa_rtc->irq_1Hz, pxa_rtc_irq, 0, "rtc 1Hz", dev);
if (ret < 0) {
dev_err(dev, "can't get irq %i, err %d\n", pxa_rtc->irq_1Hz,
ret);
goto err_irq_1Hz;
}
- ret = request_irq(pxa_rtc->irq_Alrm, pxa_rtc_irq, IRQF_DISABLED,
- "rtc Alrm", dev);
+ ret = request_irq(pxa_rtc->irq_Alrm, pxa_rtc_irq, 0, "rtc Alrm", dev);
if (ret < 0) {
dev_err(dev, "can't get irq %i, err %d\n", pxa_rtc->irq_Alrm,
ret);
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
index b3466c4..82dc1dc 100644
--- a/drivers/rtc/rtc-s3c.c
+++ b/drivers/rtc/rtc-s3c.c
@@ -307,7 +307,7 @@ static int s3c_rtc_open(struct device *dev)
int ret;
ret = request_irq(s3c_rtc_alarmno, s3c_rtc_alarmirq,
- IRQF_DISABLED, "s3c2410-rtc alarm", rtc_dev);
+ 0, "s3c2410-rtc alarm", rtc_dev);
if (ret) {
dev_err(dev, "IRQ%d error %d\n", s3c_rtc_alarmno, ret);
@@ -315,7 +315,7 @@ static int s3c_rtc_open(struct device *dev)
}
ret = request_irq(s3c_rtc_tickno, s3c_rtc_tickirq,
- IRQF_DISABLED, "s3c2410-rtc tick", rtc_dev);
+ 0, "s3c2410-rtc tick", rtc_dev);
if (ret) {
dev_err(dev, "IRQ%d error %d\n", s3c_rtc_tickno, ret);
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 0b40bb8..7ca247e 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -161,13 +161,13 @@ static int sa1100_rtc_open(struct device *dev)
struct platform_device *plat_dev = to_platform_device(dev);
struct rtc_device *rtc = platform_get_drvdata(plat_dev);
- ret = request_irq(IRQ_RTC1Hz, sa1100_rtc_interrupt, IRQF_DISABLED,
+ ret = request_irq(IRQ_RTC1Hz, sa1100_rtc_interrupt, 0,
"rtc 1Hz", dev);
if (ret) {
dev_err(dev, "IRQ %d already in use.\n", IRQ_RTC1Hz);
goto fail_ui;
}
- ret = request_irq(IRQ_RTCAlrm, sa1100_rtc_interrupt, IRQF_DISABLED,
+ ret = request_irq(IRQ_RTCAlrm, sa1100_rtc_interrupt, 0,
"rtc Alrm", dev);
if (ret) {
dev_err(dev, "IRQ %d already in use.\n", IRQ_RTCAlrm);
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index 6ac55fd..e55a763 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -666,7 +666,7 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
if (rtc->carry_irq <= 0) {
/* register shared periodic/carry/alarm irq */
ret = request_irq(rtc->periodic_irq, sh_rtc_shared,
- IRQF_DISABLED, "sh-rtc", rtc);
+ 0, "sh-rtc", rtc);
if (unlikely(ret)) {
dev_err(&pdev->dev,
"request IRQ failed with %d, IRQ %d\n", ret,
@@ -676,7 +676,7 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
} else {
/* register periodic/carry/alarm irqs */
ret = request_irq(rtc->periodic_irq, sh_rtc_periodic,
- IRQF_DISABLED, "sh-rtc period", rtc);
+ 0, "sh-rtc period", rtc);
if (unlikely(ret)) {
dev_err(&pdev->dev,
"request period IRQ failed with %d, IRQ %d\n",
@@ -685,7 +685,7 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
}
ret = request_irq(rtc->carry_irq, sh_rtc_interrupt,
- IRQF_DISABLED, "sh-rtc carry", rtc);
+ 0, "sh-rtc carry", rtc);
if (unlikely(ret)) {
dev_err(&pdev->dev,
"request carry IRQ failed with %d, IRQ %d\n",
@@ -695,7 +695,7 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
}
ret = request_irq(rtc->alarm_irq, sh_rtc_alarm,
- IRQF_DISABLED, "sh-rtc alarm", rtc);
+ 0, "sh-rtc alarm", rtc);
if (unlikely(ret)) {
dev_err(&pdev->dev,
"request alarm IRQ failed with %d, IRQ %d\n",
diff --git a/drivers/rtc/rtc-stk17ta8.c b/drivers/rtc/rtc-stk17ta8.c
index 3b94367..77f608a 100644
--- a/drivers/rtc/rtc-stk17ta8.c
+++ b/drivers/rtc/rtc-stk17ta8.c
@@ -327,8 +327,7 @@ static int __devinit stk17ta8_rtc_probe(struct platform_device *pdev)
if (pdata->irq > 0) {
writeb(0, ioaddr + RTC_INTERRUPTS);
if (devm_request_irq(&pdev->dev, pdata->irq,
- stk17ta8_rtc_interrupt,
- IRQF_DISABLED | IRQF_SHARED,
+ stk17ta8_rtc_interrupt, IRQF_SHARED,
pdev->name, pdev) < 0) {
dev_warn(&pdev->dev, "interrupt not available.\n");
pdata->irq = 0;
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index 572e953..12a9eb9 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -208,14 +208,14 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
rtc_data->irq_count = 0;
err = request_irq(rtc_data->irq_alarm, stmp3xxx_rtc_interrupt,
- IRQF_DISABLED, "RTC alarm", &pdev->dev);
+ 0, "RTC alarm", &pdev->dev);
if (err) {
dev_err(&pdev->dev, "Cannot claim IRQ%d\n",
rtc_data->irq_alarm);
goto out_irq_alarm;
}
err = request_irq(rtc_data->irq_1msec, stmp3xxx_rtc_interrupt,
- IRQF_DISABLED, "RTC tick", &pdev->dev);
+ 0, "RTC tick", &pdev->dev);
if (err) {
dev_err(&pdev->dev, "Cannot claim IRQ%d\n",
rtc_data->irq_1msec);
diff --git a/drivers/rtc/rtc-tx4939.c b/drivers/rtc/rtc-tx4939.c
index ec6313d..f4421c0 100644
--- a/drivers/rtc/rtc-tx4939.c
+++ b/drivers/rtc/rtc-tx4939.c
@@ -265,7 +265,7 @@ static int __init tx4939_rtc_probe(struct platform_device *pdev)
spin_lock_init(&pdata->lock);
tx4939_rtc_cmd(pdata->rtcreg, TX4939_RTCCTL_COMMAND_NOP);
if (devm_request_irq(&pdev->dev, irq, tx4939_rtc_interrupt,
- IRQF_DISABLED, pdev->name, &pdev->dev) < 0)
+ 0, pdev->name, &pdev->dev) < 0)
return -EBUSY;
rtc = rtc_device_register(pdev->name, &pdev->dev,
&tx4939_rtc_ops, THIS_MODULE);
diff --git a/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c
index c5698cd..6aef17d 100644
--- a/drivers/rtc/rtc-vr41xx.c
+++ b/drivers/rtc/rtc-vr41xx.c
@@ -333,7 +333,7 @@ static int __devinit rtc_probe(struct platform_device *pdev)
goto err_device_unregister;
}
- retval = request_irq(aie_irq, elapsedtime_interrupt, IRQF_DISABLED,
+ retval = request_irq(aie_irq, elapsedtime_interrupt, 0,
"elapsed_time", pdev);
if (retval < 0)
goto err_device_unregister;
@@ -342,7 +342,7 @@ static int __devinit rtc_probe(struct platform_device *pdev)
if (pie_irq <= 0)
goto err_free_irq;
- retval = request_irq(pie_irq, rtclong1_interrupt, IRQF_DISABLED,
+ retval = request_irq(pie_irq, rtclong1_interrupt, 0,
"rtclong1", pdev);
if (retval < 0)
goto err_free_irq;
--
1.7.2.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/6] rtc: stmp3xxx: get rid of platform-specific register include
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
2011-05-05 10:22 ` [PATCH 1/6] rtc: remove IRQF_DISABLED Wolfram Sang
@ 2011-05-05 10:22 ` Wolfram Sang
2011-05-05 10:22 ` [PATCH 3/6] rtc: stmp3xxx: port stmp-functions to mxs-equivalents Wolfram Sang
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
Define the registers locally and rename defines to something closer to
kernel style.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/rtc/rtc-stmp3xxx.c | 92 ++++++++++++++++++++++++++------------------
1 files changed, 55 insertions(+), 37 deletions(-)
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index 12a9eb9..23fb943 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -26,7 +26,25 @@
#include <mach/platform.h>
#include <mach/stmp3xxx.h>
-#include <mach/regs-rtc.h>
+
+#define STMP3XXX_RTC_CTRL 0x0
+#define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001
+#define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002
+#define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004
+#define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ 0x00000008
+
+#define STMP3XXX_RTC_STAT 0x10
+#define STMP3XXX_RTC_STAT_STALE_SHIFT 16
+#define STMP3XXX_RTC_STAT_RTC_PRESENT 0x80000000
+
+#define STMP3XXX_RTC_SECONDS 0x30
+
+#define STMP3XXX_RTC_ALARM 0x40
+
+#define STMP3XXX_RTC_PERSISTENT0 0x60
+#define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN 0x00000002
+#define STMP3XXX_RTC_PERSISTENT0_ALARM_EN 0x00000004
+#define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE 0x00000080
struct stmp3xxx_rtc_data {
struct rtc_device *rtc;
@@ -42,8 +60,8 @@ static void stmp3xxx_wait_time(struct stmp3xxx_rtc_data *rtc_data)
* NEW_REGS/STALE_REGS bitfields go. In fact it's 0x1=P0,
* 0x2=P1, .., 0x20=P5, 0x40=ALARM, 0x80=SECONDS
*/
- while (__raw_readl(rtc_data->io + HW_RTC_STAT) &
- BF(0x80, RTC_STAT_STALE_REGS))
+ while (__raw_readl(rtc_data->io + STMP3XXX_RTC_STAT) &
+ (0x80 << STMP3XXX_RTC_STAT_STALE_SHIFT))
cpu_relax();
}
@@ -53,7 +71,7 @@ static int stmp3xxx_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm)
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
stmp3xxx_wait_time(rtc_data);
- rtc_time_to_tm(__raw_readl(rtc_data->io + HW_RTC_SECONDS), rtc_tm);
+ rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_SECONDS), rtc_tm);
return 0;
}
@@ -61,7 +79,7 @@ static int stmp3xxx_rtc_set_mmss(struct device *dev, unsigned long t)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
- __raw_writel(t, rtc_data->io + HW_RTC_SECONDS);
+ __raw_writel(t, rtc_data->io + STMP3XXX_RTC_SECONDS);
stmp3xxx_wait_time(rtc_data);
return 0;
}
@@ -73,18 +91,18 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id)
u32 status;
u32 events = 0;
- status = __raw_readl(rtc_data->io + HW_RTC_CTRL) &
- (BM_RTC_CTRL_ALARM_IRQ | BM_RTC_CTRL_ONEMSEC_IRQ);
+ status = __raw_readl(rtc_data->io + STMP3XXX_RTC_CTRL) &
+ (STMP3XXX_RTC_CTRL_ALARM_IRQ | STMP3XXX_RTC_CTRL_ONEMSEC_IRQ);
- if (status & BM_RTC_CTRL_ALARM_IRQ) {
- stmp3xxx_clearl(BM_RTC_CTRL_ALARM_IRQ,
- rtc_data->io + HW_RTC_CTRL);
+ if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) {
+ stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ALARM_IRQ,
+ rtc_data->io + STMP3XXX_RTC_CTRL);
events |= RTC_AF | RTC_IRQF;
}
- if (status & BM_RTC_CTRL_ONEMSEC_IRQ) {
- stmp3xxx_clearl(BM_RTC_CTRL_ONEMSEC_IRQ,
- rtc_data->io + HW_RTC_CTRL);
+ if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) {
+ stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
+ rtc_data->io + STMP3XXX_RTC_CTRL);
if (++rtc_data->irq_count % 1000 == 0) {
events |= RTC_UF | RTC_IRQF;
rtc_data->irq_count = 0;
@@ -100,17 +118,17 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id)
static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
- void __iomem *p = rtc_data->io + HW_RTC_PERSISTENT0,
- *ctl = rtc_data->io + HW_RTC_CTRL;
+ void __iomem *p = rtc_data->io + STMP3XXX_RTC_PERSISTENT0,
+ *ctl = rtc_data->io + STMP3XXX_RTC_CTRL;
if (enabled) {
- stmp3xxx_setl(BM_RTC_PERSISTENT0_ALARM_EN |
- BM_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
- stmp3xxx_setl(BM_RTC_CTRL_ALARM_IRQ_EN, ctl);
+ stmp3xxx_setl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
+ stmp3xxx_setl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
} else {
- stmp3xxx_clearl(BM_RTC_PERSISTENT0_ALARM_EN |
- BM_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
- stmp3xxx_clearl(BM_RTC_CTRL_ALARM_IRQ_EN, ctl);
+ stmp3xxx_clearl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
+ stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
}
return 0;
}
@@ -119,7 +137,7 @@ static int stmp3xxx_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alm)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
- rtc_time_to_tm(__raw_readl(rtc_data->io + HW_RTC_ALARM), &alm->time);
+ rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_ALARM), &alm->time);
return 0;
}
@@ -129,7 +147,7 @@ static int stmp3xxx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
rtc_tm_to_time(&alm->time, &t);
- __raw_writel(t, rtc_data->io + HW_RTC_ALARM);
+ __raw_writel(t, rtc_data->io + STMP3XXX_RTC_ALARM);
return 0;
}
@@ -149,8 +167,8 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev)
if (!rtc_data)
return 0;
- stmp3xxx_clearl(BM_RTC_CTRL_ONEMSEC_IRQ_EN | BM_RTC_CTRL_ALARM_IRQ_EN,
- rtc_data->io + HW_RTC_CTRL);
+ stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL);
free_irq(rtc_data->irq_alarm, &pdev->dev);
free_irq(rtc_data->irq_1msec, &pdev->dev);
rtc_device_unregister(rtc_data->rtc);
@@ -187,18 +205,18 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
rtc_data->irq_alarm = platform_get_irq(pdev, 0);
rtc_data->irq_1msec = platform_get_irq(pdev, 1);
- if (!(__raw_readl(HW_RTC_STAT + rtc_data->io) &
- BM_RTC_STAT_RTC_PRESENT)) {
+ if (!(__raw_readl(STMP3XXX_RTC_STAT + rtc_data->io) &
+ STMP3XXX_RTC_STAT_RTC_PRESENT)) {
dev_err(&pdev->dev, "no device onboard\n");
err = -ENODEV;
goto out_remap;
}
stmp3xxx_reset_block(rtc_data->io, true);
- stmp3xxx_clearl(BM_RTC_PERSISTENT0_ALARM_EN |
- BM_RTC_PERSISTENT0_ALARM_WAKE_EN |
- BM_RTC_PERSISTENT0_ALARM_WAKE,
- rtc_data->io + HW_RTC_PERSISTENT0);
+ stmp3xxx_clearl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
+ rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev,
&stmp3xxx_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc_data->rtc)) {
@@ -229,8 +247,8 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
out_irq1:
free_irq(rtc_data->irq_alarm, &pdev->dev);
out_irq_alarm:
- stmp3xxx_clearl(BM_RTC_CTRL_ONEMSEC_IRQ_EN | BM_RTC_CTRL_ALARM_IRQ_EN,
- rtc_data->io + HW_RTC_CTRL);
+ stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL);
rtc_device_unregister(rtc_data->rtc);
out_remap:
iounmap(rtc_data->io);
@@ -250,10 +268,10 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev)
struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev);
stmp3xxx_reset_block(rtc_data->io, true);
- stmp3xxx_clearl(BM_RTC_PERSISTENT0_ALARM_EN |
- BM_RTC_PERSISTENT0_ALARM_WAKE_EN |
- BM_RTC_PERSISTENT0_ALARM_WAKE,
- rtc_data->io + HW_RTC_PERSISTENT0);
+ stmp3xxx_clearl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
+ rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
return 0;
}
#else
--
1.7.2.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/6] rtc: stmp3xxx: port stmp-functions to mxs-equivalents
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
2011-05-05 10:22 ` [PATCH 1/6] rtc: remove IRQF_DISABLED Wolfram Sang
2011-05-05 10:22 ` [PATCH 2/6] rtc: stmp3xxx: get rid of platform-specific register include Wolfram Sang
@ 2011-05-05 10:22 ` Wolfram Sang
2011-05-05 10:22 ` [PATCH 4/6] rtc: stmp3xxx: fix crash on boot Wolfram Sang
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
plat-stmp is going to be removed since it is compatible to mach-mxs.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/rtc/Kconfig | 6 +++---
drivers/rtc/rtc-stmp3xxx.c | 28 ++++++++++++++--------------
2 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index e187887..46d8280 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -932,11 +932,11 @@ config RTC_DRV_COH901331
config RTC_DRV_STMP
- tristate "Freescale STMP3xxx RTC"
- depends on ARCH_STMP3XXX
+ tristate "Freescale STMP3xxx/i.MX23/i.MX28 RTC"
+ depends on ARCH_MXS
help
If you say yes here you will get support for the onboard
- STMP3xxx RTC.
+ STMP3xxx/i.MX23/i.MX28 RTC.
This driver can also be built as a module. If so, the module
will be called rtc-stmp3xxx.
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index 23fb943..2f8f32e 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -24,8 +24,8 @@
#include <linux/rtc.h>
#include <linux/slab.h>
-#include <mach/platform.h>
-#include <mach/stmp3xxx.h>
+#include <mach/common.h>
+#include <mach/mxs.h>
#define STMP3XXX_RTC_CTRL 0x0
#define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001
@@ -95,13 +95,13 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id)
(STMP3XXX_RTC_CTRL_ALARM_IRQ | STMP3XXX_RTC_CTRL_ONEMSEC_IRQ);
if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) {
- stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ALARM_IRQ,
+ __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ,
rtc_data->io + STMP3XXX_RTC_CTRL);
events |= RTC_AF | RTC_IRQF;
}
if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) {
- stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
+ __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
rtc_data->io + STMP3XXX_RTC_CTRL);
if (++rtc_data->irq_count % 1000 == 0) {
events |= RTC_UF | RTC_IRQF;
@@ -122,13 +122,13 @@ static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled)
*ctl = rtc_data->io + STMP3XXX_RTC_CTRL;
if (enabled) {
- stmp3xxx_setl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ __mxs_setl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
- stmp3xxx_setl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
+ __mxs_setl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
} else {
- stmp3xxx_clearl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
- stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
+ __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
}
return 0;
}
@@ -167,7 +167,7 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev)
if (!rtc_data)
return 0;
- stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
rtc_data->io + STMP3XXX_RTC_CTRL);
free_irq(rtc_data->irq_alarm, &pdev->dev);
free_irq(rtc_data->irq_1msec, &pdev->dev);
@@ -212,8 +212,8 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
goto out_remap;
}
- stmp3xxx_reset_block(rtc_data->io, true);
- stmp3xxx_clearl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ mxs_reset_block(rtc_data->io);
+ __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
@@ -247,7 +247,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
out_irq1:
free_irq(rtc_data->irq_alarm, &pdev->dev);
out_irq_alarm:
- stmp3xxx_clearl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
rtc_data->io + STMP3XXX_RTC_CTRL);
rtc_device_unregister(rtc_data->rtc);
out_remap:
@@ -267,8 +267,8 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev)
{
struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev);
- stmp3xxx_reset_block(rtc_data->io, true);
- stmp3xxx_clearl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ mxs_reset_block(rtc_data->io);
+ __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
--
1.7.2.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/6] rtc: stmp3xxx: fix crash on boot
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
` (2 preceding siblings ...)
2011-05-05 10:22 ` [PATCH 3/6] rtc: stmp3xxx: port stmp-functions to mxs-equivalents Wolfram Sang
@ 2011-05-05 10:22 ` Wolfram Sang
2011-05-05 10:22 ` [PATCH 5/6] rtc: stmp3xxx: get rid of mach-specific accessors Wolfram Sang
` (3 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
Commit f44f7f96a20 ("RTC: Initialize kernel state from RTC") caused a
crash using the mxs/stmp-rtc driver.
The reason is that rtc_device_register() calls rtc_read_alarm() after
that change, when the driver does not have all driver data set up yet.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/rtc/rtc-stmp3xxx.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index 2f8f32e..d3937eb 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -172,6 +172,7 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev)
free_irq(rtc_data->irq_alarm, &pdev->dev);
free_irq(rtc_data->irq_1msec, &pdev->dev);
rtc_device_unregister(rtc_data->rtc);
+ platform_set_drvdata(pdev, NULL);
iounmap(rtc_data->io);
kfree(rtc_data);
@@ -212,11 +213,14 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
goto out_remap;
}
+ platform_set_drvdata(pdev, rtc_data);
+
mxs_reset_block(rtc_data->io);
__mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
+
rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev,
&stmp3xxx_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc_data->rtc)) {
@@ -240,8 +244,6 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
goto out_irq1;
}
- platform_set_drvdata(pdev, rtc_data);
-
return 0;
out_irq1:
@@ -251,6 +253,7 @@ out_irq_alarm:
rtc_data->io + STMP3XXX_RTC_CTRL);
rtc_device_unregister(rtc_data->rtc);
out_remap:
+ platform_set_drvdata(pdev, NULL);
iounmap(rtc_data->io);
out_free:
kfree(rtc_data);
--
1.7.2.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/6] rtc: stmp3xxx: get rid of mach-specific accessors
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
` (3 preceding siblings ...)
2011-05-05 10:22 ` [PATCH 4/6] rtc: stmp3xxx: fix crash on boot Wolfram Sang
@ 2011-05-05 10:22 ` Wolfram Sang
2011-05-05 10:22 ` [PATCH 6/6] rtc: stmp3xxx: remove UIE handlers Wolfram Sang
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
And drop __raw_(read|write)l-accessors while we are here.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/rtc/rtc-stmp3xxx.c | 62 ++++++++++++++++++++++++--------------------
1 files changed, 34 insertions(+), 28 deletions(-)
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index d3937eb..b4dd78b 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -18,6 +18,7 @@
*/
#include <linux/kernel.h>
#include <linux/module.h>
+#include <linux/io.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
@@ -25,9 +26,10 @@
#include <linux/slab.h>
#include <mach/common.h>
-#include <mach/mxs.h>
#define STMP3XXX_RTC_CTRL 0x0
+#define STMP3XXX_RTC_CTRL_SET 0x4
+#define STMP3XXX_RTC_CTRL_CLR 0x8
#define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001
#define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002
#define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004
@@ -42,6 +44,8 @@
#define STMP3XXX_RTC_ALARM 0x40
#define STMP3XXX_RTC_PERSISTENT0 0x60
+#define STMP3XXX_RTC_PERSISTENT0_SET 0x64
+#define STMP3XXX_RTC_PERSISTENT0_CLR 0x68
#define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN 0x00000002
#define STMP3XXX_RTC_PERSISTENT0_ALARM_EN 0x00000004
#define STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE 0x00000080
@@ -60,7 +64,7 @@ static void stmp3xxx_wait_time(struct stmp3xxx_rtc_data *rtc_data)
* NEW_REGS/STALE_REGS bitfields go. In fact it's 0x1=P0,
* 0x2=P1, .., 0x20=P5, 0x40=ALARM, 0x80=SECONDS
*/
- while (__raw_readl(rtc_data->io + STMP3XXX_RTC_STAT) &
+ while (readl(rtc_data->io + STMP3XXX_RTC_STAT) &
(0x80 << STMP3XXX_RTC_STAT_STALE_SHIFT))
cpu_relax();
}
@@ -71,7 +75,7 @@ static int stmp3xxx_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm)
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
stmp3xxx_wait_time(rtc_data);
- rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_SECONDS), rtc_tm);
+ rtc_time_to_tm(readl(rtc_data->io + STMP3XXX_RTC_SECONDS), rtc_tm);
return 0;
}
@@ -79,7 +83,7 @@ static int stmp3xxx_rtc_set_mmss(struct device *dev, unsigned long t)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
- __raw_writel(t, rtc_data->io + STMP3XXX_RTC_SECONDS);
+ writel(t, rtc_data->io + STMP3XXX_RTC_SECONDS);
stmp3xxx_wait_time(rtc_data);
return 0;
}
@@ -91,18 +95,18 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id)
u32 status;
u32 events = 0;
- status = __raw_readl(rtc_data->io + STMP3XXX_RTC_CTRL) &
+ status = readl(rtc_data->io + STMP3XXX_RTC_CTRL) &
(STMP3XXX_RTC_CTRL_ALARM_IRQ | STMP3XXX_RTC_CTRL_ONEMSEC_IRQ);
if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) {
- __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ,
- rtc_data->io + STMP3XXX_RTC_CTRL);
+ writel(STMP3XXX_RTC_CTRL_ALARM_IRQ,
+ rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
events |= RTC_AF | RTC_IRQF;
}
if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) {
- __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
- rtc_data->io + STMP3XXX_RTC_CTRL);
+ writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
+ rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
if (++rtc_data->irq_count % 1000 == 0) {
events |= RTC_UF | RTC_IRQF;
rtc_data->irq_count = 0;
@@ -118,17 +122,19 @@ static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id)
static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
- void __iomem *p = rtc_data->io + STMP3XXX_RTC_PERSISTENT0,
- *ctl = rtc_data->io + STMP3XXX_RTC_CTRL;
if (enabled) {
- __mxs_setl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
- STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
- __mxs_setl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
+ writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN,
+ rtc_data->io + STMP3XXX_RTC_PERSISTENT0_SET);
+ writel(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL_SET);
} else {
- __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
- STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN, p);
- __mxs_clrl(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN, ctl);
+ writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN,
+ rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
+ writel(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
}
return 0;
}
@@ -137,7 +143,7 @@ static int stmp3xxx_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alm)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
- rtc_time_to_tm(__raw_readl(rtc_data->io + STMP3XXX_RTC_ALARM), &alm->time);
+ rtc_time_to_tm(readl(rtc_data->io + STMP3XXX_RTC_ALARM), &alm->time);
return 0;
}
@@ -147,7 +153,7 @@ static int stmp3xxx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev);
rtc_tm_to_time(&alm->time, &t);
- __raw_writel(t, rtc_data->io + STMP3XXX_RTC_ALARM);
+ writel(t, rtc_data->io + STMP3XXX_RTC_ALARM);
return 0;
}
@@ -167,8 +173,8 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev)
if (!rtc_data)
return 0;
- __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
- rtc_data->io + STMP3XXX_RTC_CTRL);
+ writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
free_irq(rtc_data->irq_alarm, &pdev->dev);
free_irq(rtc_data->irq_1msec, &pdev->dev);
rtc_device_unregister(rtc_data->rtc);
@@ -206,7 +212,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
rtc_data->irq_alarm = platform_get_irq(pdev, 0);
rtc_data->irq_1msec = platform_get_irq(pdev, 1);
- if (!(__raw_readl(STMP3XXX_RTC_STAT + rtc_data->io) &
+ if (!(readl(STMP3XXX_RTC_STAT + rtc_data->io) &
STMP3XXX_RTC_STAT_RTC_PRESENT)) {
dev_err(&pdev->dev, "no device onboard\n");
err = -ENODEV;
@@ -216,10 +222,10 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, rtc_data);
mxs_reset_block(rtc_data->io);
- __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
- rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
+ rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev,
&stmp3xxx_rtc_ops, THIS_MODULE);
@@ -249,8 +255,8 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
out_irq1:
free_irq(rtc_data->irq_alarm, &pdev->dev);
out_irq_alarm:
- __mxs_clrl(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
- rtc_data->io + STMP3XXX_RTC_CTRL);
+ writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
rtc_device_unregister(rtc_data->rtc);
out_remap:
platform_set_drvdata(pdev, NULL);
@@ -271,10 +277,10 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev)
struct stmp3xxx_rtc_data *rtc_data = platform_get_drvdata(dev);
mxs_reset_block(rtc_data->io);
- __mxs_clrl(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
+ writel(STMP3XXX_RTC_PERSISTENT0_ALARM_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE_EN |
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
- rtc_data->io + STMP3XXX_RTC_PERSISTENT0);
+ rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
return 0;
}
#else
--
1.7.2.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 6/6] rtc: stmp3xxx: remove UIE handlers
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
` (4 preceding siblings ...)
2011-05-05 10:22 ` [PATCH 5/6] rtc: stmp3xxx: get rid of mach-specific accessors Wolfram Sang
@ 2011-05-05 10:22 ` Wolfram Sang
2011-05-17 14:27 ` [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Shawn Guo
2011-05-18 2:37 ` Shawn Guo
7 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-05 10:22 UTC (permalink / raw)
To: linux-arm-kernel
The RTC core handles it since 6610e08 (RTC: Rework RTC code to use
timerqueue for events). To make it work, check if interrupts need to be
enabled in set_alarm. Add my copyright after all these changes.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/rtc/rtc-stmp3xxx.c | 53 ++++++++++++-------------------------------
1 files changed, 15 insertions(+), 38 deletions(-)
diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c
index b4dd78b..362d025 100644
--- a/drivers/rtc/rtc-stmp3xxx.c
+++ b/drivers/rtc/rtc-stmp3xxx.c
@@ -6,6 +6,7 @@
*
* Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved.
* Copyright 2008 Embedded Alley Solutions, Inc All Rights Reserved.
+ * Copyright 2011 Wolfram Sang, Pengutronix e.K.
*/
/*
@@ -33,7 +34,6 @@
#define STMP3XXX_RTC_CTRL_ALARM_IRQ_EN 0x00000001
#define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN 0x00000002
#define STMP3XXX_RTC_CTRL_ALARM_IRQ 0x00000004
-#define STMP3XXX_RTC_CTRL_ONEMSEC_IRQ 0x00000008
#define STMP3XXX_RTC_STAT 0x10
#define STMP3XXX_RTC_STAT_STALE_SHIFT 16
@@ -52,9 +52,8 @@
struct stmp3xxx_rtc_data {
struct rtc_device *rtc;
- unsigned irq_count;
void __iomem *io;
- int irq_alarm, irq_1msec;
+ int irq_alarm;
};
static void stmp3xxx_wait_time(struct stmp3xxx_rtc_data *rtc_data)
@@ -92,31 +91,16 @@ static int stmp3xxx_rtc_set_mmss(struct device *dev, unsigned long t)
static irqreturn_t stmp3xxx_rtc_interrupt(int irq, void *dev_id)
{
struct stmp3xxx_rtc_data *rtc_data = dev_get_drvdata(dev_id);
- u32 status;
- u32 events = 0;
-
- status = readl(rtc_data->io + STMP3XXX_RTC_CTRL) &
- (STMP3XXX_RTC_CTRL_ALARM_IRQ | STMP3XXX_RTC_CTRL_ONEMSEC_IRQ);
+ u32 status = readl(rtc_data->io + STMP3XXX_RTC_CTRL);
if (status & STMP3XXX_RTC_CTRL_ALARM_IRQ) {
writel(STMP3XXX_RTC_CTRL_ALARM_IRQ,
rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
- events |= RTC_AF | RTC_IRQF;
+ rtc_update_irq(rtc_data->rtc, 1, RTC_AF | RTC_IRQF);
+ return IRQ_HANDLED;
}
- if (status & STMP3XXX_RTC_CTRL_ONEMSEC_IRQ) {
- writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ,
- rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
- if (++rtc_data->irq_count % 1000 == 0) {
- events |= RTC_UF | RTC_IRQF;
- rtc_data->irq_count = 0;
- }
- }
-
- if (events)
- rtc_update_irq(rtc_data->rtc, 1, events);
-
- return IRQ_HANDLED;
+ return IRQ_NONE;
}
static int stmp3xxx_alarm_irq_enable(struct device *dev, unsigned int enabled)
@@ -154,6 +138,9 @@ static int stmp3xxx_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
rtc_tm_to_time(&alm->time, &t);
writel(t, rtc_data->io + STMP3XXX_RTC_ALARM);
+
+ stmp3xxx_alarm_irq_enable(dev, alm->enabled);
+
return 0;
}
@@ -173,10 +160,9 @@ static int stmp3xxx_rtc_remove(struct platform_device *pdev)
if (!rtc_data)
return 0;
- writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ writel(STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
free_irq(rtc_data->irq_alarm, &pdev->dev);
- free_irq(rtc_data->irq_1msec, &pdev->dev);
rtc_device_unregister(rtc_data->rtc);
platform_set_drvdata(pdev, NULL);
iounmap(rtc_data->io);
@@ -210,7 +196,6 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
}
rtc_data->irq_alarm = platform_get_irq(pdev, 0);
- rtc_data->irq_1msec = platform_get_irq(pdev, 1);
if (!(readl(STMP3XXX_RTC_STAT + rtc_data->io) &
STMP3XXX_RTC_STAT_RTC_PRESENT)) {
@@ -227,6 +212,9 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
STMP3XXX_RTC_PERSISTENT0_ALARM_WAKE,
rtc_data->io + STMP3XXX_RTC_PERSISTENT0_CLR);
+ writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
+ rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
+
rtc_data->rtc = rtc_device_register(pdev->name, &pdev->dev,
&stmp3xxx_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc_data->rtc)) {
@@ -234,7 +222,6 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
goto out_remap;
}
- rtc_data->irq_count = 0;
err = request_irq(rtc_data->irq_alarm, stmp3xxx_rtc_interrupt,
0, "RTC alarm", &pdev->dev);
if (err) {
@@ -242,21 +229,10 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
rtc_data->irq_alarm);
goto out_irq_alarm;
}
- err = request_irq(rtc_data->irq_1msec, stmp3xxx_rtc_interrupt,
- 0, "RTC tick", &pdev->dev);
- if (err) {
- dev_err(&pdev->dev, "Cannot claim IRQ%d\n",
- rtc_data->irq_1msec);
- goto out_irq1;
- }
return 0;
-out_irq1:
- free_irq(rtc_data->irq_alarm, &pdev->dev);
out_irq_alarm:
- writel(STMP3XXX_RTC_CTRL_ONEMSEC_IRQ_EN | STMP3XXX_RTC_CTRL_ALARM_IRQ_EN,
- rtc_data->io + STMP3XXX_RTC_CTRL_CLR);
rtc_device_unregister(rtc_data->rtc);
out_remap:
platform_set_drvdata(pdev, NULL);
@@ -313,5 +289,6 @@ module_init(stmp3xxx_rtc_init);
module_exit(stmp3xxx_rtc_exit);
MODULE_DESCRIPTION("STMP3xxx RTC Driver");
-MODULE_AUTHOR("dmitry pervushin <dpervushin@embeddedalley.com>");
+MODULE_AUTHOR("dmitry pervushin <dpervushin@embeddedalley.com> and "
+ "Wolfram Sang <w.sang@pengutronix.de>");
MODULE_LICENSE("GPL");
--
1.7.2.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
` (5 preceding siblings ...)
2011-05-05 10:22 ` [PATCH 6/6] rtc: stmp3xxx: remove UIE handlers Wolfram Sang
@ 2011-05-17 14:27 ` Shawn Guo
2011-05-17 15:04 ` Wolfram Sang
2011-05-18 2:37 ` Shawn Guo
7 siblings, 1 reply; 10+ messages in thread
From: Shawn Guo @ 2011-05-17 14:27 UTC (permalink / raw)
To: linux-arm-kernel
Hi Wolfram,
On Thu, May 05, 2011 at 12:22:15PM +0200, Wolfram Sang wrote:
> First, cleanup RTC to remove the deprecated IRQF_DISABLED which is a
> nop these days.
>
> Then, because plat-stmp is going to be removed and merged with mxs, this
> patch series will convert the stmp-rtc driver for usage with mach-mxs.
> Quite some platform-specific dependencies have been removed, so the
> driver should be better reusable.
>
> The driver has successfully been tested on an i.MX28-board and passed the RTC
> test program.
>
Can you post the platform device code? I would give it a test on my end.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs
2011-05-17 14:27 ` [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Shawn Guo
@ 2011-05-17 15:04 ` Wolfram Sang
0 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2011-05-17 15:04 UTC (permalink / raw)
To: linux-arm-kernel
Hi Shawn,
> > First, cleanup RTC to remove the deprecated IRQF_DISABLED which is a
> > nop these days.
> >
> > Then, because plat-stmp is going to be removed and merged with mxs, this
> > patch series will convert the stmp-rtc driver for usage with mach-mxs.
> > Quite some platform-specific dependencies have been removed, so the
> > driver should be better reusable.
> >
> > The driver has successfully been tested on an i.MX28-board and passed the RTC
> > test program.
> >
> Can you post the platform device code? I would give it a test on my end.
Yup, will send them as RFC in a minute. Tests are much appreciated, thanks!
Would add the tags then to V2 of this series (with updated commit msgs)
when you are done.
Wolfram
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110517/93db441a/attachment.sig>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
` (6 preceding siblings ...)
2011-05-17 14:27 ` [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Shawn Guo
@ 2011-05-18 2:37 ` Shawn Guo
7 siblings, 0 replies; 10+ messages in thread
From: Shawn Guo @ 2011-05-18 2:37 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, May 05, 2011 at 12:22:15PM +0200, Wolfram Sang wrote:
> First, cleanup RTC to remove the deprecated IRQF_DISABLED which is a
> nop these days.
>
> Then, because plat-stmp is going to be removed and merged with mxs, this
> patch series will convert the stmp-rtc driver for usage with mach-mxs.
> Quite some platform-specific dependencies have been removed, so the
> driver should be better reusable.
>
> The driver has successfully been tested on an i.MX28-board and passed the RTC
> test program.
>
> Regards,
>
> Wolfram
>
> Wolfram Sang (6):
> rtc: remove IRQF_DISABLED
> rtc: stmp3xxx: get rid of platform-specific register include
> rtc: stmp3xxx: port stmp-functions to mxs-equivalents
> rtc: stmp3xxx: fix crash on boot
> rtc: stmp3xxx: get rid of mach-specific accessors
> rtc: stmp3xxx: remove UIE handlers
>
On i.MX23 and i.MX28
Tested-by: Shawn Guo <shawn.guo@freescale.com>
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-05-18 2:37 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-05 10:22 [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Wolfram Sang
2011-05-05 10:22 ` [PATCH 1/6] rtc: remove IRQF_DISABLED Wolfram Sang
2011-05-05 10:22 ` [PATCH 2/6] rtc: stmp3xxx: get rid of platform-specific register include Wolfram Sang
2011-05-05 10:22 ` [PATCH 3/6] rtc: stmp3xxx: port stmp-functions to mxs-equivalents Wolfram Sang
2011-05-05 10:22 ` [PATCH 4/6] rtc: stmp3xxx: fix crash on boot Wolfram Sang
2011-05-05 10:22 ` [PATCH 5/6] rtc: stmp3xxx: get rid of mach-specific accessors Wolfram Sang
2011-05-05 10:22 ` [PATCH 6/6] rtc: stmp3xxx: remove UIE handlers Wolfram Sang
2011-05-17 14:27 ` [PATCH 0/6] drop IRQF_DISABLED from RTC, then convert stmp-rtc to mach-mxs Shawn Guo
2011-05-17 15:04 ` Wolfram Sang
2011-05-18 2:37 ` Shawn Guo
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.