Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
441dbb50
Commit
441dbb50
authored
Jun 30, 2008
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx
parents
dee80553
5ce4b596
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1759 additions
and
6 deletions
+1759
-6
arch/powerpc/boot/Makefile
arch/powerpc/boot/Makefile
+2
-1
arch/powerpc/boot/cuboot-sam440ep.c
arch/powerpc/boot/cuboot-sam440ep.c
+49
-0
arch/powerpc/boot/dts/sam440ep.dts
arch/powerpc/boot/dts/sam440ep.dts
+293
-0
arch/powerpc/boot/dts/taishan.dts
arch/powerpc/boot/dts/taishan.dts
+28
-1
arch/powerpc/configs/44x/sam440ep_defconfig
arch/powerpc/configs/44x/sam440ep_defconfig
+1192
-0
arch/powerpc/configs/44x/taishan_defconfig
arch/powerpc/configs/44x/taishan_defconfig
+78
-1
arch/powerpc/kernel/cpu_setup_44x.S
arch/powerpc/kernel/cpu_setup_44x.S
+1
-0
arch/powerpc/kernel/cputable.c
arch/powerpc/kernel/cputable.c
+3
-1
arch/powerpc/platforms/44x/Kconfig
arch/powerpc/platforms/44x/Kconfig
+9
-0
arch/powerpc/platforms/44x/Makefile
arch/powerpc/platforms/44x/Makefile
+1
-0
arch/powerpc/platforms/44x/sam440ep.c
arch/powerpc/platforms/44x/sam440ep.c
+79
-0
arch/powerpc/platforms/44x/warp-nand.c
arch/powerpc/platforms/44x/warp-nand.c
+1
-2
arch/powerpc/sysdev/indirect_pci.c
arch/powerpc/sysdev/indirect_pci.c
+6
-0
arch/powerpc/sysdev/ppc4xx_pci.c
arch/powerpc/sysdev/ppc4xx_pci.c
+14
-0
include/asm-powerpc/pci-bridge.h
include/asm-powerpc/pci-bridge.h
+3
-0
No files found.
arch/powerpc/boot/Makefile
View file @
441dbb50
...
...
@@ -66,7 +66,7 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
fixed-head.S ep88xc.c ep405.c cuboot-c2k.c
\
cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c
\
cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c
\
virtex405-head.S redboot-83xx.c
virtex405-head.S redboot-83xx.c
cuboot-sam440ep.c
src-boot
:=
$
(
src-wlib
)
$
(
src-plat
)
empty.c
src-boot
:=
$(
addprefix
$(obj)
/,
$
(
src-boot
))
...
...
@@ -213,6 +213,7 @@ image-$(CONFIG_WALNUT) += treeImage.walnut
# Board ports in arch/powerpc/platform/44x/Kconfig
image-$(CONFIG_EBONY)
+=
treeImage.ebony cuImage.ebony
image-$(CONFIG_BAMBOO)
+=
treeImage.bamboo cuImage.bamboo
image-$(CONFIG_SAM440EP)
+=
cuImage.sam440ep
image-$(CONFIG_SEQUOIA)
+=
cuImage.sequoia
image-$(CONFIG_RAINIER)
+=
cuImage.rainier
image-$(CONFIG_TAISHAN)
+=
cuImage.taishan
...
...
arch/powerpc/boot/cuboot-sam440ep.c
0 → 100644
View file @
441dbb50
/*
* Old U-boot compatibility for Sam440ep based off bamboo.c code
* original copyrights below
*
* Author: Josh Boyer <jwboyer@linux.vnet.ibm.com>
*
* Copyright 2007 IBM Corporation
*
* Based on cuboot-ebony.c
*
* Modified from cuboot-bamboo.c for sam440ep:
* Copyright 2008 Giuseppe Coviello <gicoviello@gmail.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*/
#include "ops.h"
#include "stdio.h"
#include "44x.h"
#include "4xx.h"
#include "cuboot.h"
#define TARGET_4xx
#define TARGET_44x
#include "ppcboot.h"
static
bd_t
bd
;
static
void
sam440ep_fixups
(
void
)
{
unsigned
long
sysclk
=
66666666
;
ibm440ep_fixup_clocks
(
sysclk
,
11059200
,
25000000
);
ibm4xx_sdram_fixup_memsize
();
ibm4xx_quiesce_eth
((
u32
*
)
0xef600e00
,
(
u32
*
)
0xef600f00
);
dt_fixup_mac_addresses
(
&
bd
.
bi_enetaddr
,
&
bd
.
bi_enet1addr
);
}
void
platform_init
(
unsigned
long
r3
,
unsigned
long
r4
,
unsigned
long
r5
,
unsigned
long
r6
,
unsigned
long
r7
)
{
CUBOOT_INIT
();
platform_ops
.
fixups
=
sam440ep_fixups
;
platform_ops
.
exit
=
ibm44x_dbcr_reset
;
fdt_init
(
_dtb_start
);
serial_console_init
();
}
arch/powerpc/boot/dts/sam440ep.dts
0 → 100644
View file @
441dbb50
/*
*
Device
Tree
Source
for
ACube
Sam440ep
based
off
bamboo
.
dts
code
*
original
copyrights
below
*
*
Copyright
(
c
)
2006
,
2007
IBM
Corp
.
*
Josh
Boyer
<
jwboyer
@
linux
.
vnet
.
ibm
.
com
>
*
*
Modified
from
bamboo
.
dts
for
sam440ep
:
*
Copyright
2008
Giuseppe
Coviello
<
gicoviello
@
gmail
.
com
>
*
*
This
file
is
licensed
under
the
terms
of
the
GNU
General
Public
*
License
version
2.
This
program
is
licensed
"as is"
without
*
any
warranty
of
any
kind
,
whether
express
or
implied
.
*/
/
dts
-
v1
/;
/
{
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
model
=
"acube,sam440ep"
;
compatible
=
"acube,sam440ep"
;
aliases
{
ethernet0
=
&
EMAC0
;
ethernet1
=
&
EMAC1
;
serial0
=
&
UART0
;
serial1
=
&
UART1
;
serial2
=
&
UART2
;
serial3
=
&
UART3
;
};
cpus
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
cpu
@
0
{
device_type
=
"cpu"
;
model
=
"PowerPC,440EP"
;
reg
=
<
0
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
zImage
*/
timebase
-
frequency
=
<
0
>;
/*
Filled
in
by
zImage
*/
i
-
cache
-
line
-
size
=
<
32
>;
d
-
cache
-
line
-
size
=
<
32
>;
i
-
cache
-
size
=
<
32768
>;
d
-
cache
-
size
=
<
32768
>;
dcr
-
controller
;
dcr
-
access
-
method
=
"native"
;
};
};
memory
{
device_type
=
"memory"
;
reg
=
<
0
0
0
>;
/*
Filled
in
by
zImage
*/
};
UIC0
:
interrupt
-
controller0
{
compatible
=
"ibm,uic-440ep"
,
"ibm,uic"
;
interrupt
-
controller
;
cell
-
index
=
<
0
>;
dcr
-
reg
=
<
0x0c0
9
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
};
UIC1
:
interrupt
-
controller1
{
compatible
=
"ibm,uic-440ep"
,
"ibm,uic"
;
interrupt
-
controller
;
cell
-
index
=
<
1
>;
dcr
-
reg
=
<
0x0d0
9
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
interrupts
=
<
0x1e
4
0x1f
4
>;
/*
cascade
*/
interrupt
-
parent
=
<&
UIC0
>;
};
SDR0
:
sdr
{
compatible
=
"ibm,sdr-440ep"
;
dcr
-
reg
=
<
0x00e
2
>;
};
CPR0
:
cpr
{
compatible
=
"ibm,cpr-440ep"
;
dcr
-
reg
=
<
0x00c
2
>;
};
plb
{
compatible
=
"ibm,plb-440ep"
,
"ibm,plb-440gp"
,
"ibm,plb4"
;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
ranges
;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
zImage
*/
SDRAM0
:
sdram
{
compatible
=
"ibm,sdram-440ep"
,
"ibm,sdram-405gp"
;
dcr
-
reg
=
<
0x010
2
>;
};
DMA0
:
dma
{
compatible
=
"ibm,dma-440ep"
,
"ibm,dma-440gp"
;
dcr
-
reg
=
<
0x100
0x027
>;
};
MAL0
:
mcmal
{
compatible
=
"ibm,mcmal-440ep"
,
"ibm,mcmal-440gp"
,
"ibm,mcmal"
;
dcr
-
reg
=
<
0x180
0x062
>;
num
-
tx
-
chans
=
<
4
>;
num
-
rx
-
chans
=
<
2
>;
interrupt
-
parent
=
<&
MAL0
>;
interrupts
=
<
0
1
2
3
4
>;
#
interrupt
-
cells
=
<
1
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
interrupt
-
map
=
</*
TXEOB
*/
0
&
UIC0
10
4
/*
RXEOB
*/
1
&
UIC0
11
4
/*
SERR
*/
2
&
UIC1
0
4
/*
TXDE
*/
3
&
UIC1
1
4
/*
RXDE
*/
4
&
UIC1
2
4
>;
};
POB0
:
opb
{
compatible
=
"ibm,opb-440ep"
,
"ibm,opb-440gp"
,
"ibm,opb"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
/*
Bamboo
is
oddball
in
the
44
x
world
and
doesn
't use the ERPN
* bits.
*/
ranges = <0x00000000 0 0x00000000 0x80000000
0x80000000 0 0x80000000 0x80000000>;
interrupt-parent = <&UIC1>;
interrupts = <7 4>;
clock-frequency = <0>; /* Filled in by zImage */
EBC0: ebc {
compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
dcr-reg = <0x012 2>;
#address-cells = <2>;
#size-cells = <1>;
clock-frequency = <0>; /* Filled in by zImage */
interrupts = <5 1>;
interrupt-parent = <&UIC1>;
};
UART0: serial@ef600300 {
device_type = "serial";
compatible = "ns16550";
reg = <0xef600300 8>;
virtual-reg = <0xef600300>;
clock-frequency = <0>; /* Filled in by zImage */
current-speed = <0x1c200>;
interrupt-parent = <&UIC0>;
interrupts = <0 4>;
};
UART1: serial@ef600400 {
device_type = "serial";
compatible = "ns16550";
reg = <0xef600400 8>;
virtual-reg = <0xef600400>;
clock-frequency = <0>;
current-speed = <0>;
interrupt-parent = <&UIC0>;
interrupts = <1 4>;
};
UART2: serial@ef600500 {
device_type = "serial";
compatible = "ns16550";
reg = <0xef600500 8>;
virtual-reg = <0xef600500>;
clock-frequency = <0>;
current-speed = <0>;
interrupt-parent = <&UIC0>;
interrupts = <3 4>;
};
UART3: serial@ef600600 {
device_type = "serial";
compatible = "ns16550";
reg = <0xef600600 8>;
virtual-reg = <0xef600600>;
clock-frequency = <0>;
current-speed = <0>;
interrupt-parent = <&UIC0>;
interrupts = <4 4>;
};
IIC0: i2c@ef600700 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
index = <0>;
reg = <0xef600700 0x14>;
interrupt-parent = <&UIC0>;
interrupts = <2 4>;
rtc@68 {
compatible = "stm,m41t80";
reg = <0x68>;
};
};
IIC1: i2c@ef600800 {
compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
index = <5>;
reg = <0xef600800 0x14>;
interrupt-parent = <&UIC0>;
interrupts = <7 4>;
};
ZMII0: emac-zmii@ef600d00 {
compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
reg = <0xef600d00 0xc>;
};
EMAC0: ethernet@ef600e00 {
linux,network-index = <0>;
device_type = "network";
compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
interrupt-parent = <&UIC1>;
interrupts = <0x1c 4 0x1d 4>;
reg = <0xef600e00 0x70>;
local-mac-address = [000000000000];
mal-device = <&MAL0>;
mal-tx-channel = <0 1>;
mal-rx-channel = <0>;
cell-index = <0>;
max-frame-size = <0x5dc>;
rx-fifo-size = <0x1000>;
tx-fifo-size = <0x800>;
phy-mode = "rmii";
phy-map = <00000000>;
zmii-device = <&ZMII0>;
zmii-channel = <0>;
};
EMAC1: ethernet@ef600f00 {
linux,network-index = <1>;
device_type = "network";
compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
interrupt-parent = <&UIC1>;
interrupts = <0x1e 4 0x1f 4>;
reg = <0xef600f00 0x70>;
local-mac-address = [000000000000];
mal-device = <&MAL0>;
mal-tx-channel = <2 3>;
mal-rx-channel = <1>;
cell-index = <1>;
max-frame-size = <0x5dc>;
rx-fifo-size = <0x1000>;
tx-fifo-size = <0x800>;
phy-mode = "rmii";
phy-map = <00000000>;
zmii-device = <&ZMII0>;
zmii-channel = <1>;
};
usb@ef601000 {
compatible = "ohci-be";
reg = <0xef601000 0x80>;
interrupts = <8 4 9 4>;
interrupt-parent = <&UIC1>;
};
};
PCI0: pci@ec000000 {
device_type = "pci";
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
compatible = "ibm,plb440ep-pci", "ibm,plb-pci";
primary;
reg = <0 0xeec00000 8 /* Config space access */
0 0xeed00000 4 /* IACK */
0 0xeed00000 4 /* Special cycle */
0 0xef400000 0x40>; /* Internal registers */
/* Outbound ranges, one memory and one IO,
* later cannot be changed. Chip supports a second
* IO range but we don'
t
use
it
for
now
*/
ranges
=
<
0x02000000
0
0xa0000000
0
0xa0000000
0
0x20000000
0x01000000
0
0x00000000
0
0xe8000000
0
0x00010000
>;
/*
Inbound
2
GB
range
starting
at
0
*/
dma
-
ranges
=
<
0x42000000
0
0
0
0
0
0x80000000
>;
};
};
chosen
{
linux
,
stdout
-
path
=
"/plb/opb/serial@ef600300"
;
};
};
arch/powerpc/boot/dts/taishan.dts
View file @
441dbb50
...
...
@@ -186,7 +186,34 @@
interrupts = <0x5 0x4>;
interrupt-parent = <&UIC1>;
/* TODO: Add other EBC devices */
nor_flash@0,0 {
compatible = "cfi-flash";
bank-width = <4>;
device-width = <2>;
reg = <0x0 0x0 0x4000000>;
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "kernel";
reg = <0x0 0x180000>;
};
partition@180000 {
label = "root";
reg = <0x180000 0x200000>;
};
partition@380000 {
label = "user";
reg = <0x380000 0x3bc0000>;
};
partition@3f40000 {
label = "env";
reg = <0x3f40000 0x80000>;
};
partition@3fc0000 {
label = "u-boot";
reg = <0x3fc0000 0x40000>;
};
};
};
...
...
arch/powerpc/configs/44x/sam440ep_defconfig
0 → 100644
View file @
441dbb50
This diff is collapsed.
Click to expand it.
arch/powerpc/configs/44x/taishan_defconfig
View file @
441dbb50
...
...
@@ -348,7 +348,83 @@ CONFIG_FW_LOADER=y
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
CONFIG_MTD_CMDLINE_PARTS=y
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
# CONFIG_MTD_BLKDEVS is not set
# CONFIG_MTD_BLOCK is not set
# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
# CONFIG_SSFDC is not set
# CONFIG_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
CONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_CFI_INTELEXT is not set
CONFIG_MTD_CFI_AMDSTD=y
# CONFIG_MTD_CFI_STAA is not set
CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PHYSMAP is not set
CONFIG_MTD_PHYSMAP_OF=y
# CONFIG_MTD_INTEL_VR_NOR is not set
# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
#
# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
# CONFIG_MTD_NAND is not set
# CONFIG_MTD_ONENAND is not set
#
# UBI - Unsorted block images
#
# CONFIG_MTD_UBI is not set
CONFIG_OF_DEVICE=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
...
...
@@ -660,6 +736,7 @@ CONFIG_TMPFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=y
# CONFIG_VXFS_FS is not set
# CONFIG_MINIX_FS is not set
...
...
arch/powerpc/kernel/cpu_setup_44x.S
View file @
441dbb50
...
...
@@ -33,6 +33,7 @@ _GLOBAL(__setup_cpu_440grx)
mtlr
r4
blr
_GLOBAL
(
__setup_cpu_460ex
)
_GLOBAL
(
__setup_cpu_460gt
)
b
__init_fpu_44x
_GLOBAL
(
__setup_cpu_440gx
)
_GLOBAL
(
__setup_cpu_440spe
)
...
...
arch/powerpc/kernel/cputable.c
View file @
441dbb50
...
...
@@ -37,6 +37,7 @@ extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec);
extern
void
__setup_cpu_440grx
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_440spe
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_460ex
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_460gt
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_603
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_604
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_750
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
...
...
@@ -1427,9 +1428,10 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
pvr_value
=
0x13020000
,
.
cpu_name
=
"460GT"
,
.
cpu_features
=
CPU_FTRS_44X
,
.
cpu_user_features
=
COMMON_USER_BOOKE
,
.
cpu_user_features
=
COMMON_USER_BOOKE
|
PPC_FEATURE_HAS_FPU
,
.
icache_bsize
=
32
,
.
dcache_bsize
=
32
,
.
cpu_setup
=
__setup_cpu_460gt
,
.
machine_check
=
machine_check_440A
,
.
platform
=
"ppc440"
,
},
...
...
arch/powerpc/platforms/44x/Kconfig
View file @
441dbb50
...
...
@@ -17,6 +17,15 @@ config EBONY
help
This option enables support for the IBM PPC440GP evaluation board.
config SAM440EP
bool "Sam440ep"
depends on 44x
default n
select 440EP
select PCI
help
This option enables support for the ACube Sam440ep board.
config SEQUOIA
bool "Sequoia"
depends on 44x
...
...
arch/powerpc/platforms/44x/Makefile
View file @
441dbb50
...
...
@@ -3,6 +3,7 @@ obj-$(CONFIG_EBONY) += ebony.o
obj-$(CONFIG_TAISHAN)
+=
taishan.o
obj-$(CONFIG_BAMBOO)
+=
bamboo.o
obj-$(CONFIG_YOSEMITE)
+=
bamboo.o
obj-$(CONFIG_SAM440EP)
+=
sam440ep.o
obj-$(CONFIG_SEQUOIA)
+=
sequoia.o
obj-$(CONFIG_KATMAI)
+=
katmai.o
obj-$(CONFIG_RAINIER)
+=
rainier.o
...
...
arch/powerpc/platforms/44x/sam440ep.c
0 → 100644
View file @
441dbb50
/*
* Sam440ep board specific routines based off bamboo.c code
* original copyrights below
*
* Wade Farnsworth <wfarnsworth@mvista.com>
* Copyright 2004 MontaVista Software Inc.
*
* Rewritten and ported to the merged powerpc tree:
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* Modified from bamboo.c for sam440ep:
* Copyright 2008 Giuseppe Coviello <gicoviello@gmail.com>
*
* 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.
*/
#include <linux/init.h>
#include <linux/of_platform.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/pci-bridge.h>
#include <asm/ppc4xx.h>
#include <linux/i2c.h>
static
__initdata
struct
of_device_id
sam440ep_of_bus
[]
=
{
{
.
compatible
=
"ibm,plb4"
,
},
{
.
compatible
=
"ibm,opb"
,
},
{
.
compatible
=
"ibm,ebc"
,
},
{},
};
static
int
__init
sam440ep_device_probe
(
void
)
{
of_platform_bus_probe
(
NULL
,
sam440ep_of_bus
,
NULL
);
return
0
;
}
machine_device_initcall
(
sam440ep
,
sam440ep_device_probe
);
static
int
__init
sam440ep_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
if
(
!
of_flat_dt_is_compatible
(
root
,
"acube,sam440ep"
))
return
0
;
ppc_pci_flags
=
PPC_PCI_REASSIGN_ALL_RSRC
;
return
1
;
}
define_machine
(
sam440ep
)
{
.
name
=
"Sam440ep"
,
.
probe
=
sam440ep_probe
,
.
progress
=
udbg_progress
,
.
init_IRQ
=
uic_init_tree
,
.
get_irq
=
uic_get_irq
,
.
restart
=
ppc4xx_reset_system
,
.
calibrate_decr
=
generic_calibrate_decr
,
};
static
struct
i2c_board_info
sam440ep_rtc_info
=
{
.
type
=
"m41st85"
,
.
addr
=
0x68
,
.
irq
=
-
1
,
};
static
int
sam440ep_setup_rtc
(
void
)
{
return
i2c_register_board_info
(
0
,
&
sam440ep_rtc_info
,
1
);
}
machine_device_initcall
(
sam440ep
,
sam440ep_setup_rtc
);
arch/powerpc/platforms/44x/warp-nand.c
View file @
441dbb50
...
...
@@ -94,8 +94,7 @@ static struct platform_nand_chip warp_nand_chip0 = {
static
struct
platform_device
warp_nand_device
=
{
.
name
=
"ndfc-chip"
,
.
id
=
0
,
.
num_resources
=
1
,
.
resource
=
&
warp_ndfc
,
.
num_resources
=
0
,
.
dev
=
{
.
platform_data
=
&
warp_nand_chip0
,
.
parent
=
&
warp_ndfc_device
.
dev
,
...
...
arch/powerpc/sysdev/indirect_pci.c
View file @
441dbb50
...
...
@@ -123,6 +123,12 @@ indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
(
bus
->
number
==
hose
->
first_busno
))
val
&=
0xffffff00
;
/* Workaround for PCI_28 Errata in 440EPx/GRx */
if
((
hose
->
indirect_type
&
PPC_INDIRECT_TYPE_BROKEN_MRM
)
&&
offset
==
PCI_CACHE_LINE_SIZE
)
{
val
=
0
;
}
/*
* Note: the caller has already checked that offset is
* suitably aligned and that len is 1, 2 or 4.
...
...
arch/powerpc/sysdev/ppc4xx_pci.c
View file @
441dbb50
...
...
@@ -75,6 +75,11 @@ static void fixup_ppc4xx_pci_bridge(struct pci_dev *dev)
!
of_device_is_compatible
(
hose
->
dn
,
"ibm,plb-pci"
))
return
;
if
(
of_device_is_compatible
(
hose
->
dn
,
"ibm,plb440epx-pci"
)
||
of_device_is_compatible
(
hose
->
dn
,
"ibm,plb440grx-pci"
))
{
hose
->
indirect_type
|=
PPC_INDIRECT_TYPE_BROKEN_MRM
;
}
/* Hide the PCI host BARs from the kernel as their content doesn't
* fit well in the resource management
*/
...
...
@@ -1634,6 +1639,15 @@ static void __init ppc4xx_probe_pciex_bridge(struct device_node *np)
}
port
=
&
ppc4xx_pciex_ports
[
portno
];
port
->
index
=
portno
;
/*
* Check if device is enabled
*/
if
(
!
of_device_is_available
(
np
))
{
printk
(
KERN_INFO
"PCIE%d: Port disabled via device-tree
\n
"
,
port
->
index
);
return
;
}
port
->
node
=
of_node_get
(
np
);
pval
=
of_get_property
(
np
,
"sdr-base"
,
NULL
);
if
(
pval
==
NULL
)
{
...
...
include/asm-powerpc/pci-bridge.h
View file @
441dbb50
...
...
@@ -92,12 +92,15 @@ struct pci_controller {
* anything but the PHB. Only allow talking to the PHB if this is
* set.
* BIG_ENDIAN - cfg_addr is a big endian register
* BROKEN_MRM - the 440EPx/GRx chips have an errata that causes hangs on
* the PLB4. Effectively disable MRM commands by setting this.
*/
#define PPC_INDIRECT_TYPE_SET_CFG_TYPE 0x00000001
#define PPC_INDIRECT_TYPE_EXT_REG 0x00000002
#define PPC_INDIRECT_TYPE_SURPRESS_PRIMARY_BUS 0x00000004
#define PPC_INDIRECT_TYPE_NO_PCIE_LINK 0x00000008
#define PPC_INDIRECT_TYPE_BIG_ENDIAN 0x00000010
#define PPC_INDIRECT_TYPE_BROKEN_MRM 0x00000020
u32
indirect_type
;
#endif
/* !CONFIG_PPC64 */
/* Currently, we limit ourselves to 1 IO range and 3 mem
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment