2005-04-16 15:20:36 -07:00
/*
2008-08-05 16:14:15 +01:00
* Copied from arch / arm / mach - sa1100 / include / mach / system . h
2005-04-16 15:20:36 -07:00
* Copyright ( c ) 1999 Nicolas Pitre < nico @ cam . org >
*/
# ifndef __ASM_ARCH_SYSTEM_H
# define __ASM_ARCH_SYSTEM_H
2006-01-07 16:15:52 +00:00
# include <linux/clk.h>
2005-07-10 19:58:06 +01:00
# include <asm/mach-types.h>
2008-08-05 16:14:15 +01:00
# include <mach/hardware.h>
2005-11-10 14:26:53 +00:00
# ifndef CONFIG_MACH_VOICEBLUE
# define voiceblue_reset() do {} while (0)
# endif
2005-04-16 15:20:36 -07:00
2006-04-02 17:46:20 +01:00
extern void omap_prcm_arch_reset ( char mode ) ;
2005-04-16 15:20:36 -07:00
static inline void arch_idle ( void )
{
cpu_do_idle ( ) ;
}
2005-11-10 14:26:53 +00:00
static inline void omap1_arch_reset ( char mode )
2005-04-16 15:20:36 -07:00
{
2005-07-10 19:58:06 +01:00
/*
* Workaround for 5912 / 1611 b bug mentioned in sprz209d . pdf p . 28
* " Global Software Reset Affects Traffic Controller Frequency " .
*/
if ( cpu_is_omap5912 ( ) ) {
omap_writew ( omap_readw ( DPLL_CTL ) & ~ ( 1 < < 4 ) ,
DPLL_CTL ) ;
omap_writew ( 0x8 , ARM_RSTCT1 ) ;
}
2005-11-10 14:26:53 +00:00
2005-07-10 19:58:06 +01:00
if ( machine_is_voiceblue ( ) )
voiceblue_reset ( ) ;
else
omap_writew ( 1 , ARM_RSTCT1 ) ;
2005-04-16 15:20:36 -07:00
}
2005-11-10 14:26:53 +00:00
static inline void arch_reset ( char mode )
{
2008-10-09 17:51:41 +03:00
if ( ! cpu_class_is_omap2 ( ) )
2005-11-10 14:26:53 +00:00
omap1_arch_reset ( mode ) ;
else
2006-04-02 17:46:20 +01:00
omap_prcm_arch_reset ( mode ) ;
2005-11-10 14:26:53 +00:00
}
2005-04-16 15:20:36 -07:00
# endif