diff options
Diffstat (limited to 'arch/avr32/lib')
-rw-r--r-- | arch/avr32/lib/Makefile | 13 | ||||
-rw-r--r-- | arch/avr32/lib/bootm.c | 213 | ||||
-rw-r--r-- | arch/avr32/lib/dram_init.c | 17 | ||||
-rw-r--r-- | arch/avr32/lib/interrupts.c | 35 | ||||
-rw-r--r-- | arch/avr32/lib/memset.S | 65 |
5 files changed, 0 insertions, 343 deletions
diff --git a/arch/avr32/lib/Makefile b/arch/avr32/lib/Makefile deleted file mode 100644 index 8108ae5272..0000000000 --- a/arch/avr32/lib/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# -# (C) Copyright 2002-2006 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. -# -# (C) Copyright 2004-2006 Atmel Corporation -# -# SPDX-License-Identifier: GPL-2.0+ -# - -obj-y += memset.o -obj-$(CONFIG_CMD_BOOTM) += bootm.o -obj-y += interrupts.o -obj-y += dram_init.o diff --git a/arch/avr32/lib/bootm.c b/arch/avr32/lib/bootm.c deleted file mode 100644 index 342b9e2c1c..0000000000 --- a/arch/avr32/lib/bootm.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (C) 2004-2006 Atmel Corporation - * - * SPDX-License-Identifier: GPL-2.0+ - */ -#include <common.h> -#include <command.h> -#include <image.h> -#include <u-boot/zlib.h> -#include <asm/byteorder.h> -#include <asm/arch/addrspace.h> -#include <asm/io.h> -#include <asm/setup.h> -#include <asm/arch/clk.h> - -DECLARE_GLOBAL_DATA_PTR; - -/* CPU-specific hook to allow flushing of caches, etc. */ -extern void prepare_to_boot(void); - -static struct tag *setup_start_tag(struct tag *params) -{ - params->hdr.tag = ATAG_CORE; - params->hdr.size = tag_size(tag_core); - - params->u.core.flags = 0; - params->u.core.pagesize = 4096; - params->u.core.rootdev = 0; - - return tag_next(params); -} - -static struct tag *setup_memory_tags(struct tag *params) -{ - bd_t *bd = gd->bd; - int i; - - for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) { - params->hdr.tag = ATAG_MEM; - params->hdr.size = tag_size(tag_mem_range); - - params->u.mem_range.addr = bd->bi_dram[i].start; - params->u.mem_range.size = bd->bi_dram[i].size; - - params = tag_next(params); - } - - return params; -} - -static struct tag *setup_commandline_tag(struct tag *params, char *cmdline) -{ - if (!cmdline) - return params; - - /* eat leading white space */ - while (*cmdline == ' ') cmdline++; - - /* - * Don't include tags for empty command lines; let the kernel - * use its default command line. - */ - if (*cmdline == '\0') - return params; - - params->hdr.tag = ATAG_CMDLINE; - params->hdr.size = - (sizeof (struct tag_header) + strlen(cmdline) + 1 + 3) >> 2; - strcpy(params->u.cmdline.cmdline, cmdline); - - return tag_next(params); -} - -static struct tag *setup_ramdisk_tag(struct tag *params, - unsigned long rd_start, - unsigned long rd_end) -{ - if (rd_start == rd_end) - return params; - - params->hdr.tag = ATAG_RDIMG; - params->hdr.size = tag_size(tag_mem_range); - - params->u.mem_range.addr = rd_start; - params->u.mem_range.size = rd_end - rd_start; - - return tag_next(params); -} - -static struct tag *setup_clock_tags(struct tag *params) -{ - params->hdr.tag = ATAG_CLOCK; - params->hdr.size = tag_size(tag_clock); - params->u.clock.clock_id = ACLOCK_BOOTCPU; - params->u.clock.clock_flags = 0; - params->u.clock.clock_hz = gd->arch.cpu_hz; - -#ifdef CONFIG_AT32AP7000 - /* - * New kernels don't need this, but we should be backwards - * compatible for a while... - */ - params = tag_next(params); - - params->hdr.tag = ATAG_CLOCK; - params->hdr.size = tag_size(tag_clock); - params->u.clock.clock_id = ACLOCK_HSB; - params->u.clock.clock_flags = 0; - params->u.clock.clock_hz = get_hsb_clk_rate(); -#endif - - return tag_next(params); -} - -static struct tag *setup_ethernet_tag(struct tag *params, - char *addr, int index) -{ - char *s, *e; - int i; - - params->hdr.tag = ATAG_ETHERNET; - params->hdr.size = tag_size(tag_ethernet); - - params->u.ethernet.mac_index = index; - params->u.ethernet.mii_phy_addr = gd->bd->bi_phy_id[index]; - - s = addr; - for (i = 0; i < 6; i++) { - params->u.ethernet.hw_address[i] = simple_strtoul(s, &e, 16); - s = e + 1; - } - - return tag_next(params); -} - -static struct tag *setup_ethernet_tags(struct tag *params) -{ - char name[16] = "ethaddr"; - char *addr; - int i = 0; - - do { - addr = getenv(name); - if (addr) - params = setup_ethernet_tag(params, addr, i); - sprintf(name, "eth%daddr", ++i); - } while (i < 4); - - return params; -} - -static struct tag *setup_boardinfo_tag(struct tag *params) -{ - params->hdr.tag = ATAG_BOARDINFO; - params->hdr.size = tag_size(tag_boardinfo); - - params->u.boardinfo.board_number = gd->bd->bi_board_number; - - return tag_next(params); -} - -static void setup_end_tag(struct tag *params) -{ - params->hdr.tag = ATAG_NONE; - params->hdr.size = 0; -} - -int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *images) -{ - void (*theKernel)(int magic, void *tagtable); - struct tag *params, *params_start; - char *commandline = getenv("bootargs"); - - /* - * allow the PREP bootm subcommand, it is required for bootm to work - * - * TODO: Andreas Bießmann <andreas@biessmann.org> refactor the - * do_bootm_linux() for avr32 - */ - if (flag & BOOTM_STATE_OS_PREP) - return 0; - - if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) - return 1; - - theKernel = (void *)images->ep; - - bootstage_mark(BOOTSTAGE_ID_RUN_OS); - - params = params_start = (struct tag *)gd->bd->bi_boot_params; - params = setup_start_tag(params); - params = setup_memory_tags(params); - if (images->rd_start) { - params = setup_ramdisk_tag(params, - PHYSADDR(images->rd_start), - PHYSADDR(images->rd_end)); - } - params = setup_commandline_tag(params, commandline); - params = setup_clock_tags(params); - params = setup_ethernet_tags(params); - params = setup_boardinfo_tag(params); - setup_end_tag(params); - - printf("\nStarting kernel at %p (params at %p)...\n\n", - theKernel, params_start); - - prepare_to_boot(); - - theKernel(ATAG_MAGIC, params_start); - /* does not return */ - - return 1; -} diff --git a/arch/avr32/lib/dram_init.c b/arch/avr32/lib/dram_init.c deleted file mode 100644 index 79c2455bd6..0000000000 --- a/arch/avr32/lib/dram_init.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (C) 2015 Andreas Bießmann <andreas@biessmann.org> - * - * SPDX-License-Identifier: GPL-2.0+ - */ -#include <common.h> - -DECLARE_GLOBAL_DATA_PTR; - -int dram_init(void) -{ - /* check for the maximum amount of memory possible on AP7000 devices */ - gd->ram_size = get_ram_size( - (void *)CONFIG_SYS_SDRAM_BASE, - (256<<20)); - return 0; -} diff --git a/arch/avr32/lib/interrupts.c b/arch/avr32/lib/interrupts.c deleted file mode 100644 index 5f3a49e152..0000000000 --- a/arch/avr32/lib/interrupts.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2006 Atmel Corporation - * - * SPDX-License-Identifier: GPL-2.0+ - */ -#include <common.h> - -#include <asm/sysreg.h> - -int interrupt_init(void) -{ - return 0; -} - -void enable_interrupts(void) -{ - asm volatile("csrf %0" : : "n"(SYSREG_GM_OFFSET)); -} - -int disable_interrupts(void) -{ - unsigned long sr; - - sr = sysreg_read(SR); - asm volatile("ssrf %0" : : "n"(SYSREG_GM_OFFSET)); - -#ifdef CONFIG_AT32UC3A0xxx - /* Two NOPs are required after masking interrupts on the - * AT32UC3A0512ES. See errata 41.4.5.5. */ - asm("nop"); - asm("nop"); -#endif - - return !SYSREG_BFEXT(GM, sr); -} diff --git a/arch/avr32/lib/memset.S b/arch/avr32/lib/memset.S deleted file mode 100644 index ac2d38860e..0000000000 --- a/arch/avr32/lib/memset.S +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2004-2006 Atmel Corporation - * - * SPDX-License-Identifier: GPL-2.0+ - */ - - /* - * r12: void *b - * r11: int c - * r10: size_t len - * - * Returns b in r12 - */ - .section .text.memset, "ax", @progbits - - .global memset - .type memset, @function - .align 2 -memset: - mov r9, r12 - mov r8, r12 - or r11, r11, r11 << 8 - andl r9, 3, COH - brne 1f - -2: or r11, r11, r11 << 16 - sub r10, 4 - brlt 5f - - /* Let's do some real work */ -4: st.w r8++, r11 - sub r10, 4 - brge 4b - - /* - * When we get here, we've got less than 4 bytes to set. r10 - * might be negative. - */ -5: sub r10, -4 - reteq r12 - - /* Fastpath ends here, exactly 32 bytes from memset */ - - /* Handle unaligned count or pointer */ - bld r10, 1 - brcc 6f - st.b r8++, r11 - st.b r8++, r11 - bld r10, 0 - retcc r12 -6: st.b r8++, r11 - mov pc, lr - - /* Handle unaligned pointer */ -1: sub r10, 4 - brlt 5b - add r10, r9 - lsl r9, 1 - add pc, r9 - st.b r8++, r11 - st.b r8++, r11 - st.b r8++, r11 - rjmp 2b - - .size memset, . - memset |