[PATCH] Fix for Atmel AT91 powersaving

From: Andrei Birjukov
Date: Sat Jan 31 2009 - 09:08:41 EST


Hello,

We've discovered that our AT91SAM9260 board consumed too much power when returning from a slowclock low-power mode. RAM self-refresh is enabled in a bootloader in our case, this is how we saw a difference. Estimated ca. 30mA more on 4V battery than the same state before powersaving. After a small research we found that there seems to be a bogus sdram_selfrefresh_disable() call at the end of at91_pm_enter() call, which overwrites the LPR register with uninitialized value. Please find the suggested patch attached.

The below patch is tested and works ok. The patch was generated against a 2.6.28 kernel with no additional patches.

Regards,
andrei

---
This patch fixes correct restoring of LPR register of the Atmel AT91 SDRAM controller
when returning from a power saving mode.

Signed-off-by: Andrei Birjukov <andrei.birjukov@xxxxxxxxxxxxxx>

---
diff -purN linux-2.6.28-clean/arch/arm/mach-at91/pm.c linux-2.6.28/arch/arm/mach-at91/pm.c
--- linux-2.6.28-clean/arch/arm/mach-at91/pm.c 2008-12-25 01:26:37.000000000 +0200
+++ linux-2.6.28/arch/arm/mach-at91/pm.c 2009-01-20 13:00:01.000000000 +0200
@@ -332,7 +332,6 @@ static int at91_pm_enter(suspend_state_t
at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));

error:
- sdram_selfrefresh_disable();
target_state = PM_SUSPEND_ON;
at91_irq_resume();
at91_gpio_resume();


--
Andrei Birjukov
Embedded Software Engineer
Artec Design LLC
Akadeemia tee 23a, 12618, Tallinn, Estonia
Phone: +3726718559
Fax: +3726718555
GSM: +37256908939
E-mail: andrei.birjukov@xxxxxxxxxxxxxx
WWW: http://www.artecdesign.com

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/