Skip to content

Commit

Permalink
AT91: fix use of clock disable on idle for AT91x40 devices
Browse files Browse the repository at this point in the history
The simpler AT91x40 processors do not have the same power management
controller as the new AT91 devices. They do have a simpler power
controller module that we can use to disable the CPU clock at idle
time. Add code to support that.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
  • Loading branch information
Greg Ungerer authored and Nicolas Ferre committed Oct 7, 2010
1 parent a6e016f commit cb809b1
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
6 changes: 6 additions & 0 deletions arch/arm/mach-at91/include/mach/at91x40.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,10 @@
#define AT91_DBGU_CIDR (AT91_SF + 0) /* CIDR in PS segment */
#define AT91_DBGU_EXID (AT91_SF + 4) /* EXID in PS segment */

/*
* Support defines for the simple Power Controller module.
*/
#define AT91_PS_CR (AT91_PS + 0) /* PS Control register */
#define AT91_PS_CR_CPU (1 << 0) /* CPU clock disable bit */

#endif /* AT91X40_H */
4 changes: 4 additions & 0 deletions arch/arm/mach-at91/include/mach/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@ static inline void arch_idle(void)
* Disable the processor clock. The processor will be automatically
* re-enabled by an interrupt or by a reset.
*/
#ifdef AT91_PS
at91_sys_write(AT91_PS_CR, AT91_PS_CR_CPU);
#else
at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK);
#endif
#else
/*
* Set the processor (CP15) into 'Wait for Interrupt' mode.
Expand Down

0 comments on commit cb809b1

Please sign in to comment.