Compare commits
109 Commits
v1.3.3-rc2
...
v1.3.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
180a90abda | ||
|
|
a734c06bf7 | ||
|
|
16bedc661d | ||
|
|
3cc27b426a | ||
|
|
311f344693 | ||
|
|
a559317143 | ||
|
|
91f221317a | ||
|
|
dd22394413 | ||
|
|
a9da341df1 | ||
|
|
a38dc3ea86 | ||
|
|
4f805c1e3a | ||
|
|
35fca4c44d | ||
|
|
cda2a4a996 | ||
|
|
2dd7082e06 | ||
|
|
fdd1247a66 | ||
|
|
a8409f4f1a | ||
|
|
cf39b07948 | ||
|
|
085551c05c | ||
|
|
1510b82d50 | ||
|
|
70fab1908f | ||
|
|
65dcfa7920 | ||
|
|
5ddd67efa5 | ||
|
|
ee0cfa7080 | ||
|
|
02b9b22446 | ||
|
|
c9dca3c3f3 | ||
|
|
20e5ed1374 | ||
|
|
79dd171268 | ||
|
|
869d14b4cc | ||
|
|
f3612a7b19 | ||
|
|
36f32675f4 | ||
|
|
91a616741f | ||
|
|
881031d973 | ||
|
|
e5e9d6c9c0 | ||
|
|
cfd60441d8 | ||
|
|
cce9cfdabc | ||
|
|
9606b3c81b | ||
|
|
ceb6b4fbe1 | ||
|
|
2ab02fd456 | ||
|
|
f3f3175746 | ||
|
|
1b5605ca57 | ||
|
|
c59518e159 | ||
|
|
273c37d843 | ||
|
|
bc11756daf | ||
|
|
f3b6d528e4 | ||
|
|
7ea8325b41 | ||
|
|
4604f552a9 | ||
|
|
356cd17cc2 | ||
|
|
597f6c26a1 | ||
|
|
726c0f1e5f | ||
|
|
574b319512 | ||
|
|
045b4d2d71 | ||
|
|
4d49b28038 | ||
|
|
878b3b1e19 | ||
|
|
1df368aed3 | ||
|
|
8fbc985bda | ||
|
|
e419e12d04 | ||
|
|
f5a2425919 | ||
|
|
4d31cdc45d | ||
|
|
ef2642625c | ||
|
|
a00eccfebc | ||
|
|
cb5d88b961 | ||
|
|
d1c1ba85c7 | ||
|
|
4adb3023de | ||
|
|
b9bbefce1a | ||
|
|
66f5fa9263 | ||
|
|
a5fe514e8a | ||
|
|
49387dba91 | ||
|
|
908261f3fd | ||
|
|
0f8c62a14b | ||
|
|
12a67a9e51 | ||
|
|
b83dcc13ae | ||
|
|
6adf61dc4c | ||
|
|
fb98f94fcb | ||
|
|
7c0773fde6 | ||
|
|
aa737945e6 | ||
|
|
4acc2a108a | ||
|
|
ccf1ad535a | ||
|
|
3648085c46 | ||
|
|
4a89b766bf | ||
|
|
6fdd002689 | ||
|
|
fa956fde60 | ||
|
|
8e90cd0447 | ||
|
|
b71190f325 | ||
|
|
9acde129cc | ||
|
|
bd98ee60df | ||
|
|
c4e5f52a58 | ||
|
|
27c38689d0 | ||
|
|
6d12e697de | ||
|
|
4d77f5102d | ||
|
|
56bb37e4b9 | ||
|
|
0072b78be2 | ||
|
|
141ba1cad8 | ||
|
|
ea638951ac | ||
|
|
50f93d30da | ||
|
|
d2c6fbec43 | ||
|
|
fed4de0135 | ||
|
|
12bc4e9425 | ||
|
|
1b9ed2574a | ||
|
|
f32f7fe7bd | ||
|
|
886d90176f | ||
|
|
b7166e05a5 | ||
|
|
378e7ec95d | ||
|
|
33a4a70d48 | ||
|
|
58b575e575 | ||
|
|
e7419b243a | ||
|
|
42ffcec3f9 | ||
|
|
de109d9097 | ||
|
|
4f27098e5b | ||
|
|
ea9202a659 |
@@ -607,7 +607,7 @@ Thomas Lange <thomas@corelatus.se>
|
|||||||
dbau1x00 MIPS32 Au1000
|
dbau1x00 MIPS32 Au1000
|
||||||
gth2 MIPS32 Au1000
|
gth2 MIPS32 Au1000
|
||||||
|
|
||||||
Vlad Lungu <vlad@comsys.ro>
|
Vlad Lungu <vlad.lungu@windriver.com>
|
||||||
qemu_mips MIPS32
|
qemu_mips MIPS32
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|||||||
2
MAKEALL
2
MAKEALL
@@ -42,6 +42,7 @@ LIST_5xxx=" \
|
|||||||
fo300 \
|
fo300 \
|
||||||
icecube_5100 \
|
icecube_5100 \
|
||||||
icecube_5200 \
|
icecube_5200 \
|
||||||
|
inka4x0 \
|
||||||
lite5200b \
|
lite5200b \
|
||||||
mcc200 \
|
mcc200 \
|
||||||
mecp5200 \
|
mecp5200 \
|
||||||
@@ -305,6 +306,7 @@ LIST_8260=" \
|
|||||||
TQM8260_AC \
|
TQM8260_AC \
|
||||||
TQM8260_AD \
|
TQM8260_AD \
|
||||||
TQM8260_AE \
|
TQM8260_AE \
|
||||||
|
TQM8272 \
|
||||||
ZPC1900 \
|
ZPC1900 \
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|||||||
38
Makefile
38
Makefile
@@ -24,7 +24,7 @@
|
|||||||
VERSION = 1
|
VERSION = 1
|
||||||
PATCHLEVEL = 3
|
PATCHLEVEL = 3
|
||||||
SUBLEVEL = 3
|
SUBLEVEL = 3
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION =
|
||||||
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
||||||
VERSION_FILE = $(obj)include/version_autogenerated.h
|
VERSION_FILE = $(obj)include/version_autogenerated.h
|
||||||
|
|
||||||
@@ -201,7 +201,6 @@ OBJS := $(addprefix $(obj),$(OBJS))
|
|||||||
LIBS = lib_generic/libgeneric.a
|
LIBS = lib_generic/libgeneric.a
|
||||||
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
|
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
|
||||||
"board/$(VENDOR)/common/lib$(VENDOR).a"; fi)
|
"board/$(VENDOR)/common/lib$(VENDOR).a"; fi)
|
||||||
LIBS += board/$(BOARDDIR)/lib$(BOARD).a
|
|
||||||
LIBS += cpu/$(CPU)/lib$(CPU).a
|
LIBS += cpu/$(CPU)/lib$(CPU).a
|
||||||
ifdef SOC
|
ifdef SOC
|
||||||
LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
|
LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
|
||||||
@@ -248,6 +247,9 @@ LIBS += post/libpost.a
|
|||||||
LIBS := $(addprefix $(obj),$(LIBS))
|
LIBS := $(addprefix $(obj),$(LIBS))
|
||||||
.PHONY : $(LIBS) $(VERSION_FILE)
|
.PHONY : $(LIBS) $(VERSION_FILE)
|
||||||
|
|
||||||
|
LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
|
||||||
|
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
|
||||||
|
|
||||||
# Add GCC lib
|
# Add GCC lib
|
||||||
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
|
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
|
||||||
|
|
||||||
@@ -270,7 +272,7 @@ U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
__OBJS := $(subst $(obj),,$(OBJS))
|
__OBJS := $(subst $(obj),,$(OBJS))
|
||||||
__LIBS := $(subst $(obj),,$(LIBS))
|
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
#########################################################################
|
#########################################################################
|
||||||
@@ -313,8 +315,9 @@ $(obj)u-boot.sha1: $(obj)u-boot.bin
|
|||||||
$(obj)u-boot.dis: $(obj)u-boot
|
$(obj)u-boot.dis: $(obj)u-boot
|
||||||
$(OBJDUMP) -d $< > $@
|
$(OBJDUMP) -d $< > $@
|
||||||
|
|
||||||
$(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
|
$(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT)
|
||||||
UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
|
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) \
|
cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
|
||||||
--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
|
--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
|
||||||
-Map u-boot.map -o u-boot
|
-Map u-boot.map -o u-boot
|
||||||
@@ -325,6 +328,9 @@ $(OBJS): depend $(obj)include/autoconf.mk
|
|||||||
$(LIBS): depend $(obj)include/autoconf.mk
|
$(LIBS): depend $(obj)include/autoconf.mk
|
||||||
$(MAKE) -C $(dir $(subst $(obj),,$@))
|
$(MAKE) -C $(dir $(subst $(obj),,$@))
|
||||||
|
|
||||||
|
$(LIBBOARD): depend $(LIBS) $(obj)include/autoconf.mk
|
||||||
|
$(MAKE) -C $(dir $(subst $(obj),,$@))
|
||||||
|
|
||||||
$(SUBDIRS): depend $(obj)include/autoconf.mk
|
$(SUBDIRS): depend $(obj)include/autoconf.mk
|
||||||
$(MAKE) -C $@ all
|
$(MAKE) -C $@ all
|
||||||
|
|
||||||
@@ -346,11 +352,9 @@ $(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin $(obj)include/autoconf.mk
|
|||||||
cat $(obj)onenand_ipl/onenand-ipl-4k.bin $(obj)u-boot.bin > $(obj)u-boot-flexonenand.bin
|
cat $(obj)onenand_ipl/onenand-ipl-4k.bin $(obj)u-boot.bin > $(obj)u-boot-flexonenand.bin
|
||||||
|
|
||||||
$(VERSION_FILE):
|
$(VERSION_FILE):
|
||||||
@( echo -n "#define U_BOOT_VERSION \"U-Boot " ; \
|
@( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
|
||||||
echo -n "$(U_BOOT_VERSION)" ; \
|
'$(shell $(CONFIG_SHELL) $(TOPDIR)/tools/setlocalversion $(TOPDIR))' \
|
||||||
echo -n $(shell $(CONFIG_SHELL) $(TOPDIR)/tools/setlocalversion \
|
) > $@.tmp
|
||||||
$(TOPDIR)) ; \
|
|
||||||
echo "\"" ) > $@.tmp
|
|
||||||
@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
|
@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
|
||||||
|
|
||||||
gdbtools:
|
gdbtools:
|
||||||
@@ -420,13 +424,19 @@ $(obj)System.map: $(obj)u-boot
|
|||||||
# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
|
# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
|
||||||
# the dep file is only include in this top level makefile to determine when
|
# the dep file is only include in this top level makefile to determine when
|
||||||
# to regenerate the autoconf.mk file.
|
# to regenerate the autoconf.mk file.
|
||||||
$(obj)include/autoconf.mk: $(obj)include/config.h $(VERSION_FILE)
|
$(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
|
||||||
@$(XECHO) Generating include/autoconf.mk ; \
|
@$(XECHO) Generating $@ ; \
|
||||||
set -e ; \
|
set -e ; \
|
||||||
: Generate the dependancies ; \
|
: Generate the dependancies ; \
|
||||||
$(CC) -x c -M $(HOST_CFLAGS) $(CPPFLAGS) -MQ $@ include/common.h > $@.dep ; \
|
$(CC) -x c -DDO_DEPS_ONLY -M $(HOST_CFLAGS) $(CPPFLAGS) \
|
||||||
|
-MQ $(obj)include/autoconf.mk include/common.h > $@
|
||||||
|
|
||||||
|
$(obj)include/autoconf.mk: $(obj)include/config.h
|
||||||
|
@$(XECHO) Generating $@ ; \
|
||||||
|
set -e ; \
|
||||||
: Extract the config macros ; \
|
: Extract the config macros ; \
|
||||||
$(CPP) $(CFLAGS) -dM include/common.h | sed -n -f tools/scripts/define2mk.sed > $@
|
$(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h | \
|
||||||
|
sed -n -f tools/scripts/define2mk.sed > $@
|
||||||
|
|
||||||
sinclude $(obj)include/autoconf.mk.dep
|
sinclude $(obj)include/autoconf.mk.dep
|
||||||
|
|
||||||
|
|||||||
1
README
1
README
@@ -623,7 +623,6 @@ The following options need to be configured:
|
|||||||
CONFIG_CMD_SPI * SPI serial bus support
|
CONFIG_CMD_SPI * SPI serial bus support
|
||||||
CONFIG_CMD_USB * USB support
|
CONFIG_CMD_USB * USB support
|
||||||
CONFIG_CMD_VFD * VFD support (TRAB)
|
CONFIG_CMD_VFD * VFD support (TRAB)
|
||||||
CONFIG_CMD_BSP * Board SPecific functions
|
|
||||||
CONFIG_CMD_CDP * Cisco Discover Protocol support
|
CONFIG_CMD_CDP * Cisco Discover Protocol support
|
||||||
CONFIG_CMD_FSL * Microblaze FSL support
|
CONFIG_CMD_FSL * Microblaze FSL support
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include <command.h>
|
#include <command.h>
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#include <environment.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <api_public.h>
|
#include <api_public.h>
|
||||||
|
|
||||||
@@ -40,7 +41,6 @@
|
|||||||
|
|
||||||
/* U-Boot routines needed */
|
/* U-Boot routines needed */
|
||||||
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
||||||
extern uchar *env_get_addr(int);
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
@@ -582,7 +582,7 @@ int syscall(int call, int *retval, ...)
|
|||||||
va_list ap;
|
va_list ap;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
if (call < 0 || call >= calls_no || calls_table[call] == NULL) {
|
if (call < 0 || call >= calls_no) {
|
||||||
debugf("invalid call #%d\n", call);
|
debugf("invalid call #%d\n", call);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
# MA 02111-1307 USA
|
# MA 02111-1307 USA
|
||||||
#
|
#
|
||||||
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/textbase.mk
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/textbase.mk
|
||||||
ifndef TEXT_BASE
|
ifndef TEXT_BASE
|
||||||
TEXT_BASE = 0xFE000000
|
TEXT_BASE = 0xFE000000
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
||||||
|
|
||||||
ifndef TEXT_BASE
|
ifndef TEXT_BASE
|
||||||
TEXT_BASE = 0xFFFC0000
|
TEXT_BASE = 0xFFF80000
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(debug),1)
|
ifeq ($(debug),1)
|
||||||
|
|||||||
@@ -476,8 +476,37 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||||||
val[3] = gd->bd->bi_flashsize;
|
val[3] = gd->bd->bi_flashsize;
|
||||||
rc = fdt_find_and_setprop(blob, "/plb/opb/ebc", "ranges",
|
rc = fdt_find_and_setprop(blob, "/plb/opb/ebc", "ranges",
|
||||||
val, sizeof(val), 1);
|
val, sizeof(val), 1);
|
||||||
if (rc)
|
if (rc) {
|
||||||
printf("Unable to update property NOR mapping, err=%s\n",
|
printf("Unable to update property NOR mapping, err=%s\n",
|
||||||
fdt_strerror(rc));
|
fdt_strerror(rc));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gd->board_type == BOARD_CANYONLANDS_SATA) {
|
||||||
|
/*
|
||||||
|
* When SATA is selected we need to disable the first PCIe
|
||||||
|
* node in the device tree, so that Linux doesn't initialize
|
||||||
|
* it.
|
||||||
|
*/
|
||||||
|
rc = fdt_find_and_setprop(blob, "/plb/pciex@d00000000", "status",
|
||||||
|
"disabled", sizeof("disabled"), 1);
|
||||||
|
if (rc) {
|
||||||
|
printf("Unable to update property status in PCIe node, err=%s\n",
|
||||||
|
fdt_strerror(rc));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gd->board_type == BOARD_CANYONLANDS_PCIE) {
|
||||||
|
/*
|
||||||
|
* When PCIe is selected we need to disable the SATA
|
||||||
|
* node in the device tree, so that Linux doesn't initialize
|
||||||
|
* it.
|
||||||
|
*/
|
||||||
|
rc = fdt_find_and_setprop(blob, "/plb/sata@bffd1000", "status",
|
||||||
|
"disabled", sizeof("disabled"), 1);
|
||||||
|
if (rc) {
|
||||||
|
printf("Unable to update property status in PCIe node, err=%s\n",
|
||||||
|
fdt_strerror(rc));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
|
#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
|
||||||
|
|||||||
@@ -24,20 +24,12 @@
|
|||||||
# AMCC 460EX/460GT Evaluation Board (Canyonlands) board
|
# AMCC 460EX/460GT Evaluation Board (Canyonlands) board
|
||||||
#
|
#
|
||||||
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
||||||
|
|
||||||
ifndef TEXT_BASE
|
ifndef TEXT_BASE
|
||||||
TEXT_BASE = 0xFFFA0000
|
TEXT_BASE = 0xFFFA0000
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_NAND_U_BOOT),y)
|
|
||||||
LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_PCIBOOT_U_BOOT),y)
|
|
||||||
LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
|
|
||||||
endif
|
|
||||||
|
|
||||||
PLATFORM_CPPFLAGS += -DCONFIG_440=1
|
PLATFORM_CPPFLAGS += -DCONFIG_440=1
|
||||||
|
|
||||||
ifeq ($(debug),1)
|
ifeq ($(debug),1)
|
||||||
|
|||||||
@@ -230,14 +230,22 @@ int misc_init_r(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int board_emac_count(void)
|
static int is_405exr(void)
|
||||||
{
|
{
|
||||||
u32 pvr = get_pvr();
|
u32 pvr = get_pvr();
|
||||||
|
|
||||||
|
if (pvr & 0x00000004)
|
||||||
|
return 0; /* bit 2 set -> 405EX */
|
||||||
|
|
||||||
|
return 1; /* bit 2 cleared -> 405EXr */
|
||||||
|
}
|
||||||
|
|
||||||
|
int board_emac_count(void)
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
* 405EXr only has one EMAC interface, 405EX has two
|
* 405EXr only has one EMAC interface, 405EX has two
|
||||||
*/
|
*/
|
||||||
if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA))
|
if (is_405exr())
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 2;
|
return 2;
|
||||||
@@ -245,12 +253,10 @@ int board_emac_count(void)
|
|||||||
|
|
||||||
static int board_pcie_count(void)
|
static int board_pcie_count(void)
|
||||||
{
|
{
|
||||||
u32 pvr = get_pvr();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 405EXr only has one EMAC interface, 405EX has two
|
* 405EXr only has one EMAC interface, 405EX has two
|
||||||
*/
|
*/
|
||||||
if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA))
|
if (is_405exr())
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 2;
|
return 2;
|
||||||
@@ -259,9 +265,8 @@ static int board_pcie_count(void)
|
|||||||
int checkboard (void)
|
int checkboard (void)
|
||||||
{
|
{
|
||||||
char *s = getenv("serial#");
|
char *s = getenv("serial#");
|
||||||
u32 pvr = get_pvr();
|
|
||||||
|
|
||||||
if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA))
|
if (is_405exr())
|
||||||
printf("Board: Haleakala - AMCC PPC405EXr Evaluation Board");
|
printf("Board: Haleakala - AMCC PPC405EXr Evaluation Board");
|
||||||
else
|
else
|
||||||
printf("Board: Kilauea - AMCC PPC405EX Evaluation Board");
|
printf("Board: Kilauea - AMCC PPC405EX Evaluation Board");
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <spd_sdram.h>
|
#include <spd_sdram.h>
|
||||||
|
#include <libfdt.h>
|
||||||
|
#include <fdt_support.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
@@ -554,3 +556,24 @@ void board_reset(void)
|
|||||||
/* give reset to BCSR */
|
/* give reset to BCSR */
|
||||||
*(unsigned char *)(CFG_BCSR_BASE | 0x06) = 0x09;
|
*(unsigned char *)(CFG_BCSR_BASE | 0x06) = 0x09;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
|
||||||
|
void ft_board_setup(void *blob, bd_t *bd)
|
||||||
|
{
|
||||||
|
u32 val[4];
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
ft_cpu_setup(blob, bd);
|
||||||
|
|
||||||
|
/* Fixup NOR mapping */
|
||||||
|
val[0] = 0; /* chip select number */
|
||||||
|
val[1] = 0; /* always 0 */
|
||||||
|
val[2] = gd->bd->bi_flashstart;
|
||||||
|
val[3] = gd->bd->bi_flashsize;
|
||||||
|
rc = fdt_find_and_setprop(blob, "/plb/opb/ebc", "ranges",
|
||||||
|
val, sizeof(val), 1);
|
||||||
|
if (rc)
|
||||||
|
printf("Unable to update property NOR mapping, err=%s\n",
|
||||||
|
fdt_strerror(rc));
|
||||||
|
}
|
||||||
|
#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# (C) Copyright 2003-2008
|
# (C) Copyright 2003-2008
|
||||||
# Wolfgang Denk, DENX Software Engineering, wd <at> denx.de.
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||||
#
|
#
|
||||||
# See file CREDITS for list of people who contributed to this
|
# See file CREDITS for list of people who contributed to this
|
||||||
# project.
|
# project.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/arch/at91cap9.h>
|
#include <asm/arch/at91cap9.h>
|
||||||
#include <asm/arch/at91cap9_matrix.h>
|
#include <asm/arch/at91cap9_matrix.h>
|
||||||
#include <asm/arch/at91sam926x_mc.h>
|
#include <asm/arch/at91sam9_smc.h>
|
||||||
#include <asm/arch/at91_pmc.h>
|
#include <asm/arch/at91_pmc.h>
|
||||||
#include <asm/arch/at91_rstc.h>
|
#include <asm/arch/at91_rstc.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
|
* (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* (C) Copyright 2008
|
||||||
|
* Ulf Samuelsson <ulf@atmel.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2002
|
* (C) Copyright 2002
|
||||||
* Gary Jennejohn, DENX Software Engineering, <gj <at> denx.de>
|
* Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
* project.
|
* project.
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* (C) Copyright 2008
|
||||||
|
* Ulf Samuelsson <ulf@atmel.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# (C) Copyright 2003-2008
|
# (C) Copyright 2003-2008
|
||||||
# Wolfgang Denk, DENX Software Engineering, wd <at> denx.de.
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||||
#
|
#
|
||||||
# See file CREDITS for list of people who contributed to this
|
# See file CREDITS for list of people who contributed to this
|
||||||
# project.
|
# project.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/arch/at91sam9260.h>
|
#include <asm/arch/at91sam9260.h>
|
||||||
#include <asm/arch/at91sam9260_matrix.h>
|
#include <asm/arch/at91sam9260_matrix.h>
|
||||||
#include <asm/arch/at91sam926x_mc.h>
|
#include <asm/arch/at91sam9_smc.h>
|
||||||
#include <asm/arch/at91_pmc.h>
|
#include <asm/arch/at91_pmc.h>
|
||||||
#include <asm/arch/at91_rstc.h>
|
#include <asm/arch/at91_rstc.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
|
* (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
* (C) Copyright 2008
|
||||||
|
* Ulf Samuelsson <ulf@atmel.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as
|
* modify it under the terms of the GNU General Public License as
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2002
|
* (C) Copyright 2002
|
||||||
* Gary Jennejohn, DENX Software Engineering, <gj <at> denx.de>
|
* Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
* project.
|
* project.
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
# 0x00100000 boot from RAM (for testing only)
|
# 0x00100000 boot from RAM (for testing only)
|
||||||
#
|
#
|
||||||
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
||||||
|
|
||||||
ifndef TEXT_BASE
|
ifndef TEXT_BASE
|
||||||
## Standard: boot high
|
## Standard: boot high
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ int checkboard (void)
|
|||||||
uint pci_slot = get_pci_slot ();
|
uint pci_slot = get_pci_slot ();
|
||||||
|
|
||||||
uint cpu_board_rev = get_cpu_board_revision ();
|
uint cpu_board_rev = get_cpu_board_revision ();
|
||||||
|
uint svr;
|
||||||
|
|
||||||
printf ("Board: CDS Version 0x%02x, PCI Slot %d\n",
|
printf ("Board: CDS Version 0x%02x, PCI Slot %d\n",
|
||||||
get_board_version (), pci_slot);
|
get_board_version (), pci_slot);
|
||||||
@@ -71,11 +72,15 @@ int checkboard (void)
|
|||||||
*/
|
*/
|
||||||
local_bus_init ();
|
local_bus_init ();
|
||||||
|
|
||||||
|
svr = get_svr();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fix CPU2 errata: A core hang possible while executing a
|
* Fix CPU2 errata: A core hang possible while executing a
|
||||||
* msync instruction and a snoopable transaction from an I/O
|
* msync instruction and a snoopable transaction from an I/O
|
||||||
* master tagged to make quick forward progress is present.
|
* master tagged to make quick forward progress is present.
|
||||||
|
* Fixed in Silicon Rev.2.1
|
||||||
*/
|
*/
|
||||||
|
if (!(SVR_MAJ(svr) >= 2 && SVR_MIN(svr) >= 1))
|
||||||
ecm->eebpcr |= (1 << 16);
|
ecm->eebpcr |= (1 << 16);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -22,4 +22,4 @@
|
|||||||
TEXT_BASE = 0xfff00000
|
TEXT_BASE = 0xfff00000
|
||||||
|
|
||||||
PLATFORM_CPPFLAGS += -DCONFIG_MPC86xx=1
|
PLATFORM_CPPFLAGS += -DCONFIG_MPC86xx=1
|
||||||
PLATFORM_CPPFLAGS += -DCONFIG_MPC8610=1 -maltivec -mabi=altivec -msoft-float -O2
|
PLATFORM_CPPFLAGS += -DCONFIG_MPC8610=1 -maltivec -mabi=altivec -msoft-float
|
||||||
|
|||||||
@@ -23,18 +23,21 @@
|
|||||||
|
|
||||||
include $(TOPDIR)/config.mk
|
include $(TOPDIR)/config.mk
|
||||||
|
|
||||||
LIB = lib$(BOARD).a
|
LIB = $(obj)lib$(BOARD).a
|
||||||
|
|
||||||
OBJS = $(BOARD).o ide.o hwctl.o avr.o
|
OBJS = $(BOARD).o ide.o hwctl.o avr.o
|
||||||
|
|
||||||
$(LIB): .depend $(OBJS) $(SOBJS)
|
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||||
$(AR) crv $@ $(OBJS) $(SOBJS)
|
OBJS := $(addprefix $(obj),$(OBJS))
|
||||||
|
|
||||||
|
$(LIB): $(obj).depend $(OBJS)
|
||||||
|
$(AR) crv $@ $(OBJS)
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
|
# defines $(obj).depend target
|
||||||
$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
|
include $(SRCTREE)/rules.mk
|
||||||
|
|
||||||
sinclude .depend
|
sinclude $(obj).depend
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
# 0x07F00000 boot from RAM
|
# 0x07F00000 boot from RAM
|
||||||
#
|
#
|
||||||
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
||||||
|
|
||||||
ifndef TEXT_BASE
|
ifndef TEXT_BASE
|
||||||
# For flash image - all models
|
# For flash image - all models
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
# 0xFFF00000 boot high (standard configuration)
|
# 0xFFF00000 boot high (standard configuration)
|
||||||
#
|
#
|
||||||
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
||||||
|
|
||||||
ifndef TEXT_BASE
|
ifndef TEXT_BASE
|
||||||
TEXT_BASE = 0xFFF00000
|
TEXT_BASE = 0xFFF00000
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ lowlevel_init:
|
|||||||
mov r1, #CS4_BASE
|
mov r1, #CS4_BASE
|
||||||
ldrh r1, [r1, #0x2]
|
ldrh r1, [r1, #0x2]
|
||||||
/* Is 27MHz switch set? */
|
/* Is 27MHz switch set? */
|
||||||
ands r1, r1, #0x16
|
ands r1, r1, #0x10
|
||||||
|
|
||||||
/* 532-133-66.5 */
|
/* 532-133-66.5 */
|
||||||
ldr r0, =CCM_BASE
|
ldr r0, =CCM_BASE
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
By Vlad Lungu vlad@comsys.ro 2007-Oct-01
|
By Vlad Lungu vlad.lungu@windriver.com 2007-Oct-01
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
Qemu is a full system emulator. See
|
Qemu is a full system emulator. See
|
||||||
|
|
||||||
@@ -9,3 +9,7 @@ Limitations & comments
|
|||||||
Supports the "-m mips" configuration of qemu: serial,NE2000,IDE.
|
Supports the "-m mips" configuration of qemu: serial,NE2000,IDE.
|
||||||
Support is big endian only for now (or at least this is what I tested).
|
Support is big endian only for now (or at least this is what I tested).
|
||||||
Derived from au1x00 with a lot of things cut out.
|
Derived from au1x00 with a lot of things cut out.
|
||||||
|
|
||||||
|
Supports emulated flash (patch Jean-Christophe PLAGNIOL-VILLARD) with
|
||||||
|
recent qemu versions. When using emulated flash, launch with
|
||||||
|
-pflash <filename> and erase mips_bios.bin.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007
|
* (C) Copyright 2007
|
||||||
* Vlad Lungu vlad@comsys.ro
|
* Vlad Lungu vlad.lungu@windriver.com
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
* project.
|
* project.
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ done: movb $0x88, %al
|
|||||||
jmp *%ebp /* return to caller */
|
jmp *%ebp /* return to caller */
|
||||||
|
|
||||||
|
|
||||||
.globl __show_boot_progress
|
.globl show_boot_progress
|
||||||
__show_boot_progress:
|
show_boot_progress:
|
||||||
out %al, $0x80
|
out %al, $0x80
|
||||||
xchg %al, %ah
|
xchg %al, %ah
|
||||||
movw $0x680, %dx
|
movw $0x680, %dx
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ OBJS := $(addprefix $(obj),$(COBJS))
|
|||||||
SOBJS := $(addprefix $(obj),$(SOBJS))
|
SOBJS := $(addprefix $(obj),$(SOBJS))
|
||||||
|
|
||||||
$(LIB): $(obj).depend $(OBJS) $(SOBJS)
|
$(LIB): $(obj).depend $(OBJS) $(SOBJS)
|
||||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(SOBJS) $(OBJS)
|
rm -f $(SOBJS) $(OBJS)
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
#define PROBE_BUFFER_SIZE 1024
|
#define PROBE_BUFFER_SIZE 1024
|
||||||
static unsigned char buffer[PROBE_BUFFER_SIZE];
|
static unsigned char buffer[PROBE_BUFFER_SIZE];
|
||||||
|
|
||||||
|
|
||||||
#define SC520_MAX_FLASH_BANKS 1
|
#define SC520_MAX_FLASH_BANKS 1
|
||||||
#define SC520_FLASH_BANK0_BASE 0x38000000 /* BOOTCS */
|
#define SC520_FLASH_BANK0_BASE 0x38000000 /* BOOTCS */
|
||||||
#define SC520_FLASH_BANKSIZE 0x8000000
|
#define SC520_FLASH_BANKSIZE 0x8000000
|
||||||
@@ -62,7 +61,6 @@ flash_info_t flash_info[SC520_MAX_FLASH_BANKS];
|
|||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
static u32 _probe_flash(u32 addr, u32 bw, int il)
|
static u32 _probe_flash(u32 addr, u32 bw, int il)
|
||||||
{
|
{
|
||||||
u32 result=0;
|
u32 result=0;
|
||||||
@@ -180,7 +178,6 @@ static u32 _probe_flash(u32 addr, u32 bw, int il)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,11 +212,9 @@ static int identify_flash(unsigned address, int width)
|
|||||||
enable_interrupts();
|
enable_interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vendor = res >> 16;
|
vendor = res >> 16;
|
||||||
device = res & 0xffff;
|
device = res & 0xffff;
|
||||||
|
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,7 +380,6 @@ void flash_print_info(flash_info_t *info)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
printf(" Size: %ld MB in %d Sectors\n",
|
printf(" Size: %ld MB in %d Sectors\n",
|
||||||
info->size >> 20, info->sector_count);
|
info->size >> 20, info->sector_count);
|
||||||
|
|
||||||
@@ -399,13 +393,13 @@ void flash_print_info(flash_info_t *info)
|
|||||||
}
|
}
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
static u32 _amd_erase_flash(u32 addr, u32 sector)
|
static u32 _amd_erase_flash(u32 addr, u32 sector)
|
||||||
{
|
{
|
||||||
unsigned elapsed;
|
unsigned elapsed;
|
||||||
@@ -467,7 +461,6 @@ static u32 _intel_erase_flash(u32 addr, u32 sector)
|
|||||||
*(volatile u16*)(addr + sector) = 0x0020; /* erase setup */
|
*(volatile u16*)(addr + sector) = 0x0020; /* erase setup */
|
||||||
*(volatile u16*)(addr + sector) = 0x00D0; /* erase confirm */
|
*(volatile u16*)(addr + sector) = 0x00D0; /* erase confirm */
|
||||||
|
|
||||||
|
|
||||||
/* Wait at least 80us - let's wait 1 ms */
|
/* Wait at least 80us - let's wait 1 ms */
|
||||||
__udelay(1000);
|
__udelay(1000);
|
||||||
|
|
||||||
@@ -486,7 +479,6 @@ static u32 _intel_erase_flash(u32 addr, u32 sector)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern int _intel_erase_flash_end;
|
extern int _intel_erase_flash_end;
|
||||||
asm ("_intel_erase_flash_end:\n"
|
asm ("_intel_erase_flash_end:\n"
|
||||||
".long 0\n");
|
".long 0\n");
|
||||||
@@ -548,7 +540,6 @@ int flash_erase(flash_info_t *info, int s_first, int s_last)
|
|||||||
printf ("\n");
|
printf ("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Start erase on unprotected sectors */
|
/* Start erase on unprotected sectors */
|
||||||
for (sect = s_first; sect<=s_last; sect++) {
|
for (sect = s_first; sect<=s_last; sect++) {
|
||||||
|
|
||||||
@@ -566,7 +557,6 @@ int flash_erase(flash_info_t *info, int s_first, int s_last)
|
|||||||
enable_interrupts();
|
enable_interrupts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
printf("Erase timed out, sector %d\n", sect);
|
printf("Erase timed out, sector %d\n", sect);
|
||||||
return res;
|
return res;
|
||||||
@@ -576,7 +566,6 @@ int flash_erase(flash_info_t *info, int s_first, int s_last)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,11 +575,11 @@ int flash_erase(flash_info_t *info, int s_first, int s_last)
|
|||||||
* 1 - write timeout
|
* 1 - write timeout
|
||||||
* 2 - Flash not erased
|
* 2 - Flash not erased
|
||||||
*/
|
*/
|
||||||
static int _amd_write_word(unsigned start, unsigned dest, unsigned data)
|
static int _amd_write_word(unsigned start, unsigned dest, u16 data)
|
||||||
{
|
{
|
||||||
volatile u16 *addr2 = (u16*)start;
|
volatile u16 *addr2 = (volatile u16*)start;
|
||||||
volatile u16 *dest2 = (u16*)dest;
|
volatile u16 *dest2 = (volatile u16*)dest;
|
||||||
volatile u16 *data2 = (u16*)&data;
|
volatile u16 *data2 = (volatile u16*)&data;
|
||||||
int i;
|
int i;
|
||||||
unsigned elapsed;
|
unsigned elapsed;
|
||||||
|
|
||||||
@@ -601,7 +590,6 @@ static int _amd_write_word(unsigned start, unsigned dest, unsigned data)
|
|||||||
|
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
|
|
||||||
|
|
||||||
addr2[0x5555] = 0x00AA;
|
addr2[0x5555] = 0x00AA;
|
||||||
addr2[0x2aaa] = 0x0055;
|
addr2[0x2aaa] = 0x0055;
|
||||||
addr2[0x5555] = 0x00A0;
|
addr2[0x5555] = 0x00A0;
|
||||||
@@ -630,7 +618,6 @@ extern int _amd_write_word_end;
|
|||||||
asm ("_amd_write_word_end:\n"
|
asm ("_amd_write_word_end:\n"
|
||||||
".long 0\n");
|
".long 0\n");
|
||||||
|
|
||||||
|
|
||||||
static int _intel_write_word(unsigned start, unsigned dest, unsigned data)
|
static int _intel_write_word(unsigned start, unsigned dest, unsigned data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@@ -663,14 +650,12 @@ static int _intel_write_word(unsigned start, unsigned dest, unsigned data)
|
|||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int _intel_write_word_end;
|
extern int _intel_write_word_end;
|
||||||
asm ("_intel_write_word_end:\n"
|
asm ("_intel_write_word_end:\n"
|
||||||
".long 0\n");
|
".long 0\n");
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------
|
/*-----------------------------------------------------------------------
|
||||||
* Copy memory to flash, returns:
|
* Copy memory to flash, returns:
|
||||||
* 0 - OK
|
* 0 - OK
|
||||||
@@ -715,10 +700,8 @@ int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wp = (addr & ~3); /* get lower word aligned address */
|
wp = (addr & ~3); /* get lower word aligned address */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* handle unaligned start bytes
|
* handle unaligned start bytes
|
||||||
*/
|
*/
|
||||||
@@ -805,5 +788,4 @@ int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ done: movl $0xfffefc32,%edx
|
|||||||
jmp *%ebp /* return to caller */
|
jmp *%ebp /* return to caller */
|
||||||
|
|
||||||
|
|
||||||
.globl __show_boot_progress
|
.globl show_boot_progress
|
||||||
__show_boot_progress:
|
show_boot_progress:
|
||||||
movl $0xfffefc32,%edx
|
movl $0xfffefc32,%edx
|
||||||
xorw $0xffff, %ax
|
xorw $0xffff, %ax
|
||||||
movw %ax,(%edx)
|
movw %ax,(%edx)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# (C) Copyright 2001
|
# (C) Copyright 2001-2008
|
||||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||||
#
|
#
|
||||||
# See file CREDITS for list of people who contributed to this
|
# See file CREDITS for list of people who contributed to this
|
||||||
@@ -22,19 +22,26 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
include $(TOPDIR)/config.mk
|
include $(TOPDIR)/config.mk
|
||||||
|
ifneq ($(OBJTREE),$(SRCTREE))
|
||||||
|
$(shell mkdir -p $(obj)../tqm8xx/)
|
||||||
|
endif
|
||||||
|
|
||||||
LIB = lib$(BOARD).a
|
LIB = $(obj)lib$(BOARD).a
|
||||||
|
|
||||||
OBJS = $(BOARD).o ../tqm8xx/load_sernum_ethaddr.o
|
COBJS = $(BOARD).o ../tqm8xx/load_sernum_ethaddr.o
|
||||||
|
|
||||||
$(LIB): .depend $(OBJS)
|
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||||
$(AR) crv $@ $(OBJS)
|
OBJS := $(addprefix $(obj),$(COBJS))
|
||||||
|
SOBJS := $(addprefix $(obj),$(SOBJS))
|
||||||
|
|
||||||
|
$(LIB): $(obj).depend $(OBJS)
|
||||||
|
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
|
# defines $(obj).depend target
|
||||||
$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
|
include $(SRCTREE)/rules.mk
|
||||||
|
|
||||||
sinclude .depend
|
sinclude $(obj).depend
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
|
|
||||||
static unsigned char srom[128];
|
|
||||||
extern u16 read_srom_word(int);
|
extern u16 read_srom_word(int);
|
||||||
extern void write_srom_word(int offset, u16 val);
|
extern void write_srom_word(int offset, u16 val);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
# MarelV38B board
|
# MarelV38B board
|
||||||
#
|
#
|
||||||
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
|
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
|
||||||
|
|
||||||
TEXT_BASE = 0xFF000000
|
TEXT_BASE = 0xFF000000
|
||||||
|
|
||||||
|
|||||||
@@ -433,17 +433,6 @@ static int fit_check_kernel (const void *fit, int os_noffset, int verify)
|
|||||||
}
|
}
|
||||||
show_boot_progress (105);
|
show_boot_progress (105);
|
||||||
|
|
||||||
#ifdef CONFIG_LOGBUFFER
|
|
||||||
#ifndef CONFIG_ALT_LB_ADDR
|
|
||||||
kbd=gd->bd;
|
|
||||||
/* Prevent initrd from overwriting logbuffer */
|
|
||||||
if (initrd_high < (kbd->bi_memsize-LOGBUFF_LEN-LOGBUFF_OVERHEAD))
|
|
||||||
initrd_high = kbd->bi_memsize-LOGBUFF_LEN-LOGBUFF_OVERHEAD;
|
|
||||||
debug ("## Logbuffer at 0x%08lX ", kbd->bi_memsize-LOGBUFF_LEN);
|
|
||||||
#else
|
|
||||||
debug ("## Logbuffer at 0x%08lX ", CONFIG_ALT_LB_ADDR);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
if (!fit_image_check_target_arch (fit, os_noffset)) {
|
if (!fit_image_check_target_arch (fit, os_noffset)) {
|
||||||
puts ("Unsupported Architecture\n");
|
puts ("Unsupported Architecture\n");
|
||||||
show_boot_progress (-105);
|
show_boot_progress (-105);
|
||||||
|
|||||||
@@ -52,10 +52,6 @@
|
|||||||
# include <status_led.h>
|
# include <status_led.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __PPC__
|
|
||||||
#include <asm/io.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_IDE_8xx_DIRECT
|
#ifdef CONFIG_IDE_8xx_DIRECT
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ arg_off_size(int argc, char *argv[], nand_info_t *nand, ulong *off, size_t *size
|
|||||||
}
|
}
|
||||||
*off = part->offset;
|
*off = part->offset;
|
||||||
if (argc >= 2) {
|
if (argc >= 2) {
|
||||||
if (!(str2long(argv[1], size))) {
|
if (!(str2long(argv[1], (ulong *)size))) {
|
||||||
printf("'%s' is not a number\n", argv[1]);
|
printf("'%s' is not a number\n", argv[1]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,16 +68,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||||||
/************************************************************************
|
/************************************************************************
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
/* Function that returns a pointer to a value from the environment */
|
|
||||||
/* (Only memory version supported / needed). */
|
|
||||||
extern uchar *env_get_addr(int);
|
|
||||||
|
|
||||||
/* Function that updates CRC of the enironment */
|
|
||||||
extern void env_crc_update (void);
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Table with supported baudrates (defined in config_xyz.h)
|
* Table with supported baudrates (defined in config_xyz.h)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ extern void env_relocate_spec (void);
|
|||||||
extern uchar env_get_char_spec(int);
|
extern uchar env_get_char_spec(int);
|
||||||
|
|
||||||
static uchar env_get_char_init (int index);
|
static uchar env_get_char_init (int index);
|
||||||
|
uchar (*env_get_char)(int) = env_get_char_init;
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Default settings to be used when no valid environment is found
|
* Default settings to be used when no valid environment is found
|
||||||
@@ -181,19 +182,6 @@ uchar env_get_char_memory (int index)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uchar env_get_char (int index)
|
|
||||||
{
|
|
||||||
uchar c;
|
|
||||||
|
|
||||||
/* if relocated to RAM */
|
|
||||||
if (gd->flags & GD_FLG_RELOC)
|
|
||||||
c = env_get_char_memory(index);
|
|
||||||
else
|
|
||||||
c = env_get_char_init(index);
|
|
||||||
|
|
||||||
return (c);
|
|
||||||
}
|
|
||||||
|
|
||||||
uchar *env_get_addr (int index)
|
uchar *env_get_addr (int index)
|
||||||
{
|
{
|
||||||
if (gd->env_valid) {
|
if (gd->env_valid) {
|
||||||
@@ -227,6 +215,11 @@ void env_relocate (void)
|
|||||||
DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr);
|
DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After relocation to RAM, we can always use the "memory" functions
|
||||||
|
*/
|
||||||
|
env_get_char = env_get_char_memory;
|
||||||
|
|
||||||
if (gd->env_valid == 0) {
|
if (gd->env_valid == 0) {
|
||||||
#if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE) /* Environment not changable */
|
#if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE) /* Environment not changable */
|
||||||
puts ("Using default environment\n\n");
|
puts ("Using default environment\n\n");
|
||||||
|
|||||||
@@ -38,9 +38,6 @@ env_t *env_ptr = NULL;
|
|||||||
|
|
||||||
char * env_name_spec = "EEPROM";
|
char * env_name_spec = "EEPROM";
|
||||||
|
|
||||||
extern uchar env_get_char_memory (int index);
|
|
||||||
|
|
||||||
|
|
||||||
uchar env_get_char_spec (int index)
|
uchar env_get_char_spec (int index)
|
||||||
{
|
{
|
||||||
uchar c;
|
uchar c;
|
||||||
|
|||||||
@@ -378,7 +378,9 @@ void env_relocate_spec (void)
|
|||||||
puts ("*** Warning - some problems detected "
|
puts ("*** Warning - some problems detected "
|
||||||
"reading environment; recovered successfully\n\n");
|
"reading environment; recovered successfully\n\n");
|
||||||
#endif /* CFG_ENV_ADDR_REDUND */
|
#endif /* CFG_ENV_ADDR_REDUND */
|
||||||
|
#ifdef CMD_SAVEENV
|
||||||
memcpy (env_ptr, (void*)flash_addr, CFG_ENV_SIZE);
|
memcpy (env_ptr, (void*)flash_addr, CFG_ENV_SIZE);
|
||||||
|
#endif
|
||||||
#endif /* ! ENV_IS_EMBEDDED || CFG_ENV_ADDR_REDUND */
|
#endif /* ! ENV_IS_EMBEDDED || CFG_ENV_ADDR_REDUND */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ uchar env_get_char_spec (int index)
|
|||||||
int env_init(void)
|
int env_init(void)
|
||||||
{
|
{
|
||||||
#if defined(ENV_IS_EMBEDDED)
|
#if defined(ENV_IS_EMBEDDED)
|
||||||
ulong total;
|
size_t total;
|
||||||
int crc1_ok = 0, crc2_ok = 0;
|
int crc1_ok = 0, crc2_ok = 0;
|
||||||
env_t *tmp_env1, *tmp_env2;
|
env_t *tmp_env1, *tmp_env2;
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ int saveenv(void)
|
|||||||
#else /* ! CFG_ENV_OFFSET_REDUND */
|
#else /* ! CFG_ENV_OFFSET_REDUND */
|
||||||
int saveenv(void)
|
int saveenv(void)
|
||||||
{
|
{
|
||||||
ulong total;
|
size_t total;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
puts ("Erasing Nand...");
|
puts ("Erasing Nand...");
|
||||||
@@ -268,7 +268,7 @@ void env_relocate_spec (void)
|
|||||||
void env_relocate_spec (void)
|
void env_relocate_spec (void)
|
||||||
{
|
{
|
||||||
#if !defined(ENV_IS_EMBEDDED)
|
#if !defined(ENV_IS_EMBEDDED)
|
||||||
ulong total;
|
size_t total;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
total = CFG_ENV_SIZE;
|
total = CFG_ENV_SIZE;
|
||||||
|
|||||||
@@ -63,8 +63,6 @@ char * env_name_spec = "NVRAM";
|
|||||||
extern uchar default_environment[];
|
extern uchar default_environment[];
|
||||||
extern int default_environment_size;
|
extern int default_environment_size;
|
||||||
|
|
||||||
extern uchar env_get_char_memory (int index);
|
|
||||||
|
|
||||||
#ifdef CONFIG_AMIGAONEG3SE
|
#ifdef CONFIG_AMIGAONEG3SE
|
||||||
uchar env_get_char_spec (int index)
|
uchar env_get_char_spec (int index)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -396,7 +396,6 @@ void *ft_get_prop(void *bphp, const char *propname, int *szp)
|
|||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end)
|
void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end)
|
||||||
{
|
{
|
||||||
u32 *p;
|
u32 *p;
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
* MA 02111-1307 USA
|
* MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef USE_HOSTCC
|
#ifndef USE_HOSTCC
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
@@ -36,10 +35,6 @@
|
|||||||
#include <dataflash.h>
|
#include <dataflash.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_LOGBUFFER
|
|
||||||
#include <logbuff.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE)
|
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE)
|
||||||
#include <rtc.h>
|
#include <rtc.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -93,6 +88,7 @@ static table_entry_t uimage_arch[] = {
|
|||||||
{ IH_ARCH_MIPS64, "mips64", "MIPS 64 Bit", },
|
{ IH_ARCH_MIPS64, "mips64", "MIPS 64 Bit", },
|
||||||
{ IH_ARCH_NIOS, "nios", "NIOS", },
|
{ IH_ARCH_NIOS, "nios", "NIOS", },
|
||||||
{ IH_ARCH_NIOS2, "nios2", "NIOS II", },
|
{ IH_ARCH_NIOS2, "nios2", "NIOS II", },
|
||||||
|
{ IH_ARCH_PPC, "powerpc", "PowerPC", },
|
||||||
{ IH_ARCH_PPC, "ppc", "PowerPC", },
|
{ IH_ARCH_PPC, "ppc", "PowerPC", },
|
||||||
{ IH_ARCH_S390, "s390", "IBM S390", },
|
{ IH_ARCH_S390, "s390", "IBM S390", },
|
||||||
{ IH_ARCH_SH, "sh", "SuperH", },
|
{ IH_ARCH_SH, "sh", "SuperH", },
|
||||||
@@ -241,7 +237,7 @@ void image_multi_getimg (image_header_t *hdr, ulong idx,
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
uint32_t *size;
|
uint32_t *size;
|
||||||
ulong offset, tail, count, img_data;
|
ulong offset, count, img_data;
|
||||||
|
|
||||||
/* get number of component */
|
/* get number of component */
|
||||||
count = image_multi_count (hdr);
|
count = image_multi_count (hdr);
|
||||||
@@ -257,19 +253,15 @@ void image_multi_getimg (image_header_t *hdr, ulong idx,
|
|||||||
if (idx < count) {
|
if (idx < count) {
|
||||||
*len = uimage_to_cpu (size[idx]);
|
*len = uimage_to_cpu (size[idx]);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
tail = 0;
|
|
||||||
|
|
||||||
/* go over all indices preceding requested component idx */
|
/* go over all indices preceding requested component idx */
|
||||||
for (i = 0; i < idx; i++) {
|
for (i = 0; i < idx; i++) {
|
||||||
/* add up i-th component size */
|
/* add up i-th component size, rounding up to 4 bytes */
|
||||||
offset += uimage_to_cpu (size[i]);
|
offset += (uimage_to_cpu (size[i]) + 3) & ~3 ;
|
||||||
|
|
||||||
/* add up alignment for i-th component */
|
|
||||||
tail += (4 - uimage_to_cpu (size[i]) % 4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* calculate idx-th component data address */
|
/* calculate idx-th component data address */
|
||||||
*data = img_data + offset + tail;
|
*data = img_data + offset;
|
||||||
} else {
|
} else {
|
||||||
*len = 0;
|
*len = 0;
|
||||||
*data = 0;
|
*data = 0;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
#include <post.h>
|
#include <post.h>
|
||||||
|
|
||||||
#if defined(CONFIG_SILENT_CONSOLE) || defined(CONFIG_POST)
|
#if defined(CONFIG_SILENT_CONSOLE) || defined(CONFIG_POST) || defined(CONFIG_CMDLINE_EDITING)
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -67,11 +67,9 @@ static int abortboot(int);
|
|||||||
|
|
||||||
char console_buffer[CFG_CBSIZE]; /* console I/O buffer */
|
char console_buffer[CFG_CBSIZE]; /* console I/O buffer */
|
||||||
|
|
||||||
#ifndef CONFIG_CMDLINE_EDITING
|
|
||||||
static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen);
|
static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen);
|
||||||
static char erase_seq[] = "\b \b"; /* erase sequence */
|
static char erase_seq[] = "\b \b"; /* erase sequence */
|
||||||
static char tab_seq[] = " "; /* used to expand TABs */
|
static char tab_seq[] = " "; /* used to expand TABs */
|
||||||
#endif /* CONFIG_CMDLINE_EDITING */
|
|
||||||
|
|
||||||
#ifdef CONFIG_BOOT_RETRY_TIME
|
#ifdef CONFIG_BOOT_RETRY_TIME
|
||||||
static uint64_t endtime = 0; /* must be set, default is instant timeout */
|
static uint64_t endtime = 0; /* must be set, default is instant timeout */
|
||||||
@@ -947,11 +945,26 @@ int readline_into_buffer (const char *const prompt, char * buffer)
|
|||||||
initted = 1;
|
initted = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* History uses a global array which is not
|
||||||
|
* writable until after relocation to RAM.
|
||||||
|
* Revert to non-history version if still
|
||||||
|
* running from flash.
|
||||||
|
*/
|
||||||
|
if (gd->flags & GD_FLG_RELOC) {
|
||||||
|
if (!initted) {
|
||||||
|
hist_init();
|
||||||
|
initted = 1;
|
||||||
|
}
|
||||||
|
|
||||||
puts (prompt);
|
puts (prompt);
|
||||||
|
|
||||||
rc = cread_line(prompt, p, &len);
|
rc = cread_line(prompt, p, &len);
|
||||||
return rc < 0 ? rc : len;
|
return rc < 0 ? rc : len;
|
||||||
#else
|
|
||||||
|
} else {
|
||||||
|
#endif /* CONFIG_CMDLINE_EDITING */
|
||||||
char * p_buf = p;
|
char * p_buf = p;
|
||||||
int n = 0; /* buffer index */
|
int n = 0; /* buffer index */
|
||||||
int plen = 0; /* prompt length */
|
int plen = 0; /* prompt length */
|
||||||
@@ -1047,12 +1060,13 @@ int readline_into_buffer (const char *const prompt, char * buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_CMDLINE_EDITING */
|
#ifdef CONFIG_CMDLINE_EDITING
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
#ifndef CONFIG_CMDLINE_EDITING
|
|
||||||
static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen)
|
static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen)
|
||||||
{
|
{
|
||||||
char *s;
|
char *s;
|
||||||
@@ -1082,7 +1096,6 @@ static char * delete_char (char *buffer, char *p, int *colp, int *np, int plen)
|
|||||||
(*np)--;
|
(*np)--;
|
||||||
return (p);
|
return (p);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_CMDLINE_EDITING */
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|||||||
46
config.mk
46
config.mk
@@ -69,27 +69,6 @@ PLATFORM_CPPFLAGS+= -D__ARM__
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Load generated board configuration
|
|
||||||
sinclude $(OBJTREE)/include/autoconf.mk
|
|
||||||
|
|
||||||
ifdef ARCH
|
|
||||||
sinclude $(TOPDIR)/$(ARCH)_config.mk # include architecture dependend rules
|
|
||||||
endif
|
|
||||||
ifdef CPU
|
|
||||||
sinclude $(TOPDIR)/cpu/$(CPU)/config.mk # include CPU specific rules
|
|
||||||
endif
|
|
||||||
ifdef SOC
|
|
||||||
sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk # include SoC specific rules
|
|
||||||
endif
|
|
||||||
ifdef VENDOR
|
|
||||||
BOARDDIR = $(VENDOR)/$(BOARD)
|
|
||||||
else
|
|
||||||
BOARDDIR = $(BOARD)
|
|
||||||
endif
|
|
||||||
ifdef BOARD
|
|
||||||
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific rules
|
|
||||||
endif
|
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
|
|
||||||
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
|
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
|
||||||
@@ -127,6 +106,31 @@ OBJCOPY = $(CROSS_COMPILE)objcopy
|
|||||||
OBJDUMP = $(CROSS_COMPILE)objdump
|
OBJDUMP = $(CROSS_COMPILE)objdump
|
||||||
RANLIB = $(CROSS_COMPILE)RANLIB
|
RANLIB = $(CROSS_COMPILE)RANLIB
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
|
||||||
|
# Load generated board configuration
|
||||||
|
sinclude $(OBJTREE)/include/autoconf.mk
|
||||||
|
|
||||||
|
ifdef ARCH
|
||||||
|
sinclude $(TOPDIR)/$(ARCH)_config.mk # include architecture dependend rules
|
||||||
|
endif
|
||||||
|
ifdef CPU
|
||||||
|
sinclude $(TOPDIR)/cpu/$(CPU)/config.mk # include CPU specific rules
|
||||||
|
endif
|
||||||
|
ifdef SOC
|
||||||
|
sinclude $(TOPDIR)/cpu/$(CPU)/$(SOC)/config.mk # include SoC specific rules
|
||||||
|
endif
|
||||||
|
ifdef VENDOR
|
||||||
|
BOARDDIR = $(VENDOR)/$(BOARD)
|
||||||
|
else
|
||||||
|
BOARDDIR = $(BOARD)
|
||||||
|
endif
|
||||||
|
ifdef BOARD
|
||||||
|
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific rules
|
||||||
|
endif
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
|
||||||
ifneq (,$(findstring s,$(MAKEFLAGS)))
|
ifneq (,$(findstring s,$(MAKEFLAGS)))
|
||||||
ARFLAGS = cr
|
ARFLAGS = cr
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -329,14 +329,28 @@ _GLOBAL(dcache_status)
|
|||||||
blr
|
blr
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Invalidate L2 cache using L2I and polling L2IP
|
* Invalidate L2 cache using L2I and polling L2IP or L2I
|
||||||
*/
|
*/
|
||||||
_GLOBAL(l2cache_invalidate)
|
_GLOBAL(l2cache_invalidate)
|
||||||
sync
|
sync
|
||||||
|
mfspr r3, l2cr
|
||||||
oris r3, r3, L2CR_L2I@h
|
oris r3, r3, L2CR_L2I@h
|
||||||
sync
|
sync
|
||||||
mtspr l2cr, r3
|
mtspr l2cr, r3
|
||||||
sync
|
sync
|
||||||
|
mfspr r3, PVR
|
||||||
|
sync
|
||||||
|
rlwinm r3, r3, 16,16,31
|
||||||
|
cmpli 0,r3,0x8000 /* 7451, 7441 */
|
||||||
|
beq 0,inv_7450
|
||||||
|
cmpli 0,r3,0x8001 /* 7455, 7445 */
|
||||||
|
beq 0,inv_7450
|
||||||
|
cmpli 0,r3,0x8002 /* 7457, 7447 */
|
||||||
|
beq 0,inv_7450
|
||||||
|
cmpli 0,r3,0x8003 /* 7447A */
|
||||||
|
beq 0,inv_7450
|
||||||
|
cmpli 0,r3,0x8004 /* 7448 */
|
||||||
|
beq 0,inv_7450
|
||||||
invl2:
|
invl2:
|
||||||
mfspr r3, l2cr
|
mfspr r3, l2cr
|
||||||
andi. r3, r3, L2CR_L2IP
|
andi. r3, r3, L2CR_L2IP
|
||||||
@@ -348,6 +362,11 @@ invl2:
|
|||||||
mtspr l2cr, r3
|
mtspr l2cr, r3
|
||||||
sync
|
sync
|
||||||
blr
|
blr
|
||||||
|
inv_7450:
|
||||||
|
mfspr r3, l2cr
|
||||||
|
andis. r3, r3, L2CR_L2I@h
|
||||||
|
bne inv_7450
|
||||||
|
blr
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable L2 cache
|
* Enable L2 cache
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ static u32 mx31_decode_pll(u32 reg, u32 infreq)
|
|||||||
(mfd * pd)) << 10;
|
(mfd * pd)) << 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 mx31_get_mpl_dpdgck_clk(void)
|
static u32 mx31_get_mpl_dpdgck_clk(void)
|
||||||
{
|
{
|
||||||
u32 infreq;
|
u32 infreq;
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ u32 mx31_get_mpl_dpdgck_clk(void)
|
|||||||
return mx31_decode_pll(__REG(CCM_MPCTL), infreq);
|
return mx31_decode_pll(__REG(CCM_MPCTL), infreq);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 mx31_get_mcu_main_clk(void)
|
static u32 mx31_get_mcu_main_clk(void)
|
||||||
{
|
{
|
||||||
/* For now we assume mpl_dpdgck_clk == mcu_main_clk
|
/* For now we assume mpl_dpdgck_clk == mcu_main_clk
|
||||||
* which should be correct for most boards
|
* which should be correct for most boards
|
||||||
|
|||||||
@@ -69,4 +69,4 @@ int usb_cpu_init_fail (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# endif /* defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) */
|
# endif /* defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) */
|
||||||
#endif /* defined(CONFIG_USB_OHCI) && defined(CFG_USB_OHCI_CPU_INIT) */
|
#endif /* defined(CONFIG_USB_OHCI_NEW) && defined(CFG_USB_OHCI_CPU_INIT) */
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# (C) Copyright 2000-2008
|
# (C) Copyright 2000-2008
|
||||||
# Wolfgang Denk, DENX Software Engineering, wd <at> denx.de.
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||||
#
|
#
|
||||||
# See file CREDITS for list of people who contributed to this
|
# See file CREDITS for list of people who contributed to this
|
||||||
# project.
|
# project.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* AT91CAP9/SAM9 setup stuff
|
* AT91CAP9/SAM9 setup stuff
|
||||||
*
|
*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2006
|
* (C) Copyright 2006
|
||||||
* DENX Software Engineering <mk <at> denx.de>
|
* DENX Software Engineering <mk@denx.de>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
* project.
|
* project.
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ early_board_init_ret:
|
|||||||
/* so we try to indicate progress */
|
/* so we try to indicate progress */
|
||||||
movw $0x01, %ax
|
movw $0x01, %ax
|
||||||
movl $.progress0, %ebp
|
movl $.progress0, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress0:
|
.progress0:
|
||||||
|
|
||||||
/* size memory */
|
/* size memory */
|
||||||
@@ -74,7 +74,7 @@ mem_init_ret:
|
|||||||
/* indicate (lack of) progress */
|
/* indicate (lack of) progress */
|
||||||
movw $0x81, %ax
|
movw $0x81, %ax
|
||||||
movl $.progress0a, %ebp
|
movl $.progress0a, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress0a:
|
.progress0a:
|
||||||
jmp die
|
jmp die
|
||||||
mem_ok:
|
mem_ok:
|
||||||
@@ -82,7 +82,7 @@ mem_ok:
|
|||||||
/* indicate progress */
|
/* indicate progress */
|
||||||
movw $0x02, %ax
|
movw $0x02, %ax
|
||||||
movl $.progress1, %ebp
|
movl $.progress1, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress1:
|
.progress1:
|
||||||
|
|
||||||
/* create a stack after the bss */
|
/* create a stack after the bss */
|
||||||
@@ -104,7 +104,7 @@ no_stack:
|
|||||||
/* indicate (lack of) progress */
|
/* indicate (lack of) progress */
|
||||||
movw $0x82, %ax
|
movw $0x82, %ax
|
||||||
movl $.progress1a, %ebp
|
movl $.progress1a, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress1a:
|
.progress1a:
|
||||||
jmp die
|
jmp die
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ stack_ok:
|
|||||||
/* indicate progress */
|
/* indicate progress */
|
||||||
movw $0x03, %ax
|
movw $0x03, %ax
|
||||||
movl $.progress2, %ebp
|
movl $.progress2, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress2:
|
.progress2:
|
||||||
|
|
||||||
/* copy data section to ram, size must be 4-byte aligned */
|
/* copy data section to ram, size must be 4-byte aligned */
|
||||||
@@ -136,7 +136,7 @@ data_fail:
|
|||||||
/* indicate (lack of) progress */
|
/* indicate (lack of) progress */
|
||||||
movw $0x83, %ax
|
movw $0x83, %ax
|
||||||
movl $.progress2a, %ebp
|
movl $.progress2a, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress2a:
|
.progress2a:
|
||||||
jmp die
|
jmp die
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ data_ok:
|
|||||||
/* indicate progress */
|
/* indicate progress */
|
||||||
movw $0x04, %ax
|
movw $0x04, %ax
|
||||||
movl $.progress3, %ebp
|
movl $.progress3, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress3:
|
.progress3:
|
||||||
|
|
||||||
/* clear bss section in ram, size must be 4-byte aligned */
|
/* clear bss section in ram, size must be 4-byte aligned */
|
||||||
@@ -168,7 +168,7 @@ bss_fail:
|
|||||||
/* indicate (lack of) progress */
|
/* indicate (lack of) progress */
|
||||||
movw $0x84, %ax
|
movw $0x84, %ax
|
||||||
movl $.progress3a, %ebp
|
movl $.progress3a, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress3a:
|
.progress3a:
|
||||||
jmp die
|
jmp die
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ bss_ok:
|
|||||||
/* indicate progress */
|
/* indicate progress */
|
||||||
movw $0x05, %ax
|
movw $0x05, %ax
|
||||||
movl $.progress4, %ebp
|
movl $.progress4, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress4:
|
.progress4:
|
||||||
|
|
||||||
call start_i386boot /* Enter, U-boot! */
|
call start_i386boot /* Enter, U-boot! */
|
||||||
@@ -188,7 +188,7 @@ bss_ok:
|
|||||||
/* indicate (lack of) progress */
|
/* indicate (lack of) progress */
|
||||||
movw $0x85, %ax
|
movw $0x85, %ax
|
||||||
movl $.progress4a, %ebp
|
movl $.progress4a, %ebp
|
||||||
jmp __show_boot_progress
|
jmp show_boot_progress
|
||||||
.progress4a:
|
.progress4a:
|
||||||
|
|
||||||
die: hlt
|
die: hlt
|
||||||
|
|||||||
@@ -240,14 +240,16 @@ NESTED(mips_cache_reset, 0, ra)
|
|||||||
*/
|
*/
|
||||||
move a1, t2
|
move a1, t2
|
||||||
move a2, t4
|
move a2, t4
|
||||||
bal mips_init_icache
|
PTR_LA t7, mips_init_icache
|
||||||
|
jalr t7
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* then initialize D-cache.
|
* then initialize D-cache.
|
||||||
*/
|
*/
|
||||||
move a1, t3
|
move a1, t3
|
||||||
move a2, t5
|
move a2, t5
|
||||||
bal mips_init_dcache
|
PTR_LA t7, mips_init_dcache
|
||||||
|
jalr t7
|
||||||
|
|
||||||
jr RA
|
jr RA
|
||||||
END(mips_cache_reset)
|
END(mips_cache_reset)
|
||||||
@@ -285,6 +287,22 @@ LEAF(dcache_disable)
|
|||||||
jr ra
|
jr ra
|
||||||
END(dcache_disable)
|
END(dcache_disable)
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* dcache_enable - enable cache
|
||||||
|
*
|
||||||
|
* RETURNS: N/A
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
LEAF(dcache_enable)
|
||||||
|
mfc0 t0, CP0_CONFIG
|
||||||
|
ori t0, CONF_CM_CMASK
|
||||||
|
xori t0, CONF_CM_CMASK
|
||||||
|
ori t0, CONF_CM_CACHABLE_NONCOHERENT
|
||||||
|
mtc0 t0, CP0_CONFIG
|
||||||
|
jr ra
|
||||||
|
END(dcache_enable)
|
||||||
|
|
||||||
#ifdef CFG_INIT_RAM_LOCK_MIPS
|
#ifdef CFG_INIT_RAM_LOCK_MIPS
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
# MA 02111-1307 USA
|
# MA 02111-1307 USA
|
||||||
#
|
#
|
||||||
v=$(shell $(AS) --version |grep "GNU assembler" |cut -d. -f2)
|
v=$(shell $(AS) --version | grep 'GNU assembler' | egrep -o '2\.[0-9\.]+' | cut -d. -f2)
|
||||||
MIPSFLAGS:=$(shell \
|
MIPSFLAGS:=$(shell \
|
||||||
if [ "$v" -lt "14" ]; then \
|
if [ "$v" -lt "14" ]; then \
|
||||||
echo "-mcpu=4kc"; \
|
echo "-mcpu=4kc"; \
|
||||||
|
|||||||
@@ -345,7 +345,8 @@ relocate_code:
|
|||||||
jr t0
|
jr t0
|
||||||
nop
|
nop
|
||||||
|
|
||||||
.gpword _GLOBAL_OFFSET_TABLE_ /* _GLOBAL_OFFSET_TABLE_ - _gp */
|
.word _gp
|
||||||
|
.word _GLOBAL_OFFSET_TABLE_
|
||||||
.word uboot_end_data
|
.word uboot_end_data
|
||||||
.word uboot_end
|
.word uboot_end
|
||||||
.word num_got_entries
|
.word num_got_entries
|
||||||
@@ -358,8 +359,10 @@ in_ram:
|
|||||||
* generated by GNU ld. Skip these reserved entries from relocation.
|
* generated by GNU ld. Skip these reserved entries from relocation.
|
||||||
*/
|
*/
|
||||||
lw t3, -4(t0) /* t3 <-- num_got_entries */
|
lw t3, -4(t0) /* t3 <-- num_got_entries */
|
||||||
lw t4, -16(t0) /* t4 <-- (_GLOBAL_OFFSET_TABLE_ - _gp) */
|
lw t4, -16(t0) /* t4 <-- _GLOBAL_OFFSET_TABLE_ */
|
||||||
add t4, t4, gp /* t4 now holds _GLOBAL_OFFSET_TABLE_ */
|
lw t5, -20(t0) /* t5 <-- _gp */
|
||||||
|
sub t4, t5 /* compute offset*/
|
||||||
|
add t4, t4, gp /* t4 now holds relocated _GLOBAL_OFFSET_TABLE_ */
|
||||||
addi t4, t4, 8 /* Skipping first two entries. */
|
addi t4, t4, 8 /* Skipping first two entries. */
|
||||||
li t2, 2
|
li t2, 2
|
||||||
1:
|
1:
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ _GLOBAL(l2cache_invalidate)
|
|||||||
|
|
||||||
invl2:
|
invl2:
|
||||||
mfspr r3, l2cr
|
mfspr r3, l2cr
|
||||||
andi. r3, r3, L2CR_L2I@h
|
andis. r3, r3, L2CR_L2I@h
|
||||||
bne invl2
|
bne invl2
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
|||||||
@@ -105,8 +105,20 @@ int get_clocks(void)
|
|||||||
get_sys_info(&sys_info);
|
get_sys_info(&sys_info);
|
||||||
gd->cpu_clk = sys_info.freqProcessor;
|
gd->cpu_clk = sys_info.freqProcessor;
|
||||||
gd->bus_clk = sys_info.freqSystemBus;
|
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->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)
|
if (gd->cpu_clk != 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* cpu/ppc4xx/44x_spd_ddr2.c
|
* cpu/ppc4xx/44x_spd_ddr2.c
|
||||||
* This SPD SDRAM detection code supports AMCC PPC44x cpu's with a
|
* This SPD SDRAM detection code supports AMCC PPC44x cpu's with a
|
||||||
* DDR2 controller (non Denali Core). Those are 440SP/SPe.
|
* DDR2 controller (non Denali Core). Those currently are:
|
||||||
|
*
|
||||||
|
* 405: 405EX
|
||||||
|
* 440/460: 440SP/440SPe/460EX/460GT
|
||||||
*
|
*
|
||||||
* (C) Copyright 2007-2008
|
* (C) Copyright 2007-2008
|
||||||
* Stefan Roese, DENX Software Engineering, sr@denx.de.
|
* Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||||
@@ -2078,7 +2081,7 @@ static void program_bxcf(unsigned long *dimm_populated,
|
|||||||
if (num_banks == 4)
|
if (num_banks == 4)
|
||||||
ind = 0;
|
ind = 0;
|
||||||
else
|
else
|
||||||
ind = 5;
|
ind = 5 << 8;
|
||||||
switch (num_col_addr) {
|
switch (num_col_addr) {
|
||||||
case 0x08:
|
case 0x08:
|
||||||
mode |= (SDRAM_BXCF_M_AM_0 + ind);
|
mode |= (SDRAM_BXCF_M_AM_0 + ind);
|
||||||
|
|||||||
@@ -346,6 +346,26 @@ int checkcpu (void)
|
|||||||
strcpy(addstr, "No Security support");
|
strcpy(addstr, "No Security support");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PVR_405EX1_RC:
|
||||||
|
puts("EX Rev. C");
|
||||||
|
strcpy(addstr, "Security support");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PVR_405EX2_RC:
|
||||||
|
puts("EX Rev. C");
|
||||||
|
strcpy(addstr, "No Security support");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PVR_405EXR1_RC:
|
||||||
|
puts("EXr Rev. C");
|
||||||
|
strcpy(addstr, "Security support");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PVR_405EXR2_RC:
|
||||||
|
puts("EXr Rev. C");
|
||||||
|
strcpy(addstr, "No Security support");
|
||||||
|
break;
|
||||||
|
|
||||||
#if defined(CONFIG_440)
|
#if defined(CONFIG_440)
|
||||||
case PVR_440GP_RB:
|
case PVR_440GP_RB:
|
||||||
puts("GP Rev. B");
|
puts("GP Rev. B");
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007
|
* (C) Copyright 2007-2008
|
||||||
* Stefan Roese, DENX Software Engineering, sr@denx.de.
|
* Stefan Roese, DENX Software Engineering, sr@denx.de.
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <ppc4xx.h>
|
#include <ppc4xx.h>
|
||||||
|
|
||||||
#if defined(CONFIG_OF_LIBFDT)
|
#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
|
||||||
#include <libfdt.h>
|
#include <libfdt.h>
|
||||||
#include <libfdt_env.h>
|
#include <libfdt_env.h>
|
||||||
#include <fdt_support.h>
|
#include <fdt_support.h>
|
||||||
@@ -35,6 +35,26 @@
|
|||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
void __ft_board_setup(void *blob, bd_t *bd)
|
||||||
|
{
|
||||||
|
u32 val[4];
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
ft_cpu_setup(blob, bd);
|
||||||
|
|
||||||
|
/* Fixup NOR mapping */
|
||||||
|
val[0] = 0; /* chip select number */
|
||||||
|
val[1] = 0; /* always 0 */
|
||||||
|
val[2] = gd->bd->bi_flashstart;
|
||||||
|
val[3] = gd->bd->bi_flashsize;
|
||||||
|
rc = fdt_find_and_setprop(blob, "/plb/opb/ebc", "ranges",
|
||||||
|
val, sizeof(val), 1);
|
||||||
|
if (rc)
|
||||||
|
printf("Unable to update property NOR mapping, err=%s\n",
|
||||||
|
fdt_strerror(rc));
|
||||||
|
}
|
||||||
|
void ft_board_setup(void *blob, bd_t *bd) __attribute__((weak, alias("__ft_board_setup")));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fixup all PCIe nodes by setting the device_type property
|
* Fixup all PCIe nodes by setting the device_type property
|
||||||
* to "pci-endpoint" instead is "pci" for endpoint ports.
|
* to "pci-endpoint" instead is "pci" for endpoint ports.
|
||||||
@@ -109,4 +129,4 @@ void ft_cpu_setup(void *blob, bd_t *bd)
|
|||||||
*/
|
*/
|
||||||
fdt_pcie_setup(blob);
|
fdt_pcie_setup(blob);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_OF_LIBFDT */
|
#endif /* CONFIG_OF_LIBFDT && CONFIG_OF_BOARD_SETUP */
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ static u8 pll_fbdv_multi_bits[] = {
|
|||||||
/* values for: 101 - 200 */
|
/* values for: 101 - 200 */
|
||||||
0x78, 0xf1, 0x62, 0xc5, 0x0a, 0x94, 0x28, 0xd0, 0x21, 0xc3,
|
0x78, 0xf1, 0x62, 0xc5, 0x0a, 0x94, 0x28, 0xd0, 0x21, 0xc3,
|
||||||
0x06, 0x8c, 0x18, 0xb0, 0x60, 0xc1, 0x02, 0x84, 0x08, 0x90,
|
0x06, 0x8c, 0x18, 0xb0, 0x60, 0xc1, 0x02, 0x84, 0x08, 0x90,
|
||||||
0x20, 0xc0, 0x01, 0x83, 0x77, 0xff, 0x1f, 0xbf, 0x7f, 0xfe,
|
0x20, 0xc0, 0x01, 0x83, 0x07, 0x8f, 0x1f, 0xbf, 0x7f, 0xfe,
|
||||||
0x7d, 0xfa, 0x75, 0xea, 0x55, 0xaa, 0x54, 0xa9, 0x53, 0xa6,
|
0x7d, 0xfa, 0x75, 0xea, 0x55, 0xaa, 0x54, 0xa9, 0x53, 0xa6,
|
||||||
0x4c, 0x99, 0x33, 0xe7, 0x4e, 0x9d, 0x3b, 0xf7, 0x6e, 0xdd,
|
0x4c, 0x99, 0x33, 0xe7, 0x4e, 0x9d, 0x3b, 0xf7, 0x6e, 0xdd,
|
||||||
0x3a, 0xf4, 0x69, 0xd2, 0x25, 0xcb, 0x16, 0xac, 0x58, 0xb1,
|
0x3a, 0xf4, 0x69, 0xd2, 0x25, 0xcb, 0x16, 0xac, 0x58, 0xb1,
|
||||||
|
|||||||
@@ -166,17 +166,13 @@ _start_armboot: .word start_armboot
|
|||||||
/* */
|
/* */
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/* mk@tbd: Fix this! */
|
/* mk@tbd: Fix this! */
|
||||||
#if defined(CONFIG_PXA250) || defined(CONFIG_CPU_MONAHANS)
|
#undef RCSR
|
||||||
#undef ICMR
|
#undef ICMR
|
||||||
#undef OSMR3
|
#undef OSMR3
|
||||||
#undef OSCR
|
#undef OSCR
|
||||||
#undef OWER
|
#undef OWER
|
||||||
#undef OIER
|
#undef OIER
|
||||||
#endif /* CONFIG_PXA250 || CONFIG_CPU_MONAHANS */
|
|
||||||
#ifdef CONFIG_PXA250
|
|
||||||
#undef RCSR
|
|
||||||
#undef CCCR
|
#undef CCCR
|
||||||
#endif /* CONFIG_PXA250 */
|
|
||||||
|
|
||||||
/* Interrupt-Controller base address */
|
/* Interrupt-Controller base address */
|
||||||
IC_BASE: .word 0x40d00000
|
IC_BASE: .word 0x40d00000
|
||||||
|
|||||||
72
disk/part.c
72
disk/part.c
@@ -109,43 +109,44 @@ void dev_print (block_dev_desc_t *dev_desc)
|
|||||||
lbaint_t lba512;
|
lbaint_t lba512;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (dev_desc->type==DEV_TYPE_UNKNOWN) {
|
switch (dev_desc->type) {
|
||||||
puts ("not available\n");
|
case IF_TYPE_SCSI:
|
||||||
return;
|
printf ("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n",
|
||||||
}
|
dev_desc->target,dev_desc->lun,
|
||||||
if (dev_desc->if_type==IF_TYPE_SCSI) {
|
|
||||||
printf ("(%d:%d) ", dev_desc->target,dev_desc->lun);
|
|
||||||
}
|
|
||||||
if (dev_desc->if_type==IF_TYPE_IDE) {
|
|
||||||
printf ("Model: %s Firm: %s Ser#: %s\n",
|
|
||||||
dev_desc->vendor,
|
|
||||||
dev_desc->revision,
|
|
||||||
dev_desc->product);
|
|
||||||
}
|
|
||||||
if (dev_desc->if_type==IF_TYPE_SATA) {
|
|
||||||
printf ("Model: %s Firm: %s Ser#: %s\n",
|
|
||||||
dev_desc->vendor,
|
|
||||||
dev_desc->revision,
|
|
||||||
dev_desc->product);
|
|
||||||
} else {
|
|
||||||
printf ("Vendor: %s Prod.: %s Rev: %s\n",
|
|
||||||
dev_desc->vendor,
|
dev_desc->vendor,
|
||||||
dev_desc->product,
|
dev_desc->product,
|
||||||
dev_desc->revision);
|
dev_desc->revision);
|
||||||
|
break;
|
||||||
|
case IF_TYPE_IDE:
|
||||||
|
case IF_TYPE_SATA:
|
||||||
|
printf ("Model: %s Firm: %s Ser#: %s\n",
|
||||||
|
dev_desc->vendor,
|
||||||
|
dev_desc->revision,
|
||||||
|
dev_desc->product);
|
||||||
|
break;
|
||||||
|
case DEV_TYPE_UNKNOWN:
|
||||||
|
default:
|
||||||
|
puts ("not available\n");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
puts (" Type: ");
|
puts (" Type: ");
|
||||||
if (dev_desc->removable)
|
if (dev_desc->removable)
|
||||||
puts ("Removable ");
|
puts ("Removable ");
|
||||||
switch (dev_desc->type & 0x1F) {
|
switch (dev_desc->type & 0x1F) {
|
||||||
case DEV_TYPE_HARDDISK: puts ("Hard Disk");
|
case DEV_TYPE_HARDDISK:
|
||||||
|
puts ("Hard Disk");
|
||||||
break;
|
break;
|
||||||
case DEV_TYPE_CDROM: puts ("CD ROM");
|
case DEV_TYPE_CDROM:
|
||||||
|
puts ("CD ROM");
|
||||||
break;
|
break;
|
||||||
case DEV_TYPE_OPDISK: puts ("Optical Device");
|
case DEV_TYPE_OPDISK:
|
||||||
|
puts ("Optical Device");
|
||||||
break;
|
break;
|
||||||
case DEV_TYPE_TAPE: puts ("Tape");
|
case DEV_TYPE_TAPE:
|
||||||
|
puts ("Tape");
|
||||||
break;
|
break;
|
||||||
default: printf ("# %02X #", dev_desc->type & 0x1F);
|
default:
|
||||||
|
printf ("# %02X #", dev_desc->type & 0x1F);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
puts ("\n");
|
puts ("\n");
|
||||||
@@ -281,19 +282,26 @@ static void print_part_header (const char *type, block_dev_desc_t * dev_desc)
|
|||||||
{
|
{
|
||||||
puts ("\nPartition Map for ");
|
puts ("\nPartition Map for ");
|
||||||
switch (dev_desc->if_type) {
|
switch (dev_desc->if_type) {
|
||||||
case IF_TYPE_IDE: puts ("IDE");
|
case IF_TYPE_IDE:
|
||||||
|
puts ("IDE");
|
||||||
break;
|
break;
|
||||||
case IF_TYPE_SATA: puts ("SATA");
|
case IF_TYPE_SATA:
|
||||||
|
puts ("SATA");
|
||||||
break;
|
break;
|
||||||
case IF_TYPE_SCSI: puts ("SCSI");
|
case IF_TYPE_SCSI:
|
||||||
|
puts ("SCSI");
|
||||||
break;
|
break;
|
||||||
case IF_TYPE_ATAPI: puts ("ATAPI");
|
case IF_TYPE_ATAPI:
|
||||||
|
puts ("ATAPI");
|
||||||
break;
|
break;
|
||||||
case IF_TYPE_USB: puts ("USB");
|
case IF_TYPE_USB:
|
||||||
|
puts ("USB");
|
||||||
break;
|
break;
|
||||||
case IF_TYPE_DOC: puts ("DOC");
|
case IF_TYPE_DOC:
|
||||||
|
puts ("DOC");
|
||||||
break;
|
break;
|
||||||
default: puts ("UNKNOWN");
|
default:
|
||||||
|
puts ("UNKNOWN");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf (" device %d -- Partition Type: %s\n\n",
|
printf (" device %d -- Partition Type: %s\n\n",
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ The PPC440EP(x)/GR(x) cpu's can boot directly from NAND FLASH,
|
|||||||
completely without NOR FLASH. This can be done by using the NAND
|
completely without NOR FLASH. This can be done by using the NAND
|
||||||
boot feature of the 440 NAND flash controller (NDFC).
|
boot feature of the 440 NAND flash controller (NDFC).
|
||||||
|
|
||||||
Here a short desciption of the different boot stages:
|
Here a short description of the different boot stages:
|
||||||
|
|
||||||
a) IPL (Initial Program Loader, integrated inside CPU)
|
a) IPL (Initial Program Loader, integrated inside CPU)
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
|
|||||||
18
doc/README.qemu_mips
Normal file
18
doc/README.qemu_mips
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
Notes for the Qemu MIPS port
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
# ln -s u-boot.bin mips_bios.bin
|
||||||
|
start it:
|
||||||
|
qemu-system-mips -L . /dev/null -nographic
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
if you use a qemu version after commit 4224
|
||||||
|
|
||||||
|
create image:
|
||||||
|
# dd of=flash bs=1k count=4k if=/dev/zero
|
||||||
|
# dd of=flash bs=1k conv=notrunc if=u-boot.bin
|
||||||
|
start it:
|
||||||
|
# qemu-system-mips -pflash flash -monitor null -nographic
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
|
|
||||||
/* It should access 16-bit instead of 8-bit */
|
/* 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;
|
void *ret = dst;
|
||||||
short *d = dst;
|
short *d = dst;
|
||||||
@@ -358,7 +358,7 @@ static int onenand_read_bufferram(struct mtd_info *mtd, int area,
|
|||||||
bufferram = this->base + area;
|
bufferram = this->base + area;
|
||||||
bufferram += onenand_bufferram_offset(mtd, area);
|
bufferram += onenand_bufferram_offset(mtd, area);
|
||||||
|
|
||||||
memcpy(buffer, bufferram + offset, count);
|
memcpy_16(buffer, bufferram + offset, count);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -385,7 +385,7 @@ static int onenand_sync_read_bufferram(struct mtd_info *mtd, int area,
|
|||||||
|
|
||||||
this->mmcontrol(mtd, ONENAND_SYS_CFG1_SYNC_READ);
|
this->mmcontrol(mtd, ONENAND_SYS_CFG1_SYNC_READ);
|
||||||
|
|
||||||
memcpy(buffer, bufferram + offset, count);
|
memcpy_16(buffer, bufferram + offset, count);
|
||||||
|
|
||||||
this->mmcontrol(mtd, 0);
|
this->mmcontrol(mtd, 0);
|
||||||
|
|
||||||
@@ -412,7 +412,7 @@ static int onenand_write_bufferram(struct mtd_info *mtd, int area,
|
|||||||
bufferram = this->base + area;
|
bufferram = this->base + area;
|
||||||
bufferram += onenand_bufferram_offset(mtd, area);
|
bufferram += onenand_bufferram_offset(mtd, area);
|
||||||
|
|
||||||
memcpy(bufferram + offset, buffer, count);
|
memcpy_16(bufferram + offset, buffer, count);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,11 @@ struct fec_info_dma fec_info[] = {
|
|||||||
0, /* duplex and speed */
|
0, /* duplex and speed */
|
||||||
0, /* phy name */
|
0, /* phy name */
|
||||||
0, /* phy name init */
|
0, /* phy name init */
|
||||||
|
#ifdef CFG_DMA_USE_INTSRAM
|
||||||
|
DBUF_LENGTH, /* RX BD */
|
||||||
|
#else
|
||||||
0, /* RX BD */
|
0, /* RX BD */
|
||||||
|
#endif
|
||||||
0, /* TX BD */
|
0, /* TX BD */
|
||||||
0, /* rx Index */
|
0, /* rx Index */
|
||||||
0, /* tx Index */
|
0, /* tx Index */
|
||||||
@@ -164,7 +168,8 @@ static void dbg_fec_regs(struct eth_device *dev)
|
|||||||
}
|
}
|
||||||
#endif
|
#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) {
|
if ((dup_spd >> 16) == FULL) {
|
||||||
/* Set maximum frame length */
|
/* Set maximum frame length */
|
||||||
@@ -513,6 +518,9 @@ int mcdmafec_initialize(bd_t * bis)
|
|||||||
{
|
{
|
||||||
struct eth_device *dev;
|
struct eth_device *dev;
|
||||||
int i;
|
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++) {
|
for (i = 0; i < sizeof(fec_info) / sizeof(fec_info[0]); i++) {
|
||||||
|
|
||||||
@@ -533,6 +541,17 @@ int mcdmafec_initialize(bd_t * bis)
|
|||||||
dev->recv = fec_recv;
|
dev->recv = fec_recv;
|
||||||
|
|
||||||
/* setup Receive and Transmit buffer descriptor */
|
/* 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 =
|
fec_info[i].rxbd =
|
||||||
(cbd_t *) memalign(CFG_CACHELINE_SIZE,
|
(cbd_t *) memalign(CFG_CACHELINE_SIZE,
|
||||||
(PKTBUFSRX * sizeof(cbd_t)));
|
(PKTBUFSRX * sizeof(cbd_t)));
|
||||||
@@ -541,6 +560,7 @@ int mcdmafec_initialize(bd_t * bis)
|
|||||||
(CFG_TX_ETH_BUFFER * sizeof(cbd_t)));
|
(CFG_TX_ETH_BUFFER * sizeof(cbd_t)));
|
||||||
fec_info[i].txbuf =
|
fec_info[i].txbuf =
|
||||||
(char *)memalign(CFG_CACHELINE_SIZE, DBUF_LENGTH);
|
(char *)memalign(CFG_CACHELINE_SIZE, DBUF_LENGTH);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ET_DEBUG
|
#ifdef ET_DEBUG
|
||||||
printf("rxbd %x txbd %x\n",
|
printf("rxbd %x txbd %x\n",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* SMSC LAN9[12]1[567] Network driver
|
* SMSC LAN9[12]1[567] Network driver
|
||||||
*
|
*
|
||||||
* (c) 2007 Pengutronix, Sascha Hauer <s.hauer <at> pengutronix.de>
|
* (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
* project.
|
* project.
|
||||||
|
|||||||
@@ -1277,6 +1277,12 @@ struct phy_info phy_info_VSC8601 = {
|
|||||||
{MIIM_CONTROL, MIIM_CONTROL_INIT, &mii_cr_init},
|
{MIIM_CONTROL, MIIM_CONTROL_INIT, &mii_cr_init},
|
||||||
#ifdef CFG_VSC8601_SKEWFIX
|
#ifdef CFG_VSC8601_SKEWFIX
|
||||||
{MIIM_VSC8601_EPHY_CON,MIIM_VSC8601_EPHY_CON_INIT_SKEW,NULL},
|
{MIIM_VSC8601_EPHY_CON,MIIM_VSC8601_EPHY_CON_INIT_SKEW,NULL},
|
||||||
|
#if defined(CFG_VSC8601_SKEW_TX) && defined(CFG_VSC8601_SKEW_RX)
|
||||||
|
{MIIM_EXT_PAGE_ACCESS,1,NULL},
|
||||||
|
#define VSC8101_SKEW (CFG_VSC8601_SKEW_TX<<14)|(CFG_VSC8601_SKEW_RX<<12)
|
||||||
|
{MIIM_VSC8601_SKEW_CTRL,VSC8101_SKEW,NULL},
|
||||||
|
{MIIM_EXT_PAGE_ACCESS,0,NULL},
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{miim_end,}
|
{miim_end,}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -112,6 +112,8 @@
|
|||||||
#define MIIM_GBIT_CONTROL 0x9
|
#define MIIM_GBIT_CONTROL 0x9
|
||||||
#define MIIM_GBIT_CONTROL_INIT 0xe00
|
#define MIIM_GBIT_CONTROL_INIT 0xe00
|
||||||
|
|
||||||
|
#define MIIM_EXT_PAGE_ACCESS 0x1f
|
||||||
|
|
||||||
/* Broadcom BCM54xx -- taken from linux sungem_phy */
|
/* Broadcom BCM54xx -- taken from linux sungem_phy */
|
||||||
#define MIIM_BCM54xx_AUXSTATUS 0x19
|
#define MIIM_BCM54xx_AUXSTATUS 0x19
|
||||||
#define MIIM_BCM54xx_AUXSTATUS_LINKMODE_MASK 0x0700
|
#define MIIM_BCM54xx_AUXSTATUS_LINKMODE_MASK 0x0700
|
||||||
@@ -163,6 +165,7 @@
|
|||||||
/* Vitesse VSC8601 Extended PHY Control Register 1 */
|
/* Vitesse VSC8601 Extended PHY Control Register 1 */
|
||||||
#define MIIM_VSC8601_EPHY_CON 0x17
|
#define MIIM_VSC8601_EPHY_CON 0x17
|
||||||
#define MIIM_VSC8601_EPHY_CON_INIT_SKEW 0x1120
|
#define MIIM_VSC8601_EPHY_CON_INIT_SKEW 0x1120
|
||||||
|
#define MIIM_VSC8601_SKEW_CTRL 0x1c
|
||||||
|
|
||||||
/* 88E1011 PHY Status Register */
|
/* 88E1011 PHY Status Register */
|
||||||
#define MIIM_88E1011_PHY_STATUS 0x11
|
#define MIIM_88E1011_PHY_STATUS 0x11
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ pci_dev_t pci_find_device(unsigned int vendor, unsigned int device, int index)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned long pci_hose_phys_to_bus (struct pci_controller *hose,
|
unsigned long pci_hose_phys_to_bus (struct pci_controller *hose,
|
||||||
unsigned long phys_addr,
|
phys_addr_t phys_addr,
|
||||||
unsigned long flags)
|
unsigned long flags)
|
||||||
{
|
{
|
||||||
struct pci_region *res;
|
struct pci_region *res;
|
||||||
@@ -253,7 +253,7 @@ Done:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long pci_hose_bus_to_phys(struct pci_controller* hose,
|
phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
|
||||||
unsigned long bus_addr,
|
unsigned long bus_addr,
|
||||||
unsigned long flags)
|
unsigned long flags)
|
||||||
{
|
{
|
||||||
@@ -425,9 +425,6 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
|
|||||||
dev < PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
|
dev < PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
|
||||||
dev += PCI_BDF(0,0,1))
|
dev += PCI_BDF(0,0,1))
|
||||||
{
|
{
|
||||||
|
|
||||||
/* Bus 0 is not necessarily PCI bridge. */
|
|
||||||
#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE)
|
|
||||||
/* Skip our host bridge */
|
/* Skip our host bridge */
|
||||||
if ( dev == PCI_BDF(hose->first_busno,0,0) ) {
|
if ( dev == PCI_BDF(hose->first_busno,0,0) ) {
|
||||||
#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE) /* don't skip host bridge */
|
#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE) /* don't skip host bridge */
|
||||||
@@ -437,11 +434,10 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
|
|||||||
if (getenv("pciconfighost") == NULL) {
|
if (getenv("pciconfighost") == NULL) {
|
||||||
continue; /* Skip our host bridge */
|
continue; /* Skip our host bridge */
|
||||||
}
|
}
|
||||||
#else /* CONFIG_PCI_CONFIG_HOST_BRIDGE */
|
#else
|
||||||
continue; /* Skip our host bridge */
|
continue; /* Skip our host bridge */
|
||||||
#endif /* CONFIG_PCI_CONFIG_HOST_BRIDGE */
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PCI_SKIP_HOST_BRIDGE */
|
|
||||||
|
|
||||||
if (PCI_FUNC(dev) && !found_multi)
|
if (PCI_FUNC(dev) && !found_multi)
|
||||||
continue;
|
continue;
|
||||||
@@ -477,11 +473,8 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
|
|||||||
hose->fixup_irq(hose, dev);
|
hose->fixup_irq(hose, dev);
|
||||||
|
|
||||||
#ifdef CONFIG_PCI_SCAN_SHOW
|
#ifdef CONFIG_PCI_SCAN_SHOW
|
||||||
#if defined(CONFIG_PCI_SKIP_HOST_BRIDGE)
|
|
||||||
/* Skip our host bridge */
|
/* Skip our host bridge */
|
||||||
if ( dev != PCI_BDF(hose->first_busno,0,0) )
|
if ( dev != PCI_BDF(hose->first_busno,0,0) ) {
|
||||||
#endif
|
|
||||||
{
|
|
||||||
unsigned char int_line;
|
unsigned char int_line;
|
||||||
|
|
||||||
pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE,
|
pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE,
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ include $(TOPDIR)/config.mk
|
|||||||
|
|
||||||
LIB := $(obj)libpcmcia.a
|
LIB := $(obj)libpcmcia.a
|
||||||
|
|
||||||
|
COBJS-$(CONFIG_I82365) += i82365.o
|
||||||
COBJS-y += mpc8xx_pcmcia.o
|
COBJS-y += mpc8xx_pcmcia.o
|
||||||
COBJS-y += pxa_pcmcia.o
|
COBJS-y += pxa_pcmcia.o
|
||||||
COBJS-y += rpx_pcmcia.o
|
COBJS-y += rpx_pcmcia.o
|
||||||
|
|||||||
@@ -31,8 +31,6 @@
|
|||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
|
||||||
#ifdef CONFIG_I82365
|
|
||||||
|
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
#include <pci.h>
|
#include <pci.h>
|
||||||
#include <pcmcia.h>
|
#include <pcmcia.h>
|
||||||
@@ -1010,5 +1008,3 @@ static void i82365_dump_regions (pci_dev_t dev)
|
|||||||
ide[4], ide[5], ide[6], ide[7]);
|
ide[4], ide[5], ide[6], ide[7]);
|
||||||
}
|
}
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
#endif /* CONFIG_I82365 */
|
|
||||||
|
|||||||
@@ -35,8 +35,10 @@ int pcmcia_on (void)
|
|||||||
debug ("%s\n", __FUNCTION__);
|
debug ("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (reg_arr[i])
|
while (reg_arr[i]) {
|
||||||
*((volatile unsigned int *) reg_arr[i++]) |= reg_arr[i++];
|
(*(volatile unsigned int *) reg_arr[i]) |= reg_arr[i + 1];
|
||||||
|
i += 2;
|
||||||
|
}
|
||||||
udelay (1000);
|
udelay (1000);
|
||||||
|
|
||||||
debug ("%s: programmed mem controller \n", __FUNCTION__);
|
debug ("%s: programmed mem controller \n", __FUNCTION__);
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ int rtc_get(struct rtc_time *tm)
|
|||||||
tm->tm_hour = BCD2BIN(buf[M41T62_REG_HOUR] & 0x3f);
|
tm->tm_hour = BCD2BIN(buf[M41T62_REG_HOUR] & 0x3f);
|
||||||
tm->tm_mday = BCD2BIN(buf[M41T62_REG_DAY] & 0x3f);
|
tm->tm_mday = BCD2BIN(buf[M41T62_REG_DAY] & 0x3f);
|
||||||
tm->tm_wday = buf[M41T62_REG_WDAY] & 0x07;
|
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 */
|
/* assume 20YY not 19YY, and ignore the Century Bit */
|
||||||
/* U-Boot needs to add 1900 here */
|
/* U-Boot needs to add 1900 here */
|
||||||
@@ -119,7 +119,7 @@ void rtc_set(struct rtc_time *tm)
|
|||||||
buf[M41T62_REG_DAY] =
|
buf[M41T62_REG_DAY] =
|
||||||
BIN2BCD(tm->tm_mday) | (buf[M41T62_REG_DAY] & ~0x3f);
|
BIN2BCD(tm->tm_mday) | (buf[M41T62_REG_DAY] & ~0x3f);
|
||||||
buf[M41T62_REG_MON] =
|
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 */
|
/* assume 20YY not 19YY */
|
||||||
buf[M41T62_REG_YEAR] = BIN2BCD(tm->tm_year % 100);
|
buf[M41T62_REG_YEAR] = BIN2BCD(tm->tm_year % 100);
|
||||||
|
|
||||||
|
|||||||
4
examples/.gitignore
vendored
4
examples/.gitignore
vendored
@@ -1,5 +1,9 @@
|
|||||||
|
/82559_eeprom
|
||||||
/hello_world
|
/hello_world
|
||||||
/interrupt
|
/interrupt
|
||||||
|
/mem_to_mem_idma2intr
|
||||||
|
/test_burst
|
||||||
|
/timer
|
||||||
/sched
|
/sched
|
||||||
/smc91111_eeprom
|
/smc91111_eeprom
|
||||||
*.bin
|
*.bin
|
||||||
|
|||||||
4
include/.gitignore
vendored
4
include/.gitignore
vendored
@@ -1,7 +1,7 @@
|
|||||||
/autoconf.mk*
|
/autoconf.mk*
|
||||||
/asm
|
/asm
|
||||||
/asm-blackfin/arch
|
/asm-*/arch
|
||||||
/asm-ppc/arch
|
/asm-*/proc
|
||||||
/bmp_logo.h
|
/bmp_logo.h
|
||||||
/config.h
|
/config.h
|
||||||
/config.mk
|
/config.mk
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91_pio.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91_pio.h]
|
||||||
*
|
*
|
||||||
* Copyright (C) 2005 Ivan Kokshaysky
|
* Copyright (C) 2005 Ivan Kokshaysky
|
||||||
* Copyright (C) SAN People
|
* Copyright (C) SAN People
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91_pit.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91_pit.h]
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 Andrew Victor
|
||||||
|
* Copyright (C) 2007 Atmel Corporation.
|
||||||
*
|
*
|
||||||
* Periodic Interval Timer (PIT) - System peripherals regsters.
|
* Periodic Interval Timer (PIT) - System peripherals regsters.
|
||||||
* Based on AT91SAM9261 datasheet revision D.
|
* Based on AT91SAM9261 datasheet revision D.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91_pmc.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91_pmc.h]
|
||||||
*
|
*
|
||||||
* Copyright (C) 2005 Ivan Kokshaysky
|
* Copyright (C) 2005 Ivan Kokshaysky
|
||||||
* Copyright (C) SAN People
|
* Copyright (C) SAN People
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91_rstc.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91_rstc.h]
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 Andrew Victor
|
||||||
|
* Copyright (C) 2007 Atmel Corporation.
|
||||||
*
|
*
|
||||||
* Reset Controller (RSTC) - System peripherals regsters.
|
* Reset Controller (RSTC) - System peripherals regsters.
|
||||||
* Based on AT91SAM9261 datasheet revision D.
|
* Based on AT91SAM9261 datasheet revision D.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91_spi.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91_spi.h]
|
||||||
*
|
*
|
||||||
* Copyright (C) 2005 Ivan Kokshaysky
|
* Copyright (C) 2005 Ivan Kokshaysky
|
||||||
* Copyright (C) SAN People
|
* Copyright (C) SAN People
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91cap9.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91cap9.h]
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com>
|
* Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com>
|
* Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91cap9_matrix.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91cap9_matrix.h]
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com>
|
* Copyright (C) 2007 Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com>
|
* Copyright (C) 2007 Lead Tech Design <www.leadtechdesign.com>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91sam9260.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91sam9260.h]
|
||||||
*
|
*
|
||||||
* (C) 2006 Andrew Victor
|
* (C) 2006 Andrew Victor
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* include/asm-arm/arch-at91/at91sam9260_matrix.h
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91sam9260_matrix.h]
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 Atmel Corporation.
|
||||||
*
|
*
|
||||||
* Memory Controllers (MATRIX, EBI) - System peripherals registers.
|
* Memory Controllers (MATRIX, EBI) - System peripherals registers.
|
||||||
* Based on AT91SAM9260 datasheet revision B.
|
* Based on AT91SAM9260 datasheet revision B.
|
||||||
|
|||||||
@@ -1,140 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-arm/arch-at91/at91sam926x_mc.h
|
|
||||||
*
|
|
||||||
* Memory Controllers (SMC, SDRAMC) - System peripherals registers.
|
|
||||||
* Based on AT91SAM9261 datasheet revision D.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef AT91SAM926x_MC_H
|
|
||||||
#define AT91SAM926x_MC_H
|
|
||||||
|
|
||||||
/* SDRAM Controller (SDRAMC) registers */
|
|
||||||
#define AT91_SDRAMC_MR (AT91_SDRAMC + 0x00) /* SDRAM Controller Mode Register */
|
|
||||||
#define AT91_SDRAMC_MODE (0xf << 0) /* Command Mode */
|
|
||||||
#define AT91_SDRAMC_MODE_NORMAL 0
|
|
||||||
#define AT91_SDRAMC_MODE_NOP 1
|
|
||||||
#define AT91_SDRAMC_MODE_PRECHARGE 2
|
|
||||||
#define AT91_SDRAMC_MODE_LMR 3
|
|
||||||
#define AT91_SDRAMC_MODE_REFRESH 4
|
|
||||||
#define AT91_SDRAMC_MODE_EXT_LMR 5
|
|
||||||
#define AT91_SDRAMC_MODE_DEEP 6
|
|
||||||
|
|
||||||
#define AT91_SDRAMC_TR (AT91_SDRAMC + 0x04) /* SDRAM Controller Refresh Timer Register */
|
|
||||||
#define AT91_SDRAMC_COUNT (0xfff << 0) /* Refresh Timer Counter */
|
|
||||||
|
|
||||||
#define AT91_SDRAMC_CR (AT91_SDRAMC + 0x08) /* SDRAM Controller Configuration Register */
|
|
||||||
#define AT91_SDRAMC_NC (3 << 0) /* Number of Column Bits */
|
|
||||||
#define AT91_SDRAMC_NC_8 (0 << 0)
|
|
||||||
#define AT91_SDRAMC_NC_9 (1 << 0)
|
|
||||||
#define AT91_SDRAMC_NC_10 (2 << 0)
|
|
||||||
#define AT91_SDRAMC_NC_11 (3 << 0)
|
|
||||||
#define AT91_SDRAMC_NR (3 << 2) /* Number of Row Bits */
|
|
||||||
#define AT91_SDRAMC_NR_11 (0 << 2)
|
|
||||||
#define AT91_SDRAMC_NR_12 (1 << 2)
|
|
||||||
#define AT91_SDRAMC_NR_13 (2 << 2)
|
|
||||||
#define AT91_SDRAMC_NB (1 << 4) /* Number of Banks */
|
|
||||||
#define AT91_SDRAMC_NB_2 (0 << 4)
|
|
||||||
#define AT91_SDRAMC_NB_4 (1 << 4)
|
|
||||||
#define AT91_SDRAMC_CAS (3 << 5) /* CAS Latency */
|
|
||||||
#define AT91_SDRAMC_CAS_1 (1 << 5)
|
|
||||||
#define AT91_SDRAMC_CAS_2 (2 << 5)
|
|
||||||
#define AT91_SDRAMC_CAS_3 (3 << 5)
|
|
||||||
#define AT91_SDRAMC_DBW (1 << 7) /* Data Bus Width */
|
|
||||||
#define AT91_SDRAMC_DBW_32 (0 << 7)
|
|
||||||
#define AT91_SDRAMC_DBW_16 (1 << 7)
|
|
||||||
#define AT91_SDRAMC_TWR (0xf << 8) /* Write Recovery Delay */
|
|
||||||
#define AT91_SDRAMC_TRC (0xf << 12) /* Row Cycle Delay */
|
|
||||||
#define AT91_SDRAMC_TRP (0xf << 16) /* Row Precharge Delay */
|
|
||||||
#define AT91_SDRAMC_TRCD (0xf << 20) /* Row to Column Delay */
|
|
||||||
#define AT91_SDRAMC_TRAS (0xf << 24) /* Active to Precharge Delay */
|
|
||||||
#define AT91_SDRAMC_TXSR (0xf << 28) /* Exit Self Refresh to Active Delay */
|
|
||||||
|
|
||||||
#define AT91_SDRAMC_LPR (AT91_SDRAMC + 0x10) /* SDRAM Controller Low Power Register */
|
|
||||||
#define AT91_SDRAMC_LPCB (3 << 0) /* Low-power Configurations */
|
|
||||||
#define AT91_SDRAMC_LPCB_DISABLE 0
|
|
||||||
#define AT91_SDRAMC_LPCB_SELF_REFRESH 1
|
|
||||||
#define AT91_SDRAMC_LPCB_POWER_DOWN 2
|
|
||||||
#define AT91_SDRAMC_LPCB_DEEP_POWER_DOWN 3
|
|
||||||
#define AT91_SDRAMC_PASR (7 << 4) /* Partial Array Self Refresh */
|
|
||||||
#define AT91_SDRAMC_TCSR (3 << 8) /* Temperature Compensated Self Refresh */
|
|
||||||
#define AT91_SDRAMC_DS (3 << 10) /* Drive Strenght */
|
|
||||||
#define AT91_SDRAMC_TIMEOUT (3 << 12) /* Time to define when Low Power Mode is enabled */
|
|
||||||
#define AT91_SDRAMC_TIMEOUT_0_CLK_CYCLES (0 << 12)
|
|
||||||
#define AT91_SDRAMC_TIMEOUT_64_CLK_CYCLES (1 << 12)
|
|
||||||
#define AT91_SDRAMC_TIMEOUT_128_CLK_CYCLES (2 << 12)
|
|
||||||
|
|
||||||
#define AT91_SDRAMC_IER (AT91_SDRAMC + 0x14) /* SDRAM Controller Interrupt Enable Register */
|
|
||||||
#define AT91_SDRAMC_IDR (AT91_SDRAMC + 0x18) /* SDRAM Controller Interrupt Disable Register */
|
|
||||||
#define AT91_SDRAMC_IMR (AT91_SDRAMC + 0x1C) /* SDRAM Controller Interrupt Mask Register */
|
|
||||||
#define AT91_SDRAMC_ISR (AT91_SDRAMC + 0x20) /* SDRAM Controller Interrupt Status Register */
|
|
||||||
#define AT91_SDRAMC_RES (1 << 0) /* Refresh Error Status */
|
|
||||||
|
|
||||||
#define AT91_SDRAMC_MDR (AT91_SDRAMC + 0x24) /* SDRAM Memory Device Register */
|
|
||||||
#define AT91_SDRAMC_MD (3 << 0) /* Memory Device Type */
|
|
||||||
#define AT91_SDRAMC_MD_SDRAM 0
|
|
||||||
#define AT91_SDRAMC_MD_LOW_POWER_SDRAM 1
|
|
||||||
|
|
||||||
/* Static Memory Controller (SMC) registers */
|
|
||||||
#define AT91_SMC_SETUP(n) (AT91_SMC + 0x00 + ((n)*0x10)) /* Setup Register for CS n */
|
|
||||||
#define AT91_SMC_NWESETUP (0x3f << 0) /* NWE Setup Length */
|
|
||||||
#define AT91_SMC_NWESETUP_(x) ((x) << 0)
|
|
||||||
#define AT91_SMC_NCS_WRSETUP (0x3f << 8) /* NCS Setup Length in Write Access */
|
|
||||||
#define AT91_SMC_NCS_WRSETUP_(x) ((x) << 8)
|
|
||||||
#define AT91_SMC_NRDSETUP (0x3f << 16) /* NRD Setup Length */
|
|
||||||
#define AT91_SMC_NRDSETUP_(x) ((x) << 16)
|
|
||||||
#define AT91_SMC_NCS_RDSETUP (0x3f << 24) /* NCS Setup Length in Read Access */
|
|
||||||
#define AT91_SMC_NCS_RDSETUP_(x) ((x) << 24)
|
|
||||||
|
|
||||||
#define AT91_SMC_PULSE(n) (AT91_SMC + 0x04 + ((n)*0x10)) /* Pulse Register for CS n */
|
|
||||||
#define AT91_SMC_NWEPULSE (0x7f << 0) /* NWE Pulse Length */
|
|
||||||
#define AT91_SMC_NWEPULSE_(x) ((x) << 0)
|
|
||||||
#define AT91_SMC_NCS_WRPULSE (0x7f << 8) /* NCS Pulse Length in Write Access */
|
|
||||||
#define AT91_SMC_NCS_WRPULSE_(x)((x) << 8)
|
|
||||||
#define AT91_SMC_NRDPULSE (0x7f << 16) /* NRD Pulse Length */
|
|
||||||
#define AT91_SMC_NRDPULSE_(x) ((x) << 16)
|
|
||||||
#define AT91_SMC_NCS_RDPULSE (0x7f << 24) /* NCS Pulse Length in Read Access */
|
|
||||||
#define AT91_SMC_NCS_RDPULSE_(x)((x) << 24)
|
|
||||||
|
|
||||||
#define AT91_SMC_CYCLE(n) (AT91_SMC + 0x08 + ((n)*0x10)) /* Cycle Register for CS n */
|
|
||||||
#define AT91_SMC_NWECYCLE (0x1ff << 0 ) /* Total Write Cycle Length */
|
|
||||||
#define AT91_SMC_NWECYCLE_(x) ((x) << 0)
|
|
||||||
#define AT91_SMC_NRDCYCLE (0x1ff << 16) /* Total Read Cycle Length */
|
|
||||||
#define AT91_SMC_NRDCYCLE_(x) ((x) << 16)
|
|
||||||
|
|
||||||
#define AT91_SMC_MODE(n) (AT91_SMC + 0x0c + ((n)*0x10)) /* Mode Register for CS n */
|
|
||||||
#define AT91_SMC_READMODE (1 << 0) /* Read Mode */
|
|
||||||
#define AT91_SMC_WRITEMODE (1 << 1) /* Write Mode */
|
|
||||||
#define AT91_SMC_EXNWMODE (3 << 4) /* NWAIT Mode */
|
|
||||||
#define AT91_SMC_EXNWMODE_DISABLE (0 << 4)
|
|
||||||
#define AT91_SMC_EXNWMODE_FROZEN (2 << 4)
|
|
||||||
#define AT91_SMC_EXNWMODE_READY (3 << 4)
|
|
||||||
#define AT91_SMC_BAT (1 << 8) /* Byte Access Type */
|
|
||||||
#define AT91_SMC_BAT_SELECT (0 << 8)
|
|
||||||
#define AT91_SMC_BAT_WRITE (1 << 8)
|
|
||||||
#define AT91_SMC_DBW (3 << 12) /* Data Bus Width */
|
|
||||||
#define AT91_SMC_DBW_8 (0 << 12)
|
|
||||||
#define AT91_SMC_DBW_16 (1 << 12)
|
|
||||||
#define AT91_SMC_DBW_32 (2 << 12)
|
|
||||||
#define AT91_SMC_TDF (0xf << 16) /* Data Float Time. */
|
|
||||||
#define AT91_SMC_TDF_(x) ((x) << 16)
|
|
||||||
#define AT91_SMC_TDFMODE (1 << 20) /* TDF Optimization - Enabled */
|
|
||||||
#define AT91_SMC_PMEN (1 << 24) /* Page Mode Enabled */
|
|
||||||
#define AT91_SMC_PS (3 << 28) /* Page Size */
|
|
||||||
#define AT91_SMC_PS_4 (0 << 28)
|
|
||||||
#define AT91_SMC_PS_8 (1 << 28)
|
|
||||||
#define AT91_SMC_PS_16 (2 << 28)
|
|
||||||
#define AT91_SMC_PS_32 (3 << 28)
|
|
||||||
|
|
||||||
#if defined(AT91_SMC1) /* The AT91SAM9263 has 2 Static Memory contollers */
|
|
||||||
#define AT91_SMC1_SETUP(n) (AT91_SMC1 + 0x00 + ((n)*0x10)) /* Setup Register for CS n */
|
|
||||||
#define AT91_SMC1_PULSE(n) (AT91_SMC1 + 0x04 + ((n)*0x10)) /* Pulse Register for CS n */
|
|
||||||
#define AT91_SMC1_CYCLE(n) (AT91_SMC1 + 0x08 + ((n)*0x10)) /* Cycle Register for CS n */
|
|
||||||
#define AT91_SMC1_MODE(n) (AT91_SMC1 + 0x0c + ((n)*0x10)) /* Mode Register for CS n */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
76
include/asm-arm/arch-at91sam9/at91sam9_smc.h
Normal file
76
include/asm-arm/arch-at91sam9/at91sam9_smc.h
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* [origin: Linux kernel include/asm-arm/arch-at91/at91sam9_smc.h]
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 Andrew Victor
|
||||||
|
* Copyright (C) 2007 Atmel Corporation.
|
||||||
|
*
|
||||||
|
* Static Memory Controllers (SMC) - System peripherals registers.
|
||||||
|
* Based on AT91SAM9261 datasheet revision D.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AT91SAM9_SMC_H
|
||||||
|
#define AT91SAM9_SMC_H
|
||||||
|
|
||||||
|
#define AT91_SMC_SETUP(n) (AT91_SMC + 0x00 + ((n)*0x10)) /* Setup Register for CS n */
|
||||||
|
#define AT91_SMC_NWESETUP (0x3f << 0) /* NWE Setup Length */
|
||||||
|
#define AT91_SMC_NWESETUP_(x) ((x) << 0)
|
||||||
|
#define AT91_SMC_NCS_WRSETUP (0x3f << 8) /* NCS Setup Length in Write Access */
|
||||||
|
#define AT91_SMC_NCS_WRSETUP_(x) ((x) << 8)
|
||||||
|
#define AT91_SMC_NRDSETUP (0x3f << 16) /* NRD Setup Length */
|
||||||
|
#define AT91_SMC_NRDSETUP_(x) ((x) << 16)
|
||||||
|
#define AT91_SMC_NCS_RDSETUP (0x3f << 24) /* NCS Setup Length in Read Access */
|
||||||
|
#define AT91_SMC_NCS_RDSETUP_(x) ((x) << 24)
|
||||||
|
|
||||||
|
#define AT91_SMC_PULSE(n) (AT91_SMC + 0x04 + ((n)*0x10)) /* Pulse Register for CS n */
|
||||||
|
#define AT91_SMC_NWEPULSE (0x7f << 0) /* NWE Pulse Length */
|
||||||
|
#define AT91_SMC_NWEPULSE_(x) ((x) << 0)
|
||||||
|
#define AT91_SMC_NCS_WRPULSE (0x7f << 8) /* NCS Pulse Length in Write Access */
|
||||||
|
#define AT91_SMC_NCS_WRPULSE_(x)((x) << 8)
|
||||||
|
#define AT91_SMC_NRDPULSE (0x7f << 16) /* NRD Pulse Length */
|
||||||
|
#define AT91_SMC_NRDPULSE_(x) ((x) << 16)
|
||||||
|
#define AT91_SMC_NCS_RDPULSE (0x7f << 24) /* NCS Pulse Length in Read Access */
|
||||||
|
#define AT91_SMC_NCS_RDPULSE_(x)((x) << 24)
|
||||||
|
|
||||||
|
#define AT91_SMC_CYCLE(n) (AT91_SMC + 0x08 + ((n)*0x10)) /* Cycle Register for CS n */
|
||||||
|
#define AT91_SMC_NWECYCLE (0x1ff << 0 ) /* Total Write Cycle Length */
|
||||||
|
#define AT91_SMC_NWECYCLE_(x) ((x) << 0)
|
||||||
|
#define AT91_SMC_NRDCYCLE (0x1ff << 16) /* Total Read Cycle Length */
|
||||||
|
#define AT91_SMC_NRDCYCLE_(x) ((x) << 16)
|
||||||
|
|
||||||
|
#define AT91_SMC_MODE(n) (AT91_SMC + 0x0c + ((n)*0x10)) /* Mode Register for CS n */
|
||||||
|
#define AT91_SMC_READMODE (1 << 0) /* Read Mode */
|
||||||
|
#define AT91_SMC_WRITEMODE (1 << 1) /* Write Mode */
|
||||||
|
#define AT91_SMC_EXNWMODE (3 << 4) /* NWAIT Mode */
|
||||||
|
#define AT91_SMC_EXNWMODE_DISABLE (0 << 4)
|
||||||
|
#define AT91_SMC_EXNWMODE_FROZEN (2 << 4)
|
||||||
|
#define AT91_SMC_EXNWMODE_READY (3 << 4)
|
||||||
|
#define AT91_SMC_BAT (1 << 8) /* Byte Access Type */
|
||||||
|
#define AT91_SMC_BAT_SELECT (0 << 8)
|
||||||
|
#define AT91_SMC_BAT_WRITE (1 << 8)
|
||||||
|
#define AT91_SMC_DBW (3 << 12) /* Data Bus Width */
|
||||||
|
#define AT91_SMC_DBW_8 (0 << 12)
|
||||||
|
#define AT91_SMC_DBW_16 (1 << 12)
|
||||||
|
#define AT91_SMC_DBW_32 (2 << 12)
|
||||||
|
#define AT91_SMC_TDF (0xf << 16) /* Data Float Time. */
|
||||||
|
#define AT91_SMC_TDF_(x) ((x) << 16)
|
||||||
|
#define AT91_SMC_TDFMODE (1 << 20) /* TDF Optimization - Enabled */
|
||||||
|
#define AT91_SMC_PMEN (1 << 24) /* Page Mode Enabled */
|
||||||
|
#define AT91_SMC_PS (3 << 28) /* Page Size */
|
||||||
|
#define AT91_SMC_PS_4 (0 << 28)
|
||||||
|
#define AT91_SMC_PS_8 (1 << 28)
|
||||||
|
#define AT91_SMC_PS_16 (2 << 28)
|
||||||
|
#define AT91_SMC_PS_32 (3 << 28)
|
||||||
|
|
||||||
|
#if defined(AT91_SMC1) /* The AT91SAM9263 has 2 Static Memory contollers */
|
||||||
|
#define AT91_SMC1_SETUP(n) (AT91_SMC1 + 0x00 + ((n)*0x10)) /* Setup Register for CS n */
|
||||||
|
#define AT91_SMC1_PULSE(n) (AT91_SMC1 + 0x04 + ((n)*0x10)) /* Pulse Register for CS n */
|
||||||
|
#define AT91_SMC1_CYCLE(n) (AT91_SMC1 + 0x08 + ((n)*0x10)) /* Cycle Register for CS n */
|
||||||
|
#define AT91_SMC1_MODE(n) (AT91_SMC1 + 0x0c + ((n)*0x10)) /* Mode Register for CS n */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2007
|
* (C) Copyright 2007
|
||||||
* Stelian Pop <stelian.pop <at> leadtechdesign.com>
|
* Stelian Pop <stelian.pop@leadtechdesign.com>
|
||||||
* Lead Tech Design <www.leadtechdesign.com>
|
* Lead Tech Design <www.leadtechdesign.com>
|
||||||
*
|
*
|
||||||
* See file CREDITS for list of people who contributed to this
|
* See file CREDITS for list of people who contributed to this
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user