mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-26 00:01:48 +02:00
integrator: merge integratorap and integratorcp
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Peter Pearse <peter.pearse@arm.com>
This commit is contained in:
parent
46937b2742
commit
576afd4fae
4
Makefile
4
Makefile
@ -2809,7 +2809,7 @@ ap720t_config \
|
|||||||
ap920t_config \
|
ap920t_config \
|
||||||
ap926ejs_config \
|
ap926ejs_config \
|
||||||
ap946es_config: unconfig
|
ap946es_config: unconfig
|
||||||
@board/armltd/integratorap/split_by_variant.sh $@
|
@board/armltd/integrator/split_by_variant.sh ap $@
|
||||||
|
|
||||||
integratorcp_config \
|
integratorcp_config \
|
||||||
cp_config \
|
cp_config \
|
||||||
@ -2821,7 +2821,7 @@ cp966_config \
|
|||||||
cp922_config \
|
cp922_config \
|
||||||
cp922_XA10_config \
|
cp922_XA10_config \
|
||||||
cp1026_config: unconfig
|
cp1026_config: unconfig
|
||||||
@board/armltd/integratorcp/split_by_variant.sh $@
|
@board/armltd/integrator/split_by_variant.sh cp $@
|
||||||
|
|
||||||
davinci_dvevm_config : unconfig
|
davinci_dvevm_config : unconfig
|
||||||
@$(MKCONFIG) $(@:_config=) arm arm926ejs dvevm davinci davinci
|
@$(MKCONFIG) $(@:_config=) arm arm926ejs dvevm davinci davinci
|
||||||
|
2
board/armltd/.gitignore
vendored
2
board/armltd/.gitignore
vendored
@ -1,2 +0,0 @@
|
|||||||
/integratorap/u-boot.lds
|
|
||||||
/integratorcp/u-boot.lds
|
|
@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).a
|
|||||||
|
|
||||||
SOBJS-y := lowlevel_init.o
|
SOBJS-y := lowlevel_init.o
|
||||||
|
|
||||||
COBJS-y := integratorap.o
|
COBJS-y := integrator.o
|
||||||
COBJS-$(CONFIG_PCI) += pci.o
|
COBJS-$(CONFIG_PCI) += pci.o
|
||||||
COBJS-y += timer.o
|
COBJS-y += timer.o
|
||||||
|
|
@ -34,7 +34,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#ifdef CONFIG_PCI
|
||||||
#include <netdev.h>
|
#include <netdev.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
@ -56,7 +58,11 @@ void show_boot_progress(int progress)
|
|||||||
int board_init (void)
|
int board_init (void)
|
||||||
{
|
{
|
||||||
/* arch number of Integrator Board */
|
/* arch number of Integrator Board */
|
||||||
|
#ifdef CONFIG_ARCH_CINTEGRATOR
|
||||||
|
gd->bd->bi_arch_number = MACH_TYPE_CINTEGRATOR;
|
||||||
|
#else
|
||||||
gd->bd->bi_arch_number = MACH_TYPE_INTEGRATOR;
|
gd->bd->bi_arch_number = MACH_TYPE_INTEGRATOR;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* adress of boot parameters */
|
/* adress of boot parameters */
|
||||||
gd->bd->bi_boot_params = 0x00000100;
|
gd->bd->bi_boot_params = 0x00000100;
|
||||||
@ -121,7 +127,9 @@ extern void dram_query(void);
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PCI
|
||||||
int board_eth_init(bd_t *bis)
|
int board_eth_init(bd_t *bis)
|
||||||
{
|
{
|
||||||
return pci_eth_init(bis);
|
return pci_eth_init(bis);
|
||||||
}
|
}
|
||||||
|
#endif
|
235
board/armltd/integrator/split_by_variant.sh
Executable file
235
board/armltd/integrator/split_by_variant.sh
Executable file
@ -0,0 +1,235 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir -p ${obj}include
|
||||||
|
mkdir -p ${obj}board/armltd/integrator
|
||||||
|
|
||||||
|
config_file=${obj}include/config.h
|
||||||
|
|
||||||
|
if [ "$1" = "ap" ]
|
||||||
|
then
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# Set the platform defines
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
echo -n "/* Integrator configuration implied " > ${config_file}
|
||||||
|
echo " by Makefile target */" >> ${config_file}
|
||||||
|
echo -n "#define CONFIG_INTEGRATOR" >> ${config_file}
|
||||||
|
echo " /* Integrator board */" >> ${config_file}
|
||||||
|
echo -n "#define CONFIG_ARCH_INTEGRATOR" >> ${config_file}
|
||||||
|
echo " 1 /* Integrator/AP */" >> ${config_file}
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# Set the core module defines according to Core Module
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unknown core module"
|
||||||
|
|
||||||
|
if [ "$2" = "" ]
|
||||||
|
then
|
||||||
|
echo "$0:: No parameters - using arm_intcm"
|
||||||
|
else
|
||||||
|
case "$2" in
|
||||||
|
ap7_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM7TDMI"
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap966)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM966E-S"
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap922_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM922T"
|
||||||
|
;;
|
||||||
|
|
||||||
|
integratorap_config | \
|
||||||
|
ap_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unspecified core module"
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap720t_config)
|
||||||
|
cpu="arm720t"
|
||||||
|
echo -n "#define CONFIG_CM720T" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM720T */ " >> ${config_file}
|
||||||
|
variant="Core module CM720T"
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap922_XA10_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM922T_XA10"
|
||||||
|
echo -n "#define CONFIG_CM922T_XA10" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM922T_XA10 */" >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap920t_config)
|
||||||
|
cpu="arm920t"
|
||||||
|
variant="Core module CM920T"
|
||||||
|
echo -n "#define CONFIG_CM920T" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM920T */" >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap926ejs_config)
|
||||||
|
cpu="arm926ejs"
|
||||||
|
variant="Core module CM926EJ-S"
|
||||||
|
echo -n "#define CONFIG_CM926EJ_S" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM926EJ-S */ " >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap946es_config)
|
||||||
|
cpu="arm946es"
|
||||||
|
variant="Core module CM946E-S"
|
||||||
|
echo -n "#define CONFIG_CM946E_S" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM946E-S */ " >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "$0:: Unknown core module"
|
||||||
|
variant="unknown core module"
|
||||||
|
cpu="arm_intcm"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$cpu" in
|
||||||
|
arm_intcm)
|
||||||
|
echo "/* Core module undefined/not ported */" >> ${config_file}
|
||||||
|
echo "#define CONFIG_ARM_INTCM 1" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> ${config_file}
|
||||||
|
echo -n " /* CM may not have " >> ${config_file}
|
||||||
|
echo "multiple SSRAM mapping */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_SPD_DETECT " >> ${config_file}
|
||||||
|
echo -n " /* CM may not support SPD " >> ${config_file}
|
||||||
|
echo "query */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_REMAP " >> ${config_file}
|
||||||
|
echo -n " /* CM may not support " >> ${config_file}
|
||||||
|
echo "remapping */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_INIT " >> ${config_file}
|
||||||
|
echo -n " /* CM may not have " >> ${config_file}
|
||||||
|
echo "initialization reg */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_TCRAM " >> ${config_file}
|
||||||
|
echo " /* CM may not have TCRAM */" >> ${config_file}
|
||||||
|
echo -n " /* May not be processor " >> ${config_file}
|
||||||
|
echo "without cache support */" >> ${config_file}
|
||||||
|
echo "#define CONFIG_SYS_NO_ICACHE 1" >> ${config_file}
|
||||||
|
echo "#define CONFIG_SYS_NO_DCACHE 1" >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
arm720t)
|
||||||
|
echo -n " /* May not be processor " >> ${config_file}
|
||||||
|
echo "without cache support */" >> ${config_file}
|
||||||
|
echo "#define CONFIG_SYS_NO_ICACHE 1" >> ${config_file}
|
||||||
|
echo "#define CONFIG_SYS_NO_DCACHE 1" >> ${config_file}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# Set the platform defines
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
echo -n "/* Integrator configuration implied " > ${config_file}
|
||||||
|
echo " by Makefile target */" >> ${config_file}
|
||||||
|
echo -n "#define CONFIG_INTEGRATOR" >> ${config_file}
|
||||||
|
echo " /* Integrator board */" >> ${config_file}
|
||||||
|
echo -n "#define CONFIG_ARCH_CINTEGRATOR" >> ${config_file}
|
||||||
|
echo " 1 /* Integrator/CP */" >> ${config_file}
|
||||||
|
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unknown core module"
|
||||||
|
|
||||||
|
if [ "$2" = "" ]
|
||||||
|
then
|
||||||
|
echo "$0:: No parameters - using arm_intcm"
|
||||||
|
else
|
||||||
|
case "$2" in
|
||||||
|
ap966)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM966E-S"
|
||||||
|
;;
|
||||||
|
|
||||||
|
ap922_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM922T"
|
||||||
|
;;
|
||||||
|
|
||||||
|
integratorcp_config | \
|
||||||
|
cp_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unspecified core module"
|
||||||
|
;;
|
||||||
|
|
||||||
|
cp922_XA10_config)
|
||||||
|
cpu="arm_intcm"
|
||||||
|
variant="unported core module CM922T_XA10"
|
||||||
|
echo -n "#define CONFIG_CM922T_XA10" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM922T_XA10 */" >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
cp920t_config)
|
||||||
|
cpu="arm920t"
|
||||||
|
variant="Core module CM920T"
|
||||||
|
echo -n "#define CONFIG_CM920T" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM920T */" >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
cp926ejs_config)
|
||||||
|
cpu="arm926ejs"
|
||||||
|
variant="Core module CM926EJ-S"
|
||||||
|
echo -n "#define CONFIG_CM926EJ_S" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM926EJ-S */ " >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
cp946es_config)
|
||||||
|
cpu="arm946es"
|
||||||
|
variant="Core module CM946E-S"
|
||||||
|
echo -n "#define CONFIG_CM946E_S" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM946E-S */ " >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
cp1136_config)
|
||||||
|
cpu="arm1136"
|
||||||
|
variant="Core module CM1136EJF-S"
|
||||||
|
echo -n "#define CONFIG_CM1136EJF_S" >> ${config_file}
|
||||||
|
echo " 1 /* CPU core is ARM1136JF-S */ " >> ${config_file}
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "$0:: Unknown core module"
|
||||||
|
variant="unknown core module"
|
||||||
|
cpu="arm_intcm"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$cpu" = "arm_intcm" ]
|
||||||
|
then
|
||||||
|
echo "/* Core module undefined/not ported */" >> ${config_file}
|
||||||
|
echo "#define CONFIG_ARM_INTCM 1" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> ${config_file}
|
||||||
|
echo -n " /* CM may not have " >> ${config_file}
|
||||||
|
echo "multiple SSRAM mapping */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_SPD_DETECT " >> ${config_file}
|
||||||
|
echo -n " /* CM may not support SPD " >> ${config_file}
|
||||||
|
echo "query */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_REMAP " >> ${config_file}
|
||||||
|
echo -n " /* CM may not support " >> ${config_file}
|
||||||
|
echo "remapping */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_INIT " >> ${config_file}
|
||||||
|
echo -n " /* CM may not have " >> ${config_file}
|
||||||
|
echo "initialization reg */" >> ${config_file}
|
||||||
|
echo -n "#undef CONFIG_CM_TCRAM " >> ${config_file}
|
||||||
|
echo " /* CM may not have TCRAM */" >> ${config_file}
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi # ap
|
||||||
|
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
# Complete the configuration
|
||||||
|
# ---------------------------------------------------------
|
||||||
|
$MKCONFIG -a integrator$1 arm $cpu integrator armltd;
|
||||||
|
echo "Variant:: $variant with core $cpu"
|
@ -36,6 +36,13 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <div64.h>
|
#include <div64.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_CINTEGRATOR
|
||||||
|
#define DIV_CLOCK_INIT 1
|
||||||
|
#define TIMER_LOAD_VAL 0xFFFFFFFFL
|
||||||
|
#else
|
||||||
|
#define DIV_CLOCK_INIT 256
|
||||||
|
#define TIMER_LOAD_VAL 0x0000FFFFL
|
||||||
|
#endif
|
||||||
/* The Integrator/CP timer1 is clocked at 1MHz
|
/* The Integrator/CP timer1 is clocked at 1MHz
|
||||||
* can be divided by 16 or 256
|
* can be divided by 16 or 256
|
||||||
* and can be set up as a 32-bit timer
|
* and can be set up as a 32-bit timer
|
||||||
@ -44,14 +51,14 @@
|
|||||||
/* Keep total timer count to avoid losing decrements < div_timer */
|
/* Keep total timer count to avoid losing decrements < div_timer */
|
||||||
static unsigned long long total_count = 0;
|
static unsigned long long total_count = 0;
|
||||||
static unsigned long long lastdec; /* Timer reading at last call */
|
static unsigned long long lastdec; /* Timer reading at last call */
|
||||||
static unsigned long long div_clock = 1; /* Divisor applied to timer clock */
|
/* Divisor applied to timer clock */
|
||||||
|
static unsigned long long div_clock = DIV_CLOCK_INIT;
|
||||||
static unsigned long long div_timer = 1; /* Divisor to convert timer reading
|
static unsigned long long div_timer = 1; /* Divisor to convert timer reading
|
||||||
* change to U-Boot ticks
|
* change to U-Boot ticks
|
||||||
*/
|
*/
|
||||||
/* CONFIG_SYS_HZ = CONFIG_SYS_HZ_CLOCK/(div_clock * div_timer) */
|
/* CONFIG_SYS_HZ = CONFIG_SYS_HZ_CLOCK/(div_clock * div_timer) */
|
||||||
static ulong timestamp; /* U-Boot ticks since startup */
|
static ulong timestamp; /* U-Boot ticks since startup */
|
||||||
|
|
||||||
#define TIMER_LOAD_VAL ((ulong)0xFFFFFFFF)
|
|
||||||
#define READ_TIMER (*(volatile ulong *)(CONFIG_SYS_TIMERBASE+4))
|
#define READ_TIMER (*(volatile ulong *)(CONFIG_SYS_TIMERBASE+4))
|
||||||
|
|
||||||
/* all function return values in U-Boot ticks i.e. (1/CONFIG_SYS_HZ) sec
|
/* all function return values in U-Boot ticks i.e. (1/CONFIG_SYS_HZ) sec
|
||||||
@ -64,6 +71,7 @@ int timer_init (void)
|
|||||||
{
|
{
|
||||||
/* Load timer with initial value */
|
/* Load timer with initial value */
|
||||||
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 0) = TIMER_LOAD_VAL;
|
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 0) = TIMER_LOAD_VAL;
|
||||||
|
#ifdef CONFIG_ARCH_CINTEGRATOR
|
||||||
/* Set timer to be
|
/* Set timer to be
|
||||||
* enabled 1
|
* enabled 1
|
||||||
* periodic 1
|
* periodic 1
|
||||||
@ -74,12 +82,24 @@ int timer_init (void)
|
|||||||
* wrapping 0
|
* wrapping 0
|
||||||
*/
|
*/
|
||||||
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 8) = 0x000000C2;
|
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 8) = 0x000000C2;
|
||||||
|
#else
|
||||||
|
/* Set timer to be
|
||||||
|
* enabled 1
|
||||||
|
* free-running 0
|
||||||
|
* XX 00
|
||||||
|
* divider 256 10
|
||||||
|
* XX 00
|
||||||
|
*/
|
||||||
|
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 8) = 0x00000088;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* init the timestamp */
|
/* init the timestamp */
|
||||||
total_count = 0ULL;
|
total_count = 0ULL;
|
||||||
reset_timer_masked();
|
reset_timer_masked();
|
||||||
|
|
||||||
div_timer = (unsigned long long)(CONFIG_SYS_HZ_CLOCK / CONFIG_SYS_HZ);
|
div_timer = CONFIG_SYS_HZ_CLOCK;
|
||||||
div_timer /= div_clock;
|
do_div(div_timer, CONFIG_SYS_HZ);
|
||||||
|
do_div(div_timer, div_clock);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -100,7 +120,7 @@ ulong get_timer (ulong base_ticks)
|
|||||||
void set_timer (ulong ticks)
|
void set_timer (ulong ticks)
|
||||||
{
|
{
|
||||||
timestamp = ticks;
|
timestamp = ticks;
|
||||||
total_count = (unsigned long long)ticks * div_timer;
|
total_count = ticks * div_timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delay usec useconds */
|
/* delay usec useconds */
|
||||||
@ -123,7 +143,7 @@ void udelay (unsigned long usec)
|
|||||||
void reset_timer_masked (void)
|
void reset_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* capure current decrementer value */
|
/* capure current decrementer value */
|
||||||
lastdec = (unsigned long long)READ_TIMER;
|
lastdec = READ_TIMER;
|
||||||
/* start "advancing" time stamp from 0 */
|
/* start "advancing" time stamp from 0 */
|
||||||
timestamp = 0L;
|
timestamp = 0L;
|
||||||
}
|
}
|
||||||
@ -133,7 +153,7 @@ void reset_timer_masked (void)
|
|||||||
ulong get_timer_masked (void)
|
ulong get_timer_masked (void)
|
||||||
{
|
{
|
||||||
/* get current count */
|
/* get current count */
|
||||||
unsigned long long now = (unsigned long long)READ_TIMER;
|
unsigned long long now = READ_TIMER;
|
||||||
|
|
||||||
if(now > lastdec) {
|
if(now > lastdec) {
|
||||||
/* Must have wrapped */
|
/* Must have wrapped */
|
||||||
@ -163,7 +183,7 @@ void udelay_masked (unsigned long usec)
|
|||||||
*/
|
*/
|
||||||
unsigned long long get_ticks(void)
|
unsigned long long get_ticks(void)
|
||||||
{
|
{
|
||||||
return (unsigned long long)get_timer(0);
|
return get_timer(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -172,5 +192,9 @@ unsigned long long get_ticks(void)
|
|||||||
*/
|
*/
|
||||||
ulong get_tbclk (void)
|
ulong get_tbclk (void)
|
||||||
{
|
{
|
||||||
return (ulong)(((unsigned long long)CONFIG_SYS_HZ_CLOCK)/div_clock);
|
unsigned long long tmp = CONFIG_SYS_HZ_CLOCK;
|
||||||
|
|
||||||
|
do_div(tmp, div_clock);
|
||||||
|
|
||||||
|
return tmp;
|
||||||
}
|
}
|
@ -1,127 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
# Set the platform defines
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
echo -n "/* Integrator configuration implied " > tmp.fil
|
|
||||||
echo " by Makefile target */" >> tmp.fil
|
|
||||||
echo -n "#define CONFIG_INTEGRATOR" >> tmp.fil
|
|
||||||
echo " /* Integrator board */" >> tmp.fil
|
|
||||||
echo -n "#define CONFIG_ARCH_INTEGRATOR" >> tmp.fil
|
|
||||||
echo " 1 /* Integrator/AP */" >> tmp.fil
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
# Set the core module defines according to Core Module
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unknown core module"
|
|
||||||
|
|
||||||
if [ "$1" = "" ]
|
|
||||||
then
|
|
||||||
echo "$0:: No parameters - using arm_intcm"
|
|
||||||
else
|
|
||||||
case "$1" in
|
|
||||||
ap7_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM7TDMI"
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap966)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM966E-S"
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap922_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM922T"
|
|
||||||
;;
|
|
||||||
|
|
||||||
integratorap_config | \
|
|
||||||
ap_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unspecified core module"
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap720t_config)
|
|
||||||
cpu="arm720t"
|
|
||||||
echo -n "#define CONFIG_CM720T" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM720T */ " >> tmp.fil
|
|
||||||
variant="Core module CM720T"
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap922_XA10_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM922T_XA10"
|
|
||||||
echo -n "#define CONFIG_CM922T_XA10" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM922T_XA10 */" >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap920t_config)
|
|
||||||
cpu="arm920t"
|
|
||||||
variant="Core module CM920T"
|
|
||||||
echo -n "#define CONFIG_CM920T" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM920T */" >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap926ejs_config)
|
|
||||||
cpu="arm926ejs"
|
|
||||||
variant="Core module CM926EJ-S"
|
|
||||||
echo -n "#define CONFIG_CM926EJ_S" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM926EJ-S */ " >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap946es_config)
|
|
||||||
cpu="arm946es"
|
|
||||||
variant="Core module CM946E-S"
|
|
||||||
echo -n "#define CONFIG_CM946E_S" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM946E-S */ " >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "$0:: Unknown core module"
|
|
||||||
variant="unknown core module"
|
|
||||||
cpu="arm_intcm"
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$cpu" in
|
|
||||||
arm_intcm)
|
|
||||||
echo "/* Core module undefined/not ported */" >> tmp.fil
|
|
||||||
echo "#define CONFIG_ARM_INTCM 1" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil
|
|
||||||
echo -n " /* CM may not have " >> tmp.fil
|
|
||||||
echo "multiple SSRAM mapping */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil
|
|
||||||
echo -n " /* CM may not support SPD " >> tmp.fil
|
|
||||||
echo "query */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil
|
|
||||||
echo -n " /* CM may not support " >> tmp.fil
|
|
||||||
echo "remapping */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_INIT " >> tmp.fil
|
|
||||||
echo -n " /* CM may not have " >> tmp.fil
|
|
||||||
echo "initialization reg */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil
|
|
||||||
echo " /* CM may not have TCRAM */" >> tmp.fil
|
|
||||||
echo -n " /* May not be processor " >> tmp.fil
|
|
||||||
echo "without cache support */" >> tmp.fil
|
|
||||||
echo "#define CONFIG_SYS_NO_ICACHE 1" >> tmp.fil
|
|
||||||
echo "#define CONFIG_SYS_NO_DCACHE 1" >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
arm720t)
|
|
||||||
echo -n " /* May not be processor " >> tmp.fil
|
|
||||||
echo "without cache support */" >> tmp.fil
|
|
||||||
echo "#define CONFIG_SYS_NO_ICACHE 1" >> tmp.fil
|
|
||||||
echo "#define CONFIG_SYS_NO_DCACHE 1" >> tmp.fil
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
mkdir -p ${obj}include
|
|
||||||
mkdir -p ${obj}board/armltd/integratorap
|
|
||||||
mv tmp.fil ${obj}include/config.h
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
# Complete the configuration
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
$MKCONFIG -a integratorap arm $cpu integratorap armltd;
|
|
||||||
echo "Variant:: $variant with core $cpu"
|
|
||||||
|
|
@ -1,171 +0,0 @@
|
|||||||
/*
|
|
||||||
* (C) Copyright 2002
|
|
||||||
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
|
|
||||||
* Marius Groeger <mgroeger@sysgo.de>
|
|
||||||
*
|
|
||||||
* (C) Copyright 2002
|
|
||||||
* David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
|
|
||||||
*
|
|
||||||
* (C) Copyright 2003
|
|
||||||
* Texas Instruments, <www.ti.com>
|
|
||||||
* Kshitij Gupta <Kshitij@ti.com>
|
|
||||||
*
|
|
||||||
* (C) Copyright 2004
|
|
||||||
* ARM Ltd.
|
|
||||||
* Philippe Robin, <philippe.robin@arm.com>
|
|
||||||
*
|
|
||||||
* See file CREDITS for list of people who contributed to this
|
|
||||||
* project.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
||||||
* MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <common.h>
|
|
||||||
|
|
||||||
/* The Integrator/AP timer1 is clocked at 24MHz
|
|
||||||
* can be divided by 16 or 256
|
|
||||||
* and is a 16-bit counter
|
|
||||||
*/
|
|
||||||
/* U-Boot expects a 32 bit timer running at CONFIG_SYS_HZ*/
|
|
||||||
static ulong timestamp; /* U-Boot ticks since startup */
|
|
||||||
static ulong total_count = 0; /* Total timer count */
|
|
||||||
static ulong lastdec; /* Timer reading at last call */
|
|
||||||
static ulong div_clock = 256; /* Divisor applied to the timer clock */
|
|
||||||
static ulong div_timer = 1; /* Divisor to convert timer reading
|
|
||||||
* change to U-Boot ticks
|
|
||||||
*/
|
|
||||||
/* CONFIG_SYS_HZ = CONFIG_SYS_HZ_CLOCK/(div_clock * div_timer) */
|
|
||||||
|
|
||||||
#define TIMER_LOAD_VAL 0x0000FFFFL
|
|
||||||
#define READ_TIMER ((*(volatile ulong *)(CONFIG_SYS_TIMERBASE+4)) & 0x0000FFFFL)
|
|
||||||
|
|
||||||
/* all function return values in U-Boot ticks i.e. (1/CONFIG_SYS_HZ) sec
|
|
||||||
* - unless otherwise stated
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* starts a counter
|
|
||||||
* - the Integrator/AP timer issues an interrupt
|
|
||||||
* each time it reaches zero
|
|
||||||
*/
|
|
||||||
int timer_init (void)
|
|
||||||
{
|
|
||||||
/* Load timer with initial value */
|
|
||||||
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 0) = TIMER_LOAD_VAL;
|
|
||||||
/* Set timer to be
|
|
||||||
* enabled 1
|
|
||||||
* free-running 0
|
|
||||||
* XX 00
|
|
||||||
* divider 256 10
|
|
||||||
* XX 00
|
|
||||||
*/
|
|
||||||
*(volatile ulong *)(CONFIG_SYS_TIMERBASE + 8) = 0x00000088;
|
|
||||||
total_count = 0;
|
|
||||||
/* init the timestamp and lastdec value */
|
|
||||||
reset_timer_masked();
|
|
||||||
|
|
||||||
div_timer = CONFIG_SYS_HZ_CLOCK / CONFIG_SYS_HZ;
|
|
||||||
div_timer /= div_clock;
|
|
||||||
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* timer without interrupts
|
|
||||||
*/
|
|
||||||
void reset_timer (void)
|
|
||||||
{
|
|
||||||
reset_timer_masked ();
|
|
||||||
}
|
|
||||||
|
|
||||||
ulong get_timer (ulong base_ticks)
|
|
||||||
{
|
|
||||||
return get_timer_masked () - base_ticks;
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_timer (ulong ticks)
|
|
||||||
{
|
|
||||||
timestamp = ticks;
|
|
||||||
total_count = ticks * div_timer;
|
|
||||||
reset_timer_masked();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* delay x useconds */
|
|
||||||
void udelay (unsigned long usec)
|
|
||||||
{
|
|
||||||
ulong tmo, tmp;
|
|
||||||
|
|
||||||
/* Convert to U-Boot ticks */
|
|
||||||
tmo = usec * CONFIG_SYS_HZ;
|
|
||||||
tmo /= (1000000L);
|
|
||||||
|
|
||||||
tmp = get_timer_masked(); /* get current timestamp */
|
|
||||||
tmo += tmp; /* wake up timestamp */
|
|
||||||
|
|
||||||
while (get_timer_masked () < tmo) { /* loop till event */
|
|
||||||
/*NOP*/;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void reset_timer_masked (void)
|
|
||||||
{
|
|
||||||
/* reset time */
|
|
||||||
lastdec = READ_TIMER; /* capture current decrementer value */
|
|
||||||
timestamp = 0; /* start "advancing" time stamp from 0 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* converts the timer reading to U-Boot ticks */
|
|
||||||
/* the timestamp is the number of ticks since reset */
|
|
||||||
/* This routine does not detect wraps unless called regularly
|
|
||||||
ASSUMES a call at least every 16 seconds to detect every reload */
|
|
||||||
ulong get_timer_masked (void)
|
|
||||||
{
|
|
||||||
ulong now = READ_TIMER; /* current count */
|
|
||||||
|
|
||||||
if (now > lastdec) {
|
|
||||||
/* Must have wrapped */
|
|
||||||
total_count += lastdec + TIMER_LOAD_VAL + 1 - now;
|
|
||||||
} else {
|
|
||||||
total_count += lastdec - now;
|
|
||||||
}
|
|
||||||
lastdec = now;
|
|
||||||
timestamp = total_count/div_timer;
|
|
||||||
|
|
||||||
return timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* waits specified delay value and resets timestamp */
|
|
||||||
void udelay_masked (unsigned long usec)
|
|
||||||
{
|
|
||||||
udelay(usec);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function is derived from PowerPC code (read timebase as long long).
|
|
||||||
* On ARM it just returns the timer value.
|
|
||||||
*/
|
|
||||||
unsigned long long get_ticks(void)
|
|
||||||
{
|
|
||||||
return get_timer(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return the timebase clock frequency
|
|
||||||
* i.e. how often the timer decrements
|
|
||||||
*/
|
|
||||||
ulong get_tbclk (void)
|
|
||||||
{
|
|
||||||
return CONFIG_SYS_HZ_CLOCK/div_clock;
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
#
|
|
||||||
# (C) Copyright 2000-2006
|
|
||||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
||||||
#
|
|
||||||
# See file CREDITS for list of people who contributed to this
|
|
||||||
# project.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
||||||
# MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
|
|
||||||
include $(TOPDIR)/config.mk
|
|
||||||
|
|
||||||
LIB = $(obj)lib$(BOARD).a
|
|
||||||
|
|
||||||
SOBJS := lowlevel_init.o
|
|
||||||
|
|
||||||
COBJS := integratorcp.o
|
|
||||||
COBJS += timer.o
|
|
||||||
|
|
||||||
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
|
||||||
OBJS := $(addprefix $(obj),$(COBJS))
|
|
||||||
SOBJS := $(addprefix $(obj),$(SOBJS))
|
|
||||||
|
|
||||||
$(LIB): $(obj).depend $(OBJS) $(SOBJS)
|
|
||||||
$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(SOBJS) $(OBJS)
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
rm -f $(LIB) core *.bak $(obj).depend
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
# defines $(obj).depend target
|
|
||||||
include $(SRCTREE)/rules.mk
|
|
||||||
|
|
||||||
sinclude $(obj).depend
|
|
||||||
|
|
||||||
#########################################################################
|
|
@ -1,5 +0,0 @@
|
|||||||
#
|
|
||||||
# image should be loaded at 0x01000000
|
|
||||||
#
|
|
||||||
|
|
||||||
TEXT_BASE = 0x01000000
|
|
@ -1,118 +0,0 @@
|
|||||||
/*
|
|
||||||
* (C) Copyright 2002
|
|
||||||
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
|
|
||||||
* Marius Groeger <mgroeger@sysgo.de>
|
|
||||||
*
|
|
||||||
* (C) Copyright 2002
|
|
||||||
* David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
|
|
||||||
*
|
|
||||||
* (C) Copyright 2003
|
|
||||||
* Texas Instruments, <www.ti.com>
|
|
||||||
* Kshitij Gupta <Kshitij@ti.com>
|
|
||||||
*
|
|
||||||
* (C) Copyright 2004
|
|
||||||
* ARM Ltd.
|
|
||||||
* Philippe Robin, <philippe.robin@arm.com>
|
|
||||||
*
|
|
||||||
* See file CREDITS for list of people who contributed to this
|
|
||||||
* project.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
||||||
* MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <common.h>
|
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
|
||||||
|
|
||||||
void peripheral_power_enable (void);
|
|
||||||
|
|
||||||
#if defined(CONFIG_SHOW_BOOT_PROGRESS)
|
|
||||||
void show_boot_progress(int progress)
|
|
||||||
{
|
|
||||||
printf("Boot reached stage %d\n", progress);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Miscellaneous platform dependent initialisations
|
|
||||||
*/
|
|
||||||
|
|
||||||
int board_init (void)
|
|
||||||
{
|
|
||||||
/* arch number of Integrator Board */
|
|
||||||
gd->bd->bi_arch_number = MACH_TYPE_CINTEGRATOR;
|
|
||||||
|
|
||||||
/* adress of boot parameters */
|
|
||||||
gd->bd->bi_boot_params = 0x00000100;
|
|
||||||
|
|
||||||
gd->flags = 0;
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_REMAP
|
|
||||||
extern void cm_remap(void);
|
|
||||||
cm_remap(); /* remaps writeable memory to 0x00000000 */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
icache_enable ();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int misc_init_r (void)
|
|
||||||
{
|
|
||||||
setenv("verify", "n");
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************
|
|
||||||
Routine:
|
|
||||||
Description:
|
|
||||||
******************************/
|
|
||||||
int dram_init (void)
|
|
||||||
{
|
|
||||||
gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
|
|
||||||
gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_SPD_DETECT
|
|
||||||
{
|
|
||||||
extern void dram_query(void);
|
|
||||||
unsigned long cm_reg_sdram;
|
|
||||||
unsigned long sdram_shift;
|
|
||||||
|
|
||||||
dram_query(); /* Assembler accesses to CM registers */
|
|
||||||
/* Queries the SPD values */
|
|
||||||
|
|
||||||
/* Obtain the SDRAM size from the CM SDRAM register */
|
|
||||||
|
|
||||||
cm_reg_sdram = *(volatile ulong *)(CM_BASE + OS_SDRAM);
|
|
||||||
/* Register SDRAM size
|
|
||||||
*
|
|
||||||
* 0xXXXXXXbbb000bb 16 MB
|
|
||||||
* 0xXXXXXXbbb001bb 32 MB
|
|
||||||
* 0xXXXXXXbbb010bb 64 MB
|
|
||||||
* 0xXXXXXXbbb011bb 128 MB
|
|
||||||
* 0xXXXXXXbbb100bb 256 MB
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
sdram_shift = ((cm_reg_sdram & 0x0000001C)/4)%4;
|
|
||||||
gd->bd->bi_dram[0].size = 0x01000000 << sdram_shift;
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif /* CM_SPD_DETECT */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,214 +0,0 @@
|
|||||||
/*
|
|
||||||
* Board specific setup info
|
|
||||||
*
|
|
||||||
* (C) Copyright 2003, ARM Ltd.
|
|
||||||
* Philippe Robin, <philippe.robin@arm.com>
|
|
||||||
*
|
|
||||||
* See file CREDITS for list of people who contributed to this
|
|
||||||
* project.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
||||||
* MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <version.h>
|
|
||||||
|
|
||||||
/* Reset using CM control register */
|
|
||||||
.global reset_cpu
|
|
||||||
reset_cpu:
|
|
||||||
mov r0, #CM_BASE
|
|
||||||
ldr r1,[r0,#OS_CTRL]
|
|
||||||
orr r1,r1,#CMMASK_RESET
|
|
||||||
str r1,[r0,#OS_CTRL]
|
|
||||||
|
|
||||||
reset_failed:
|
|
||||||
b reset_failed
|
|
||||||
|
|
||||||
/* Set up the platform, once the cpu has been initialized */
|
|
||||||
.globl lowlevel_init
|
|
||||||
lowlevel_init:
|
|
||||||
/* If U-Boot has been run after the ARM boot monitor
|
|
||||||
* then all the necessary actions have been done
|
|
||||||
* otherwise we are running from user flash mapped to 0x00000000
|
|
||||||
* --- DO NOT REMAP BEFORE THE CODE HAS BEEN RELOCATED --
|
|
||||||
* Changes to the (possibly soft) reset defaults of the processor
|
|
||||||
* itself should be performed in cpu/arm<>/start.S
|
|
||||||
* This function affects only the core module or board settings
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_INIT
|
|
||||||
/* CM has an initialization register
|
|
||||||
* - bits in it are wired into test-chip pins to force
|
|
||||||
* reset defaults
|
|
||||||
* - may need to change its contents for U-Boot
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* set the desired CM specific value */
|
|
||||||
mov r2,#CMMASK_LOWVEC /* Vectors at 0x00000000 for all */
|
|
||||||
|
|
||||||
#if defined (CONFIG_CM10200E) || defined (CONFIG_CM10220E)
|
|
||||||
orr r2,r2,#CMMASK_INIT_102
|
|
||||||
#else
|
|
||||||
|
|
||||||
#if !defined (CONFIG_CM920T) && !defined (CONFIG_CM920T_ETM) && \
|
|
||||||
!defined (CONFIG_CM940T)
|
|
||||||
/* CMxx6 code */
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_MULTIPLE_SSRAM
|
|
||||||
/* set simple mapping */
|
|
||||||
and r2,r2,#CMMASK_MAP_SIMPLE
|
|
||||||
#endif /* #ifdef CONFIG_CM_MULTIPLE_SSRAM */
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_TCRAM
|
|
||||||
/* disable TCRAM */
|
|
||||||
and r2,r2,#CMMASK_TCRAM_DISABLE
|
|
||||||
#endif /* #ifdef CONFIG_CM_TCRAM */
|
|
||||||
|
|
||||||
#if defined (CONFIG_CM926EJ_S) || defined (CONFIG_CM1026EJ_S) || \
|
|
||||||
defined (CONFIG_CM1136JF_S)
|
|
||||||
|
|
||||||
and r2,r2,#CMMASK_LE
|
|
||||||
|
|
||||||
#endif /* cpu with little endian initialization */
|
|
||||||
|
|
||||||
orr r2,r2,#CMMASK_CMxx6_COMMON
|
|
||||||
|
|
||||||
#endif /* CMxx6 code */
|
|
||||||
|
|
||||||
#endif /* ARM102xxE value */
|
|
||||||
|
|
||||||
/* read CM_INIT */
|
|
||||||
mov r0, #CM_BASE
|
|
||||||
ldr r1, [r0, #OS_INIT]
|
|
||||||
/* check against desired bit setting */
|
|
||||||
and r3,r1,r2
|
|
||||||
cmp r3,r2
|
|
||||||
beq init_reg_OK
|
|
||||||
|
|
||||||
/* lock for change */
|
|
||||||
mov r3, #CMVAL_LOCK1
|
|
||||||
and r3, r3, #CMVAL_LOCK2
|
|
||||||
str r3, [r0, #OS_LOCK]
|
|
||||||
/* set desired value */
|
|
||||||
orr r1,r1,r2
|
|
||||||
/* write & relock CM_INIT */
|
|
||||||
str r1, [r0, #OS_INIT]
|
|
||||||
mov r1, #CMVAL_UNLOCK
|
|
||||||
str r1, [r0, #OS_LOCK]
|
|
||||||
|
|
||||||
/* soft reset so new values used */
|
|
||||||
b reset_cpu
|
|
||||||
|
|
||||||
init_reg_OK:
|
|
||||||
|
|
||||||
#endif /* CONFIG_CM_INIT */
|
|
||||||
|
|
||||||
mov pc, lr
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_SPD_DETECT
|
|
||||||
/* Fast memory is available for the DRAM data
|
|
||||||
* - ensure it has been transferred, then summarize the data
|
|
||||||
* into a CM register
|
|
||||||
*/
|
|
||||||
.globl dram_query
|
|
||||||
dram_query:
|
|
||||||
stmfd r13!,{r4-r6,lr}
|
|
||||||
/* set up SDRAM info */
|
|
||||||
/* - based on example code from the CM User Guide */
|
|
||||||
mov r0, #CM_BASE
|
|
||||||
|
|
||||||
readspdbit:
|
|
||||||
ldr r1, [r0, #OS_SDRAM] /* read the SDRAM register */
|
|
||||||
and r1, r1, #0x20 /* mask SPD bit (5) */
|
|
||||||
cmp r1, #0x20 /* test if set */
|
|
||||||
bne readspdbit
|
|
||||||
|
|
||||||
setupsdram:
|
|
||||||
add r0, r0, #OS_SPD /* address the copy of the SDP data */
|
|
||||||
ldrb r1, [r0, #3] /* number of row address lines */
|
|
||||||
ldrb r2, [r0, #4] /* number of column address lines */
|
|
||||||
ldrb r3, [r0, #5] /* number of banks */
|
|
||||||
ldrb r4, [r0, #31] /* module bank density */
|
|
||||||
mul r5, r4, r3 /* size of SDRAM (MB divided by 4) */
|
|
||||||
mov r5, r5, ASL#2 /* size in MB */
|
|
||||||
mov r0, #CM_BASE /* reload for later code */
|
|
||||||
cmp r5, #0x10 /* is it 16MB? */
|
|
||||||
bne not16
|
|
||||||
mov r6, #0x2 /* store size and CAS latency of 2 */
|
|
||||||
b writesize
|
|
||||||
|
|
||||||
not16:
|
|
||||||
cmp r5, #0x20 /* is it 32MB? */
|
|
||||||
bne not32
|
|
||||||
mov r6, #0x6
|
|
||||||
b writesize
|
|
||||||
|
|
||||||
not32:
|
|
||||||
cmp r5, #0x40 /* is it 64MB? */
|
|
||||||
bne not64
|
|
||||||
mov r6, #0xa
|
|
||||||
b writesize
|
|
||||||
|
|
||||||
not64:
|
|
||||||
cmp r5, #0x80 /* is it 128MB? */
|
|
||||||
bne not128
|
|
||||||
mov r6, #0xe
|
|
||||||
b writesize
|
|
||||||
|
|
||||||
not128:
|
|
||||||
/* if it is none of these sizes then it is either 256MB, or
|
|
||||||
* there is no SDRAM fitted so default to 256MB
|
|
||||||
*/
|
|
||||||
mov r6, #0x12
|
|
||||||
|
|
||||||
writesize:
|
|
||||||
mov r1, r1, ASL#8 /* row addr lines from SDRAM reg */
|
|
||||||
orr r2, r1, r2, ASL#12 /* OR in column address lines */
|
|
||||||
orr r3, r2, r3, ASL#16 /* OR in number of banks */
|
|
||||||
orr r6, r6, r3 /* OR in size and CAS latency */
|
|
||||||
str r6, [r0, #OS_SDRAM] /* store SDRAM parameters */
|
|
||||||
|
|
||||||
#endif /* #ifdef CONFIG_CM_SPD_DETECT */
|
|
||||||
|
|
||||||
ldmfd r13!,{r4-r6,pc} /* back to caller */
|
|
||||||
|
|
||||||
#ifdef CONFIG_CM_REMAP
|
|
||||||
/* CM remap bit is operational
|
|
||||||
* - use it to map writeable memory at 0x00000000, in place of flash
|
|
||||||
*/
|
|
||||||
.globl cm_remap
|
|
||||||
cm_remap:
|
|
||||||
stmfd r13!,{r4-r10,lr}
|
|
||||||
|
|
||||||
mov r0, #CM_BASE
|
|
||||||
ldr r1, [r0, #OS_CTRL]
|
|
||||||
orr r1, r1, #CMMASK_REMAP /* set remap and led bits */
|
|
||||||
str r1, [r0, #OS_CTRL]
|
|
||||||
|
|
||||||
/* Now 0x00000000 is writeable, replace the vectors */
|
|
||||||
ldr r0, =_start /* r0 <- start of vectors */
|
|
||||||
ldr r2, =_armboot_start /* r2 <- past vectors */
|
|
||||||
sub r1,r1,r1 /* destination 0x00000000 */
|
|
||||||
|
|
||||||
copy_vec:
|
|
||||||
ldmia r0!, {r3-r10} /* copy from source address [r0] */
|
|
||||||
stmia r1!, {r3-r10} /* copy to target address [r1] */
|
|
||||||
cmp r0, r2 /* until source end address [r2] */
|
|
||||||
ble copy_vec
|
|
||||||
|
|
||||||
ldmfd r13!,{r4-r10,pc} /* back to caller */
|
|
||||||
|
|
||||||
#endif /* #ifdef CONFIG_CM_REMAP */
|
|
@ -1,110 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
# Set the platform defines
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
echo -n "/* Integrator configuration implied " > tmp.fil
|
|
||||||
echo " by Makefile target */" >> tmp.fil
|
|
||||||
echo -n "#define CONFIG_INTEGRATOR" >> tmp.fil
|
|
||||||
echo " /* Integrator board */" >> tmp.fil
|
|
||||||
echo -n "#define CONFIG_ARCH_CINTEGRATOR" >> tmp.fil
|
|
||||||
echo " 1 /* Integrator/CP */" >> tmp.fil
|
|
||||||
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unknown core module"
|
|
||||||
|
|
||||||
if [ "$1" = "" ]
|
|
||||||
then
|
|
||||||
echo "$0:: No parameters - using arm_intcm"
|
|
||||||
else
|
|
||||||
case "$1" in
|
|
||||||
ap966)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM966E-S"
|
|
||||||
;;
|
|
||||||
|
|
||||||
ap922_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM922T"
|
|
||||||
;;
|
|
||||||
|
|
||||||
integratorcp_config | \
|
|
||||||
cp_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unspecified core module"
|
|
||||||
;;
|
|
||||||
|
|
||||||
cp922_XA10_config)
|
|
||||||
cpu="arm_intcm"
|
|
||||||
variant="unported core module CM922T_XA10"
|
|
||||||
echo -n "#define CONFIG_CM922T_XA10" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM922T_XA10 */" >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
cp920t_config)
|
|
||||||
cpu="arm920t"
|
|
||||||
variant="Core module CM920T"
|
|
||||||
echo -n "#define CONFIG_CM920T" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM920T */" >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
cp926ejs_config)
|
|
||||||
cpu="arm926ejs"
|
|
||||||
variant="Core module CM926EJ-S"
|
|
||||||
echo -n "#define CONFIG_CM926EJ_S" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM926EJ-S */ " >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
|
|
||||||
cp946es_config)
|
|
||||||
cpu="arm946es"
|
|
||||||
variant="Core module CM946E-S"
|
|
||||||
echo -n "#define CONFIG_CM946E_S" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM946E-S */ " >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
cp1136_config)
|
|
||||||
cpu="arm1136"
|
|
||||||
variant="Core module CM1136EJF-S"
|
|
||||||
echo -n "#define CONFIG_CM1136EJF_S" >> tmp.fil
|
|
||||||
echo " 1 /* CPU core is ARM1136JF-S */ " >> tmp.fil
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "$0:: Unknown core module"
|
|
||||||
variant="unknown core module"
|
|
||||||
cpu="arm_intcm"
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$cpu" = "arm_intcm" ]
|
|
||||||
then
|
|
||||||
echo "/* Core module undefined/not ported */" >> tmp.fil
|
|
||||||
echo "#define CONFIG_ARM_INTCM 1" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_MULTIPLE_SSRAM" >> tmp.fil
|
|
||||||
echo -n " /* CM may not have " >> tmp.fil
|
|
||||||
echo "multiple SSRAM mapping */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_SPD_DETECT " >> tmp.fil
|
|
||||||
echo -n " /* CM may not support SPD " >> tmp.fil
|
|
||||||
echo "query */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_REMAP " >> tmp.fil
|
|
||||||
echo -n " /* CM may not support " >> tmp.fil
|
|
||||||
echo "remapping */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_INIT " >> tmp.fil
|
|
||||||
echo -n " /* CM may not have " >> tmp.fil
|
|
||||||
echo "initialization reg */" >> tmp.fil
|
|
||||||
echo -n "#undef CONFIG_CM_TCRAM " >> tmp.fil
|
|
||||||
echo " /* CM may not have TCRAM */" >> tmp.fil
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p ${obj}include
|
|
||||||
mkdir -p ${obj}board/armltd/integratorcp
|
|
||||||
mv tmp.fil ${obj}include/config.h
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
# Complete the configuration
|
|
||||||
# ---------------------------------------------------------
|
|
||||||
$MKCONFIG -a integratorcp arm $cpu integratorcp armltd;
|
|
||||||
echo "Variant:: $variant with core $cpu"
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user