From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 13/13] ARM: at91: make rm9200 rtc drivers soc independent
Date: Mon, 21 Nov 2011 14:47:31 +0100 [thread overview]
Message-ID: <4ECA5673.1060802@atmel.com> (raw)
In-Reply-To: <1321389646-24112-15-git-send-email-plagnioj@jcrosoft.com>
On 11/15/2011 09:40 PM, Jean-Christophe PLAGNIOL-VILLARD :
> switch the rtc drivers to resource and pass it via platform_device
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: rtc-linux at googlegroups.com
> ---
> Hi Alessandro,
>
> Can I apply this one via at91
> it's part of a big cleanup
>
> Best Regards,
> J.
> arch/arm/mach-at91/at91rm9200_devices.c | 16 ++++-
> arch/arm/mach-at91/at91sam9g45_devices.c | 16 ++++-
> arch/arm/mach-at91/include/mach/at91_rtc.h | 24 +++---
> arch/arm/mach-at91/include/mach/at91rm9200.h | 2 +-
> arch/arm/mach-at91/include/mach/at91sam9g45.h | 2 +-
> drivers/rtc/rtc-at91rm9200.c | 101 +++++++++++++++---------
> 6 files changed, 107 insertions(+), 54 deletions(-)
>
> diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
> index 1007ba8..ba4fefe 100644
> --- a/arch/arm/mach-at91/at91rm9200_devices.c
> +++ b/arch/arm/mach-at91/at91rm9200_devices.c
> @@ -665,10 +665,24 @@ static void __init at91_add_device_tc(void) { }
> * -------------------------------------------------------------------- */
>
> #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE)
> +static struct resource rtc_resources[] = {
> + [0] = {
> + .start = AT91RM9200_BASE_RTC,
> + .end = AT91RM9200_BASE_RTC + SZ_256 - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = AT91_ID_SYS,
> + .end = AT91_ID_SYS,
> + .flags = IORESOURCE_IRQ,
> + },
> +};
> +
> static struct platform_device at91rm9200_rtc_device = {
> .name = "at91_rtc",
> .id = -1,
> - .num_resources = 0,
> + .resource = rtc_resources,
> + .num_resources = ARRAY_SIZE(rtc_resources),
> };
>
> static void __init at91_add_device_rtc(void)
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index 153dad0..2c64e01 100644
> --- a/arch/arm/mach-at91/at91sam9g45_devices.c
> +++ b/arch/arm/mach-at91/at91sam9g45_devices.c
> @@ -1009,10 +1009,24 @@ static void __init at91_add_device_tc(void) { }
> * -------------------------------------------------------------------- */
>
> #if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE)
> +static struct resource rtc_resources[] = {
> + [0] = {
> + .start = AT91SAM9G45_BASE_RTC,
> + .end = AT91SAM9G45_BASE_RTC + SZ_256 - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = AT91_ID_SYS,
> + .end = AT91_ID_SYS,
> + .flags = IORESOURCE_IRQ,
> + },
> +};
> +
> static struct platform_device at91sam9g45_rtc_device = {
> .name = "at91_rtc",
> .id = -1,
> - .num_resources = 0,
> + .resource = rtc_resources,
> + .num_resources = ARRAY_SIZE(rtc_resources),
> };
>
> static void __init at91_add_device_rtc(void)
> diff --git a/arch/arm/mach-at91/include/mach/at91_rtc.h b/arch/arm/mach-at91/include/mach/at91_rtc.h
> index e56f470..da1945e 100644
> --- a/arch/arm/mach-at91/include/mach/at91_rtc.h
> +++ b/arch/arm/mach-at91/include/mach/at91_rtc.h
> @@ -16,7 +16,7 @@
> #ifndef AT91_RTC_H
> #define AT91_RTC_H
>
> -#define AT91_RTC_CR (AT91_RTC + 0x00) /* Control Register */
> +#define AT91_RTC_CR 0x00 /* Control Register */
> #define AT91_RTC_UPDTIM (1 << 0) /* Update Request Time Register */
> #define AT91_RTC_UPDCAL (1 << 1) /* Update Request Calendar Register */
> #define AT91_RTC_TIMEVSEL (3 << 8) /* Time Event Selection */
> @@ -29,44 +29,44 @@
> #define AT91_RTC_CALEVSEL_MONTH (1 << 16)
> #define AT91_RTC_CALEVSEL_YEAR (2 << 16)
>
> -#define AT91_RTC_MR (AT91_RTC + 0x04) /* Mode Register */
> +#define AT91_RTC_MR 0x04 /* Mode Register */
> #define AT91_RTC_HRMOD (1 << 0) /* 12/24 Hour Mode */
>
> -#define AT91_RTC_TIMR (AT91_RTC + 0x08) /* Time Register */
> +#define AT91_RTC_TIMR 0x08 /* Time Register */
> #define AT91_RTC_SEC (0x7f << 0) /* Current Second */
> #define AT91_RTC_MIN (0x7f << 8) /* Current Minute */
> #define AT91_RTC_HOUR (0x3f << 16) /* Current Hour */
> #define AT91_RTC_AMPM (1 << 22) /* Ante Meridiem Post Meridiem Indicator */
>
> -#define AT91_RTC_CALR (AT91_RTC + 0x0c) /* Calendar Register */
> +#define AT91_RTC_CALR 0x0c /* Calendar Register */
> #define AT91_RTC_CENT (0x7f << 0) /* Current Century */
> #define AT91_RTC_YEAR (0xff << 8) /* Current Year */
> #define AT91_RTC_MONTH (0x1f << 16) /* Current Month */
> #define AT91_RTC_DAY (7 << 21) /* Current Day */
> #define AT91_RTC_DATE (0x3f << 24) /* Current Date */
>
> -#define AT91_RTC_TIMALR (AT91_RTC + 0x10) /* Time Alarm Register */
> +#define AT91_RTC_TIMALR 0x10 /* Time Alarm Register */
> #define AT91_RTC_SECEN (1 << 7) /* Second Alarm Enable */
> #define AT91_RTC_MINEN (1 << 15) /* Minute Alarm Enable */
> #define AT91_RTC_HOUREN (1 << 23) /* Hour Alarm Enable */
>
> -#define AT91_RTC_CALALR (AT91_RTC + 0x14) /* Calendar Alarm Register */
> +#define AT91_RTC_CALALR 0x14 /* Calendar Alarm Register */
> #define AT91_RTC_MTHEN (1 << 23) /* Month Alarm Enable */
> #define AT91_RTC_DATEEN (1 << 31) /* Date Alarm Enable */
>
> -#define AT91_RTC_SR (AT91_RTC + 0x18) /* Status Register */
> +#define AT91_RTC_SR 0x18 /* Status Register */
> #define AT91_RTC_ACKUPD (1 << 0) /* Acknowledge for Update */
> #define AT91_RTC_ALARM (1 << 1) /* Alarm Flag */
> #define AT91_RTC_SECEV (1 << 2) /* Second Event */
> #define AT91_RTC_TIMEV (1 << 3) /* Time Event */
> #define AT91_RTC_CALEV (1 << 4) /* Calendar Event */
>
> -#define AT91_RTC_SCCR (AT91_RTC + 0x1c) /* Status Clear Command Register */
> -#define AT91_RTC_IER (AT91_RTC + 0x20) /* Interrupt Enable Register */
> -#define AT91_RTC_IDR (AT91_RTC + 0x24) /* Interrupt Disable Register */
> -#define AT91_RTC_IMR (AT91_RTC + 0x28) /* Interrupt Mask Register */
> +#define AT91_RTC_SCCR 0x1c /* Status Clear Command Register */
> +#define AT91_RTC_IER 0x20 /* Interrupt Enable Register */
> +#define AT91_RTC_IDR 0x24 /* Interrupt Disable Register */
> +#define AT91_RTC_IMR 0x28 /* Interrupt Mask Register */
>
> -#define AT91_RTC_VER (AT91_RTC + 0x2c) /* Valid Entry Register */
> +#define AT91_RTC_VER 0x2c /* Valid Entry Register */
> #define AT91_RTC_NVTIM (1 << 0) /* Non valid Time */
> #define AT91_RTC_NVCAL (1 << 1) /* Non valid Calendar */
> #define AT91_RTC_NVTIMALR (1 << 2) /* Non valid Time Alarm */
> diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h
> index 90e92a8..bacb511 100644
> --- a/arch/arm/mach-at91/include/mach/at91rm9200.h
> +++ b/arch/arm/mach-at91/include/mach/at91rm9200.h
> @@ -81,7 +81,6 @@
> */
> #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */
> #define AT91_ST (0xfffffd00 - AT91_BASE_SYS) /* System Timer */
> -#define AT91_RTC (0xfffffe00 - AT91_BASE_SYS) /* Real-Time Clock */
> #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */
>
> #define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */
> @@ -89,6 +88,7 @@
> #define AT91RM9200_BASE_PIOB 0xfffff600 /* PIO Controller B */
> #define AT91RM9200_BASE_PIOC 0xfffff800 /* PIO Controller C */
> #define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */
> +#define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */
>
> #define AT91_USART0 AT91RM9200_BASE_US0
> #define AT91_USART1 AT91RM9200_BASE_US1
> diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
> index ac5c471..f0c23c9 100644
> --- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
> +++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
> @@ -92,7 +92,6 @@
> #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
> #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
> #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
> -#define AT91_RTC (0xfffffdb0 - AT91_BASE_SYS)
>
> #define AT91SAM9G45_BASE_ECC 0xffffe200
> #define AT91SAM9G45_BASE_DMA 0xffffec00
> @@ -107,6 +106,7 @@
> #define AT91SAM9G45_BASE_RTT 0xfffffd20
> #define AT91SAM9G45_BASE_PIT 0xfffffd30
> #define AT91SAM9G45_BASE_WDT 0xfffffd40
> +#define AT91SAM9G45_BASE_RTC 0xfffffdb0
>
> #define AT91_USART0 AT91SAM9G45_BASE_US0
> #define AT91_USART1 AT91SAM9G45_BASE_US1
> diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c
> index e39b77a..dc474bc 100644
> --- a/drivers/rtc/rtc-at91rm9200.c
> +++ b/drivers/rtc/rtc-at91rm9200.c
> @@ -32,11 +32,17 @@
>
> #include <mach/at91_rtc.h>
>
> +#define at91_rtc_read(field) \
> + __raw_readl(at91_rtc_regs + field)
> +#define at91_rtc_write(field, val) \
> + __raw_writel((val), at91_rtc_regs + field)
>
> #define AT91_RTC_EPOCH 1900UL /* just like arch/arm/common/rtctime.c */
>
> static DECLARE_COMPLETION(at91_rtc_updated);
> static unsigned int at91_alarm_year = AT91_RTC_EPOCH;
> +static void __iomem *at91_rtc_regs;
> +static int irq;
>
> /*
> * Decode time/date into rtc_time structure
> @@ -48,10 +54,10 @@ static void at91_rtc_decodetime(unsigned int timereg, unsigned int calreg,
>
> /* must read twice in case it changes */
> do {
> - time = at91_sys_read(timereg);
> - date = at91_sys_read(calreg);
> - } while ((time != at91_sys_read(timereg)) ||
> - (date != at91_sys_read(calreg)));
> + time = at91_rtc_read(timereg);
> + date = at91_rtc_read(calreg);
> + } while ((time != at91_rtc_read(timereg)) ||
> + (date != at91_rtc_read(calreg)));
>
> tm->tm_sec = bcd2bin((time & AT91_RTC_SEC) >> 0);
> tm->tm_min = bcd2bin((time & AT91_RTC_MIN) >> 8);
> @@ -98,19 +104,19 @@ static int at91_rtc_settime(struct device *dev, struct rtc_time *tm)
> tm->tm_hour, tm->tm_min, tm->tm_sec);
>
> /* Stop Time/Calendar from counting */
> - cr = at91_sys_read(AT91_RTC_CR);
> - at91_sys_write(AT91_RTC_CR, cr | AT91_RTC_UPDCAL | AT91_RTC_UPDTIM);
> + cr = at91_rtc_read(AT91_RTC_CR);
> + at91_rtc_write(AT91_RTC_CR, cr | AT91_RTC_UPDCAL | AT91_RTC_UPDTIM);
>
> - at91_sys_write(AT91_RTC_IER, AT91_RTC_ACKUPD);
> + at91_rtc_write(AT91_RTC_IER, AT91_RTC_ACKUPD);
> wait_for_completion(&at91_rtc_updated); /* wait for ACKUPD interrupt */
> - at91_sys_write(AT91_RTC_IDR, AT91_RTC_ACKUPD);
> + at91_rtc_write(AT91_RTC_IDR, AT91_RTC_ACKUPD);
>
> - at91_sys_write(AT91_RTC_TIMR,
> + at91_rtc_write(AT91_RTC_TIMR,
> bin2bcd(tm->tm_sec) << 0
> | bin2bcd(tm->tm_min) << 8
> | bin2bcd(tm->tm_hour) << 16);
>
> - at91_sys_write(AT91_RTC_CALR,
> + at91_rtc_write(AT91_RTC_CALR,
> bin2bcd((tm->tm_year + 1900) / 100) /* century */
> | bin2bcd(tm->tm_year % 100) << 8 /* year */
> | bin2bcd(tm->tm_mon + 1) << 16 /* tm_mon starts@zero */
> @@ -118,8 +124,8 @@ static int at91_rtc_settime(struct device *dev, struct rtc_time *tm)
> | bin2bcd(tm->tm_mday) << 24);
>
> /* Restart Time/Calendar */
> - cr = at91_sys_read(AT91_RTC_CR);
> - at91_sys_write(AT91_RTC_CR, cr & ~(AT91_RTC_UPDCAL | AT91_RTC_UPDTIM));
> + cr = at91_rtc_read(AT91_RTC_CR);
> + at91_rtc_write(AT91_RTC_CR, cr & ~(AT91_RTC_UPDCAL | AT91_RTC_UPDTIM));
>
> return 0;
> }
> @@ -135,7 +141,7 @@ static int at91_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm)
> tm->tm_yday = rtc_year_days(tm->tm_mday, tm->tm_mon, tm->tm_year);
> tm->tm_year = at91_alarm_year - 1900;
>
> - alrm->enabled = (at91_sys_read(AT91_RTC_IMR) & AT91_RTC_ALARM)
> + alrm->enabled = (at91_rtc_read(AT91_RTC_IMR) & AT91_RTC_ALARM)
> ? 1 : 0;
>
> pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __func__,
> @@ -160,20 +166,20 @@ static int at91_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
> tm.tm_min = alrm->time.tm_min;
> tm.tm_sec = alrm->time.tm_sec;
>
> - at91_sys_write(AT91_RTC_IDR, AT91_RTC_ALARM);
> - at91_sys_write(AT91_RTC_TIMALR,
> + at91_rtc_write(AT91_RTC_IDR, AT91_RTC_ALARM);
> + at91_rtc_write(AT91_RTC_TIMALR,
> bin2bcd(tm.tm_sec) << 0
> | bin2bcd(tm.tm_min) << 8
> | bin2bcd(tm.tm_hour) << 16
> | AT91_RTC_HOUREN | AT91_RTC_MINEN | AT91_RTC_SECEN);
> - at91_sys_write(AT91_RTC_CALALR,
> + at91_rtc_write(AT91_RTC_CALALR,
> bin2bcd(tm.tm_mon + 1) << 16 /* tm_mon starts@zero */
> | bin2bcd(tm.tm_mday) << 24
> | AT91_RTC_DATEEN | AT91_RTC_MTHEN);
>
> if (alrm->enabled) {
> - at91_sys_write(AT91_RTC_SCCR, AT91_RTC_ALARM);
> - at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM);
> + at91_rtc_write(AT91_RTC_SCCR, AT91_RTC_ALARM);
> + at91_rtc_write(AT91_RTC_IER, AT91_RTC_ALARM);
> }
>
> pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __func__,
> @@ -188,10 +194,10 @@ static int at91_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
> pr_debug("%s(): cmd=%08x\n", __func__, enabled);
>
> if (enabled) {
> - at91_sys_write(AT91_RTC_SCCR, AT91_RTC_ALARM);
> - at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM);
> + at91_rtc_write(AT91_RTC_SCCR, AT91_RTC_ALARM);
> + at91_rtc_write(AT91_RTC_IER, AT91_RTC_ALARM);
> } else
> - at91_sys_write(AT91_RTC_IDR, AT91_RTC_ALARM);
> + at91_rtc_write(AT91_RTC_IDR, AT91_RTC_ALARM);
>
> return 0;
> }
> @@ -200,7 +206,7 @@ static int at91_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
> */
> static int at91_rtc_proc(struct device *dev, struct seq_file *seq)
> {
> - unsigned long imr = at91_sys_read(AT91_RTC_IMR);
> + unsigned long imr = at91_rtc_read(AT91_RTC_IMR);
>
> seq_printf(seq, "update_IRQ\t: %s\n",
> (imr & AT91_RTC_ACKUPD) ? "yes" : "no");
> @@ -220,7 +226,7 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *dev_id)
> unsigned int rtsr;
> unsigned long events = 0;
>
> - rtsr = at91_sys_read(AT91_RTC_SR) & at91_sys_read(AT91_RTC_IMR);
> + rtsr = at91_rtc_read(AT91_RTC_SR) & at91_rtc_read(AT91_RTC_IMR);
> if (rtsr) { /* this interrupt is shared! Is it ours? */
> if (rtsr & AT91_RTC_ALARM)
> events |= (RTC_AF | RTC_IRQF);
> @@ -229,7 +235,7 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *dev_id)
> if (rtsr & AT91_RTC_ACKUPD)
> complete(&at91_rtc_updated);
>
> - at91_sys_write(AT91_RTC_SCCR, rtsr); /* clear status reg */
> + at91_rtc_write(AT91_RTC_SCCR, rtsr); /* clear status reg */
>
> rtc_update_irq(rtc, 1, events);
>
> @@ -256,22 +262,41 @@ static const struct rtc_class_ops at91_rtc_ops = {
> static int __init at91_rtc_probe(struct platform_device *pdev)
> {
> struct rtc_device *rtc;
> - int ret;
> + struct resource *regs;
> + int ret = 0;
>
> - at91_sys_write(AT91_RTC_CR, 0);
> - at91_sys_write(AT91_RTC_MR, 0); /* 24 hour mode */
> + regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + if (!regs) {
> + dev_err(&pdev->dev, "no mmio resource defined\n");
> + return -ENXIO;
> + }
> +
> + irq = platform_get_irq(pdev, 0);
> + if (irq < 0) {
> + dev_err(&pdev->dev, "no irq resource defined\n");
> + return -ENXIO;
> + }
> +
> + at91_rtc_regs = ioremap(regs->start, resource_size(regs));
> + if (!at91_rtc_regs) {
> + dev_err(&pdev->dev, "failed to map registers, aborting.\n");
> + return -ENOMEM;
> + }
> +
> + at91_rtc_write(AT91_RTC_CR, 0);
> + at91_rtc_write(AT91_RTC_MR, 0); /* 24 hour mode */
>
> /* Disable all interrupts */
> - at91_sys_write(AT91_RTC_IDR, AT91_RTC_ACKUPD | AT91_RTC_ALARM |
> + at91_rtc_write(AT91_RTC_IDR, AT91_RTC_ACKUPD | AT91_RTC_ALARM |
> AT91_RTC_SECEV | AT91_RTC_TIMEV |
> AT91_RTC_CALEV);
>
> - ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
> + ret = request_irq(irq, at91_rtc_interrupt,
> IRQF_SHARED,
> "at91_rtc", pdev);
> if (ret) {
> printk(KERN_ERR "at91_rtc: IRQ %d already in use.\n",
> - AT91_ID_SYS);
> + irq);
> return ret;
> }
>
> @@ -284,7 +309,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
> rtc = rtc_device_register(pdev->name, &pdev->dev,
> &at91_rtc_ops, THIS_MODULE);
> if (IS_ERR(rtc)) {
> - free_irq(AT91_ID_SYS, pdev);
> + free_irq(irq, pdev);
> return PTR_ERR(rtc);
> }
> platform_set_drvdata(pdev, rtc);
> @@ -301,10 +326,10 @@ static int __exit at91_rtc_remove(struct platform_device *pdev)
> struct rtc_device *rtc = platform_get_drvdata(pdev);
>
> /* Disable all interrupts */
> - at91_sys_write(AT91_RTC_IDR, AT91_RTC_ACKUPD | AT91_RTC_ALARM |
> + at91_rtc_write(AT91_RTC_IDR, AT91_RTC_ACKUPD | AT91_RTC_ALARM |
> AT91_RTC_SECEV | AT91_RTC_TIMEV |
> AT91_RTC_CALEV);
> - free_irq(AT91_ID_SYS, pdev);
> + free_irq(irq, pdev);
>
> rtc_device_unregister(rtc);
> platform_set_drvdata(pdev, NULL);
> @@ -323,13 +348,13 @@ static int at91_rtc_suspend(struct device *dev)
> /* this IRQ is shared with DBGU and other hardware which isn't
> * necessarily doing PM like we are...
> */
> - at91_rtc_imr = at91_sys_read(AT91_RTC_IMR)
> + at91_rtc_imr = at91_rtc_read(AT91_RTC_IMR)
> & (AT91_RTC_ALARM|AT91_RTC_SECEV);
> if (at91_rtc_imr) {
> if (device_may_wakeup(dev))
> - enable_irq_wake(AT91_ID_SYS);
> + enable_irq_wake(irq);
> else
> - at91_sys_write(AT91_RTC_IDR, at91_rtc_imr);
> + at91_rtc_write(AT91_RTC_IDR, at91_rtc_imr);
> }
> return 0;
> }
> @@ -338,9 +363,9 @@ static int at91_rtc_resume(struct device *dev)
> {
> if (at91_rtc_imr) {
> if (device_may_wakeup(dev))
> - disable_irq_wake(AT91_ID_SYS);
> + disable_irq_wake(irq);
> else
> - at91_sys_write(AT91_RTC_IER, at91_rtc_imr);
> + at91_rtc_write(AT91_RTC_IER, at91_rtc_imr);
> }
> return 0;
> }
--
Nicolas Ferre
prev parent reply other threads:[~2011-11-21 13:47 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-13 18:09 [PATCH 0/12] ARM: at91: make aic/ccfg/dbgu/dma/ecc/gpio/pit/rtt/smc/watchdog register base soc.h independant Jean-Christophe PLAGNIOL-VILLARD
2011-11-13 18:12 ` [PATCH 01/12] ARM: at91: make gpio register base soc independent Jean-Christophe PLAGNIOL-VILLARD
2011-11-13 18:12 ` [PATCH 02/12] ARM: at91: make ecc " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:36 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 03/12] ARM: at91: make dma " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:36 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 04/12] ARM: at91: make rtt " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:37 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 05/12] ARM: at91: add ioremap_registers entry point to soc setup Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:38 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 06/12] ARM: at91: make pit register base soc independent Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:43 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 07/12] ARM: at91: make smc " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:50 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 08/12] ARM: at91: make CCFG " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 14:52 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 09/12] ARM: at91: make shutdown controler " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 15:16 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 10/12] ARM: at91: make watchdog drivers " Jean-Christophe PLAGNIOL-VILLARD
2011-11-13 18:12 ` Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 12:39 ` Wim Van Sebroeck
2011-11-14 12:39 ` Wim Van Sebroeck
2011-11-14 15:20 ` Nicolas Ferre
2011-11-14 15:20 ` Nicolas Ferre
2011-11-14 20:24 ` Andrew Victor
2011-11-14 20:24 ` Andrew Victor
2011-11-13 18:12 ` [PATCH 11/12] ARM: at91: make DBGU " Jean-Christophe PLAGNIOL-VILLARD
2011-11-14 15:29 ` Nicolas Ferre
2011-11-13 18:12 ` [PATCH 12/12] ARM: at91: make aic " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 01/13 v2] ARM: at91: make gpio register base soc independant Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 1/2] ARM: at91: switch gpio clock to clkdev Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 2/2] ARM: at91: gpio make struct at91_gpio_bank an initdata Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 02/13 v2] ARM: at91: make ecc register base soc independant Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 03/13 v2] ARM: at91: make dma " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 04/13 v2] ARM: at91: make rtt " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 05/13 v2] ARM: at91: add ioremap_registers entry point to soc setup Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 06/13 v2] ARM: at91: make pit register base soc independent Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 07/13 v2] ARM: at91: make smc " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 08/13 v2] ARM: at91: drop CCFG Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 09/13 v2] ARM: at91: make shutdown controler soc independent Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 10/13 v2] ARM: at91: make watchdog drivers " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 11/13 v2] ARM: at91: make DBGU " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 12/13] ARM: at91: make aic " Jean-Christophe PLAGNIOL-VILLARD
2011-11-15 20:40 ` [PATCH 13/13] ARM: at91: make rm9200 rtc drivers " Jean-Christophe PLAGNIOL-VILLARD
2011-11-21 13:47 ` Nicolas Ferre [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4ECA5673.1060802@atmel.com \
--to=nicolas.ferre@atmel.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.