/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

#ifndef	__TIMER__
#define	__TIMER__

#define ASIC_PLATFORM 1
#define BERLIN_PLATFORM 1

#define GALOIS_CPU0_TIMER 0
#define GALOIS_UBOOT_TIMER	(GALOIS_CPU0_TIMER)
#define TIMER_LOAD_VAL 0xffffffff

#if 0
#define GALOIS_TIMER_CLOCK (ASIC_PLATFORM == 1? \
		(BERLIN_PLATFORM == 1? 75000000 : 100000000) : \
		(BERLIN_PLATFORM == 1? 4500000 : 1500000))
#endif

#define GALOIS_TIMER_CLOCK 100000000
#ifndef CONFIG_SYS_HZ
#define CONFIG_SYS_HZ			(GALOIS_TIMER_CLOCK)
#endif

extern unsigned int timer_clk_freq;

unsigned long get_timer (unsigned long base);
void reset_timer (void);
void set_timer (unsigned long t);
void udelay(unsigned long usec);
int timer_init (void);
int timer_stop(void);
#endif

