diff options
Diffstat (limited to 'arch/openrisc/lib')
-rw-r--r-- | arch/openrisc/lib/Makefile | 9 | ||||
-rw-r--r-- | arch/openrisc/lib/bootm.c | 74 | ||||
-rw-r--r-- | arch/openrisc/lib/timer.c | 98 |
3 files changed, 0 insertions, 181 deletions
diff --git a/arch/openrisc/lib/Makefile b/arch/openrisc/lib/Makefile deleted file mode 100644 index 3a2f6ec243..0000000000 --- a/arch/openrisc/lib/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# -# (C) Copyright 2003-2006 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. -# -# SPDX-License-Identifier: GPL-2.0+ -# - -obj-$(CONFIG_CMD_BOOTM) += bootm.o -obj-y += timer.o diff --git a/arch/openrisc/lib/bootm.c b/arch/openrisc/lib/bootm.c deleted file mode 100644 index a18748f61f..0000000000 --- a/arch/openrisc/lib/bootm.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * (C) Copyright 2011 Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> - * - * Based on microblaze implementation by: - * (C) Copyright 2007 Michal Simek - * (C) Copyright 2004 Atmark Techno, Inc. - * - * Michal SIMEK <monstr@monstr.eu> - * Yasushi SHOJI <yashi@atmark-techno.com> - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include <common.h> -#include <command.h> -#include <image.h> -#include <u-boot/zlib.h> -#include <asm/byteorder.h> - -DECLARE_GLOBAL_DATA_PTR; - -int do_bootm_linux(int flag, int argc, char * const argv[], - bootm_headers_t *images) -{ - void (*kernel) (unsigned int); - ulong rd_data_start, rd_data_end; - - /* - * allow the PREP bootm subcommand, it is required for bootm to work - */ - if (flag & BOOTM_STATE_OS_PREP) - return 0; - - if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) - return 1; - - int ret; - - char *of_flat_tree = NULL; -#if defined(CONFIG_OF_LIBFDT) - /* did generic code already find a device tree? */ - if (images->ft_len) - of_flat_tree = images->ft_addr; -#endif - - kernel = (void (*)(unsigned int))images->ep; - - /* find ramdisk */ - ret = boot_get_ramdisk(argc, argv, images, IH_ARCH_OPENRISC, - &rd_data_start, &rd_data_end); - if (ret) - return 1; - - show_boot_progress(15); - - if (!of_flat_tree && argc > 1) - of_flat_tree = (char *)simple_strtoul(argv[1], NULL, 16); -#ifdef DEBUG - printf("## Transferring control to Linux (at address 0x%08lx) " \ - "ramdisk 0x%08lx, FDT 0x%08lx...\n", - (ulong) kernel, rd_data_start, (ulong) of_flat_tree); -#endif - if (dcache_status() || icache_status()) - flush_cache((ulong)kernel, max(checkdcache(), checkicache())); - - /* - * Linux Kernel Parameters (passing device tree): - * r3: pointer to the fdt, followed by the board info data - */ - kernel((unsigned int) of_flat_tree); - /* does not return */ - - return 1; -} diff --git a/arch/openrisc/lib/timer.c b/arch/openrisc/lib/timer.c deleted file mode 100644 index db8ddbdba5..0000000000 --- a/arch/openrisc/lib/timer.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * (C) Copyright 2011, Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> - * (C) Copyright 2011, Julius Baxter <julius@opencores.org> - * (C) Copyright 2003 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include <common.h> -#include <asm/system.h> -#include <asm/openrisc_exc.h> - -static ulong timestamp; - -/* how many counter cycles in a jiffy */ -#define TIMER_COUNTER_CYCLES (CONFIG_SYS_CLK_FREQ/CONFIG_SYS_OPENRISC_TMR_HZ) -/* how many ms elapses between each timer interrupt */ -#define TIMER_TIMESTAMP_INC (1000/CONFIG_SYS_OPENRISC_TMR_HZ) -/* how many cycles per ms */ -#define TIMER_CYCLES_MS (CONFIG_SYS_CLK_FREQ/1000) -/* how many cycles per us */ -#define TIMER_CYCLES_US (CONFIG_SYS_CLK_FREQ/1000000uL) - -void timer_isr(void) -{ - timestamp += TIMER_TIMESTAMP_INC; - mtspr(SPR_TTMR, SPR_TTMR_IE | SPR_TTMR_RT | - (TIMER_COUNTER_CYCLES & SPR_TTMR_TP)); -} - -int timer_init(void) -{ - /* Install timer exception handler */ - exception_install_handler(EXC_TIMER, timer_isr); - - /* Set up the timer for the first expiration. */ - timestamp = 0; - - mtspr(SPR_TTMR, SPR_TTMR_IE | SPR_TTMR_RT | - (TIMER_COUNTER_CYCLES & SPR_TTMR_TP)); - - /* Enable tick timer exception in supervisor register */ - mtspr(SPR_SR, mfspr(SPR_SR) | SPR_SR_TEE); - - return 0; -} - -void reset_timer(void) -{ - timestamp = 0; - - mtspr(SPR_TTMR, SPR_TTMR_IE | SPR_TTMR_RT | - (TIMER_COUNTER_CYCLES & SPR_TTMR_TP)); -} - -/* - * The timer value in ms is calculated by taking the - * value accumulated by full timer revolutions plus the value - * accumulated in this period - */ -ulong get_timer(ulong base) -{ - return timestamp + mfspr(SPR_TTCR)/TIMER_CYCLES_MS - base; -} - -void set_timer(ulong t) -{ - reset_timer(); - timestamp = t; -} - -unsigned long long get_ticks(void) -{ - return get_timer(0); -} - -ulong get_tbclk(void) -{ - return CONFIG_SYS_HZ; -} - -void __udelay(ulong usec) -{ - ulong elapsed = 0; - ulong tick; - ulong last_tick; - - last_tick = mfspr(SPR_TTCR); - while ((elapsed / TIMER_CYCLES_US) < usec) { - tick = mfspr(SPR_TTCR); - if (tick >= last_tick) - elapsed += (tick - last_tick); - else - elapsed += TIMER_COUNTER_CYCLES - (last_tick - tick); - last_tick = tick; - } -} |