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
75e06e2d
Commit
75e06e2d
authored
Jan 26, 2008
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-2.6.25' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx
parents
5bc97786
e0802967
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1992 additions
and
9 deletions
+1992
-9
arch/powerpc/Kconfig
arch/powerpc/Kconfig
+1
-1
arch/powerpc/boot/4xx.c
arch/powerpc/boot/4xx.c
+1
-1
arch/powerpc/boot/Makefile
arch/powerpc/boot/Makefile
+3
-1
arch/powerpc/boot/cuboot-warp.c
arch/powerpc/boot/cuboot-warp.c
+39
-0
arch/powerpc/boot/dts/ebony.dts
arch/powerpc/boot/dts/ebony.dts
+3
-2
arch/powerpc/boot/dts/haleakala.dts
arch/powerpc/boot/dts/haleakala.dts
+274
-0
arch/powerpc/boot/dts/walnut.dts
arch/powerpc/boot/dts/walnut.dts
+3
-2
arch/powerpc/boot/dts/warp.dts
arch/powerpc/boot/dts/warp.dts
+239
-0
arch/powerpc/configs/warp_defconfig
arch/powerpc/configs/warp_defconfig
+1057
-0
arch/powerpc/kernel/cputable.c
arch/powerpc/kernel/cputable.c
+26
-2
arch/powerpc/platforms/40x/walnut.c
arch/powerpc/platforms/40x/walnut.c
+1
-0
arch/powerpc/platforms/44x/Kconfig
arch/powerpc/platforms/44x/Kconfig
+15
-0
arch/powerpc/platforms/44x/Makefile
arch/powerpc/platforms/44x/Makefile
+2
-0
arch/powerpc/platforms/44x/ebony.c
arch/powerpc/platforms/44x/ebony.c
+2
-0
arch/powerpc/platforms/44x/warp-nand.c
arch/powerpc/platforms/44x/warp-nand.c
+105
-0
arch/powerpc/platforms/44x/warp.c
arch/powerpc/platforms/44x/warp.c
+153
-0
arch/powerpc/platforms/Kconfig
arch/powerpc/platforms/Kconfig
+6
-0
arch/powerpc/sysdev/Makefile
arch/powerpc/sysdev/Makefile
+1
-0
arch/powerpc/sysdev/of_rtc.c
arch/powerpc/sysdev/of_rtc.c
+59
-0
include/asm-powerpc/of_platform.h
include/asm-powerpc/of_platform.h
+2
-0
No files found.
arch/powerpc/Kconfig
View file @
75e06e2d
...
...
@@ -480,7 +480,7 @@ config MCA
config PCI
bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
|| PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
|| PPC_PS3
|| PPC_PS3
|| 44x
default y if !40x && !CPM2 && !8xx && !PPC_83xx \
&& !PPC_85xx && !PPC_86xx
default PCI_PERMEDIA if !4xx && !CPM2 && !8xx
...
...
arch/powerpc/boot/4xx.c
View file @
75e06e2d
...
...
@@ -159,7 +159,7 @@ void ibm4xx_denali_fixup_memsize(void)
val
=
DDR_GET_VAL
(
val
,
DDR_CS_MAP
,
DDR_CS_MAP_SHIFT
);
cs
=
0
;
while
(
val
)
{
if
(
val
&
&
0x1
)
if
(
val
&
0x1
)
cs
++
;
val
=
val
>>
1
;
}
...
...
arch/powerpc/boot/Makefile
View file @
75e06e2d
...
...
@@ -62,7 +62,8 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c
ps3-head.S ps3-hvcall.S ps3.c treeboot-bamboo.c cuboot-8xx.c
\
cuboot-pq2.c cuboot-sequoia.c treeboot-walnut.c cuboot-bamboo.c
\
fixed-head.S ep88xc.c cuboot-hpc2.c ep405.c cuboot-taishan.c
\
cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c
cuboot-katmai.c cuboot-rainier.c redboot-8xx.c ep8248e.c
\
cuboot-warp.c
src-boot
:=
$
(
src-wlib
)
$
(
src-plat
)
empty.c
src-boot
:=
$(
addprefix
$(obj)
/,
$
(
src-boot
))
...
...
@@ -208,6 +209,7 @@ image-$(CONFIG_RAINIER) += cuImage.rainier
image-$(CONFIG_WALNUT)
+=
treeImage.walnut
image-$(CONFIG_TAISHAN)
+=
cuImage.taishan
image-$(CONFIG_KATMAI)
+=
cuImage.katmai
image-$(CONFIG_WARP)
+=
cuImage.warp
endif
ifneq
($(CONFIG_REDBOOT),"")
...
...
arch/powerpc/boot/cuboot-warp.c
0 → 100644
View file @
75e06e2d
/*
* Copyright (c) 2008 PIKA Technologies
* Sean MacLennan <smaclennan@pikatech.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 "4xx.h"
#include "cuboot.h"
#define TARGET_44x
#include "ppcboot.h"
static
bd_t
bd
;
static
void
warp_fixups
(
void
)
{
unsigned
long
sysclk
=
66000000
;
ibm440ep_fixup_clocks
(
sysclk
,
11059200
,
50000000
);
ibm4xx_sdram_fixup_memsize
();
ibm4xx_fixup_ebc_ranges
(
"/plb/opb/ebc"
);
dt_fixup_mac_addresses
(
&
bd
.
bi_enetaddr
);
}
void
platform_init
(
unsigned
long
r3
,
unsigned
long
r4
,
unsigned
long
r5
,
unsigned
long
r6
,
unsigned
long
r7
)
{
CUBOOT_INIT
();
platform_ops
.
fixups
=
warp_fixups
;
platform_ops
.
exit
=
ibm44x_dbcr_reset
;
fdt_init
(
_dtb_start
);
serial_console_init
();
}
arch/powerpc/boot/dts/ebony.dts
View file @
75e06e2d
...
...
@@ -158,9 +158,10 @@
};
};
ds1743
@1,0 {
nvram
@1,0 {
/* NVRAM & RTC */
compatible = "ds1743";
compatible = "ds1743-nvram";
#bytes = <2000>;
reg = <1 0 2000>;
};
...
...
arch/powerpc/boot/dts/haleakala.dts
0 → 100644
View file @
75e06e2d
/*
*
Device
Tree
Source
for
AMCC
Haleakala
(
405
EXr
)
*
*
Copyright
2008
DENX
Software
Engineering
,
Stefan
Roese
<
sr
@
denx
.
de
>
*
*
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
.
*/
/
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
model
=
"amcc,haleakala"
;
compatible
=
"amcc,kilauea"
;
dcr
-
parent
=
<&/
cpus
/
cpu
@
0
>;
aliases
{
ethernet0
=
&
EMAC0
;
serial0
=
&
UART0
;
serial1
=
&
UART1
;
};
cpus
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
cpu
@
0
{
device_type
=
"cpu"
;
model
=
"PowerPC,405EXr"
;
reg
=
<
0
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
timebase
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
i
-
cache
-
line
-
size
=
<
20
>;
d
-
cache
-
line
-
size
=
<
20
>;
i
-
cache
-
size
=
<
4000
>;
/*
16
kB
*/
d
-
cache
-
size
=
<
4000
>;
/*
16
kB
*/
dcr
-
controller
;
dcr
-
access
-
method
=
"native"
;
};
};
memory
{
device_type
=
"memory"
;
reg
=
<
0
0
>;
/*
Filled
in
by
U
-
Boot
*/
};
UIC0
:
interrupt
-
controller
{
compatible
=
"ibm,uic-405exr"
,
"ibm,uic"
;
interrupt
-
controller
;
cell
-
index
=
<
0
>;
dcr
-
reg
=
<
0
c0
009
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
};
UIC1
:
interrupt
-
controller1
{
compatible
=
"ibm,uic-405exr"
,
"ibm,uic"
;
interrupt
-
controller
;
cell
-
index
=
<
1
>;
dcr
-
reg
=
<
0
d0
009
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
interrupts
=
<
1
e
4
1f
4
>;
/*
cascade
*/
interrupt
-
parent
=
<&
UIC0
>;
};
UIC2
:
interrupt
-
controller2
{
compatible
=
"ibm,uic-405exr"
,
"ibm,uic"
;
interrupt
-
controller
;
cell
-
index
=
<
2
>;
dcr
-
reg
=
<
0e0
009
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
interrupts
=
<
1
c
4
1
d
4
>;
/*
cascade
*/
interrupt
-
parent
=
<&
UIC0
>;
};
plb
{
compatible
=
"ibm,plb-405exr"
,
"ibm,plb4"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
ranges
;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
SDRAM0
:
memory
-
controller
{
compatible
=
"ibm,sdram-405exr"
;
dcr
-
reg
=
<
010
2
>;
};
MAL0
:
mcmal
{
compatible
=
"ibm,mcmal-405exr"
,
"ibm,mcmal2"
;
dcr
-
reg
=
<
180
62
>;
num
-
tx
-
chans
=
<
2
>;
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
a
4
/*
RXEOB
*/
1
&
UIC0
b
4
/*
SERR
*/
2
&
UIC1
0
4
/*
TXDE
*/
3
&
UIC1
1
4
/*
RXDE
*/
4
&
UIC1
2
4
>;
interrupt
-
map
-
mask
=
<
ffffffff
>;
};
POB0
:
opb
{
compatible
=
"ibm,opb-405exr"
,
"ibm,opb"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
ranges
=
<
80000000
80000000
10000000
ef600000
ef600000
a00000
f0000000
f0000000
10000000
>;
dcr
-
reg
=
<
0
a0
5
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
EBC0
:
ebc
{
compatible
=
"ibm,ebc-405exr"
,
"ibm,ebc"
;
dcr
-
reg
=
<
012
2
>;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
/*
ranges
property
is
supplied
by
U
-
Boot
*/
interrupts
=
<
5
1
>;
interrupt
-
parent
=
<&
UIC1
>;
nor_flash
@
0
,
0
{
compatible
=
"amd,s29gl512n"
,
"cfi-flash"
;
bank
-
width
=
<
2
>;
reg
=
<
0
000000
4000000
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
partition
@
0
{
label
=
"kernel"
;
reg
=
<
0
200000
>;
};
partition
@
200000
{
label
=
"root"
;
reg
=
<
200000
200000
>;
};
partition
@
400000
{
label
=
"user"
;
reg
=
<
400000
3
b60000
>;
};
partition
@
3f60000
{
label
=
"env"
;
reg
=
<
3f60000
40000
>;
};
partition
@
3f
a0000
{
label
=
"u-boot"
;
reg
=
<
3f
a0000
60000
>;
};
};
};
UART0
:
serial
@
ef600200
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
ef600200
8
>;
virtual
-
reg
=
<
ef600200
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
current
-
speed
=
<
0
>;
interrupt
-
parent
=
<&
UIC0
>;
interrupts
=
<
1
a
4
>;
};
UART1
:
serial
@
ef600300
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
ef600300
8
>;
virtual
-
reg
=
<
ef600300
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
U
-
Boot
*/
current
-
speed
=
<
0
>;
interrupt
-
parent
=
<&
UIC0
>;
interrupts
=
<
1
4
>;
};
IIC0
:
i2c
@
ef600400
{
compatible
=
"ibm,iic-405exr"
,
"ibm,iic"
;
reg
=
<
ef600400
14
>;
interrupt
-
parent
=
<&
UIC0
>;
interrupts
=
<
2
4
>;
};
IIC1
:
i2c
@
ef600500
{
compatible
=
"ibm,iic-405exr"
,
"ibm,iic"
;
reg
=
<
ef600500
14
>;
interrupt
-
parent
=
<&
UIC0
>;
interrupts
=
<
7
4
>;
};
RGMII0
:
emac
-
rgmii
@
ef600b00
{
compatible
=
"ibm,rgmii-405exr"
,
"ibm,rgmii"
;
reg
=
<
ef600b00
104
>;
has
-
mdio
;
};
EMAC0
:
ethernet
@
ef600900
{
linux
,
network
-
index
=
<
0
>;
device_type
=
"network"
;
compatible
=
"ibm,emac-405exr"
,
"ibm,emac4"
;
interrupt
-
parent
=
<&
EMAC0
>;
interrupts
=
<
0
1
>;
#
interrupt
-
cells
=
<
1
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
interrupt
-
map
=
</*
Status
*/
0
&
UIC0
18
4
/*
Wake
*/
1
&
UIC1
1
d
4
>;
reg
=
<
ef600900
70
>;
local
-
mac
-
address
=
[
000000000000
];
/*
Filled
in
by
U
-
Boot
*/
mal
-
device
=
<&
MAL0
>;
mal
-
tx
-
channel
=
<
0
>;
mal
-
rx
-
channel
=
<
0
>;
cell
-
index
=
<
0
>;
max
-
frame
-
size
=
<
5
dc
>;
rx
-
fifo
-
size
=
<
1000
>;
tx
-
fifo
-
size
=
<
800
>;
phy
-
mode
=
"rgmii"
;
phy
-
map
=
<
00000000
>;
rgmii
-
device
=
<&
RGMII0
>;
rgmii
-
channel
=
<
0
>;
has
-
inverted
-
stacr
-
oc
;
has
-
new
-
stacr
-
staopc
;
};
};
PCIE0
:
pciex
@
0
a0000000
{
device_type
=
"pci"
;
#
interrupt
-
cells
=
<
1
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
compatible
=
"ibm,plb-pciex-405exr"
,
"ibm,plb-pciex"
;
primary
;
port
=
<
0
>;
/*
port
number
*/
reg
=
<
a0000000
20000000
/*
Config
space
access
*/
ef000000
00001000
>;
/*
Registers
*/
dcr
-
reg
=
<
040
020
>;
sdr
-
base
=
<
400
>;
/*
Outbound
ranges
,
one
memory
and
one
IO
,
*
later
cannot
be
changed
*/
ranges
=
<
02000000
0
80000000
90000000
0
08000000
01000000
0
00000000
e0000000
0
00010000
>;
/*
Inbound
2
GB
range
starting
at
0
*/
dma
-
ranges
=
<
42000000
0
0
0
0
80000000
>;
/*
This
drives
busses
0x00
to
0x3f
*/
bus
-
range
=
<
00
3f
>;
/*
Legacy
interrupts
(
note
the
weird
polarity
,
the
bridge
seems
*
to
invert
PCIe
legacy
interrupts
).
*
We
are
de
-
swizzling
here
because
the
numbers
are
actually
for
*
port
of
the
root
complex
virtual
P2P
bridge
.
But
I
want
*
to
avoid
putting
a
node
for
it
in
the
tree
,
so
the
numbers
*
below
are
basically
de
-
swizzled
numbers
.
*
The
real
slot
is
on
idsel
0
,
so
the
swizzling
is
1
:
1
*/
interrupt
-
map
-
mask
=
<
0000
0
0
7
>;
interrupt
-
map
=
<
0000
0
0
1
&
UIC2
0
4
/*
swizzled
int
A
*/
0000
0
0
2
&
UIC2
1
4
/*
swizzled
int
B
*/
0000
0
0
3
&
UIC2
2
4
/*
swizzled
int
C
*/
0000
0
0
4
&
UIC2
3
4
/*
swizzled
int
D
*/>;
};
};
};
arch/powerpc/boot/dts/walnut.dts
View file @
75e06e2d
...
...
@@ -175,9 +175,10 @@
};
};
ds1743
@1,0 {
nvram
@1,0 {
/* NVRAM and RTC */
compatible = "ds1743";
compatible = "ds1743-nvram";
#bytes = <2000>;
reg = <1 0 2000>;
};
...
...
arch/powerpc/boot/dts/warp.dts
0 → 100644
View file @
75e06e2d
/*
*
Device
Tree
Source
for
PIKA
Warp
*
*
Copyright
(
c
)
2008
PIKA
Technologies
*
Sean
MacLennan
<
smaclennan
@
pikatech
.
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
.
*/
/
{
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
model
=
"pika,warp"
;
compatible
=
"pika,warp"
;
dcr
-
parent
=
<&/
cpus
/
cpu
@
0
>;
aliases
{
ethernet0
=
&
EMAC0
;
serial0
=
&
UART0
;
};
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
=
<
20
>;
d
-
cache
-
line
-
size
=
<
20
>;
i
-
cache
-
size
=
<
8000
>;
d
-
cache
-
size
=
<
8000
>;
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
=
<
0
c0
009
>;
#
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
=
<
0
d0
009
>;
#
address
-
cells
=
<
0
>;
#
size
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
interrupts
=
<
1
e
4
1f
4
>;
/*
cascade
*/
interrupt
-
parent
=
<&
UIC0
>;
};
SDR0
:
sdr
{
compatible
=
"ibm,sdr-440ep"
;
dcr
-
reg
=
<
00
e
002
>;
};
CPR0
:
cpr
{
compatible
=
"ibm,cpr-440ep"
;
dcr
-
reg
=
<
00
c
002
>;
};
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
=
<
010
2
>;
};
DMA0
:
dma
{
compatible
=
"ibm,dma-440ep"
,
"ibm,dma-440gp"
;
dcr
-
reg
=
<
100
027
>;
};
MAL0
:
mcmal
{
compatible
=
"ibm,mcmal-440ep"
,
"ibm,mcmal-440gp"
,
"ibm,mcmal"
;
dcr
-
reg
=
<
180
62
>;
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
a
4
/*
RXEOB
*/
1
&
UIC0
b
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
>;
ranges
=
<
00000000
0
00000000
80000000
80000000
0
80000000
80000000
>;
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
=
<
012
2
>;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
zImage
*/
interrupts
=
<
5
1
>;
interrupt
-
parent
=
<&
UIC1
>;
fpga
@
2
,
0
{
compatible
=
"pika,fpga"
;
reg
=
<
2
0
2200
>;
interrupts
=
<
18
8
>;
interrupt
-
parent
=
<&
UIC0
>;
};
nor_flash
@
0
,
0
{
compatible
=
"amd,s29gl512n"
,
"cfi-flash"
;
bank
-
width
=
<
2
>;
reg
=
<
0
0
4000000
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
partition
@
0
{
label
=
"kernel"
;
reg
=
<
0
180000
>;
};
partition
@
180000
{
label
=
"root"
;
reg
=
<
180000
3480000
>;
};
partition
@
3600000
{
label
=
"user"
;
reg
=
<
3600000
900000
>;
};
partition
@
3f00000
{
label
=
"fpga"
;
reg
=
<
3f00000
40000
>;
};
partition
@
3f40000
{
label
=
"env"
;
reg
=
<
3f40000
40000
>;
};
partition
@
3f80000
{
label
=
"u-boot"
;
reg
=
<
3f80000
80000
>;
};
};
};
UART0
:
serial
@
ef600300
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
ef600300
8
>;
virtual
-
reg
=
<
ef600300
>;
clock
-
frequency
=
<
0
>;
/*
Filled
in
by
zImage
*/
current
-
speed
=
<
1
c200
>;
interrupt
-
parent
=
<&
UIC0
>;
interrupts
=
<
0
4
>;
};
IIC0
:
i2c
@
ef600700
{
compatible
=
"ibm,iic-440ep"
,
"ibm,iic-440gp"
,
"ibm,iic"
;
reg
=
<
ef600700
14
>;
interrupt
-
parent
=
<&
UIC0
>;
interrupts
=
<
2
4
>;
};
GPIO0
:
gpio
@
ef600b00
{
compatible
=
"ibm,gpio-440ep"
;
reg
=
<
ef600b00
48
>;
};
GPIO1
:
gpio
@
ef600c00
{
compatible
=
"ibm,gpio-440ep"
;
reg
=
<
ef600c00
48
>;
};
ZMII0
:
emac
-
zmii
@
ef600d00
{
compatible
=
"ibm,zmii-440ep"
,
"ibm,zmii-440gp"
,
"ibm,zmii"
;
reg
=
<
ef600d00
c
>;
};
EMAC0
:
ethernet
@
ef600e00
{
linux
,
network
-
index
=
<
0
>;
device_type
=
"network"
;
compatible
=
"ibm,emac-440ep"
,
"ibm,emac-440gp"
,
"ibm,emac"
;
interrupt
-
parent
=
<&
UIC1
>;
interrupts
=
<
1
c
4
1
d
4
>;
reg
=
<
ef600e00
70
>;
local
-
mac
-
address
=
[
000000000000
];
mal
-
device
=
<&
MAL0
>;
mal
-
tx
-
channel
=
<
0
1
>;
mal
-
rx
-
channel
=
<
0
>;
cell
-
index
=
<
0
>;
max
-
frame
-
size
=
<
5
dc
>;
rx
-
fifo
-
size
=
<
1000
>;
tx
-
fifo
-
size
=
<
800
>;
phy
-
mode
=
"rmii"
;
phy
-
map
=
<
00000000
>;
zmii
-
device
=
<&
ZMII0
>;
zmii
-
channel
=
<
0
>;
};
usb
@
ef601000
{
compatible
=
"ohci-be"
;
reg
=
<
ef601000
80
>;
interrupts
=
<
8
1
9
1
>;
interrupt
-
parent
=
<
&
UIC1
>;
};
};
};
chosen
{
linux
,
stdout
-
path
=
"/plb/opb/serial@ef600300"
;
};
};
arch/powerpc/configs/warp_defconfig
0 → 100644
View file @
75e06e2d
This diff is collapsed.
Click to expand it.
arch/powerpc/kernel/cputable.c
View file @
75e06e2d
...
...
@@ -1178,8 +1178,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
platform
=
"ppc405"
,
},
{
/* 405EX */
.
pvr_mask
=
0xffff000
0
,
.
pvr_value
=
0x1291000
0
,
.
pvr_mask
=
0xffff000
4
,
.
pvr_value
=
0x1291000
4
,
.
cpu_name
=
"405EX"
,
.
cpu_features
=
CPU_FTRS_40X
,
.
cpu_user_features
=
PPC_FEATURE_32
|
...
...
@@ -1189,6 +1189,18 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
machine_check
=
machine_check_4xx
,
.
platform
=
"ppc405"
,
},
{
/* 405EXr */
.
pvr_mask
=
0xffff0004
,
.
pvr_value
=
0x12910000
,
.
cpu_name
=
"405EXr"
,
.
cpu_features
=
CPU_FTRS_40X
,
.
cpu_user_features
=
PPC_FEATURE_32
|
PPC_FEATURE_HAS_MMU
|
PPC_FEATURE_HAS_4xxMAC
,
.
icache_bsize
=
32
,
.
dcache_bsize
=
32
,
.
machine_check
=
machine_check_4xx
,
.
platform
=
"ppc405"
,
},
#endif
/* CONFIG_40x */
#ifdef CONFIG_44x
...
...
@@ -1226,6 +1238,18 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
machine_check
=
machine_check_4xx
,
.
platform
=
"ppc440"
,
},
{
/* Matches both physical and logical PVR for 440EP (logical pvr = pvr | 0x8) */
.
pvr_mask
=
0xf0000ff7
,
.
pvr_value
=
0x400008d4
,
.
cpu_name
=
"440EP Rev. C"
,
.
cpu_features
=
CPU_FTRS_44X
,
.
cpu_user_features
=
COMMON_USER_BOOKE
|
PPC_FEATURE_HAS_FPU
,
.
icache_bsize
=
32
,
.
dcache_bsize
=
32
,
.
cpu_setup
=
__setup_cpu_440ep
,
.
machine_check
=
machine_check_4xx
,
.
platform
=
"ppc440"
,
},
{
/* Use logical PVR for 440EP (logical pvr = pvr | 0x8) */
.
pvr_mask
=
0xf0000fff
,
.
pvr_value
=
0x400008db
,
...
...
arch/powerpc/platforms/40x/walnut.c
View file @
75e06e2d
...
...
@@ -36,6 +36,7 @@ static __initdata struct of_device_id walnut_of_bus[] = {
static
int
__init
walnut_device_probe
(
void
)
{
of_platform_bus_probe
(
NULL
,
walnut_of_bus
,
NULL
);
of_instantiate_rtc
();
return
0
;
}
...
...
arch/powerpc/platforms/44x/Kconfig
View file @
75e06e2d
...
...
@@ -13,6 +13,7 @@ config EBONY
default y
select 440GP
select PCI
select OF_RTC
help
This option enables support for the IBM PPC440GP evaluation board.
...
...
@@ -53,6 +54,19 @@ config RAINIER
help
This option enables support for the AMCC PPC440GRX evaluation board.
config WARP
bool "PIKA Warp"
depends on 44x
default n
select 440EP
help
This option enables support for the PIKA Warp(tm) Appliance. The Warp
is a small computer replacement with up to 9 ports of FXO/FXS plus VOIP
stations and trunks.
See http://www.pikatechnologies.com/ and follow the "PIKA for Computer
Telephony Developers" link for more information.
#config LUAN
# bool "Luan"
# depends on 44x
...
...
@@ -75,6 +89,7 @@ config 440EP
select PPC_FPU
select IBM440EP_ERR42
select IBM_NEW_EMAC_ZMII
select USB_ARCH_HAS_OHCI
config 440EPX
bool
...
...
arch/powerpc/platforms/44x/Makefile
View file @
75e06e2d
...
...
@@ -5,3 +5,5 @@ obj-$(CONFIG_BAMBOO) += bamboo.o
obj-$(CONFIG_SEQUOIA)
+=
sequoia.o
obj-$(CONFIG_KATMAI)
+=
katmai.o
obj-$(CONFIG_RAINIER)
+=
rainier.o
obj-$(CONFIG_WARP)
+=
warp.o
obj-$(CONFIG_WARP)
+=
warp-nand.o
arch/powerpc/platforms/44x/ebony.c
View file @
75e06e2d
...
...
@@ -18,6 +18,7 @@
#include <linux/init.h>
#include <linux/of_platform.h>
#include <linux/rtc.h>
#include <asm/machdep.h>
#include <asm/prom.h>
...
...
@@ -38,6 +39,7 @@ static __initdata struct of_device_id ebony_of_bus[] = {
static
int
__init
ebony_device_probe
(
void
)
{
of_platform_bus_probe
(
NULL
,
ebony_of_bus
,
NULL
);
of_instantiate_rtc
();
return
0
;
}
...
...
arch/powerpc/platforms/44x/warp-nand.c
0 → 100644
View file @
75e06e2d
/*
* PIKA Warp(tm) NAND flash specific routines
*
* Copyright (c) 2008 PIKA Technologies
* Sean MacLennan <smaclennan@pikatech.com>
*/
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/ndfc.h>
#ifdef CONFIG_MTD_NAND_NDFC
#define CS_NAND_0 1
/* use chip select 1 for NAND device 0 */
#define WARP_NAND_FLASH_REG_ADDR 0xD0000000UL
#define WARP_NAND_FLASH_REG_SIZE 0x2000
static
struct
resource
warp_ndfc
=
{
.
start
=
WARP_NAND_FLASH_REG_ADDR
,
.
end
=
WARP_NAND_FLASH_REG_ADDR
+
WARP_NAND_FLASH_REG_SIZE
,
.
flags
=
IORESOURCE_MEM
,
};
static
struct
mtd_partition
nand_parts
[]
=
{
{
.
name
=
"kernel"
,
.
offset
=
0
,
.
size
=
0x0200000
},
{
.
name
=
"root"
,
.
offset
=
0x0200000
,
.
size
=
0x3400000
},
{
.
name
=
"user"
,
.
offset
=
0x3600000
,
.
size
=
0x0A00000
},
};
struct
ndfc_controller_settings
warp_ndfc_settings
=
{
.
ccr_settings
=
(
NDFC_CCR_BS
(
CS_NAND_0
)
|
NDFC_CCR_ARAC1
),
.
ndfc_erpn
=
0
,
};
static
struct
ndfc_chip_settings
warp_chip0_settings
=
{
.
bank_settings
=
0x80002222
,
};
struct
platform_nand_ctrl
warp_nand_ctrl
=
{
.
priv
=
&
warp_ndfc_settings
,
};
static
struct
platform_device
warp_ndfc_device
=
{
.
name
=
"ndfc-nand"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
warp_nand_ctrl
,
},
.
num_resources
=
1
,
.
resource
=
&
warp_ndfc
,
};
static
struct
nand_ecclayout
nand_oob_16
=
{
.
eccbytes
=
3
,
.
eccpos
=
{
0
,
1
,
2
,
3
,
6
,
7
},
.
oobfree
=
{
{.
offset
=
8
,
.
length
=
16
}
}
};
static
struct
platform_nand_chip
warp_nand_chip0
=
{
.
nr_chips
=
1
,
.
chip_offset
=
CS_NAND_0
,
.
nr_partitions
=
ARRAY_SIZE
(
nand_parts
),
.
partitions
=
nand_parts
,
.
chip_delay
=
50
,
.
ecclayout
=
&
nand_oob_16
,
.
priv
=
&
warp_chip0_settings
,
};
static
struct
platform_device
warp_nand_device
=
{
.
name
=
"ndfc-chip"
,
.
id
=
0
,
.
num_resources
=
1
,
.
resource
=
&
warp_ndfc
,
.
dev
=
{
.
platform_data
=
&
warp_nand_chip0
,
.
parent
=
&
warp_ndfc_device
.
dev
,
}
};
static
int
warp_setup_nand_flash
(
void
)
{
platform_device_register
(
&
warp_ndfc_device
);
platform_device_register
(
&
warp_nand_device
);
return
0
;
}
device_initcall
(
warp_setup_nand_flash
);
#endif
arch/powerpc/platforms/44x/warp.c
0 → 100644
View file @
75e06e2d
/*
* PIKA Warp(tm) board specific routines
*
* Copyright (c) 2008 PIKA Technologies
* Sean MacLennan <smaclennan@pikatech.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 <linux/kthread.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include "44x.h"
static
__initdata
struct
of_device_id
warp_of_bus
[]
=
{
{
.
compatible
=
"ibm,plb4"
,
},
{
.
compatible
=
"ibm,opb"
,
},
{
.
compatible
=
"ibm,ebc"
,
},
{},
};
static
int
__init
warp_device_probe
(
void
)
{
of_platform_bus_probe
(
NULL
,
warp_of_bus
,
NULL
);
return
0
;
}
machine_device_initcall
(
warp
,
warp_device_probe
);
static
int
__init
warp_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
return
of_flat_dt_is_compatible
(
root
,
"pika,warp"
);
}
define_machine
(
warp
)
{
.
name
=
"Warp"
,
.
probe
=
warp_probe
,
.
progress
=
udbg_progress
,
.
init_IRQ
=
uic_init_tree
,
.
get_irq
=
uic_get_irq
,
.
restart
=
ppc44x_reset_system
,
.
calibrate_decr
=
generic_calibrate_decr
,
};
#define LED_GREEN (0x80000000 >> 0)
#define LED_RED (0x80000000 >> 1)
/* This is for the power LEDs 1 = on, 0 = off, -1 = leave alone */
void
warp_set_power_leds
(
int
green
,
int
red
)
{
static
void
__iomem
*
gpio_base
=
NULL
;
unsigned
leds
;
if
(
gpio_base
==
NULL
)
{
struct
device_node
*
np
;
/* Power LEDS are on the second GPIO controller */
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"ibm,gpio-440EP"
);
if
(
np
)
np
=
of_find_compatible_node
(
np
,
NULL
,
"ibm,gpio-440EP"
);
if
(
np
==
NULL
)
{
printk
(
KERN_ERR
__FILE__
": Unable to find gpio
\n
"
);
return
;
}
gpio_base
=
of_iomap
(
np
,
0
);
of_node_put
(
np
);
if
(
gpio_base
==
NULL
)
{
printk
(
KERN_ERR
__FILE__
": Unable to map gpio"
);
return
;
}
}
leds
=
in_be32
(
gpio_base
);
switch
(
green
)
{
case
0
:
leds
&=
~
LED_GREEN
;
break
;
case
1
:
leds
|=
LED_GREEN
;
break
;
}
switch
(
red
)
{
case
0
:
leds
&=
~
LED_RED
;
break
;
case
1
:
leds
|=
LED_RED
;
break
;
}
out_be32
(
gpio_base
,
leds
);
}
EXPORT_SYMBOL
(
warp_set_power_leds
);
#ifdef CONFIG_SENSORS_AD7414
static
int
pika_dtm_thread
(
void
__iomem
*
fpga
)
{
extern
int
ad7414_get_temp
(
int
index
);
while
(
!
kthread_should_stop
())
{
int
temp
=
ad7414_get_temp
(
0
);
out_be32
(
fpga
,
temp
);
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
HZ
);
}
return
0
;
}
static
int
__init
pika_dtm_start
(
void
)
{
struct
task_struct
*
dtm_thread
;
struct
device_node
*
np
;
struct
resource
res
;
void
__iomem
*
fpga
;
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"pika,fpga"
);
if
(
np
==
NULL
)
return
-
ENOENT
;
/* We do not call of_iomap here since it would map in the entire
* fpga space, which is over 8k.
*/
if
(
of_address_to_resource
(
np
,
0
,
&
res
))
{
of_node_put
(
np
);
return
-
ENOENT
;
}
of_node_put
(
np
);
fpga
=
ioremap
(
res
.
start
+
0x20
,
4
);
if
(
fpga
==
NULL
)
return
-
ENOENT
;
dtm_thread
=
kthread_run
(
pika_dtm_thread
,
fpga
+
0x20
,
"pika-dtm"
);
if
(
IS_ERR
(
dtm_thread
))
{
iounmap
(
fpga
);
return
PTR_ERR
(
dtm_thread
);
}
return
0
;
}
device_initcall
(
pika_dtm_start
);
#endif
arch/powerpc/platforms/Kconfig
View file @
75e06e2d
...
...
@@ -321,6 +321,12 @@ config FSL_ULI1575
config CPM
bool
config OF_RTC
bool
help
Uses information from the OF or flattened device tree to instatiate
platform devices for direct mapped RTC chips like the DS1742 or DS1743.
source "arch/powerpc/sysdev/bestcomm/Kconfig"
endmenu
arch/powerpc/sysdev/Makefile
View file @
75e06e2d
...
...
@@ -28,6 +28,7 @@ obj-$(CONFIG_PPC_I8259) += i8259.o
obj-$(CONFIG_IPIC)
+=
ipic.o
obj-$(CONFIG_4xx)
+=
uic.o
obj-$(CONFIG_XILINX_VIRTEX)
+=
xilinx_intc.o
obj-$(CONFIG_OF_RTC)
+=
of_rtc.o
ifeq
($(CONFIG_PCI),y)
obj-$(CONFIG_4xx)
+=
ppc4xx_pci.o
endif
...
...
arch/powerpc/sysdev/of_rtc.c
0 → 100644
View file @
75e06e2d
/*
* Instantiate mmio-mapped RTC chips based on device tree information
*
* Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
*
* 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/kernel.h>
#include <linux/of.h>
#include <linux/init.h>
#include <linux/of_platform.h>
static
__initdata
struct
{
const
char
*
compatible
;
char
*
plat_name
;
}
of_rtc_table
[]
=
{
{
"ds1743-nvram"
,
"rtc-ds1742"
},
};
void
__init
of_instantiate_rtc
(
void
)
{
struct
device_node
*
node
;
int
err
;
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
of_rtc_table
);
i
++
)
{
char
*
plat_name
=
of_rtc_table
[
i
].
plat_name
;
for_each_compatible_node
(
node
,
NULL
,
of_rtc_table
[
i
].
compatible
)
{
struct
resource
*
res
;
res
=
kmalloc
(
sizeof
(
*
res
),
GFP_KERNEL
);
if
(
!
res
)
{
printk
(
KERN_ERR
"OF RTC: Out of memory "
"allocating resource structure for %s
\n
"
,
node
->
full_name
);
continue
;
}
err
=
of_address_to_resource
(
node
,
0
,
res
);
if
(
err
)
{
printk
(
KERN_ERR
"OF RTC: Error "
"translating resources for %s
\n
"
,
node
->
full_name
);
continue
;
}
printk
(
KERN_INFO
"OF_RTC: %s is a %s @ 0x%llx-0x%llx
\n
"
,
node
->
full_name
,
plat_name
,
(
unsigned
long
long
)
res
->
start
,
(
unsigned
long
long
)
res
->
end
);
platform_device_register_simple
(
plat_name
,
-
1
,
res
,
1
);
}
}
}
include/asm-powerpc/of_platform.h
View file @
75e06e2d
...
...
@@ -37,4 +37,6 @@ extern int of_platform_bus_probe(struct device_node *root,
extern
struct
of_device
*
of_find_device_by_phandle
(
phandle
ph
);
extern
void
of_instantiate_rtc
(
void
);
#endif
/* _ASM_POWERPC_OF_PLATFORM_H */
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