Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
U
uboot-imx
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
8
Issues
8
List
Boards
Labels
Milestones
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Librem5
uboot-imx
Commits
f85cd469
Commit
f85cd469
authored
Dec 30, 2008
by
Wolfgang Denk
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.denx.de/u-boot-mpc85xx
parents
22bab87d
d9011f9b
Changes
59
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
59 changed files
with
3668 additions
and
83 deletions
+3668
-83
MAINTAINERS
MAINTAINERS
+4
-0
MAKEALL
MAKEALL
+2
-0
Makefile
Makefile
+8
-0
README
README
+9
-0
board/freescale/mpc8540ads/mpc8540ads.c
board/freescale/mpc8540ads/mpc8540ads.c
+1
-1
board/freescale/mpc8541cds/mpc8541cds.c
board/freescale/mpc8541cds/mpc8541cds.c
+1
-1
board/freescale/mpc8548cds/mpc8548cds.c
board/freescale/mpc8548cds/mpc8548cds.c
+1
-1
board/freescale/mpc8555cds/mpc8555cds.c
board/freescale/mpc8555cds/mpc8555cds.c
+1
-1
board/freescale/mpc8560ads/mpc8560ads.c
board/freescale/mpc8560ads/mpc8560ads.c
+1
-1
board/freescale/mpc8568mds/mpc8568mds.c
board/freescale/mpc8568mds/mpc8568mds.c
+1
-1
board/mpc8540eval/mpc8540eval.c
board/mpc8540eval/mpc8540eval.c
+1
-1
board/pm854/pm854.c
board/pm854/pm854.c
+1
-1
board/pm856/pm856.c
board/pm856/pm856.c
+1
-1
board/sbc8548/sbc8548.c
board/sbc8548/sbc8548.c
+1
-1
board/socrates/socrates.c
board/socrates/socrates.c
+1
-1
board/tqc/tqm85xx/tqm85xx.c
board/tqc/tqm85xx/tqm85xx.c
+1
-1
board/xes/common/Makefile
board/xes/common/Makefile
+57
-0
board/xes/common/actl_nand.c
board/xes/common/actl_nand.c
+65
-0
board/xes/common/fsl_8572_clk.c
board/xes/common/fsl_8572_clk.c
+51
-0
board/xes/common/fsl_85xx_ddr.c
board/xes/common/fsl_85xx_ddr.c
+93
-0
board/xes/common/fsl_85xx_pci.c
board/xes/common/fsl_85xx_pci.c
+379
-0
board/xes/xpedite5200/Makefile
board/xes/xpedite5200/Makefile
+55
-0
board/xes/xpedite5200/config.mk
board/xes/xpedite5200/config.mk
+34
-0
board/xes/xpedite5200/ddr.c
board/xes/xpedite5200/ddr.c
+91
-0
board/xes/xpedite5200/law.c
board/xes/xpedite5200/law.c
+51
-0
board/xes/xpedite5200/tlb.c
board/xes/xpedite5200/tlb.c
+85
-0
board/xes/xpedite5200/u-boot.lds
board/xes/xpedite5200/u-boot.lds
+145
-0
board/xes/xpedite5200/xpedite5200.c
board/xes/xpedite5200/xpedite5200.c
+125
-0
board/xes/xpedite5370/Makefile
board/xes/xpedite5370/Makefile
+45
-0
board/xes/xpedite5370/config.mk
board/xes/xpedite5370/config.mk
+35
-0
board/xes/xpedite5370/ddr.c
board/xes/xpedite5370/ddr.c
+270
-0
board/xes/xpedite5370/law.c
board/xes/xpedite5370/law.c
+54
-0
board/xes/xpedite5370/tlb.c
board/xes/xpedite5370/tlb.c
+94
-0
board/xes/xpedite5370/u-boot.lds
board/xes/xpedite5370/u-boot.lds
+145
-0
board/xes/xpedite5370/xpedite5370.c
board/xes/xpedite5370/xpedite5370.c
+128
-0
cpu/mpc85xx/cpu.c
cpu/mpc85xx/cpu.c
+5
-26
cpu/mpc85xx/fdt.c
cpu/mpc85xx/fdt.c
+7
-1
cpu/mpc85xx/release.S
cpu/mpc85xx/release.S
+1
-0
cpu/mpc85xx/speed.c
cpu/mpc85xx/speed.c
+27
-0
cpu/mpc85xx/start.S
cpu/mpc85xx/start.S
+8
-8
cpu/mpc85xx/tlb.c
cpu/mpc85xx/tlb.c
+34
-0
cpu/mpc86xx/cpu.c
cpu/mpc86xx/cpu.c
+4
-17
cpu/mpc86xx/fdt.c
cpu/mpc86xx/fdt.c
+9
-0
cpu/mpc86xx/speed.c
cpu/mpc86xx/speed.c
+19
-0
drivers/gpio/Makefile
drivers/gpio/Makefile
+47
-0
drivers/gpio/pca953x.c
drivers/gpio/pca953x.c
+227
-0
drivers/mtd/nand/fsl_elbc_nand.c
drivers/mtd/nand/fsl_elbc_nand.c
+4
-2
drivers/pci/fsl_pci_init.c
drivers/pci/fsl_pci_init.c
+29
-0
include/asm-ppc/fsl_lbc.h
include/asm-ppc/fsl_lbc.h
+4
-1
include/asm-ppc/global_data.h
include/asm-ppc/global_data.h
+3
-0
include/asm-ppc/io.h
include/asm-ppc/io.h
+12
-0
include/asm-ppc/mmu.h
include/asm-ppc/mmu.h
+3
-0
include/configs/XPEDITE5200.h
include/configs/XPEDITE5200.h
+546
-0
include/configs/XPEDITE5370.h
include/configs/XPEDITE5370.h
+589
-0
include/configs/sbc8548.h
include/configs/sbc8548.h
+4
-16
include/e500.h
include/e500.h
+1
-0
include/mpc86xx.h
include/mpc86xx.h
+1
-0
include/pca953x.h
include/pca953x.h
+39
-0
lib_ppc/board.c
lib_ppc/board.c
+8
-0
No files found.
MAINTAINERS
View file @
f85cd469
...
...
@@ -411,6 +411,10 @@ Rune Torgersen <runet@innovsys.com>
MPC8266ADS MPC8266
Peter Tyser <ptyser@xes-inc.com>
XPEDITE5200 MPC8548
XPEDITE5370 MPC8572
David Updegraff <dave@cray.com>
...
...
MAKEALL
View file @
f85cd469
...
...
@@ -385,6 +385,8 @@ LIST_85xx=" \
TQM8548
\
TQM8555
\
TQM8560
\
XPEDITE5200
\
XPEDITE5370
\
"
#########################################################################
...
...
Makefile
View file @
f85cd469
...
...
@@ -228,6 +228,7 @@ LIBS += drivers/bios_emulator/libatibiosemu.a
LIBS
+=
drivers/block/libblock.a
LIBS
+=
drivers/dma/libdma.a
LIBS
+=
drivers/fpga/libfpga.a
LIBS
+=
drivers/gpio/libgpio.a
LIBS
+=
drivers/hwmon/libhwmon.a
LIBS
+=
drivers/i2c/libi2c.a
LIBS
+=
drivers/input/libinput.a
...
...
@@ -407,6 +408,7 @@ TAG_SUBDIRS += disk
TAG_SUBDIRS
+=
common
TAG_SUBDIRS
+=
drivers/bios_emulator
TAG_SUBDIRS
+=
drivers/block
TAG_SUBDIRS
+=
drivers/gpio
TAG_SUBDIRS
+=
drivers/hwmon
TAG_SUBDIRS
+=
drivers/i2c
TAG_SUBDIRS
+=
drivers/input
...
...
@@ -2461,6 +2463,12 @@ TQM8560_config: unconfig
echo
"#define CONFIG_BOARDNAME
\"
TQM
$
${CTYPE}
\"
"
>>
$(obj)
include/config.h
;
@
$(MKCONFIG)
-a
TQM85xx ppc mpc85xx tqm85xx tqc
XPEDITE5200_config
:
unconfig
@
$(MKCONFIG)
$
(
@:_config
=)
ppc mpc85xx xpedite5200 xes
XPEDITE5370_config
:
unconfig
@
$(MKCONFIG)
$
(
@:_config
=)
ppc mpc85xx xpedite5370 xes
#########################################################################
## MPC86xx Systems
#########################################################################
...
...
README
View file @
f85cd469
...
...
@@ -621,6 +621,8 @@ The following options need to be configured:
CONFIG_CMD_MII * MII utility commands
CONFIG_CMD_NAND * NAND support
CONFIG_CMD_NET bootp, tftpboot, rarpboot
CONFIG_CMD_PCA953X * PCA953x I2C gpio commands
CONFIG_CMD_PCA953X_INFO * PCA953x I2C gpio info command
CONFIG_CMD_PCI * pciinfo
CONFIG_CMD_PCMCIA * PCMCIA support
CONFIG_CMD_PING * send ICMP ECHO_REQUEST to network
...
...
@@ -698,6 +700,13 @@ The following options need to be configured:
Note that if the RTC uses I2C, then the I2C interface
must also be configured. See I2C Support, below.
- GPIO Support:
CONFIG_PCA953X - use NXP's PCA953X series I2C GPIO
CONFIG_PCA953X_INFO - enable pca953x info command
Note that if the GPIO device uses I2C, then the I2C interface
must also be configured. See I2C Support, below.
- Timestamp Support:
When CONFIG_TIMESTAMP is selected, the timestamp
...
...
board/freescale/mpc8540ads/mpc8540ads.c
View file @
f85cd469
...
...
@@ -133,7 +133,7 @@ local_bus_init(void)
*/
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
if
(
lbc_hz
<
66
)
{
...
...
board/freescale/mpc8541cds/mpc8541cds.c
View file @
f85cd469
...
...
@@ -308,7 +308,7 @@ local_bus_init(void)
*/
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
if
(
lbc_hz
<
66
)
{
...
...
board/freescale/mpc8548cds/mpc8548cds.c
View file @
f85cd469
...
...
@@ -125,7 +125,7 @@ local_bus_init(void)
sys_info_t
sysinfo
;
get_sys_info
(
&
sysinfo
);
clkdiv
=
(
lbc
->
lcrr
&
0x0f
)
*
2
;
clkdiv
=
(
lbc
->
lcrr
&
LCRR_CLKDIV
)
*
2
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
gur
->
lbiuiplldcr1
=
0x00078080
;
...
...
board/freescale/mpc8555cds/mpc8555cds.c
View file @
f85cd469
...
...
@@ -308,7 +308,7 @@ local_bus_init(void)
*/
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
if
(
lbc_hz
<
66
)
{
...
...
board/freescale/mpc8560ads/mpc8560ads.c
View file @
f85cd469
...
...
@@ -337,7 +337,7 @@ local_bus_init(void)
*/
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
if
(
lbc_hz
<
66
)
{
...
...
board/freescale/mpc8568mds/mpc8568mds.c
View file @
f85cd469
...
...
@@ -188,7 +188,7 @@ local_bus_init(void)
sys_info_t
sysinfo
;
get_sys_info
(
&
sysinfo
);
clkdiv
=
(
lbc
->
lcrr
&
0x0f
)
*
2
;
clkdiv
=
(
lbc
->
lcrr
&
LCRR_CLKDIV
)
*
2
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
gur
->
lbiuiplldcr1
=
0x00078080
;
...
...
board/mpc8540eval/mpc8540eval.c
View file @
f85cd469
...
...
@@ -101,7 +101,7 @@ phys_size_t initdram (int board_type)
#if !defined(CONFIG_RAM_AS_FLASH)
/* LocalBus is not emulating flash */
get_sys_info
(
&
sysinfo
);
/* if localbus freq is less than 66MHz,we use bypass mode,otherwise use DLL */
if
(
sysinfo
.
freqSystemBus
/
(
CONFIG_SYS_LBC_LCRR
&
0x0f
)
<
66000000
)
{
if
(
sysinfo
.
freqSystemBus
/
(
CONFIG_SYS_LBC_LCRR
&
LCRR_CLKDIV
)
<
66000000
)
{
lbc
->
lcrr
=
(
CONFIG_SYS_LBC_LCRR
&
0x0fffffff
)
|
0x80000000
;
}
else
{
lbc
->
lcrr
=
CONFIG_SYS_LBC_LCRR
&
0x7fffffff
;
...
...
board/pm854/pm854.c
View file @
f85cd469
...
...
@@ -150,7 +150,7 @@ local_bus_init(void)
*/
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
if
(
lbc_hz
<
66
)
{
...
...
board/pm856/pm856.c
View file @
f85cd469
...
...
@@ -306,7 +306,7 @@ local_bus_init(void)
*/
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
if
(
lbc_hz
<
66
)
{
...
...
board/sbc8548/sbc8548.c
View file @
f85cd469
...
...
@@ -126,7 +126,7 @@ local_bus_init(void)
sys_info_t
sysinfo
;
get_sys_info
(
&
sysinfo
);
clkdiv
=
(
lbc
->
lcrr
&
0x0f
)
*
2
;
clkdiv
=
(
lbc
->
lcrr
&
LCRR_CLKDIV
)
*
2
;
lbc_hz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
gur
->
lbiuiplldcr1
=
0x00078080
;
...
...
board/socrates/socrates.c
View file @
f85cd469
...
...
@@ -156,7 +156,7 @@ void local_bus_init (void)
uint
lcrr
=
CONFIG_SYS_LBC_LCRR
;
get_sys_info
(
&
sysinfo
);
clkdiv
=
lbc
->
lcrr
&
0x0f
;
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
lbc_mhz
=
sysinfo
.
freqSystemBus
/
1000000
/
clkdiv
;
/* Disable PLL bypass for Local Bus Clock >= 66 MHz */
...
...
board/tqc/tqm85xx/tqm85xx.c
View file @
f85cd469
...
...
@@ -361,7 +361,7 @@ uint get_lbc_clock (void)
{
volatile
ccsr_lbc_t
*
lbc
=
(
void
*
)(
CONFIG_SYS_MPC85xx_LBC_ADDR
);
sys_info_t
sys_info
;
ulong
clkdiv
=
lbc
->
lcrr
&
0x0f
;
ulong
clkdiv
=
lbc
->
lcrr
&
LCRR_CLKDIV
;
get_sys_info
(
&
sys_info
);
...
...
board/xes/common/Makefile
0 → 100644
View file @
f85cd469
#
# (C) Copyright 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
ifneq
($(OBJTREE),$(SRCTREE))
$(shell
mkdir
-p
$(obj)board/$(VENDOR)/common)
endif
LIB
=
$(obj)
lib
$(VENDOR)
.a
COBJS-$(CONFIG_FSL_PCI_INIT)
+=
fsl_85xx_pci.o
COBJS-$(CONFIG_MPC8572)
+=
fsl_8572_clk.o
COBJS-$(CONFIG_MPC85xx)
+=
fsl_85xx_ddr.o
COBJS-$(CONFIG_NAND_ACTL)
+=
actl_nand.o
SRCS
:=
$(SOBJS:.o=.S)
$
(
COBJS-y:.o
=
.c
)
OBJS
:=
$(
addprefix
$(obj)
,
$
(
COBJS-y
))
SOBJS
:=
$(
addprefix
$(obj)
,
$(SOBJS)
)
$(LIB)
:
$(obj).depend $(OBJS)
$(AR)
$(ARFLAGS)
$@
$(OBJS)
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
#########################################################################
board/xes/common/actl_nand.c
0 → 100644
View file @
f85cd469
/*
* Copyright 2008 Extreme Engineering Solutions, Inc.
*
* This driver support NAND devices which have address lines
* connected as ALE and CLE inputs.
*
* 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 <nand.h>
#include <asm/io.h>
/*
* Hardware specific access to control-lines
*/
static
void
nand_addr_hwcontrol
(
struct
mtd_info
*
mtd
,
int
cmd
,
uint
ctrl
)
{
struct
nand_chip
*
this
=
mtd
->
priv
;
ulong
IO_ADDR_W
;
if
(
ctrl
&
NAND_CTRL_CHANGE
)
{
IO_ADDR_W
=
(
ulong
)
this
->
IO_ADDR_W
;
IO_ADDR_W
&=
~
(
CONFIG_SYS_NAND_ACTL_CLE
|
CONFIG_SYS_NAND_ACTL_ALE
|
CONFIG_SYS_NAND_ACTL_NCE
);
if
(
ctrl
&
NAND_CLE
)
IO_ADDR_W
|=
CONFIG_SYS_NAND_ACTL_CLE
;
if
(
ctrl
&
NAND_ALE
)
IO_ADDR_W
|=
CONFIG_SYS_NAND_ACTL_ALE
;
if
(
ctrl
&
NAND_NCE
)
IO_ADDR_W
|=
CONFIG_SYS_NAND_ACTL_NCE
;
this
->
IO_ADDR_W
=
(
void
*
)
IO_ADDR_W
;
}
if
(
cmd
!=
NAND_CMD_NONE
)
writeb
(
cmd
,
this
->
IO_ADDR_W
);
}
int
board_nand_init
(
struct
nand_chip
*
nand
)
{
nand
->
ecc
.
mode
=
NAND_ECC_SOFT
;
nand
->
cmd_ctrl
=
nand_addr_hwcontrol
;
nand
->
chip_delay
=
CONFIG_SYS_NAND_ACTL_DELAY
;
return
0
;
}
board/xes/common/fsl_8572_clk.c
0 → 100644
View file @
f85cd469
/*
* Copyright 2008 Extreme Engineering Solutions, Inc.
*
* 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>
/*
* Return SYSCLK input frequency - 50 MHz or 66 MHz depending on POR config
*/
unsigned
long
get_board_sys_clk
(
ulong
dummy
)
{
volatile
ccsr_gur_t
*
gur
=
(
void
*
)(
CONFIG_SYS_MPC85xx_GUTS_ADDR
);
u32
gpporcr
=
gur
->
gpporcr
;
if
(
gpporcr
&
0x10000
)
return
66666666
;
else
return
50000000
;
}
/*
* Return DDR input clock - synchronous with SYSCLK or 66 MHz
*/
unsigned
long
get_board_ddr_clk
(
ulong
dummy
)
{
volatile
ccsr_gur_t
*
gur
=
(
void
*
)(
CONFIG_SYS_MPC85xx_GUTS_ADDR
);
u32
ddr_ratio
=
((
gur
->
porpllsr
)
&
0x00003e00
)
>>
9
;
if
(
ddr_ratio
==
0x7
)
return
get_board_sys_clk
(
dummy
);
return
66666666
;
}
board/xes/common/fsl_85xx_ddr.c
0 → 100644
View file @
f85cd469
/*
* Copyright 2008 Extreme Engineering Solutions, Inc.
*
* 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 <asm/fsl_ddr_sdram.h>
#include <asm/mmu.h>
#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
extern
void
ddr_enable_ecc
(
unsigned
int
dram_size
);
#endif
phys_size_t
initdram
(
int
board_type
)
{
phys_size_t
dram_size
=
fsl_ddr_sdram
();
dram_size
=
setup_ddr_tlbs
(
dram_size
/
0x100000
);
dram_size
*=
0x100000
;
#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
/* Initialize and enable DDR ECC */
ddr_enable_ecc
(
dram_size
);
#endif
return
dram_size
;
}
#if defined(CONFIG_DDR_ECC) || (CONFIG_NUM_DDR_CONTROLLERS > 1)
void
board_add_ram_info
(
int
use_default
)
{
#if (CONFIG_NUM_DDR_CONTROLLERS > 1)
volatile
ccsr_ddr_t
*
ddr1
=
(
void
*
)(
CONFIG_SYS_MPC85xx_DDR_ADDR
);
#endif
puts
(
" ("
);
#if (CONFIG_NUM_DDR_CONTROLLERS > 1)
/* Print interleaving information */
if
(
ddr1
->
cs0_config
&
0x20000000
)
{
switch
((
ddr1
->
cs0_config
>>
24
)
&
0xf
)
{
case
0
:
puts
(
"cache line"
);
break
;
case
1
:
puts
(
"page"
);
break
;
case
2
:
puts
(
"bank"
);
break
;
case
3
:
puts
(
"super-bank"
);
break
;
default:
puts
(
"invalid"
);
break
;
}
}
else
{
puts
(
"no"
);
}
puts
(
" interleaving"
);
#endif
#if (CONFIG_NUM_DDR_CONTROLLERS > 1) && defined(CONFIG_DDR_ECC)
puts
(
", "
);
#endif
#if defined(CONFIG_DDR_ECC)
puts
(
"ECC enabled"
);
#endif
puts
(
")"
);
}
#endif
/* CONFIG_DDR_ECC || CONFIG_NUM_DDR_CONTROLLERS > 1 */
board/xes/common/fsl_85xx_pci.c
0 → 100644
View file @
f85cd469
/*
* Copyright 2008 Extreme Engineering Solutions, Inc.
* Copyright 2007-2008 Freescale Semiconductor, Inc.
*
* 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 <pci.h>
#include <asm/immap_85xx.h>
#include <asm/immap_fsl_pci.h>
#include <libfdt.h>
#include <fdt_support.h>
extern
int
fsl_pci_setup_inbound_windows
(
struct
pci_region
*
r
);
extern
void
fsl_pci_config_unlock
(
struct
pci_controller
*
hose
);
extern
void
fsl_pci_init
(
struct
pci_controller
*
hose
);
int
first_free_busno
=
0
;
#ifdef CONFIG_PCI1
static
struct
pci_controller
pci1_hose
;
#endif
#ifdef CONFIG_PCIE1
static
struct
pci_controller
pcie1_hose
;
#endif
#ifdef CONFIG_PCIE2
static
struct
pci_controller
pcie2_hose
;
#endif
#ifdef CONFIG_PCIE3
static
struct
pci_controller
pcie3_hose
;
#endif
#ifdef CONFIG_MPC8572
/* Correlate host/agent POR bits to usable info. Table 4-14 */
struct
host_agent_cfg_t
{
uchar
pcie_root
[
3
];
uchar
rio_host
;
}
host_agent_cfg
[
8
]
=
{
{{
0
,
0
,
0
},
0
},
{{
0
,
1
,
1
},
1
},
{{
1
,
0
,
1
},
0
},
{{
1
,
1
,
0
},
1
},
{{
0
,
0
,
1
},
0
},
{{
0
,
1
,
0
},
1
},
{{
1
,
0
,
0
},
0
},
{{
1
,
1
,
1
},
1
}
};
/* Correlate port width POR bits to usable info. Table 4-15 */
struct
io_port_cfg_t
{
uchar
pcie_width
[
3
];
uchar
rio_width
;
}
io_port_cfg
[
16
]
=
{
{{
0
,
0
,
0
},
0
},
{{
0
,
0
,
0
},
0
},
{{
4
,
0
,
0
},
0
},
{{
4
,
4
,
0
},
0
},
{{
0
,
0
,
0
},
0
},
{{
0
,
0
,
0
},
0
},
{{
0
,
0
,
0
},
4
},
{{
4
,
2
,
2
},
0
},
{{
0
,
0
,
0
},
0
},
{{
0
,
0
,
0
},
0
},
{{
0
,
0
,
0
},
0
},
{{
4
,
0
,
0
},
4
},
{{
4
,
0
,
0
},
4
},
{{
0
,
0
,
0
},
4
},
{{
0
,
0
,
0
},
4
},
{{
8
,
0
,
0
},
0
},
};
#elif defined CONFIG_MPC8548
/* Correlate host/agent POR bits to usable info. Table 4-12 */
struct
host_agent_cfg_t
{
uchar
pci_host
[
2
];
uchar
pcie_root
[
1
];
uchar
rio_host
;
}
host_agent_cfg
[
8
]
=
{
{{
1
,
1
},
{
0
},
0
},
{{
1
,
1
},
{
1
},
0
},
{{
1
,
1
},
{
0
},
1
},
{{
0
,
0
},
{
0
},
0
},
/* reserved */
{{
0
,
1
},
{
1
},
0
},
{{
1
,
1
},
{
1
},
0
},
{{
0
,
1
},
{
1
},
1
},
{{
1
,
1
},
{
1
},
1
}
};
/* Correlate port width POR bits to usable info. Table 4-13 */
struct
io_port_cfg_t
{
uchar
pcie_width
[
1
];
uchar
rio_width
;
}
io_port_cfg
[
8
]
=
{
{{
0
},
0
},
{{
0
},
0
},
{{
0
},
0
},
{{
4
},
4
},
{{
4
},
4
},
{{
0
},
4
},
{{
0
},
4
},
{{
8
},
0
},
};
#endif
void
pci_init_board
(
void
)
{
struct
pci_controller
*
hose
;
volatile
ccsr_fsl_pci_t
*
pci
;
int
width
;
int
host
;
volatile
ccsr_gur_t
*
gur
=
(
void
*
)(
CONFIG_SYS_MPC85xx_GUTS_ADDR
);
uint
devdisr
=
gur
->
devdisr
;
uint
io_sel
=
(
gur
->
pordevsr
&
MPC85xx_PORDEVSR_IO_SEL
)
>>
19
;
uint
host_agent
=
(
gur
->
porbmsr
&
MPC85xx_PORBMSR_HA
)
>>
16
;
struct
pci_region
*
r
;
#ifdef CONFIG_PCI1
uint
pci_spd_norm
=
(
gur
->
pordevsr
&
MPC85xx_PORDEVSR_PCI1_SPD
);
uint
pci_32
=
gur
->
pordevsr
&
MPC85xx_PORDEVSR_PCI1_PCI32
;
uint
pci_arb
=
gur
->
pordevsr
&
MPC85xx_PORDEVSR_PCI1_ARB
;
uint
pcix
=
gur
->
pordevsr
&
MPC85xx_PORDEVSR_PCI1
;
uint
freq
=
CONFIG_SYS_CLK_FREQ
/
1000
/
1000
;
width
=
0
;
/* Silence compiler warning... */
io_sel
&=
0xf
;
/* Silence compiler warning... */
pci
=
(
ccsr_fsl_pci_t
*
)
CONFIG_SYS_PCI1_ADDR
;
hose
=
&
pci1_hose
;
host
=
host_agent_cfg
[
host_agent
].
pci_host
[
0
];
r
=
hose
->
regions
;
if
(
!
(
devdisr
&
MPC85xx_DEVDISR_PCI1
))
{
printf
(
"
\n
PCI1: %d bit %s, %s %d MHz, %s, %s
\n
"
,
pci_32
?
32
:
64
,
pcix
?
"PCIX"
:
"PCI"
,
pci_spd_norm
?
">="
:
"<="
,
pcix
?
freq
*
2
:
freq
,
host
?
"host"
:
"agent"
,
pci_arb
?
"arbiter"
:
"external-arbiter"
);
/* inbound */
r
+=
fsl_pci_setup_inbound_windows
(
r
);
/* outbound memory */
pci_set_region
(
r
++
,
CONFIG_SYS_PCI1_MEM_BASE
,
CONFIG_SYS_PCI1_MEM_PHYS
,
CONFIG_SYS_PCI1_MEM_SIZE
,
PCI_REGION_MEM
);
/* outbound io */
pci_set_region
(
r
++
,
CONFIG_SYS_PCI1_IO_BASE
,
CONFIG_SYS_PCI1_IO_PHYS
,
CONFIG_SYS_PCI1_IO_SIZE
,
PCI_REGION_IO
);
hose
->
region_count
=
r
-
hose
->
regions
;
hose
->
first_busno
=
first_free_busno
;
pci_setup_indirect
(
hose
,
(
int
)
&
pci
->
cfg_addr
,
(
int
)
&
pci
->
cfg_data
);
fsl_pci_init
(
hose
);
/* Unlock inbound PCI configuration cycles */
if
(
!
host
)
fsl_pci_config_unlock
(
hose
);
first_free_busno
=
hose
->
last_busno
+
1
;
printf
(
" PCI1 on bus %02x - %02x
\n
"
,
hose
->
first_busno
,
hose
->
last_busno
);
}
else
{
printf
(
" PCI1: disabled
\n
"
);
}
#elif defined CONFIG_MPC8548
/* PCI1 not present on MPC8572 */
gur
->
devdisr
|=
MPC85xx_DEVDISR_PCI1
;
/* disable */
#endif
#ifdef CONFIG_PCIE1
pci
=
(
ccsr_fsl_pci_t
*
)
CONFIG_SYS_PCIE1_ADDR
;
hose
=
&
pcie1_hose
;
host
=
host_agent_cfg
[
host_agent
].
pcie_root
[
0
];
width
=
io_port_cfg
[
io_sel
].
pcie_width
[
0
];
r
=
hose
->
regions
;
if
(
width
&&
!
(
devdisr
&
MPC85xx_DEVDISR_PCIE
))
{
printf
(
"
\n
PCIE1 connected as %s (x%d)"
,
host
?
"Root Complex"
:
"End Point"
,
width
);
if
(
pci
->
pme_msg_det
)
{
pci
->
pme_msg_det
=
0xffffffff
;
debug
(
" with errors. Clearing. Now 0x%08x"
,
pci
->
pme_msg_det
);
}
printf
(
"
\n
"
);
/* inbound */
r
+=
fsl_pci_setup_inbound_windows
(
r
);
/* outbound memory */
pci_set_region
(
r
++
,
CONFIG_SYS_PCIE1_MEM_BASE
,
CONFIG_SYS_PCIE1_MEM_PHYS
,
CONFIG_SYS_PCIE1_MEM_SIZE
,
PCI_REGION_MEM
);
/* outbound io */
pci_set_region
(
r
++
,
CONFIG_SYS_PCIE1_IO_BASE
,
CONFIG_SYS_PCIE1_IO_PHYS
,
CONFIG_SYS_PCIE1_IO_SIZE
,
PCI_REGION_IO
);
hose
->
region_count
=
r
-
hose
->
regions
;
hose
->
first_busno
=
first_free_busno
;
pci_setup_indirect
(
hose
,
(
int
)
&
pci
->
cfg_addr
,
(
int
)
&
pci
->
cfg_data
);
fsl_pci_init
(
hose
);
/* Unlock inbound PCI configuration cycles */
if
(
!
host
)
fsl_pci_config_unlock
(
hose
);
first_free_busno
=
hose
->
last_busno
+
1
;
printf
(
" PCIE1 on bus %02x - %02x
\n
"
,
hose
->
first_busno
,
hose
->
last_busno
);
}