diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2010-08-07 11:26:41 +0800 |
---|---|---|
committer | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2010-08-23 11:20:21 +0800 |
commit | 97e0e9592a738bcb9b12502d1e9e9256aca604fb (patch) | |
tree | 308d26982f4f9537af853981ed1dd955c2ca58c9 /arch/arm/mach-at91/at91sam926x_time.c | |
parent | 54d6627f02456234299068b4391406023eca5a56 (diff) | |
download | barebox-97e0e9592a738bcb9b12502d1e9e9256aca604fb.tar.gz barebox-97e0e9592a738bcb9b12502d1e9e9256aca604fb.tar.xz |
at91: rename clocksource.c -> at91sam926x_time.c
preparation to move the rm9200 to the same api as other at91
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Diffstat (limited to 'arch/arm/mach-at91/at91sam926x_time.c')
-rw-r--r-- | arch/arm/mach-at91/at91sam926x_time.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c new file mode 100644 index 0000000000..84df1a13ad --- /dev/null +++ b/arch/arm/mach-at91/at91sam926x_time.c @@ -0,0 +1,85 @@ +/* + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroeger@sysgo.de> + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <azu@sysgo.de> + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <gj@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <init.h> +#include <clock.h> +#include <asm/hardware.h> +#include <mach/at91_pit.h> +#include <mach/at91_pmc.h> +#include <mach/at91_rstc.h> +#include <mach/io.h> +#include <asm/io.h> + +uint64_t at91sam9_clocksource_read(void) +{ + return at91_sys_read(AT91_PIT_PIIR); +} + +static struct clocksource cs = { + .read = at91sam9_clocksource_read, + .mask = 0xffffffff, + .shift = 10, +}; + +static int clocksource_init (void) +{ + /* + * Enable PITC Clock + * The clock is already enabled for system controller in boot + */ + at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS); + + /* Enable PITC */ + at91_sys_write(AT91_PIT_MR, 0xfffff | AT91_PIT_PITEN); + + cs.mult = clocksource_hz2mult(1000000 * 6, cs.shift); + + init_clock(&cs); + + return 0; +} + +core_initcall(clocksource_init); + +/* + * Reset the cpu through the reset controller + */ +void __noreturn reset_cpu (unsigned long ignored) +{ + at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | + AT91_RSTC_PROCRST | + AT91_RSTC_PERRST); + + /* Not reached */ + while (1); +} +EXPORT_SYMBOL(reset_cpu); |