LIBS = lib_generic/libgeneric.a
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
"board/$(VENDOR)/common/lib$(VENDOR).a"; fi)
-LIBS += board/$(BOARDDIR)/lib$(BOARD).a
LIBS += cpu/$(CPU)/lib$(CPU).a
ifdef SOC
LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
LIBS := $(addprefix $(obj),$(LIBS))
.PHONY : $(LIBS) $(VERSION_FILE)
+LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
+LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
+
# Add GCC lib
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
endif
__OBJS := $(subst $(obj),,$(OBJS))
-__LIBS := $(subst $(obj),,$(LIBS))
+__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
#########################################################################
#########################################################################
$(obj)u-boot.dis: $(obj)u-boot
$(OBJDUMP) -d $< > $@
-$(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
- UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
+$(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT)
+ UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
+ sed -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
-Map u-boot.map -o u-boot
$(LIBS): depend $(obj)include/autoconf.mk
$(MAKE) -C $(dir $(subst $(obj),,$@))
+$(LIBBOARD): depend $(LIBS) $(obj)include/autoconf.mk
+ $(MAKE) -C $(dir $(subst $(obj),,$@))
+
$(SUBDIRS): depend $(obj)include/autoconf.mk
$(MAKE) -C $@ all
}
*off = part->offset;
if (argc >= 2) {
- if (!(str2long(argv[1], size))) {
+ if (!(str2long(argv[1], (ulong *)size))) {
printf("'%s' is not a number\n", argv[1]);
return -1;
}
int env_init(void)
{
#if defined(ENV_IS_EMBEDDED)
- ulong total;
+ size_t total;
int crc1_ok = 0, crc2_ok = 0;
env_t *tmp_env1, *tmp_env2;
#else /* ! CFG_ENV_OFFSET_REDUND */
int saveenv(void)
{
- ulong total;
+ size_t total;
int ret = 0;
puts ("Erasing Nand...");
void env_relocate_spec (void)
{
#if !defined(ENV_IS_EMBEDDED)
- ulong total;
+ size_t total;
int ret;
total = CFG_ENV_SIZE;
#
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2)
+ifeq ($(findstring 4.2,$(shell $(CROSS_COMPILE)gcc --version)),4.2)
PLATFORM_CPPFLAGS += -mcpu=5208 -fPIC
else
PLATFORM_CPPFLAGS += -m5307 -fPIC
#
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2)
+ifeq ($(findstring 4.2,$(shell $(CROSS_COMPILE)gcc --version)),4.2)
PLATFORM_CPPFLAGS += -mcpu=5235 -fPIC
else
PLATFORM_CPPFLAGS += -m5307 -fPIC
is5282:=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg))
-ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2)
+ifeq ($(findstring 4.2,$(shell $(CROSS_COMPILE)gcc --version)),4.2)
ifneq (,$(findstring CONFIG_M5249,$(is5249)))
PLATFORM_CPPFLAGS += -mcpu=5249
#
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2)
+ifeq ($(findstring 4.2,$(shell $(CROSS_COMPILE)gcc --version)),4.2)
PLATFORM_CPPFLAGS += -mcpu=5329 -fPIC
else
PLATFORM_CPPFLAGS += -m5307 -fPIC
#
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2)
+ifeq ($(findstring 4.2,$(shell $(CROSS_COMPILE)gcc --version)),4.2)
PLATFORM_CPPFLAGS += -mcpu=54455 -fPIC
else
PLATFORM_CPPFLAGS += -m5407 -fPIC
#
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifeq ($(findstring 4.2,$(shell $(CC) --version)),4.2)
+ifeq ($(findstring 4.2,$(shell $(CROSS_COMPILE)gcc --version)),4.2)
PLATFORM_CPPFLAGS += -mcpu=5485 -fPIC
else
PLATFORM_CPPFLAGS += -m5407 -fPIC
get_sys_info(&sys_info);
gd->cpu_clk = sys_info.freqProcessor;
gd->bus_clk = sys_info.freqSystemBus;
+
+ /*
+ * The base clock for I2C depends on the actual SOC. Unfortunately,
+ * there is no pattern that can be used to determine the frequency, so
+ * the only choice is to look up the actual SOC number and use the value
+ * for that SOC. This information is taken from application note
+ * AN2919.
+ */
+#ifdef CONFIG_MPC8610
gd->i2c1_clk = sys_info.freqSystemBus;
- gd->i2c2_clk = sys_info.freqSystemBus;
+#else
+ gd->i2c1_clk = sys_info.freqSystemBus / 2;
+#endif
+ gd->i2c2_clk = gd->i2c1_clk;
if (gd->cpu_clk != 0)
return 0;
#include <asm/errno.h>
/* It should access 16-bit instead of 8-bit */
-static inline void *memcpy(void *dst, const void *src, unsigned int len)
+static inline void *memcpy_16(void *dst, const void *src, unsigned int len)
{
void *ret = dst;
short *d = dst;
bufferram = this->base + area;
bufferram += onenand_bufferram_offset(mtd, area);
- memcpy(buffer, bufferram + offset, count);
+ memcpy_16(buffer, bufferram + offset, count);
return 0;
}
this->mmcontrol(mtd, ONENAND_SYS_CFG1_SYNC_READ);
- memcpy(buffer, bufferram + offset, count);
+ memcpy_16(buffer, bufferram + offset, count);
this->mmcontrol(mtd, 0);
bufferram = this->base + area;
bufferram += onenand_bufferram_offset(mtd, area);
- memcpy(bufferram + offset, buffer, count);
+ memcpy_16(bufferram + offset, buffer, count);
return 0;
}
0, /* duplex and speed */
0, /* phy name */
0, /* phy name init */
+#ifdef CFG_DMA_USE_INTSRAM
+ DBUF_LENGTH, /* RX BD */
+#else
0, /* RX BD */
+#endif
0, /* TX BD */
0, /* rx Index */
0, /* tx Index */
}
#endif
-static void set_fec_duplex_speed(volatile fecdma_t * fecp, bd_t * bd, int dup_spd)
+static void set_fec_duplex_speed(volatile fecdma_t * fecp, bd_t * bd,
+ int dup_spd)
{
if ((dup_spd >> 16) == FULL) {
/* Set maximum frame length */
{
struct eth_device *dev;
int i;
+#ifdef CFG_DMA_USE_INTSRAM
+ u32 tmp = CFG_INTSRAM + 0x2000;
+#endif
for (i = 0; i < sizeof(fec_info) / sizeof(fec_info[0]); i++) {
dev->recv = fec_recv;
/* setup Receive and Transmit buffer descriptor */
+#ifdef CFG_DMA_USE_INTSRAM
+ fec_info[i].rxbd = (int)fec_info[i].rxbd + tmp;
+ tmp = fec_info[i].rxbd;
+ fec_info[i].txbd =
+ (int)fec_info[i].txbd + tmp + (PKTBUFSRX * sizeof(cbd_t));
+ tmp = fec_info[i].txbd;
+ fec_info[i].txbuf =
+ (int)fec_info[i].txbuf + tmp +
+ (CFG_TX_ETH_BUFFER * sizeof(cbd_t));
+ tmp = fec_info[i].txbuf;
+#else
fec_info[i].rxbd =
(cbd_t *) memalign(CFG_CACHELINE_SIZE,
(PKTBUFSRX * sizeof(cbd_t)));
(CFG_TX_ETH_BUFFER * sizeof(cbd_t)));
fec_info[i].txbuf =
(char *)memalign(CFG_CACHELINE_SIZE, DBUF_LENGTH);
+#endif
#ifdef ET_DEBUG
printf("rxbd %x txbd %x\n",
tm->tm_hour = BCD2BIN(buf[M41T62_REG_HOUR] & 0x3f);
tm->tm_mday = BCD2BIN(buf[M41T62_REG_DAY] & 0x3f);
tm->tm_wday = buf[M41T62_REG_WDAY] & 0x07;
- tm->tm_mon = BCD2BIN(buf[M41T62_REG_MON] & 0x1f) - 1;
+ tm->tm_mon = BCD2BIN(buf[M41T62_REG_MON] & 0x1f);
/* assume 20YY not 19YY, and ignore the Century Bit */
/* U-Boot needs to add 1900 here */
buf[M41T62_REG_DAY] =
BIN2BCD(tm->tm_mday) | (buf[M41T62_REG_DAY] & ~0x3f);
buf[M41T62_REG_MON] =
- BIN2BCD(tm->tm_mon + 1) | (buf[M41T62_REG_MON] & ~0x1f);
+ BIN2BCD(tm->tm_mon) | (buf[M41T62_REG_MON] & ~0x1f);
/* assume 20YY not 19YY */
buf[M41T62_REG_YEAR] = BIN2BCD(tm->tm_year % 100);
unsigned long inp_clk;
unsigned long vco_clk;
unsigned long flb_clk;
+#endif
+#ifdef CONFIG_FSL_I2C
+ unsigned long i2c1_clk;
+ unsigned long i2c2_clk;
#endif
unsigned long ram_size; /* RAM size */
unsigned long reloc_off; /* Relocation Offset */
# define CONFIG_MII_INIT 1
# define CONFIG_HAS_ETH1
+# define CFG_DMA_USE_INTSRAM 1
# define CFG_DISCOVER_PHY
# define CFG_RX_ETH_BUFFER 32
# define CFG_TX_ETH_BUFFER 48
# define CONFIG_MII_INIT 1
# define CONFIG_HAS_ETH1
+# define CFG_DMA_USE_INTSRAM 1
# define CFG_DISCOVER_PHY
# define CFG_RX_ETH_BUFFER 32
# define CFG_TX_ETH_BUFFER 48
* footprint in our tests.
*/
/* return IP *in network byteorder* */
-static inline IPaddr_t NetReadIP(void *from)
+static inline IPaddr_t NetReadIP(volatile void *from)
{
IPaddr_t ip;
- memcpy((void*)&ip, from, sizeof(ip));
+ memcpy((void*)&ip, (void*)from, sizeof(ip));
return ip;
}
}
/* copy IP */
-static inline void NetCopyIP(void *to, void *from)
+static inline void NetCopyIP(volatile void *to, void *from)
{
- memcpy(to, from, sizeof(IPaddr_t));
+ memcpy((void*)to, from, sizeof(IPaddr_t));
}
/* copy ulong */
{
"+ 5 V", "V", &sysmon_dspic, NULL, NULL,
- 100, 1000, 0, 0xFFFF, 0xFFFF,
- VOLTAGE_5V_MIN, VOLTAGE_5V_MAX, 0,
- VOLTAGE_5V_MIN, VOLTAGE_5V_MAX, 0,
+ 100, 1000, -0x8000, 0x7FFF, 0xFFFF,
+ 0x8000 + VOLTAGE_5V_MIN, 0x8000 + VOLTAGE_5V_MAX, 0,
+ 0x8000 + VOLTAGE_5V_MIN, 0x8000 + VOLTAGE_5V_MAX, 0,
REG_VOLTAGE_5V,
},
{
"+ 5 V standby", "V", &sysmon_dspic, NULL, NULL,
- 100, 1000, 0, 0xFFFF, 0xFFFF,
- VOLTAGE_5V_STANDBY_MIN, VOLTAGE_5V_STANDBY_MAX, 0,
- VOLTAGE_5V_STANDBY_MIN, VOLTAGE_5V_STANDBY_MAX, 0,
+ 100, 1000, -0x8000, 0x7FFF, 0xFFFF,
+ 0x8000 + VOLTAGE_5V_STANDBY_MIN, 0x8000 + VOLTAGE_5V_STANDBY_MAX, 0,
+ 0x8000 + VOLTAGE_5V_STANDBY_MIN, 0x8000 + VOLTAGE_5V_STANDBY_MAX, 0,
REG_VOLTAGE_5V_STANDBY,
},
};