diff options
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/arm926ejs/davinci/timer.c | 18 | ||||
-rw-r--r-- | cpu/mcf52x2/config.mk | 10 | ||||
-rw-r--r-- | cpu/mcf52x2/interrupts.c | 2 | ||||
-rw-r--r-- | cpu/mips/config.mk | 2 | ||||
-rw-r--r-- | cpu/mpc86xx/Makefile | 17 | ||||
-rw-r--r-- | cpu/mpc86xx/cpu.c | 61 | ||||
-rw-r--r-- | cpu/mpc86xx/cpu_init.c | 1 | ||||
-rw-r--r-- | cpu/mpc86xx/fdt.c | 35 | ||||
-rw-r--r-- | cpu/mpc86xx/spd_sdram.c | 10 | ||||
-rw-r--r-- | cpu/ppc4xx/config.mk | 2 |
10 files changed, 72 insertions, 86 deletions
diff --git a/cpu/arm926ejs/davinci/timer.c b/cpu/arm926ejs/davinci/timer.c index 4a1a54d..8bb8b45 100644 --- a/cpu/arm926ejs/davinci/timer.c +++ b/cpu/arm926ejs/davinci/timer.c @@ -61,10 +61,12 @@ davinci_timer *timer = (davinci_timer *)CFG_TIMERBASE; #define TIMER_LOAD_VAL (CFG_HZ_CLOCK / CFG_HZ) #define READ_TIMER timer->tim34 -/* Timer runs with CFG_HZ_CLOCK, currently 27MHz. To avoid wrap - around of timestamp already after min ~159s, divide it, e.g. by 16. - timestamp will then wrap around all min ~42min */ -#define DIV(x) ((x) >> 4) +/* + * Timer runs with CFG_HZ_CLOCK, currently 27MHz. To avoid wrap + * around of timestamp already after min ~159s, divide it, e.g. by 16. + * timestamp will then wrap around all min ~42min + */ +#define DIV(x) ((x) >> 4) static ulong timestamp; static ulong lastinc; @@ -106,20 +108,20 @@ void udelay(unsigned long usec) void reset_timer_masked(void) { - lastinc = DIV(READ_TIMER); + lastinc = DIV(READ_TIMER); timestamp = 0; } ulong get_timer_raw(void) { - ulong now = DIV(READ_TIMER); + ulong now = DIV(READ_TIMER); if (now >= lastinc) { /* normal mode */ timestamp += now - lastinc; } else { /* overflow ... */ - timestamp += now + DIV(TIMER_LOAD_VAL) - lastinc; + timestamp += now + DIV(TIMER_LOAD_VAL) - lastinc; } lastinc = now; return timestamp; @@ -127,7 +129,7 @@ ulong get_timer_raw(void) ulong get_timer_masked(void) { - return(get_timer_raw() / DIV(TIMER_LOAD_VAL)); + return(get_timer_raw() / DIV(TIMER_LOAD_VAL)); } void udelay_masked(unsigned long usec) diff --git a/cpu/mcf52x2/config.mk b/cpu/mcf52x2/config.mk index f97157d..c3899c5 100644 --- a/cpu/mcf52x2/config.mk +++ b/cpu/mcf52x2/config.mk @@ -26,11 +26,11 @@ PLATFORM_RELFLAGS += -ffixed-d7 -msep-data cfg=$(shell grep configs $(OBJTREE)/include/config.h | sed 's/.*<\(configs.*\)>/\1/') -is5249=$(shell grep CONFIG_M5249 $(TOPDIR)/include/$(cfg)) -is5253=$(shell grep CONFIG_M5253 $(TOPDIR)/include/$(cfg)) -is5271=$(shell grep CONFIG_M5271 $(TOPDIR)/include/$(cfg)) -is5272=$(shell grep CONFIG_M5272 $(TOPDIR)/include/$(cfg)) -is5282=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg)) +is5249:=$(shell grep CONFIG_M5249 $(TOPDIR)/include/$(cfg)) +is5253:=$(shell grep CONFIG_M5253 $(TOPDIR)/include/$(cfg)) +is5271:=$(shell grep CONFIG_M5271 $(TOPDIR)/include/$(cfg)) +is5272:=$(shell grep CONFIG_M5272 $(TOPDIR)/include/$(cfg)) +is5282:=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg)) ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2) diff --git a/cpu/mcf52x2/interrupts.c b/cpu/mcf52x2/interrupts.c index 2ccbde5..9167cec 100644 --- a/cpu/mcf52x2/interrupts.c +++ b/cpu/mcf52x2/interrupts.c @@ -77,7 +77,7 @@ void dtimer_intr_setup(void) volatile int0_t *intp = (int0_t *) (CFG_INTR_BASE); intp->icr0[CFG_TMRINTR_NO] = CFG_TMRINTR_PRI; - intp->imrl0 &= ~0xFFFFFFFE; + intp->imrl0 &= 0xFFFFFFFE; intp->imrl0 &= ~CFG_TMRINTR_MASK; } #endif /* CONFIG_MCFTMR */ diff --git a/cpu/mips/config.mk b/cpu/mips/config.mk index ad03bd6..b505a42 100644 --- a/cpu/mips/config.mk +++ b/cpu/mips/config.mk @@ -21,7 +21,7 @@ # MA 02111-1307 USA # v=$(shell $(AS) --version |grep "GNU assembler" |cut -d. -f2) -MIPSFLAGS=$(shell \ +MIPSFLAGS:=$(shell \ if [ "$v" -lt "14" ]; then \ echo "-mcpu=4kc"; \ else \ diff --git a/cpu/mpc86xx/Makefile b/cpu/mpc86xx/Makefile index 6d9300e..537f62a 100644 --- a/cpu/mpc86xx/Makefile +++ b/cpu/mpc86xx/Makefile @@ -28,13 +28,20 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(CPU).a -START = start.o #resetvec.o +START = start.o SOBJS = cache.o -COBJS = traps.o cpu.o cpu_init.o speed.o interrupts.o \ - spd_sdram.o -SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) +COBJS-y += traps.o +COBJS-y += cpu.o +COBJS-y += cpu_init.o +COBJS-y += speed.o +COBJS-y += interrupts.o +COBJS-y += spd_sdram.o + +COBJS-$(CONFIG_OF_LIBFDT) += fdt.o + +SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS-y)) START := $(addprefix $(obj),$(START)) all: $(obj).depend $(START) $(LIB) diff --git a/cpu/mpc86xx/cpu.c b/cpu/mpc86xx/cpu.c index e1b3c52..bf4e651 100644 --- a/cpu/mpc86xx/cpu.c +++ b/cpu/mpc86xx/cpu.c @@ -29,9 +29,6 @@ #include <mpc86xx.h> #include <asm/fsl_law.h> -#if defined(CONFIG_OF_FLAT_TREE) -#include <ft_build.h> -#endif int checkcpu(void) @@ -269,64 +266,6 @@ dma_xfer(void *dest, uint count, void *src) #endif /* CONFIG_DDR_ECC */ -#ifdef CONFIG_OF_FLAT_TREE -void -ft_cpu_setup(void *blob, bd_t *bd) -{ - u32 *p; - ulong clock; - int len; - - clock = bd->bi_busfreq; - p = ft_get_prop(blob, "/cpus/" OF_CPU "/bus-frequency", &len); - if (p != NULL) - *p = cpu_to_be32(clock); - - p = ft_get_prop(blob, "/" OF_SOC "/serial@4500/clock-frequency", &len); - if (p != NULL) - *p = cpu_to_be32(clock); - - p = ft_get_prop(blob, "/" OF_SOC "/serial@4600/clock-frequency", &len); - if (p != NULL) - *p = cpu_to_be32(clock); - -#if defined(CONFIG_TSEC1) - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@24000/mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enetaddr, 6); - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@24000/local-mac-address", &len); - if (p) - memcpy(p, bd->bi_enetaddr, 6); -#endif - -#if defined(CONFIG_TSEC2) - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@25000/mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enet1addr, 6); - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@25000/local-mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enet1addr, 6); -#endif - -#if defined(CONFIG_TSEC3) - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@26000/mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enet2addr, 6); - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@26000/local-mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enet2addr, 6); -#endif - -#if defined(CONFIG_TSEC4) - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@27000/mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enet3addr, 6); - p = ft_get_prop(blob, "/" OF_SOC "/ethernet@27000/local-mac-address", &len); - if (p != NULL) - memcpy(p, bd->bi_enet3addr, 6); -#endif -#endif /* CONFIG_OF_FLAT_TREE */ - /* * Print out the state of various machine registers. * Currently prints out LAWs and BR0/OR0 diff --git a/cpu/mpc86xx/cpu_init.c b/cpu/mpc86xx/cpu_init.c index ab5906d..0efd855 100644 --- a/cpu/mpc86xx/cpu_init.c +++ b/cpu/mpc86xx/cpu_init.c @@ -28,6 +28,7 @@ #include <common.h> #include <mpc86xx.h> +#include <asm/fsl_law.h> DECLARE_GLOBAL_DATA_PTR; diff --git a/cpu/mpc86xx/fdt.c b/cpu/mpc86xx/fdt.c new file mode 100644 index 0000000..379306e --- /dev/null +++ b/cpu/mpc86xx/fdt.c @@ -0,0 +1,35 @@ +/* + * Copyright 2008 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * Version 2 as published by the Free Software Foundation. + */ + +#include <common.h> +#include <libfdt.h> +#include <fdt_support.h> + +void ft_cpu_setup(void *blob, bd_t *bd) +{ + do_fixup_by_prop_u32(blob, "device_type", "cpu", 4, + "timebase-frequency", bd->bi_busfreq / 4, 1); + do_fixup_by_prop_u32(blob, "device_type", "cpu", 4, + "bus-frequency", bd->bi_busfreq, 1); + do_fixup_by_prop_u32(blob, "device_type", "cpu", 4, + "clock-frequency", bd->bi_intfreq, 1); + do_fixup_by_prop_u32(blob, "device_type", "soc", 4, + "bus-frequency", bd->bi_busfreq, 1); + + fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize); + +#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) \ + || defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3) + fdt_fixup_ethernet(blob, bd); +#endif + +#ifdef CFG_NS16550 + do_fixup_by_compat_u32(blob, "ns16550", + "clock-frequency", bd->bi_busfreq, 1); +#endif +} diff --git a/cpu/mpc86xx/spd_sdram.c b/cpu/mpc86xx/spd_sdram.c index e501caf..60a7818 100644 --- a/cpu/mpc86xx/spd_sdram.c +++ b/cpu/mpc86xx/spd_sdram.c @@ -943,7 +943,7 @@ unsigned int enable_ddr(unsigned int ddr_num) spd_eeprom_t spd1,spd2; volatile ccsr_ddr_t *ddr; unsigned sdram_cfg_1; - unsigned char sdram_type, mem_type, config, mod_attr; + unsigned char sdram_type, mem_type, mod_attr; unsigned char d_init; unsigned int no_dimm1=0, no_dimm2=0; @@ -1017,6 +1017,10 @@ unsigned int enable_ddr(unsigned int ddr_num) printf("No memory modules found for DDR controller %d!!\n", ddr_num); return 0; } else { + +#if defined(CONFIG_DDR_ECC) + unsigned char config; +#endif mem_type = no_dimm2 ? spd1.mem_type : spd2.mem_type; /* @@ -1122,8 +1126,8 @@ spd_sdram(void) int memsize_ddr1_dimm2 = 0; int memsize_ddr1 = 0; unsigned int law_size_ddr1; - volatile immap_t *immap = (immap_t *)CFG_IMMR; #ifdef CONFIG_DDR_INTERLEAVE + volatile immap_t *immap = (immap_t *)CFG_IMMR; volatile ccsr_ddr_t *ddr1 = &immap->im_ddr1; #endif @@ -1183,7 +1187,6 @@ spd_sdram(void) #endif debug("Interleaved memory size is 0x%08lx\n", memsize_total); -#ifdef CONFIG_DDR_INTERLEAVE #if (CFG_PAGE_INTERLEAVING == 1) printf("Page "); #elif (CFG_BANK_INTERLEAVING == 1) @@ -1193,7 +1196,6 @@ spd_sdram(void) #else printf("Cache-line "); #endif -#endif printf("Interleaved"); return memsize_total * 1024 * 1024; } else { diff --git a/cpu/ppc4xx/config.mk b/cpu/ppc4xx/config.mk index 311c97b..baa97a4 100644 --- a/cpu/ppc4xx/config.mk +++ b/cpu/ppc4xx/config.mk @@ -25,7 +25,7 @@ PLATFORM_RELFLAGS += -fPIC -ffixed-r14 -meabi -fno-strict-aliasing PLATFORM_CPPFLAGS += -DCONFIG_4xx -ffixed-r2 -mstring -msoft-float cfg=$(shell grep configs $(OBJTREE)/include/config.h | sed 's/.*<\(configs.*\)>/\1/') -is440=$(shell grep CONFIG_440 $(TOPDIR)/include/$(cfg)) +is440:=$(shell grep CONFIG_440 $(TOPDIR)/include/$(cfg)) ifneq (,$(findstring CONFIG_440,$(is440))) PLATFORM_CPPFLAGS += -Wa,-m440 -mcpu=440 |