Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Librem5
uboot-imx
Commits
cb32ed1f
Commit
cb32ed1f
authored
Aug 04, 2009
by
Wolfgang Denk
Browse files
Merge branch 'next' of
git://git.denx.de/u-boot-coldfire
parents
06bffc6e
052c0891
Changes
33
Hide whitespace changes
Inline
Side-by-side
MAKEALL
View file @
cb32ed1f
...
...
@@ -777,6 +777,7 @@ LIST_coldfire=" \
EB+MCF-EV123
\
EB+MCF-EV123_internal
\
idmr
\
M5208EVBE
\
M52277EVB
\
M5235EVB
\
M5249EVB
\
...
...
Makefile
View file @
cb32ed1f
...
...
@@ -1993,6 +1993,9 @@ ZPC1900_config: unconfig
## Coldfire
#########################################################################
M5208EVBE_config
:
unconfig
@
$(MKCONFIG)
$
(
@:_config
=)
m68k mcf52x2 m5208evbe freescale
M52277EVB_config
\
M52277EVB_spansion_config
\
M52277EVB_stmicro_config
:
unconfig
...
...
@@ -2097,18 +2100,15 @@ M5373EVB_config : unconfig
@
$(MKCONFIG)
-a
M5373EVB m68k mcf532x m5373evb freescale
M54451EVB_config
\
M54451EVB_spansion_config
\
M54451EVB_stmicro_config
:
unconfig
@
case
"
$@
"
in
\
M54451EVB_config
)
FLASH
=
SPANSION
;;
\
M54451EVB_spansion_config
)
FLASH
=
SPANSION
;;
\
M54451EVB_config
)
FLASH
=
NOR
;;
\
M54451EVB_stmicro_config
)
FLASH
=
STMICRO
;;
\
esac
;
\
if
[
"
$
${FLASH}
"
=
"SPANSION"
]
;
then
\
echo
"#define CONFIG_SYS_SPANSION_BOOT"
>>
$(obj)
include/config.h
;
\
if
[
"
$
${FLASH}
"
=
"NOR"
]
;
then
\
echo
"TEXT_BASE = 0x00000000"
>
$(obj)
board/freescale/m54451evb/config.tmp
;
\
cp
$(obj)
board/freescale/m54451evb/u-boot.spa
$(obj)
board/freescale/m54451evb/u-boot.lds
;
\
$(XECHO)
"... with
SPANSION
boot..."
;
\
$(XECHO)
"... with
NOR
boot..."
;
\
fi
;
\
if
[
"
$
${FLASH}
"
=
"STMICRO"
]
;
then
\
echo
"#define CONFIG_CF_SBF"
>>
$(obj)
include/config.h
;
\
...
...
board/freescale/m5208evbe/Makefile
0 → 100644
View file @
cb32ed1f
#
# (C) Copyright 2000-2003
# 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
COBJS
=
$(BOARD)
.o
SRCS
:=
$(SOBJS:.o=.S)
$(COBJS:.o=.c)
OBJS
:=
$(
addprefix
$(obj)
,
$(COBJS)
)
SOBJS
:=
$(
addprefix
$(obj)
,
$(SOBJS)
)
$(LIB)
:
$(obj).depend $(OBJS)
$(AR)
$(ARFLAGS)
$@
$(OBJS)
#########################################################################
# defines $(obj).depend target
include
$(SRCTREE)/rules.mk
sinclude
$(obj).depend
#########################################################################
board/freescale/m5208evbe/config.mk
0 → 100644
View file @
cb32ed1f
#
# (C) Copyright 2000-2003
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.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
#
TEXT_BASE
=
0
board/freescale/m5208evbe/m5208evbe.c
0 → 100644
View file @
cb32ed1f
/*
* (C) Copyright 2000-2003
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
* TsiChung Liew (Tsi-Chung.Liew@freescale.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
<common.h>
#include
<asm/immap.h>
DECLARE_GLOBAL_DATA_PTR
;
int
checkboard
(
void
)
{
puts
(
"Board: "
);
puts
(
"Freescale M5208EVBe
\n
"
);
return
0
;
};
phys_size_t
initdram
(
int
board_type
)
{
volatile
sdram_t
*
sdram
=
(
volatile
sdram_t
*
)(
MMAP_SDRAM
);
u32
dramsize
,
i
;
dramsize
=
CONFIG_SYS_SDRAM_SIZE
*
0x100000
;
for
(
i
=
0x13
;
i
<
0x20
;
i
++
)
{
if
(
dramsize
==
(
1
<<
i
))
break
;
}
i
--
;
sdram
->
cs0
=
(
CONFIG_SYS_SDRAM_BASE
|
i
);
#ifdef CONFIG_SYS_SDRAM_BASE1
sdram
->
cs1
=
(
CONFIG_SYS_SDRAM_BASE
|
i
);
#endif
sdram
->
cfg1
=
CONFIG_SYS_SDRAM_CFG1
;
sdram
->
cfg2
=
CONFIG_SYS_SDRAM_CFG2
;
udelay
(
500
);
/* Issue PALL */
sdram
->
ctrl
=
(
CONFIG_SYS_SDRAM_CTRL
|
2
);
asm
(
"nop"
);
/* Perform two refresh cycles */
sdram
->
ctrl
=
CONFIG_SYS_SDRAM_CTRL
|
4
;
sdram
->
ctrl
=
CONFIG_SYS_SDRAM_CTRL
|
4
;
asm
(
"nop"
);
/* Issue LEMR */
sdram
->
mode
=
CONFIG_SYS_SDRAM_MODE
;
asm
(
"nop"
);
sdram
->
mode
=
CONFIG_SYS_SDRAM_EMOD
;
asm
(
"nop"
);
sdram
->
ctrl
=
(
CONFIG_SYS_SDRAM_CTRL
|
2
);
asm
(
"nop"
);
sdram
->
ctrl
=
(
CONFIG_SYS_SDRAM_CTRL
&
~
0x80000000
)
|
0x10000F00
;
asm
(
"nop"
);
udelay
(
100
);
return
dramsize
;
};
int
testdram
(
void
)
{
/* TODO: XXX XXX XXX */
printf
(
"DRAM test not implemented!
\n
"
);
return
(
0
);
}
board/freescale/m5208evbe/u-boot.lds
0 → 100644
View file @
cb32ed1f
/*
* (C) Copyright 2000
* 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
*/
OUTPUT_ARCH(m68k)
/* Do we need any of these for elf?
__DYNAMIC = 0; */
SECTIONS
{
/* Read-only sections, merged into text segment: */
. = + SIZEOF_HEADERS;
.interp : { *(.interp) }
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
.rel.text : { *(.rel.text) }
.rela.text : { *(.rela.text) }
.rel.data : { *(.rel.data) }
.rela.data : { *(.rela.data) }
.rel.rodata : { *(.rel.rodata) }
.rela.rodata : { *(.rela.rodata) }
.rel.got : { *(.rel.got) }
.rela.got : { *(.rela.got) }
.rel.ctors : { *(.rel.ctors) }
.rela.ctors : { *(.rela.ctors) }
.rel.dtors : { *(.rel.dtors) }
.rela.dtors : { *(.rela.dtors) }
.rel.bss : { *(.rel.bss) }
.rela.bss : { *(.rela.bss) }
.rel.plt : { *(.rel.plt) }
.rela.plt : { *(.rela.plt) }
.init : { *(.init) }
.plt : { *(.plt) }
.text :
{
/* WARNING - the following is hand-optimized to fit within */
/* the sector layout of our flash chips! XXX FIXME XXX */
cpu/mcf52x2/start.o (.text)
cpu/mcf52x2/libmcf52x2.a (.text)
lib_m68k/libm68k.a (.text)
common/dlmalloc.o (.text)
. = DEFINED(env_offset) ? env_offset : .;
common/env_embedded.o (.text)
*(.text)
*(.fixup)
*(.got1)
}
_etext = .;
PROVIDE (etext = .);
.rodata :
{
*(.rodata)
*(.rodata1)
}
.fini : { *(.fini) } =0
.ctors : { *(.ctors) }
.dtors : { *(.dtors) }
/* Read-write section, merged into data segment: */
. = (. + 0x00FF) & 0xFFFFFF00;
_erotext = .;
PROVIDE (erotext = .);
.reloc :
{
__got_start = .;
*(.got)
__got_end = .;
_GOT2_TABLE_ = .;
*(.got2)
_FIXUP_TABLE_ = .;
*(.fixup)
}
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
__fixup_entries = (. - _FIXUP_TABLE_)>>2;
.data :
{
*(.data)
*(.data1)
*(.sdata)
*(.sdata2)
*(.dynamic)
CONSTRUCTORS
}
_edata = .;
PROVIDE (edata = .);
. = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
. = .;
__start___ex_table = .;
__ex_table : { *(__ex_table) }
__stop___ex_table = .;
. = ALIGN(256);
__init_begin = .;
.text.init : { *(.text.init) }
.data.init : { *(.data.init) }
. = ALIGN(256);
__init_end = .;
__bss_start = .;
.bss (NOLOAD) :
{
_sbss = .;
*(.sbss) *(.scommon)
*(.dynbss)
*(.bss)
*(COMMON)
. = ALIGN(4);
_ebss = .;
}
_end = . ;
PROVIDE (end = .);
}
board/freescale/m54451evb/u-boot.spa
View file @
cb32ed1f
...
...
@@ -56,10 +56,13 @@ SECTIONS
/* the sector layout of our flash chips! XXX FIXME XXX */
cpu/mcf5445x/start.o (.text)
lib_m68k/traps.o (.text)
lib_m68k/interrupts.o (.text)
cpu/mcf5445x/libmcf5445x.a (.text)
lib_m68k/libm68k.a (.text)
common/cmd_flash.o (.text)
common/dlmalloc.o (.text)
lib_generic/zlib.o (.text)
common/main.o (.text)
common/image.o (.text)
lib_generic/libgeneric.a (.text)
. = DEFINED(env_offset) ? env_offset : .;
common/env_embedded.o (.text)
...
...
common/cmd_sf.c
View file @
cb32ed1f
...
...
@@ -48,7 +48,7 @@ static int do_spi_flash_probe(int argc, char *argv[])
goto
usage
;
}
if
(
argc
>=
4
)
{
mode
=
simple_strtoul
(
argv
[
3
],
&
endp
,
0
);
mode
=
simple_strtoul
(
argv
[
3
],
&
endp
,
16
);
if
(
*
argv
[
3
]
==
0
||
*
endp
!=
0
)
goto
usage
;
}
...
...
cpu/mcf5227x/Makefile
View file @
cb32ed1f
...
...
@@ -28,7 +28,7 @@ include $(TOPDIR)/config.mk
LIB
=
lib
$(CPU)
.a
START
=
start.o
COBJS
=
cpu.o speed.o cpu_init.o interrupts.o
dspi.o
COBJS
=
cpu.o speed.o cpu_init.o interrupts.o
SRCS
:=
$(START:.o=.S)
$(SOBJS:.o=.S)
$(COBJS:.o=.c)
OBJS
:=
$(
addprefix
$(obj)
,
$(SOBJS)
$(COBJS)
)
...
...
cpu/mcf5227x/cpu_init.c
View file @
cb32ed1f
...
...
@@ -152,3 +152,56 @@ void uart_port_conf(void)
break
;
}
}
#ifdef CONFIG_CF_DSPI
void
cfspi_port_conf
(
void
)
{
volatile
gpio_t
*
gpio
=
(
gpio_t
*
)
MMAP_GPIO
;
gpio
->
par_dspi
=
GPIO_PAR_DSPI_SIN_SIN
|
GPIO_PAR_DSPI_SOUT_SOUT
|
GPIO_PAR_DSPI_SCK_SCK
;
}
int
cfspi_claim_bus
(
uint
bus
,
uint
cs
)
{
volatile
dspi_t
*
dspi
=
(
dspi_t
*
)
MMAP_DSPI
;
volatile
gpio_t
*
gpio
=
(
gpio_t
*
)
MMAP_GPIO
;
if
((
dspi
->
sr
&
DSPI_SR_TXRXS
)
!=
DSPI_SR_TXRXS
)
return
-
1
;
/* Clear FIFO and resume transfer */
dspi
->
mcr
&=
~
(
DSPI_MCR_CTXF
|
DSPI_MCR_CRXF
);
switch
(
cs
)
{
case
0
:
gpio
->
par_dspi
&=
~
GPIO_PAR_DSPI_PCS0_MASK
;
gpio
->
par_dspi
|=
GPIO_PAR_DSPI_PCS0_PCS0
;
break
;
case
2
:
gpio
->
par_timer
&=
GPIO_PAR_TIMER_T2IN_MASK
;
gpio
->
par_timer
|=
GPIO_PAR_TIMER_T2IN_DSPIPCS2
;
break
;
}
return
0
;
}
void
cfspi_release_bus
(
uint
bus
,
uint
cs
)
{
volatile
dspi_t
*
dspi
=
(
dspi_t
*
)
MMAP_DSPI
;
volatile
gpio_t
*
gpio
=
(
gpio_t
*
)
MMAP_GPIO
;
dspi
->
mcr
&=
~
(
DSPI_MCR_CTXF
|
DSPI_MCR_CRXF
);
/* Clear FIFO */
switch
(
cs
)
{
case
0
:
gpio
->
par_dspi
&=
~
GPIO_PAR_DSPI_PCS0_PCS0
;
break
;
case
2
:
gpio
->
par_timer
&=
GPIO_PAR_TIMER_T2IN_MASK
;
break
;
}
}
#endif
cpu/mcf5227x/dspi.c
deleted
100644 → 0
View file @
06bffc6e
/*
*
* (C) Copyright 2000-2003
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
* TsiChung Liew (Tsi-Chung.Liew@freescale.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>
#include
<spi.h>
#include
<malloc.h>
#if defined(CONFIG_CF_DSPI)
#include
<asm/immap.h>
void
dspi_init
(
void
)
{
volatile
gpio_t
*
gpio
=
(
gpio_t
*
)
MMAP_GPIO
;
volatile
dspi_t
*
dspi
=
(
dspi_t
*
)
MMAP_DSPI
;
gpio
->
par_dspi
=
GPIO_PAR_DSPI_SIN_SIN
|
GPIO_PAR_DSPI_SOUT_SOUT
|
GPIO_PAR_DSPI_SCK_SCK
;
dspi
->
dmcr
=
DSPI_DMCR_MSTR
|
DSPI_DMCR_CSIS7
|
DSPI_DMCR_CSIS6
|
DSPI_DMCR_CSIS5
|
DSPI_DMCR_CSIS4
|
DSPI_DMCR_CSIS3
|
DSPI_DMCR_CSIS2
|
DSPI_DMCR_CSIS1
|
DSPI_DMCR_CSIS0
|
DSPI_DMCR_CRXF
|
DSPI_DMCR_CTXF
;
#ifdef CONFIG_SYS_DSPI_DCTAR0
dspi
->
dctar0
=
CONFIG_SYS_DSPI_DCTAR0
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR1
dspi
->
dctar1
=
CONFIG_SYS_DSPI_DCTAR1
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR2
dspi
->
dctar2
=
CONFIG_SYS_DSPI_DCTAR2
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR3
dspi
->
dctar3
=
CONFIG_SYS_DSPI_DCTAR3
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR4
dspi
->
dctar4
=
CONFIG_SYS_DSPI_DCTAR4
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR5
dspi
->
dctar5
=
CONFIG_SYS_DSPI_DCTAR5
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR6
dspi
->
dctar6
=
CONFIG_SYS_DSPI_DCTAR6
;
#endif
#ifdef CONFIG_SYS_DSPI_DCTAR7
dspi
->
dctar7
=
CONFIG_SYS_DSPI_DCTAR7
;
#endif
}
void
dspi_tx
(
int
chipsel
,
u8
attrib
,
u16
data
)
{
volatile
dspi_t
*
dspi
=
(
dspi_t
*
)
MMAP_DSPI
;
while
((
dspi
->
dsr
&
0x0000F000
)
>=
4
)
;
dspi
->
dtfr
=
(
attrib
<<
24
)
|
((
1
<<
chipsel
)
<<
16
)
|
data
;
}
u16
dspi_rx
(
void
)
{
volatile
dspi_t
*
dspi
=
(
dspi_t
*
)
MMAP_DSPI
;
while
((
dspi
->
dsr
&
0x000000F0
)
==
0
)
;
return
(
dspi
->
drfr
&
0xFFFF
);
}
#if defined(CONFIG_CMD_SPI)
void
spi_init_f
(
void
)
{
}
void
spi_init_r
(
void
)
{
}
void
spi_init
(
void
)
{
dspi_init
();
}
struct
spi_slave
*
spi_setup_slave
(
unsigned
int
bus
,
unsigned
int
cs
,
unsigned
int
max_hz
,
unsigned
int
mode
)
{
volatile
gpio_t
*
gpio
=
(
gpio_t
*
)
MMAP_GPIO
;
struct
spi_slave
*
slave
;
slave
=
malloc
(
sizeof
(
struct
spi_slave
));
if
(
!
slave
)
return
NULL
;
switch
(
cs
)
{
case
0
:
gpio
->
par_dspi
&=
~
GPIO_PAR_DSPI_PCS0_PCS0
;
gpio
->
par_dspi
|=
GPIO_PAR_DSPI_PCS0_PCS0
;
break
;
case
2
:
gpio
->
par_timer
&=
GPIO_PAR_TIMER_T2IN_MASK
;
gpio
->
par_timer
|=
GPIO_PAR_TIMER_T2IN_DSPIPCS2
;
break
;
}
slave
->
bus
=
bus
;
slave
->
cs
=
cs
;
return
slave
;
}
void
spi_free_slave
(
struct
spi_slave
*
slave
)
{
volatile
gpio_t
*
gpio
=
(
gpio_t
*
)
MMAP_GPIO
;
switch
(
slave
->
cs
)
{
case
0
:
gpio
->
par_dspi
&=
~
GPIO_PAR_DSPI_PCS0_PCS0
;
break
;
case
2
:
gpio
->
par_timer
&=
GPIO_PAR_TIMER_T2IN_MASK
;
break
;
}
free
(
slave
);
}
int
spi_claim_bus
(
struct
spi_slave
*
slave
)
{
return
0
;
}
void
spi_release_bus
(
struct
spi_slave
*
slave
)
{
}
int
spi_xfer
(
struct
spi_slave
*
slave
,
unsigned
int
bitlen
,
const
void
*
dout
,
void
*
din
,
unsigned
long
flags
)
{
static
int
bWrite
=
0
;
u8
*
spi_rd
,
*
spi_wr
;
int
len
=
bitlen
>>
3
;
spi_rd
=
(
u8
*
)
din
;
spi_wr
=
(
u8
*
)
dout
;
/* command handling */
if
(((
len
==
4
)
||
(
len
==
1
)
||
(
len
==
5
))
&&
(
dout
!=
NULL
))
{
switch
(
*
spi_wr
)
{
case
0x02
:
/* Page Prog */
bWrite
=
1
;
dspi_tx
(
slave
->
cs
,
0x80
,
spi_wr
[
0
]);
dspi_rx
();
dspi_tx
(
slave
->
cs
,
0x80
,
spi_wr
[
1
]);
dspi_rx
();
dspi_tx
(
slave
->
cs
,
0x80
,
spi_wr
[
2
]);
dspi_rx
();
dspi_tx
(
slave
->
cs
,
0x80
,
spi_wr
[
3
]);
dspi_rx
();
return
0
;
case
0x05
:
/* Read Status */