2005-07-10 19:58:15 +01:00
/*
2008-08-05 16:14:15 +01:00
* arch / arm / plat - omap / include / mach / common . h
2005-07-10 19:58:15 +01:00
*
* Header for code common to all OMAP machines .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation ; either version 2 of the License , or ( at your
* option ) any later version .
*
* THIS SOFTWARE IS PROVIDED ` ` AS IS ' ' AND ANY EXPRESS OR IMPLIED
* WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED . IN
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT , INDIRECT ,
* INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT
* NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF
* USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*
* You should have received a copy of the GNU General Public License along
* with this program ; if not , write to the Free Software Foundation , Inc . ,
* 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# ifndef __ARCH_ARM_MACH_OMAP_COMMON_H
# define __ARCH_ARM_MACH_OMAP_COMMON_H
2009-12-11 16:16:32 -08:00
# include <plat/i2c.h>
2007-11-07 06:54:31 +02:00
2005-07-10 19:58:15 +01:00
struct sys_timer ;
2009-10-19 15:25:26 -07:00
/* used by omap-smp.c and board-4430sdp.c */
extern void __iomem * gic_cpu_base_addr ;
2005-07-10 19:58:15 +01:00
extern void omap_map_common_io ( void ) ;
extern struct sys_timer omap_timer ;
2008-07-03 12:24:44 +03:00
/* IO bases for various OMAP processors */
struct omap_globals {
2008-10-06 15:49:16 +03:00
u32 class ; /* OMAP class to detect */
2008-07-03 12:24:44 +03:00
void __iomem * tap ; /* Control module ID code */
void __iomem * sdrc ; /* SDRAM Controller */
void __iomem * sms ; /* SDRAM Memory Scheduler */
void __iomem * ctrl ; /* System Control Module */
void __iomem * prm ; /* Power and Reset Management */
void __iomem * cm ; /* Clock Management */
2009-12-08 18:24:49 -07:00
void __iomem * cm2 ;
2010-02-15 08:48:53 -08:00
unsigned long uart1_phys ;
unsigned long uart2_phys ;
unsigned long uart3_phys ;
unsigned long uart4_phys ;
2008-07-03 12:24:44 +03:00
} ;
2008-05-07 16:55:13 -07:00
void omap2_set_globals_242x ( void ) ;
void omap2_set_globals_243x ( void ) ;
void omap2_set_globals_343x ( void ) ;
2010-02-15 08:48:53 -08:00
void omap2_set_globals_36xx ( void ) ;
2009-05-28 14:16:04 -07:00
void omap2_set_globals_443x ( void ) ;
2008-05-07 16:55:13 -07:00
2008-07-03 12:24:44 +03:00
/* These get called from omap2_set_globals_xxxx(), do not call these */
2008-10-06 15:49:16 +03:00
void omap2_set_globals_tap ( struct omap_globals * ) ;
2009-01-28 12:27:37 -07:00
void omap2_set_globals_sdrc ( struct omap_globals * ) ;
2008-07-03 12:24:44 +03:00
void omap2_set_globals_control ( struct omap_globals * ) ;
void omap2_set_globals_prcm ( struct omap_globals * ) ;
2010-02-15 08:48:53 -08:00
void omap2_set_globals_uart ( struct omap_globals * ) ;
2008-07-03 12:24:44 +03:00
2009-12-08 16:33:16 -07:00
/**
* omap_test_timeout - busy - loop , testing a condition
* @ cond : condition to test until it evaluates to true
* @ timeout : maximum number of microseconds in the timeout
* @ index : loop index ( integer )
*
* Loop waiting for @ cond to become true or until at least @ timeout
* microseconds have passed . To use , define some integer @ index in the
* calling code . After running , if @ index = = @ timeout , then the loop has
* timed out .
*/
# define omap_test_timeout(cond, timeout, index) \
( { \
for ( index = 0 ; index < timeout ; index + + ) { \
if ( cond ) \
break ; \
udelay ( 1 ) ; \
} \
} )
2005-07-10 19:58:15 +01:00
# endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */