diff options
Diffstat (limited to 'arch/arm/mach-at91/irq.c')
| -rw-r--r-- | arch/arm/mach-at91/irq.c | 20 | 
1 files changed, 8 insertions, 12 deletions
| diff --git a/arch/arm/mach-at91/irq.c b/arch/arm/mach-at91/irq.c index 8e210262aee..e0ca5917102 100644 --- a/arch/arm/mach-at91/irq.c +++ b/arch/arm/mach-at91/irq.c @@ -92,23 +92,21 @@ static int at91_aic_set_wake(struct irq_data *d, unsigned value)  void at91_irq_suspend(void)  { -	int i = 0, bit; +	int bit = -1;  	if (has_aic5()) {  		/* disable enabled irqs */ -		while ((bit = find_next_bit(backups, n_irqs, i)) < n_irqs) { +		while ((bit = find_next_bit(backups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IDCR, 1); -			i = bit;  		}  		/* enable wakeup irqs */ -		i = 0; -		while ((bit = find_next_bit(wakeups, n_irqs, i)) < n_irqs) { +		bit = -1; +		while ((bit = find_next_bit(wakeups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IECR, 1); -			i = bit;  		}  	} else {  		at91_aic_write(AT91_AIC_IDCR, *backups); @@ -118,23 +116,21 @@ void at91_irq_suspend(void)  void at91_irq_resume(void)  { -	int i = 0, bit; +	int bit = -1;  	if (has_aic5()) {  		/* disable wakeup irqs */ -		while ((bit = find_next_bit(wakeups, n_irqs, i)) < n_irqs) { +		while ((bit = find_next_bit(wakeups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IDCR, 1); -			i = bit;  		}  		/* enable irqs disabled for suspend */ -		i = 0; -		while ((bit = find_next_bit(backups, n_irqs, i)) < n_irqs) { +		bit = -1; +		while ((bit = find_next_bit(backups, n_irqs, bit + 1)) < n_irqs) {  			at91_aic_write(AT91_AIC5_SSR,  				       bit & AT91_AIC5_INTSEL_MSK);  			at91_aic_write(AT91_AIC5_IECR, 1); -			i = bit;  		}  	} else {  		at91_aic_write(AT91_AIC_IDCR, *wakeups); |