All of lore.kernel.org
 help / color / mirror / Atom feed
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

      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.