Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
6a4d7a90
Commit
6a4d7a90
authored
Feb 11, 2009
by
Benjamin Herrenschmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge commit 'gcl/next' into next
parents
edbc29d7
bdad0548
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1476 additions
and
545 deletions
+1476
-545
arch/powerpc/boot/Makefile
arch/powerpc/boot/Makefile
+3
-1
arch/powerpc/boot/dts/cm5200.dts
arch/powerpc/boot/dts/cm5200.dts
+11
-38
arch/powerpc/boot/dts/digsy_mtc.dts
arch/powerpc/boot/dts/digsy_mtc.dts
+254
-0
arch/powerpc/boot/dts/lite5200.dts
arch/powerpc/boot/dts/lite5200.dts
+2
-50
arch/powerpc/boot/dts/lite5200b.dts
arch/powerpc/boot/dts/lite5200b.dts
+10
-53
arch/powerpc/boot/dts/media5200.dts
arch/powerpc/boot/dts/media5200.dts
+318
-0
arch/powerpc/boot/dts/motionpro.dts
arch/powerpc/boot/dts/motionpro.dts
+9
-33
arch/powerpc/boot/dts/pcm030.dts
arch/powerpc/boot/dts/pcm030.dts
+68
-114
arch/powerpc/boot/dts/tqm5200.dts
arch/powerpc/boot/dts/tqm5200.dts
+6
-26
arch/powerpc/platforms/52xx/Kconfig
arch/powerpc/platforms/52xx/Kconfig
+11
-1
arch/powerpc/platforms/52xx/Makefile
arch/powerpc/platforms/52xx/Makefile
+2
-1
arch/powerpc/platforms/52xx/media5200.c
arch/powerpc/platforms/52xx/media5200.c
+273
-0
arch/powerpc/platforms/52xx/mpc5200_simple.c
arch/powerpc/platforms/52xx/mpc5200_simple.c
+1
-0
arch/powerpc/platforms/52xx/mpc52xx_gpio.c
arch/powerpc/platforms/52xx/mpc52xx_gpio.c
+0
-85
arch/powerpc/platforms/52xx/mpc52xx_gpt.c
arch/powerpc/platforms/52xx/mpc52xx_gpt.c
+435
-0
arch/powerpc/platforms/52xx/mpc52xx_pic.c
arch/powerpc/platforms/52xx/mpc52xx_pic.c
+59
-111
drivers/net/fec_mpc52xx.c
drivers/net/fec_mpc52xx.c
+3
-3
drivers/serial/mpc52xx_uart.c
drivers/serial/mpc52xx_uart.c
+11
-29
No files found.
arch/powerpc/boot/Makefile
View file @
6a4d7a90
...
...
@@ -235,7 +235,9 @@ image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \
dtbImage.adder875-redboot
# Board ports in arch/powerpc/platform/52xx/Kconfig
image-$(CONFIG_PPC_LITE5200)
+=
cuImage.lite5200 cuImage.lite5200b
image-$(CONFIG_PPC_LITE5200)
+=
cuImage.lite5200 lite5200.dtb
image-$(CONFIG_PPC_LITE5200)
+=
cuImage.lite5200b lite5200b.dtb
image-$(CONFIG_PPC_MEDIA5200)
+=
cuImage.media5200 media5200.dtb
# Board ports in arch/powerpc/platform/82xx/Kconfig
image-$(CONFIG_MPC8272_ADS)
+=
cuImage.mpc8272ads
...
...
arch/powerpc/boot/dts/cm5200.dts
View file @
6a4d7a90
...
...
@@ -17,6 +17,7 @@ / {
compatible
=
"schindler,cm5200"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
@@ -66,7 +67,6 @@ timer@600 { // General Purpose Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl
,
has
-
wdt
;
};
...
...
@@ -74,84 +74,76 @@ timer@610 { // General Purpose Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x610
0x10
>;
interrupts
=
<
1
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
620
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x620
0x10
>;
interrupts
=
<
1
11
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
630
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x630
0x10
>;
interrupts
=
<
1
12
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
640
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x640
0x10
>;
interrupts
=
<
1
13
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
650
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x650
0x10
>;
interrupts
=
<
1
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
660
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x660
0x10
>;
interrupts
=
<
1
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
670
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x670
0x10
>;
interrupts
=
<
1
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
rtc
@
800
{
//
Real
time
clock
compatible
=
"fsl,mpc5200b-rtc"
,
"fsl,mpc5200-rtc"
;
reg
=
<
0x800
0x100
>;
interrupts
=
<
1
5
0
1
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
gpio
@
b00
{
gpio
_simple
:
gpio
@
b00
{
compatible
=
"fsl,mpc5200b-gpio"
,
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
gpio
@
c00
{
gpio
_wkup
:
gpio
@
c00
{
compatible
=
"fsl,mpc5200b-gpio-wkup"
,
"fsl,mpc5200-gpio-wkup"
;
reg
=
<
0xc00
0x40
>;
interrupts
=
<
1
8
0
0
3
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
spi
@
f00
{
compatible
=
"fsl,mpc5200b-spi"
,
"fsl,mpc5200-spi"
;
reg
=
<
0xf00
0x20
>;
interrupts
=
<
2
13
0
2
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200b-ohci"
,
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0xff
>;
interrupts
=
<
2
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
dma
-
controller
@
1200
{
...
...
@@ -161,7 +153,6 @@ dma-controller@1200 {
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
xlb
@
1f00
{
...
...
@@ -170,48 +161,34 @@ xlb@1f00 {
};
serial
@
2000
{
//
PSC1
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
0
>;
//
Logical
port
assignment
reg
=
<
0x2000
0x100
>;
interrupts
=
<
2
1
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
serial
@
2200
{
//
PSC2
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
1
>;
//
Logical
port
assignment
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
reg
=
<
0x2200
0x100
>;
interrupts
=
<
2
2
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
serial
@
2400
{
//
PSC3
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
2
>;
//
Logical
port
assignment
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
reg
=
<
0x2400
0x100
>;
interrupts
=
<
2
3
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
serial
@
2
c00
{
//
PSC6
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
5
>;
//
Logical
port
assignment
reg
=
<
0x2c00
0x100
>;
interrupts
=
<
2
4
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
ethernet
@
3000
{
device_type
=
"network"
;
compatible
=
"fsl,mpc5200b-fec"
,
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy
-
handle
=
<&
phy0
>;
};
...
...
@@ -221,10 +198,8 @@ mdio@3000 {
compatible
=
"fsl,mpc5200b-mdio"
,
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy0
:
ethernet
-
phy
@
0
{
device_type
=
"ethernet-phy"
;
reg
=
<
0
>;
};
};
...
...
@@ -235,7 +210,6 @@ i2c@3d40 {
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
reg
=
<
0x3d40
0x40
>;
interrupts
=
<
2
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
};
...
...
@@ -245,9 +219,8 @@ sram@8000 {
};
};
lpb
{
model
=
"fsl,lpb"
;
compatible
=
"fsl,lpb"
;
localbus
{
compatible
=
"fsl,mpc5200b-lpb"
,
"simple-bus"
;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
ranges
=
<
0
0
0xfc000000
0x2000000
>;
...
...
arch/powerpc/boot/dts/digsy_mtc.dts
0 → 100644
View file @
6a4d7a90
/*
*
Digsy
MTC
board
Device
Tree
Source
*
*
Copyright
(
C
)
2009
Semihalf
*
*
Based
on
the
CM5200
by
M
.
Balakowicz
*
*
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
.
*/
/
dts
-
v1
/;
/
{
model
=
"intercontrol,digsy-mtc"
;
compatible
=
"intercontrol,digsy-mtc"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
cpus
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
PowerPC
,
5200
@
0
{
device_type
=
"cpu"
;
reg
=
<
0
>;
d
-
cache
-
line
-
size
=
<
32
>;
i
-
cache
-
line
-
size
=
<
32
>;
d
-
cache
-
size
=
<
0x4000
>;
//
L1
,
16
K
i
-
cache
-
size
=
<
0x4000
>;
//
L1
,
16
K
timebase
-
frequency
=
<
0
>;
//
from
bootloader
bus
-
frequency
=
<
0
>;
//
from
bootloader
clock
-
frequency
=
<
0
>;
//
from
bootloader
};
};
memory
{
device_type
=
"memory"
;
reg
=
<
0x00000000
0x02000000
>;
//
32
MB
};
soc5200
@
f0000000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"fsl,mpc5200b-immr"
;
ranges
=
<
0
0xf0000000
0x0000c000
>;
reg
=
<
0xf0000000
0x00000100
>;
bus
-
frequency
=
<
0
>;
//
from
bootloader
system
-
frequency
=
<
0
>;
//
from
bootloader
cdm
@
200
{
compatible
=
"fsl,mpc5200b-cdm"
,
"fsl,mpc5200-cdm"
;
reg
=
<
0x200
0x38
>;
};
mpc5200_pic
:
interrupt
-
controller
@
500
{
//
5200
interrupts
are
encoded
into
two
levels
;
interrupt
-
controller
;
#
interrupt
-
cells
=
<
3
>;
compatible
=
"fsl,mpc5200b-pic"
,
"fsl,mpc5200-pic"
;
reg
=
<
0x500
0x80
>;
};
timer
@
600
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
fsl
,
has
-
wdt
;
};
timer
@
610
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x610
0x10
>;
interrupts
=
<
1
10
0
>;
};
timer
@
620
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x620
0x10
>;
interrupts
=
<
1
11
0
>;
};
timer
@
630
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x630
0x10
>;
interrupts
=
<
1
12
0
>;
};
timer
@
640
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x640
0x10
>;
interrupts
=
<
1
13
0
>;
};
timer
@
650
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x650
0x10
>;
interrupts
=
<
1
14
0
>;
};
timer
@
660
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x660
0x10
>;
interrupts
=
<
1
15
0
>;
};
timer
@
670
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x670
0x10
>;
interrupts
=
<
1
16
0
>;
};
gpio_simple
:
gpio
@
b00
{
compatible
=
"fsl,mpc5200b-gpio"
,
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
gpio_wkup
:
gpio
@
c00
{
compatible
=
"fsl,mpc5200b-gpio-wkup"
,
"fsl,mpc5200-gpio-wkup"
;
reg
=
<
0xc00
0x40
>;
interrupts
=
<
1
8
0
0
3
0
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
spi
@
f00
{
compatible
=
"fsl,mpc5200b-spi"
,
"fsl,mpc5200-spi"
;
reg
=
<
0xf00
0x20
>;
interrupts
=
<
2
13
0
2
14
0
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200b-ohci"
,
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0xff
>;
interrupts
=
<
2
6
0
>;
};
dma
-
controller
@
1200
{
compatible
=
"fsl,mpc5200b-bestcomm"
,
"fsl,mpc5200-bestcomm"
;
reg
=
<
0x1200
0x80
>;
interrupts
=
<
3
0
0
3
1
0
3
2
0
3
3
0
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
};
xlb
@
1f00
{
compatible
=
"fsl,mpc5200b-xlb"
,
"fsl,mpc5200-xlb"
;
reg
=
<
0x1f00
0x100
>;
};
serial
@
2400
{
//
PSC3
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
reg
=
<
0x2400
0x100
>;
interrupts
=
<
2
3
0
>;
};
serial
@
2600
{
//
PSC4
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
reg
=
<
0x2600
0x100
>;
interrupts
=
<
2
11
0
>;
};
ethernet
@
3000
{
compatible
=
"fsl,mpc5200b-fec"
,
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
phy
-
handle
=
<&
phy0
>;
};
mdio
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-mdio"
,
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
phy0
:
ethernet
-
phy
@
0
{
reg
=
<
0
>;
};
};
ata
@
3
a00
{
compatible
=
"fsl,mpc5200b-ata"
,
"fsl,mpc5200-ata"
;
reg
=
<
0x3a00
0x100
>;
interrupts
=
<
2
7
0
>;
};
i2c
@
3
d00
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
reg
=
<
0x3d00
0x40
>;
interrupts
=
<
2
15
0
>;
fsl5200
-
clocking
;
rtc
@
50
{
compatible
=
"at,24c08"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1339"
;
reg
=
<
0x68
>;
};
};
sram
@
8000
{
compatible
=
"fsl,mpc5200b-sram"
,
"fsl,mpc5200-sram"
;
reg
=
<
0x8000
0x4000
>;
};
};
lpb
{
compatible
=
"fsl,mpc5200b-lpb"
,
"simple-bus"
;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
ranges
=
<
0
0
0xff000000
0x1000000
>;
//
16
-
bit
flash
device
at
LocalPlus
Bus
CS0
flash
@
0
,
0
{
compatible
=
"cfi-flash"
;
reg
=
<
0
0
0x1000000
>;
bank
-
width
=
<
2
>;
device
-
width
=
<
2
>;
#
size
-
cells
=
<
1
>;
#
address
-
cells
=
<
1
>;
partition
@
0
{
label
=
"kernel"
;
reg
=
<
0x0
0x00200000
>;
};
partition
@
200000
{
label
=
"root"
;
reg
=
<
0x00200000
0x00300000
>;
};
partition
@
500000
{
label
=
"user"
;
reg
=
<
0x00500000
0x00a00000
>;
};
partition
@
f00000
{
label
=
"u-boot"
;
reg
=
<
0x00f00000
0x100000
>;
};
};
};
};
arch/powerpc/boot/dts/lite5200.dts
View file @
6a4d7a90
...
...
@@ -17,6 +17,7 @@ / {
compatible
=
"fsl,lite5200"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
@@ -58,96 +59,74 @@ mpc5200_pic: interrupt-controller@500 {
//
5200
interrupts
are
encoded
into
two
levels
;
interrupt
-
controller
;
#
interrupt
-
cells
=
<
3
>;
device_type
=
"interrupt-controller"
;
compatible
=
"fsl,mpc5200-pic"
;
reg
=
<
0x500
0x80
>;
};
timer
@
600
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
0
>;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl
,
has
-
wdt
;
};
timer
@
610
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
1
>;
reg
=
<
0x610
0x10
>;
interrupts
=
<
1
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
620
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
2
>;
reg
=
<
0x620
0x10
>;
interrupts
=
<
1
11
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
630
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
3
>;
reg
=
<
0x630
0x10
>;
interrupts
=
<
1
12
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
640
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
4
>;
reg
=
<
0x640
0x10
>;
interrupts
=
<
1
13
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
650
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
5
>;
reg
=
<
0x650
0x10
>;
interrupts
=
<
1
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
660
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
6
>;
reg
=
<
0x660
0x10
>;
interrupts
=
<
1
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
670
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
7
>;
reg
=
<
0x670
0x10
>;
interrupts
=
<
1
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
rtc
@
800
{
//
Real
time
clock
compatible
=
"fsl,mpc5200-rtc"
;
reg
=
<
0x800
0x100
>;
interrupts
=
<
1
5
0
1
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
can
@
900
{
compatible
=
"fsl,mpc5200-mscan"
;
cell
-
index
=
<
0
>;
interrupts
=
<
2
17
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x900
0x80
>;
};
can
@
980
{
compatible
=
"fsl,mpc5200-mscan"
;
cell
-
index
=
<
1
>;
interrupts
=
<
2
18
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x980
0x80
>;
};
...
...
@@ -155,39 +134,33 @@ gpio@b00 {
compatible
=
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
gpio
@
c00
{
compatible
=
"fsl,mpc5200-gpio-wkup"
;
reg
=
<
0xc00
0x40
>;
interrupts
=
<
1
8
0
0
3
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
spi
@
f00
{
compatible
=
"fsl,mpc5200-spi"
;
reg
=
<
0xf00
0x20
>;
interrupts
=
<
2
13
0
2
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0xff
>;
interrupts
=
<
2
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
dma
-
controller
@
1200
{
device_type
=
"dma-controller"
;
compatible
=
"fsl,mpc5200-bestcomm"
;
reg
=
<
0x1200
0x80
>;
interrupts
=
<
3
0
0
3
1
0
3
2
0
3
3
0
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
xlb
@
1f00
{
...
...
@@ -196,13 +169,10 @@ xlb@1f00 {
};
serial
@
2000
{
//
PSC1
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
0
>;
//
Logical
port
assignment
cell
-
index
=
<
0
>;
reg
=
<
0x2000
0x100
>;
interrupts
=
<
2
1
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
//
PSC2
in
ac97
mode
example
...
...
@@ -211,7 +181,6 @@ serial@2000 { // PSC1
//
cell
-
index
=
<
1
>;
//
reg
=
<
0x2200
0x100
>;
//
interrupts
=
<
2
2
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC3
in
CODEC
mode
example
...
...
@@ -220,27 +189,22 @@ serial@2000 { // PSC1
//
cell
-
index
=
<
2
>;
//
reg
=
<
0x2400
0x100
>;
//
interrupts
=
<
2
3
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC4
in
uart
mode
example
//
serial
@
2600
{
//
PSC4
//
device_type
=
"serial"
;
//
compatible
=
"fsl,mpc5200-psc-uart"
;
//
cell
-
index
=
<
3
>;
//
reg
=
<
0x2600
0x100
>;
//
interrupts
=
<
2
11
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC5
in
uart
mode
example
//
serial
@
2800
{
//
PSC5
//
device_type
=
"serial"
;
//
compatible
=
"fsl,mpc5200-psc-uart"
;
//
cell
-
index
=
<
4
>;
//
reg
=
<
0x2800
0x100
>;
//
interrupts
=
<
2
12
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC6
in
spi
mode
example
...
...
@@ -249,16 +213,13 @@ serial@2000 { // PSC1
//
cell
-
index
=
<
5
>;
//
reg
=
<
0x2c00
0x100
>;
//
interrupts
=
<
2
4
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
ethernet
@
3000
{
device_type
=
"network"
;
compatible
=
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy
-
handle
=
<&
phy0
>;
};
...
...
@@ -268,30 +229,24 @@ mdio@3000 {
compatible
=
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy0
:
ethernet
-
phy
@
1
{
device_type
=
"ethernet-phy"
;
reg
=
<
1
>;
};
};
ata
@
3
a00
{
device_type
=
"ata"
;
compatible
=
"fsl,mpc5200-ata"
;
reg
=
<
0x3a00
0x100
>;
interrupts
=
<
2
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
i2c
@
3
d00
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
cell
-
index
=
<
0
>;
reg
=
<
0x3d00
0x40
>;
interrupts
=
<
2
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
};
...
...
@@ -299,14 +254,12 @@ i2c@3d40 {
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
cell
-
index
=
<
1
>;
reg
=
<
0x3d40
0x40
>;
interrupts
=
<
2
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
};
sram
@
8000
{
compatible
=
"fsl,mpc5200-sram"
,
"sram"
;
compatible
=
"fsl,mpc5200-sram"
;
reg
=
<
0x8000
0x4000
>;
};
};
...
...
@@ -325,7 +278,6 @@ pci@f0000d00 {
0xc000
0
0
4
&
mpc5200_pic
0
0
3
>;
clock
-
frequency
=
<
0
>;
//
From
boot
loader
interrupts
=
<
2
8
0
2
9
0
2
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
bus
-
range
=
<
0
0
>;
ranges
=
<
0x42000000
0
0x80000000
0x80000000
0
0x20000000
0x02000000
0
0xa0000000
0xa0000000
0
0x10000000
...
...
arch/powerpc/boot/dts/lite5200b.dts
View file @
6a4d7a90
...
...
@@ -17,6 +17,7 @@ / {
compatible
=
"fsl,lite5200b"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
@@ -58,136 +59,112 @@ mpc5200_pic: interrupt-controller@500 {
//
5200
interrupts
are
encoded
into
two
levels
;
interrupt
-
controller
;
#
interrupt
-
cells
=
<
3
>;
device_type
=
"interrupt-controller"
;
compatible
=
"fsl,mpc5200b-pic"
,
"fsl,mpc5200-pic"
;
reg
=
<
0x500
0x80
>;
};
timer
@
600
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
0
>;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl
,
has
-
wdt
;
};
timer
@
610
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
1
>;
reg
=
<
0x610
0x10
>;
interrupts
=
<
1
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
620
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
2
>;
reg
=
<
0x620
0x10
>;
interrupts
=
<
1
11
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
630
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
3
>;
reg
=
<
0x630
0x10
>;
interrupts
=
<
1
12
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
640
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
4
>;
reg
=
<
0x640
0x10
>;
interrupts
=
<
1
13
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
650
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
5
>;
reg
=
<
0x650
0x10
>;
interrupts
=
<
1
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
660
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
6
>;
reg
=
<
0x660
0x10
>;
interrupts
=
<
1
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
670
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
cell
-
index
=
<
7
>;
reg
=
<
0x670
0x10
>;
interrupts
=
<
1
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
rtc
@
800
{
//
Real
time
clock
compatible
=
"fsl,mpc5200b-rtc"
,
"fsl,mpc5200-rtc"
;
reg
=
<
0x800
0x100
>;
interrupts
=
<
1
5
0
1
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
can
@
900
{
compatible
=
"fsl,mpc5200b-mscan"
,
"fsl,mpc5200-mscan"
;
cell
-
index
=
<
0
>;
interrupts
=
<
2
17
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x900
0x80
>;
};
can
@
980
{
compatible
=
"fsl,mpc5200b-mscan"
,
"fsl,mpc5200-mscan"
;
cell
-
index
=
<
1
>;
interrupts
=
<
2
18
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x980
0x80
>;
};
gpio
@
b00
{
gpio
_simple
:
gpio
@
b00
{
compatible
=
"fsl,mpc5200b-gpio"
,
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
gpio
@
c00
{
gpio
_wkup
:
gpio
@
c00
{
compatible
=
"fsl,mpc5200b-gpio-wkup"
,
"fsl,mpc5200-gpio-wkup"
;
reg
=
<
0xc00
0x40
>;
interrupts
=
<
1
8
0
0
3
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
spi
@
f00
{
compatible
=
"fsl,mpc5200b-spi"
,
"fsl,mpc5200-spi"
;
reg
=
<
0xf00
0x20
>;
interrupts
=
<
2
13
0
2
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200b-ohci"
,
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0xff
>;
interrupts
=
<
2
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
dma
-
controller
@
1200
{
device_type
=
"dma-controller"
;
compatible
=
"fsl,mpc5200b-bestcomm"
,
"fsl,mpc5200-bestcomm"
;
reg
=
<
0x1200
0x80
>;
interrupts
=
<
3
0
0
3
1
0
3
2
0
3
3
0
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
xlb
@
1f00
{
...
...
@@ -196,13 +173,10 @@ xlb@1f00 {
};
serial
@
2000
{
//
PSC1
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
0
>;
//
Logical
port
assignment
cell
-
index
=
<
0
>;
reg
=
<
0x2000
0x100
>;
interrupts
=
<
2
1
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
//
PSC2
in
ac97
mode
example
...
...
@@ -211,7 +185,6 @@ serial@2000 { // PSC1
//
cell
-
index
=
<
1
>;
//
reg
=
<
0x2200
0x100
>;
//
interrupts
=
<
2
2
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC3
in
CODEC
mode
example
...
...
@@ -220,27 +193,22 @@ serial@2000 { // PSC1
//
cell
-
index
=
<
2
>;
//
reg
=
<
0x2400
0x100
>;
//
interrupts
=
<
2
3
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC4
in
uart
mode
example
//
serial
@
2600
{
//
PSC4
//
device_type
=
"serial"
;
//
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
//
cell
-
index
=
<
3
>;
//
reg
=
<
0x2600
0x100
>;
//
interrupts
=
<
2
11
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC5
in
uart
mode
example
//
serial
@
2800
{
//
PSC5
//
device_type
=
"serial"
;
//
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
//
cell
-
index
=
<
4
>;
//
reg
=
<
0x2800
0x100
>;
//
interrupts
=
<
2
12
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
//
PSC6
in
spi
mode
example
...
...
@@ -249,49 +217,40 @@ serial@2000 { // PSC1
//
cell
-
index
=
<
5
>;
//
reg
=
<
0x2c00
0x100
>;
//
interrupts
=
<
2
4
0
>;
//
interrupt
-
parent
=
<&
mpc5200_pic
>;
//};
ethernet
@
3000
{
device_type
=
"network"
;
compatible
=
"fsl,mpc5200b-fec"
,
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy
-
handle
=
<&
phy0
>;
};
mdio
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-mdio"
,
"fsl,mpc5200-mdio"
;
compatible
=
"fsl,mpc5200b-mdio"
,
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy0
:
ethernet
-
phy
@
0
{
device_type
=
"ethernet-phy"
;
reg
=
<
0
>;
};
};
ata
@
3
a00
{
device_type
=
"ata"
;
compatible
=
"fsl,mpc5200b-ata"
,
"fsl,mpc5200-ata"
;
reg
=
<
0x3a00
0x100
>;
interrupts
=
<
2
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
i2c
@
3
d00
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
cell
-
index
=
<
0
>;
reg
=
<
0x3d00
0x40
>;
interrupts
=
<
2
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
};
...
...
@@ -299,14 +258,13 @@ i2c@3d40 {
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
cell
-
index
=
<
1
>;
reg
=
<
0x3d40
0x40
>;
interrupts
=
<
2
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
};
sram
@
8000
{
compatible
=
"fsl,mpc5200b-sram"
,
"fsl,mpc5200-sram"
,
"sram"
;
compatible
=
"fsl,mpc5200b-sram"
,
"fsl,mpc5200-sram"
;
reg
=
<
0x8000
0x4000
>;
};
};
...
...
@@ -330,7 +288,6 @@ pci@f0000d00 {
0xc800
0
0
4
&
mpc5200_pic
0
0
3
>;
clock
-
frequency
=
<
0
>;
//
From
boot
loader
interrupts
=
<
2
8
0
2
9
0
2
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
bus
-
range
=
<
0
0
>;
ranges
=
<
0x42000000
0
0x80000000
0x80000000
0
0x20000000
0x02000000
0
0xa0000000
0xa0000000
0
0x10000000
...
...
arch/powerpc/boot/dts/media5200.dts
0 → 100644
View file @
6a4d7a90
/*
*
Freescale
Media5200
board
Device
Tree
Source
*
*
Copyright
2009
Secret
Lab
Technologies
Ltd
.
*
Grant
Likely
<
grant
.
likely
@
secretlab
.
ca
>
*
Steven
Cavanagh
<
scavanagh
@
secretlab
.
ca
>
*
*
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
.
*/
/
dts
-
v1
/;
/
{
model
=
"fsl,media5200"
;
compatible
=
"fsl,media5200"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
aliases
{
console
=
&
console
;
ethernet0
=
&
eth0
;
};
chosen
{
linux
,
stdout
-
path
=
&
console
;
};
cpus
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
PowerPC
,
5200
@
0
{
device_type
=
"cpu"
;
reg
=
<
0
>;
d
-
cache
-
line
-
size
=
<
32
>;
i
-
cache
-
line
-
size
=
<
32
>;
d
-
cache
-
size
=
<
0x4000
>;
//
L1
,
16
K
i
-
cache
-
size
=
<
0x4000
>;
//
L1
,
16
K
timebase
-
frequency
=
<
33000000
>;
//
33
MHz
,
these
were
configured
by
U
-
Boot
bus
-
frequency
=
<
132000000
>;
//
132
MHz
clock
-
frequency
=
<
396000000
>;
//
396
MHz
};
};
memory
{
device_type
=
"memory"
;
reg
=
<
0x00000000
0x08000000
>;
//
128
MB
RAM
};
soc
@
f0000000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"fsl,mpc5200b-immr"
;
ranges
=
<
0
0xf0000000
0x0000c000
>;
reg
=
<
0xf0000000
0x00000100
>;
bus
-
frequency
=
<
132000000
>;//
132
MHz
system
-
frequency
=
<
0
>;
//
from
bootloader
cdm
@
200
{
compatible
=
"fsl,mpc5200b-cdm"
,
"fsl,mpc5200-cdm"
;
reg
=
<
0x200
0x38
>;
};
mpc5200_pic
:
interrupt
-
controller
@
500
{
//
5200
interrupts
are
encoded
into
two
levels
;
interrupt
-
controller
;
#
interrupt
-
cells
=
<
3
>;
compatible
=
"fsl,mpc5200b-pic"
,
"fsl,mpc5200-pic"
;
reg
=
<
0x500
0x80
>;
};
timer
@
600
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
fsl
,
has
-
wdt
;
};
timer
@
610
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x610
0x10
>;
interrupts
=
<
1
10
0
>;
};
timer
@
620
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x620
0x10
>;
interrupts
=
<
1
11
0
>;
};
timer
@
630
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x630
0x10
>;
interrupts
=
<
1
12
0
>;
};
timer
@
640
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x640
0x10
>;
interrupts
=
<
1
13
0
>;
};
timer
@
650
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x650
0x10
>;
interrupts
=
<
1
14
0
>;
};
timer
@
660
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x660
0x10
>;
interrupts
=
<
1
15
0
>;
};
timer
@
670
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x670
0x10
>;
interrupts
=
<
1
16
0
>;
};
rtc
@
800
{
//
Real
time
clock
compatible
=
"fsl,mpc5200b-rtc"
,
"fsl,mpc5200-rtc"
;
reg
=
<
0x800
0x100
>;
interrupts
=
<
1
5
0
1
6
0
>;
};
can
@
900
{
compatible
=
"fsl,mpc5200b-mscan"
,
"fsl,mpc5200-mscan"
;
interrupts
=
<
2
17
0
>;
reg
=
<
0x900
0x80
>;
};
can
@
980
{
compatible
=
"fsl,mpc5200b-mscan"
,
"fsl,mpc5200-mscan"
;
interrupts
=
<
2
18
0
>;
reg
=
<
0x980
0x80
>;
};
gpio_simple
:
gpio
@
b00
{
compatible
=
"fsl,mpc5200b-gpio"
,
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
gpio_wkup
:
gpio
@
c00
{
compatible
=
"fsl,mpc5200b-gpio-wkup"
,
"fsl,mpc5200-gpio-wkup"
;
reg
=
<
0xc00
0x40
>;
interrupts
=
<
1
8
0
0
3
0
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
spi
@
f00
{
compatible
=
"fsl,mpc5200b-spi"
,
"fsl,mpc5200-spi"
;
reg
=
<
0xf00
0x20
>;
interrupts
=
<
2
13
0
2
14
0
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200b-ohci"
,
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0x100
>;
interrupts
=
<
2
6
0
>;
};
dma
-
controller
@
1200
{
compatible
=
"fsl,mpc5200b-bestcomm"
,
"fsl,mpc5200-bestcomm"
;
reg
=
<
0x1200
0x80
>;
interrupts
=
<
3
0
0
3
1
0
3
2
0
3
3
0
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
};
xlb
@
1f00
{
compatible
=
"fsl,mpc5200b-xlb"
,
"fsl,mpc5200-xlb"
;
reg
=
<
0x1f00
0x100
>;
};
//
PSC6
in
uart
mode
console
:
serial
@
2
c00
{
//
PSC6
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
cell
-
index
=
<
5
>;
port
-
number
=
<
0
>;
//
Logical
port
assignment
reg
=
<
0x2c00
0x100
>;
interrupts
=
<
2
4
0
>;
};
eth0
:
ethernet
@
3000
{
compatible
=
"fsl,mpc5200b-fec"
,
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
phy
-
handle
=
<&
phy0
>;
};
mdio
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-mdio"
,
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
phy0
:
ethernet
-
phy
@
0
{
reg
=
<
0
>;
};
};
ata
@
3
a00
{
compatible
=
"fsl,mpc5200b-ata"
,
"fsl,mpc5200-ata"
;
reg
=
<
0x3a00
0x100
>;
interrupts
=
<
2
7
0
>;
};
i2c
@
3
d00
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
reg
=
<
0x3d00
0x40
>;
interrupts
=
<
2
15
0
>;
fsl5200
-
clocking
;
};
i2c
@
3
d40
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
reg
=
<
0x3d40
0x40
>;
interrupts
=
<
2
16
0
>;
fsl5200
-
clocking
;
};
sram
@
8000
{
compatible
=
"fsl,mpc5200b-sram"
,
"fsl,mpc5200-sram"
;
reg
=
<
0x8000
0x4000
>;
};
};
pci
@
f0000d00
{
#
interrupt
-
cells
=
<
1
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc5200b-pci"
,
"fsl,mpc5200-pci"
;
reg
=
<
0xf0000d00
0x100
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0xc000
0
0
1
&
media5200_fpga
0
2
//
1
st
slot
0xc000
0
0
2
&
media5200_fpga
0
3
0xc000
0
0
3
&
media5200_fpga
0
4
0xc000
0
0
4
&
media5200_fpga
0
5
0xc800
0
0
1
&
media5200_fpga
0
3
//
2
nd
slot
0xc800
0
0
2
&
media5200_fpga
0
4
0xc800
0
0
3
&
media5200_fpga
0
5
0xc800
0
0
4
&
media5200_fpga
0
2
0xd000
0
0
1
&
media5200_fpga
0
4
//
miniPCI
0xd000
0
0
2
&
media5200_fpga
0
5
0xe000
0
0
1
&
media5200_fpga
0
5
//
CoralIP
>;
clock
-
frequency
=
<
0
>;
//
From
boot
loader
interrupts
=
<
2
8
0
2
9
0
2
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
bus
-
range
=
<
0
0
>;
ranges
=
<
0x42000000
0
0x80000000
0x80000000
0
0x20000000
0x02000000
0
0xa0000000
0xa0000000
0
0x10000000
0x01000000
0
0x00000000
0xb0000000
0
0x01000000
>;
};
localbus
{
compatible
=
"fsl,mpc5200b-lpb"
,
"simple-bus"
;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
ranges
=
<
0
0
0xfc000000
0x02000000
1
0
0xfe000000
0x02000000
2
0
0xf0010000
0x00010000
3
0
0xf0020000
0x00010000
>;
flash
@
0
,
0
{
compatible
=
"amd,am29lv28ml"
,
"cfi-flash"
;
reg
=
<
0
0x0
0x2000000
>;
//
32
MB
bank
-
width
=
<
4
>;
//
Width
in
bytes
of
the
flash
bank
device
-
width
=
<
2
>;
//
Two
devices
on
each
bank
};
flash
@
1
,
0
{
compatible
=
"amd,am29lv28ml"
,
"cfi-flash"
;
reg
=
<
1
0
0x2000000
>;
//
32
MB
bank
-
width
=
<
4
>;
//
Width
in
bytes
of
the
flash
bank
device
-
width
=
<
2
>;
//
Two
devices
on
each
bank
};
media5200_fpga
:
fpga
@
2
,
0
{
compatible
=
"fsl,media5200-fpga"
;
interrupt
-
controller
;
#
interrupt
-
cells
=
<
2
>;
//
0
:
bank
1
:
id
;
no
type
field
reg
=
<
2
0
0x10000
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
interrupts
=
<
0
0
3
//
IRQ
bank
0
1
1
3
>;
//
IRQ
bank
1
};
uart
@
3
,
0
{
compatible
=
"ti,tl16c752bpt"
;
reg
=
<
3
0
0x10000
>;
interrupt
-
parent
=
<&
media5200_fpga
>;
interrupts
=
<
0
0
0
1
>;
//
2
irqs
};
};
};
arch/powerpc/boot/dts/motionpro.dts
View file @
6a4d7a90
...
...
@@ -17,6 +17,7 @@ / {
compatible
=
"promess,motionpro"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
@@ -66,7 +67,6 @@ timer@600 { // General Purpose Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl
,
has
-
wdt
;
};
...
...
@@ -74,35 +74,30 @@ timer@610 { // General Purpose Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x610
0x10
>;
interrupts
=
<
1
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
620
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x620
0x10
>;
interrupts
=
<
1
11
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
630
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x630
0x10
>;
interrupts
=
<
1
12
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
640
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x640
0x10
>;
interrupts
=
<
1
13
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
timer
@
650
{
//
General
Purpose
Timer
compatible
=
"fsl,mpc5200b-gpt"
,
"fsl,mpc5200-gpt"
;
reg
=
<
0x650
0x10
>;
interrupts
=
<
1
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
motionpro
-
led
@
660
{
//
Motion
-
PRO
status
LED
...
...
@@ -110,7 +105,6 @@ motionpro-led@660 { // Motion-PRO status LED
label
=
"motionpro-statusled"
;
reg
=
<
0x660
0x10
>;
interrupts
=
<
1
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
blink
-
delay
=
<
100
>;
//
100
msec
};
...
...
@@ -119,49 +113,46 @@ motionpro-led@670 { // Motion-PRO ready LED
label
=
"motionpro-readyled"
;
reg
=
<
0x670
0x10
>;
interrupts
=
<
1
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
rtc
@
800
{
//
Real
time
clock
compatible
=
"fsl,mpc5200b-rtc"
,
"fsl,mpc5200-rtc"
;
reg
=
<
0x800
0x100
>;
interrupts
=
<
1
5
0
1
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
can
@
980
{
compatible
=
"fsl,mpc5200b-mscan"
,
"fsl,mpc5200-mscan"
;
interrupts
=
<
2
18
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x980
0x80
>;
};
gpio
@
b00
{
gpio
_simple
:
gpio
@
b00
{
compatible
=
"fsl,mpc5200b-gpio"
,
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
gpio
@
c00
{
gpio
_wkup
:
gpio
@
c00
{
compatible
=
"fsl,mpc5200b-gpio-wkup"
,
"fsl,mpc5200-gpio-wkup"
;
reg
=
<
0xc00
0x40
>;
interrupts
=
<
1
8
0
0
3
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
spi
@
f00
{
compatible
=
"fsl,mpc5200b-spi"
,
"fsl,mpc5200-spi"
;
reg
=
<
0xf00
0x20
>;
interrupts
=
<
2
13
0
2
14
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200b-ohci"
,
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0xff
>;
interrupts
=
<
2
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
dma
-
controller
@
1200
{
...
...
@@ -171,7 +162,6 @@ dma-controller@1200 {
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
xlb
@
1f00
{
...
...
@@ -180,12 +170,9 @@ xlb@1f00 {
};
serial
@
2000
{
//
PSC1
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
0
>;
//
Logical
port
assignment
reg
=
<
0x2000
0x100
>;
interrupts
=
<
2
1
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
//
PSC2
in
spi
master
mode
...
...
@@ -194,26 +181,20 @@ spi@2200 { // PSC2
cell
-
index
=
<
1
>;
reg
=
<
0x2200
0x100
>;
interrupts
=
<
2
2
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
//
PSC5
in
uart
mode
serial
@
2800
{
//
PSC5
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200b-psc-uart"
,
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
4
>;
//
Logical
port
assignment
reg
=
<
0x2800
0x100
>;
interrupts
=
<
2
12
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
ethernet
@
3000
{
device_type
=
"network"
;
compatible
=
"fsl,mpc5200b-fec"
,
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy
-
handle
=
<&
phy0
>;
};
...
...
@@ -223,10 +204,8 @@ mdio@3000 {
compatible
=
"fsl,mpc5200b-mdio"
,
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy0
:
ethernet
-
phy
@
2
{
device_type
=
"ethernet-phy"
;
reg
=
<
2
>;
};
};
...
...
@@ -235,7 +214,6 @@ ata@3a00 {
compatible
=
"fsl,mpc5200b-ata"
,
"fsl,mpc5200-ata"
;
reg
=
<
0x3a00
0x100
>;
interrupts
=
<
2
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
i2c
@
3
d40
{
...
...
@@ -244,7 +222,6 @@ i2c@3d40 {
compatible
=
"fsl,mpc5200b-i2c"
,
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
reg
=
<
0x3d40
0x40
>;
interrupts
=
<
2
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
rtc
@
68
{
...
...
@@ -259,8 +236,8 @@ sram@8000 {
};
};
l
pb
{
compatible
=
"fsl,
lpb
"
;
l
ocalbus
{
compatible
=
"fsl,
mpc5200b-lpb"
,
"simple-bus
"
;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
ranges
=
<
0
0
0xff000000
0x01000000
...
...
@@ -273,7 +250,6 @@ kollmorgen@1,0 {
compatible
=
"promess,motionpro-kollmorgen"
;
reg
=
<
1
0
0x10000
>;
interrupts
=
<
1
1
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
//
8
-
bit
board
CPLD
on
LocalPlus
Bus
CS2
...
...
arch/powerpc/boot/dts/pcm030.dts
View file @
6a4d7a90
This diff is collapsed.
Click to expand it.
arch/powerpc/boot/dts/tqm5200.dts
View file @
6a4d7a90
...
...
@@ -17,6 +17,7 @@ / {
compatible
=
"tqc,tqm5200"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
cpus
{
#
address
-
cells
=
<
1
>;
...
...
@@ -66,36 +67,33 @@ timer@600 { // General Purpose Timer
compatible
=
"fsl,mpc5200-gpt"
;
reg
=
<
0x600
0x10
>;
interrupts
=
<
1
9
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl
,
has
-
wdt
;
};
can
@
900
{
compatible
=
"fsl,mpc5200-mscan"
;
interrupts
=
<
2
17
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x900
0x80
>;
};
can
@
980
{
compatible
=
"fsl,mpc5200-mscan"
;
interrupts
=
<
2
18
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
reg
=
<
0x980
0x80
>;
};
gpio
@
b00
{
gpio
_simple
:
gpio
@
b00
{
compatible
=
"fsl,mpc5200-gpio"
;
reg
=
<
0xb00
0x40
>;
interrupts
=
<
1
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
gpio
-
controller
;
#
gpio
-
cells
=
<
2
>;
};
usb
@
1000
{
compatible
=
"fsl,mpc5200-ohci"
,
"ohci-be"
;
reg
=
<
0x1000
0xff
>;
interrupts
=
<
2
6
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
dma
-
controller
@
1200
{
...
...
@@ -105,7 +103,6 @@ dma-controller@1200 {
3
4
0
3
5
0
3
6
0
3
7
0
3
8
0
3
9
0
3
10
0
3
11
0
3
12
0
3
13
0
3
14
0
3
15
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
xlb
@
1f00
{
...
...
@@ -114,39 +111,28 @@ xlb@1f00 {
};
serial
@
2000
{
//
PSC1
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
0
>;
//
Logical
port
assignment
reg
=
<
0x2000
0x100
>;
interrupts
=
<
2
1
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
serial
@
2200
{
//
PSC2
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
1
>;
//
Logical
port
assignment
reg
=
<
0x2200
0x100
>;
interrupts
=
<
2
2
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
serial
@
2400
{
//
PSC3
device_type
=
"serial"
;
compatible
=
"fsl,mpc5200-psc-uart"
;
port
-
number
=
<
2
>;
//
Logical
port
assignment
reg
=
<
0x2400
0x100
>;
interrupts
=
<
2
3
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
ethernet
@
3000
{
device_type
=
"network"
;
compatible
=
"fsl,mpc5200-fec"
;
reg
=
<
0x3000
0x400
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
2
5
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy
-
handle
=
<&
phy0
>;
};
...
...
@@ -156,10 +142,8 @@ mdio@3000 {
compatible
=
"fsl,mpc5200-mdio"
;
reg
=
<
0x3000
0x400
>;
//
fec
range
,
since
we
need
to
setup
fec
interrupts
interrupts
=
<
2
5
0
>;
//
these
are
for
"mii command finished"
,
not
link
changes
&
co
.
interrupt
-
parent
=
<&
mpc5200_pic
>;
phy0
:
ethernet
-
phy
@
0
{
device_type
=
"ethernet-phy"
;
reg
=
<
0
>;
};
};
...
...
@@ -168,7 +152,6 @@ ata@3a00 {
compatible
=
"fsl,mpc5200-ata"
;
reg
=
<
0x3a00
0x100
>;
interrupts
=
<
2
7
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
};
i2c
@
3
d40
{
...
...
@@ -177,7 +160,6 @@ i2c@3d40 {
compatible
=
"fsl,mpc5200-i2c"
,
"fsl-i2c"
;
reg
=
<
0x3d40
0x40
>;
interrupts
=
<
2
16
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
fsl5200
-
clocking
;
rtc
@
68
{
...
...
@@ -192,9 +174,8 @@ sram@8000 {
};
};
lpb
{
model
=
"fsl,lpb"
;
compatible
=
"fsl,lpb"
;
localbus
{
compatible
=
"fsl,mpc5200-lpb"
,
"simple-bus"
;
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
ranges
=
<
0
0
0xfc000000
0x02000000
>;
...
...
@@ -223,7 +204,6 @@ pci@f0000d00 {
0xc000
0
0
4
&
mpc5200_pic
0
0
3
>;
clock
-
frequency
=
<
0
>;
//
From
boot
loader
interrupts
=
<
2
8
0
2
9
0
2
10
0
>;
interrupt
-
parent
=
<&
mpc5200_pic
>;
bus
-
range
=
<
0
0
>;
ranges
=
<
0x42000000
0
0x80000000
0x80000000
0
0x10000000
0x02000000
0
0x90000000
0x90000000
0
0x10000000
...
...
arch/powerpc/platforms/52xx/Kconfig
View file @
6a4d7a90
...
...
@@ -21,7 +21,12 @@ config PPC_MPC5200_SIMPLE
and if there is a PCI bus node defined in the device tree.
Boards that are compatible with this generic platform support
are: 'tqc,tqm5200', 'promess,motionpro', 'schindler,cm5200'.
are:
intercontrol,digsy-mtc
phytec,pcm030
promess,motionpro
schindler,cm5200
tqc,tqm5200
config PPC_EFIKA
bool "bPlan Efika 5k2. MPC5200B based computer"
...
...
@@ -35,6 +40,11 @@ config PPC_LITE5200
depends on PPC_MPC52xx
select DEFAULT_UIMAGE
config PPC_MEDIA5200
bool "Freescale Media5200 Eval Board"
depends on PPC_MPC52xx
select DEFAULT_UIMAGE
config PPC_MPC5200_BUGFIX
bool "MPC5200 (L25R) bugfix support"
depends on PPC_MPC52xx
...
...
arch/powerpc/platforms/52xx/Makefile
View file @
6a4d7a90
#
# Makefile for 52xx based boards
#
obj-y
+=
mpc52xx_pic.o mpc52xx_common.o
obj-y
+=
mpc52xx_pic.o mpc52xx_common.o
mpc52xx_gpt.o
obj-$(CONFIG_PCI)
+=
mpc52xx_pci.o
obj-$(CONFIG_PPC_MPC5200_SIMPLE)
+=
mpc5200_simple.o
obj-$(CONFIG_PPC_EFIKA)
+=
efika.o
obj-$(CONFIG_PPC_LITE5200)
+=
lite5200.o
obj-$(CONFIG_PPC_MEDIA5200)
+=
media5200.o
obj-$(CONFIG_PM)
+=
mpc52xx_sleep.o mpc52xx_pm.o
ifeq
($(CONFIG_PPC_LITE5200),y)
...
...
arch/powerpc/platforms/52xx/media5200.c
0 → 100644
View file @
6a4d7a90
/*
* Support for 'media5200-platform' compatible boards.
*
* Copyright (C) 2008 Secret Lab Technologies Ltd.
*
* 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.
*
* Description:
* This code implements support for the Freescape Media5200 platform
* (built around the MPC5200 SoC).
*
* Notable characteristic of the Media5200 is the presence of an FPGA
* that has all external IRQ lines routed through it. This file implements
* a cascaded interrupt controller driver which attaches itself to the
* Virtual IRQ subsystem after the primary mpc5200 interrupt controller
* is initialized.
*
*/
#undef DEBUG
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <asm/time.h>
#include <asm/prom.h>
#include <asm/machdep.h>
#include <asm/mpc52xx.h>
static
struct
of_device_id
mpc5200_gpio_ids
[]
__initdata
=
{
{
.
compatible
=
"fsl,mpc5200-gpio"
,
},
{
.
compatible
=
"mpc5200-gpio"
,
},
{}
};
/* FPGA register set */
#define MEDIA5200_IRQ_ENABLE (0x40c)
#define MEDIA5200_IRQ_STATUS (0x410)
#define MEDIA5200_NUM_IRQS (6)
#define MEDIA5200_IRQ_SHIFT (32 - MEDIA5200_NUM_IRQS)
struct
media5200_irq
{
void
__iomem
*
regs
;
spinlock_t
lock
;
struct
irq_host
*
irqhost
;
};
struct
media5200_irq
media5200_irq
;
static
void
media5200_irq_unmask
(
unsigned
int
virq
)
{
unsigned
long
flags
;
u32
val
;
spin_lock_irqsave
(
&
media5200_irq
.
lock
,
flags
);
val
=
in_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_ENABLE
);
val
|=
1
<<
(
MEDIA5200_IRQ_SHIFT
+
irq_map
[
virq
].
hwirq
);
out_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_ENABLE
,
val
);
spin_unlock_irqrestore
(
&
media5200_irq
.
lock
,
flags
);
}
static
void
media5200_irq_mask
(
unsigned
int
virq
)
{
unsigned
long
flags
;
u32
val
;
spin_lock_irqsave
(
&
media5200_irq
.
lock
,
flags
);
val
=
in_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_ENABLE
);
val
&=
~
(
1
<<
(
MEDIA5200_IRQ_SHIFT
+
irq_map
[
virq
].
hwirq
));
out_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_ENABLE
,
val
);
spin_unlock_irqrestore
(
&
media5200_irq
.
lock
,
flags
);
}
static
struct
irq_chip
media5200_irq_chip
=
{
.
typename
=
"Media5200 FPGA"
,
.
unmask
=
media5200_irq_unmask
,
.
mask
=
media5200_irq_mask
,
.
mask_ack
=
media5200_irq_mask
,
};
void
media5200_irq_cascade
(
unsigned
int
virq
,
struct
irq_desc
*
desc
)
{
int
sub_virq
,
val
;
u32
status
,
enable
;
/* Mask off the cascaded IRQ */
spin_lock
(
&
desc
->
lock
);
desc
->
chip
->
mask
(
virq
);
spin_unlock
(
&
desc
->
lock
);
/* Ask the FPGA for IRQ status. If 'val' is 0, then no irqs
* are pending. 'ffs()' is 1 based */
status
=
in_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_ENABLE
);
enable
=
in_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_STATUS
);
val
=
ffs
((
status
&
enable
)
>>
MEDIA5200_IRQ_SHIFT
);
if
(
val
)
{
sub_virq
=
irq_linear_revmap
(
media5200_irq
.
irqhost
,
val
-
1
);
/* pr_debug("%s: virq=%i s=%.8x e=%.8x hwirq=%i subvirq=%i\n",
* __func__, virq, status, enable, val - 1, sub_virq);
*/
generic_handle_irq
(
sub_virq
);
}
/* Processing done; can reenable the cascade now */
spin_lock
(
&
desc
->
lock
);
desc
->
chip
->
ack
(
virq
);
if
(
!
(
desc
->
status
&
IRQ_DISABLED
))
desc
->
chip
->
unmask
(
virq
);
spin_unlock
(
&
desc
->
lock
);
}
static
int
media5200_irq_map
(
struct
irq_host
*
h
,
unsigned
int
virq
,
irq_hw_number_t
hw
)
{
struct
irq_desc
*
desc
=
get_irq_desc
(
virq
);
pr_debug
(
"%s: h=%p, virq=%i, hwirq=%i
\n
"
,
__func__
,
h
,
virq
,
(
int
)
hw
);
set_irq_chip_data
(
virq
,
&
media5200_irq
);
set_irq_chip_and_handler
(
virq
,
&
media5200_irq_chip
,
handle_level_irq
);
set_irq_type
(
virq
,
IRQ_TYPE_LEVEL_LOW
);
desc
->
status
&=
~
(
IRQ_TYPE_SENSE_MASK
|
IRQ_LEVEL
);
desc
->
status
|=
IRQ_TYPE_LEVEL_LOW
|
IRQ_LEVEL
;
return
0
;
}
static
int
media5200_irq_xlate
(
struct
irq_host
*
h
,
struct
device_node
*
ct
,
u32
*
intspec
,
unsigned
int
intsize
,
irq_hw_number_t
*
out_hwirq
,
unsigned
int
*
out_flags
)
{
if
(
intsize
!=
2
)
return
-
1
;
pr_debug
(
"%s: bank=%i, number=%i
\n
"
,
__func__
,
intspec
[
0
],
intspec
[
1
]);
*
out_hwirq
=
intspec
[
1
];
*
out_flags
=
IRQ_TYPE_NONE
;
return
0
;
}
static
struct
irq_host_ops
media5200_irq_ops
=
{
.
map
=
media5200_irq_map
,
.
xlate
=
media5200_irq_xlate
,
};
/*
* Setup Media5200 IRQ mapping
*/
static
void
__init
media5200_init_irq
(
void
)
{
struct
device_node
*
fpga_np
;
int
cascade_virq
;
/* First setup the regular MPC5200 interrupt controller */
mpc52xx_init_irq
();
/* Now find the FPGA IRQ */
fpga_np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,media5200-fpga"
);
if
(
!
fpga_np
)
goto
out
;
pr_debug
(
"%s: found fpga node: %s
\n
"
,
__func__
,
fpga_np
->
full_name
);
media5200_irq
.
regs
=
of_iomap
(
fpga_np
,
0
);
if
(
!
media5200_irq
.
regs
)
goto
out
;
pr_debug
(
"%s: mapped to %p
\n
"
,
__func__
,
media5200_irq
.
regs
);
cascade_virq
=
irq_of_parse_and_map
(
fpga_np
,
0
);
if
(
!
cascade_virq
)
goto
out
;
pr_debug
(
"%s: cascaded on virq=%i
\n
"
,
__func__
,
cascade_virq
);
/* Disable all FPGA IRQs */
out_be32
(
media5200_irq
.
regs
+
MEDIA5200_IRQ_ENABLE
,
0
);
spin_lock_init
(
&
media5200_irq
.
lock
);
media5200_irq
.
irqhost
=
irq_alloc_host
(
fpga_np
,
IRQ_HOST_MAP_LINEAR
,
MEDIA5200_NUM_IRQS
,
&
media5200_irq_ops
,
-
1
);
if
(
!
media5200_irq
.
irqhost
)
goto
out
;
pr_debug
(
"%s: allocated irqhost
\n
"
,
__func__
);
media5200_irq
.
irqhost
->
host_data
=
&
media5200_irq
;
set_irq_data
(
cascade_virq
,
&
media5200_irq
);
set_irq_chained_handler
(
cascade_virq
,
media5200_irq_cascade
);
return
;
out:
pr_err
(
"Could not find Media5200 FPGA; PCI interrupts will not work
\n
"
);
}
/*
* Setup the architecture
*/
static
void
__init
media5200_setup_arch
(
void
)
{
struct
device_node
*
np
;
struct
mpc52xx_gpio
__iomem
*
gpio
;
u32
port_config
;
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"media5200_setup_arch()"
,
0
);
/* Map important registers from the internal memory map */
mpc52xx_map_common_devices
();
/* Some mpc5200 & mpc5200b related configuration */
mpc5200_setup_xlb_arbiter
();
mpc52xx_setup_pci
();
np
=
of_find_matching_node
(
NULL
,
mpc5200_gpio_ids
);
gpio
=
of_iomap
(
np
,
0
);
of_node_put
(
np
);
if
(
!
gpio
)
{
printk
(
KERN_ERR
"%s() failed. expect abnormal behavior
\n
"
,
__func__
);
return
;
}
/* Set port config */
port_config
=
in_be32
(
&
gpio
->
port_config
);
port_config
&=
~
0x03000000
;
/* ATA CS is on csb_4/5 */
port_config
|=
0x01000000
;
out_be32
(
&
gpio
->
port_config
,
port_config
);
/* Unmap zone */
iounmap
(
gpio
);
}
/* list of the supported boards */
static
char
*
board
[]
__initdata
=
{
"fsl,media5200"
,
NULL
};
/*
* Called very early, MMU is off, device-tree isn't unflattened
*/
static
int
__init
media5200_probe
(
void
)
{
unsigned
long
node
=
of_get_flat_dt_root
();
int
i
=
0
;
while
(
board
[
i
])
{
if
(
of_flat_dt_is_compatible
(
node
,
board
[
i
]))
break
;
i
++
;
}
return
(
board
[
i
]
!=
NULL
);
}
define_machine
(
media5200_platform
)
{
.
name
=
"media5200-platform"
,
.
probe
=
media5200_probe
,
.
setup_arch
=
media5200_setup_arch
,
.
init
=
mpc52xx_declare_of_platform_devices
,
.
init_IRQ
=
media5200_init_irq
,
.
get_irq
=
mpc52xx_get_irq
,
.
restart
=
mpc52xx_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
};
arch/powerpc/platforms/52xx/mpc5200_simple.c
View file @
6a4d7a90
...
...
@@ -50,6 +50,7 @@ static void __init mpc5200_simple_setup_arch(void)
/* list of the supported boards */
static
char
*
board
[]
__initdata
=
{
"intercontrol,digsy-mtc"
,
"promess,motionpro"
,
"phytec,pcm030"
,
"schindler,cm5200"
,
...
...
arch/powerpc/platforms/52xx/mpc52xx_gpio.c
View file @
6a4d7a90
...
...
@@ -354,88 +354,6 @@ static struct of_platform_driver mpc52xx_simple_gpiochip_driver = {
.
remove
=
mpc52xx_gpiochip_remove
,
};
/*
* GPIO LIB API implementation for gpt GPIOs.
*
* Each gpt only has a single GPIO.
*/
static
int
mpc52xx_gpt_gpio_get
(
struct
gpio_chip
*
gc
,
unsigned
int
gpio
)
{
struct
of_mm_gpio_chip
*
mm_gc
=
to_of_mm_gpio_chip
(
gc
);
struct
mpc52xx_gpt
__iomem
*
regs
=
mm_gc
->
regs
;
return
(
in_be32
(
&
regs
->
status
)
&
(
1
<<
(
31
-
23
)))
?
1
:
0
;
}
static
void
mpc52xx_gpt_gpio_set
(
struct
gpio_chip
*
gc
,
unsigned
int
gpio
,
int
val
)
{
struct
of_mm_gpio_chip
*
mm_gc
=
to_of_mm_gpio_chip
(
gc
);
struct
mpc52xx_gpt
__iomem
*
regs
=
mm_gc
->
regs
;
if
(
val
)
out_be32
(
&
regs
->
mode
,
0x34
);
else
out_be32
(
&
regs
->
mode
,
0x24
);
pr_debug
(
"%s: gpio: %d val: %d
\n
"
,
__func__
,
gpio
,
val
);
}
static
int
mpc52xx_gpt_gpio_dir_in
(
struct
gpio_chip
*
gc
,
unsigned
int
gpio
)
{
struct
of_mm_gpio_chip
*
mm_gc
=
to_of_mm_gpio_chip
(
gc
);
struct
mpc52xx_gpt
__iomem
*
regs
=
mm_gc
->
regs
;
out_be32
(
&
regs
->
mode
,
0x04
);
return
0
;
}
static
int
mpc52xx_gpt_gpio_dir_out
(
struct
gpio_chip
*
gc
,
unsigned
int
gpio
,
int
val
)
{
mpc52xx_gpt_gpio_set
(
gc
,
gpio
,
val
);
pr_debug
(
"%s: gpio: %d val: %d
\n
"
,
__func__
,
gpio
,
val
);
return
0
;
}
static
int
__devinit
mpc52xx_gpt_gpiochip_probe
(
struct
of_device
*
ofdev
,
const
struct
of_device_id
*
match
)
{
struct
of_mm_gpio_chip
*
mmchip
;
struct
of_gpio_chip
*
chip
;
mmchip
=
kzalloc
(
sizeof
(
*
mmchip
),
GFP_KERNEL
);
if
(
!
mmchip
)
return
-
ENOMEM
;
chip
=
&
mmchip
->
of_gc
;
chip
->
gpio_cells
=
2
;
chip
->
gc
.
ngpio
=
1
;
chip
->
gc
.
direction_input
=
mpc52xx_gpt_gpio_dir_in
;
chip
->
gc
.
direction_output
=
mpc52xx_gpt_gpio_dir_out
;
chip
->
gc
.
get
=
mpc52xx_gpt_gpio_get
;
chip
->
gc
.
set
=
mpc52xx_gpt_gpio_set
;
return
of_mm_gpiochip_add
(
ofdev
->
node
,
mmchip
);
}
static
const
struct
of_device_id
mpc52xx_gpt_gpiochip_match
[]
=
{
{
.
compatible
=
"fsl,mpc5200-gpt-gpio"
,
},
{}
};
static
struct
of_platform_driver
mpc52xx_gpt_gpiochip_driver
=
{
.
name
=
"gpio_gpt"
,
.
match_table
=
mpc52xx_gpt_gpiochip_match
,
.
probe
=
mpc52xx_gpt_gpiochip_probe
,
.
remove
=
mpc52xx_gpiochip_remove
,
};
static
int
__init
mpc52xx_gpio_init
(
void
)
{
if
(
of_register_platform_driver
(
&
mpc52xx_wkup_gpiochip_driver
))
...
...
@@ -444,9 +362,6 @@ static int __init mpc52xx_gpio_init(void)
if
(
of_register_platform_driver
(
&
mpc52xx_simple_gpiochip_driver
))
printk
(
KERN_ERR
"Unable to register simple GPIO driver
\n
"
);
if
(
of_register_platform_driver
(
&
mpc52xx_gpt_gpiochip_driver
))
printk
(
KERN_ERR
"Unable to register gpt GPIO driver
\n
"
);
return
0
;
}
...
...
arch/powerpc/platforms/52xx/mpc52xx_gpt.c
0 → 100644
View file @
6a4d7a90
This diff is collapsed.
Click to expand it.
arch/powerpc/platforms/52xx/mpc52xx_pic.c
View file @
6a4d7a90
...
...
@@ -163,8 +163,6 @@ static void mpc52xx_extirq_mask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_clrbit
(
&
intr
->
ctrl
,
11
-
l2irq
);
}
...
...
@@ -176,8 +174,6 @@ static void mpc52xx_extirq_unmask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_setbit
(
&
intr
->
ctrl
,
11
-
l2irq
);
}
...
...
@@ -189,17 +185,15 @@ static void mpc52xx_extirq_ack(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_setbit
(
&
intr
->
ctrl
,
27
-
l2irq
);
}
static
int
mpc52xx_extirq_set_type
(
unsigned
int
virq
,
unsigned
int
flow_type
)
{
struct
irq_desc
*
desc
=
get_irq_desc
(
virq
);
u32
ctrl_reg
,
type
;
int
irq
;
int
l2irq
;
void
*
handler
=
handle_level_irq
;
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
...
...
@@ -207,32 +201,21 @@ static int mpc52xx_extirq_set_type(unsigned int virq, unsigned int flow_type)
pr_debug
(
"%s: irq=%x. l2=%d flow_type=%d
\n
"
,
__func__
,
irq
,
l2irq
,
flow_type
);
switch
(
flow_type
)
{
case
IRQF_TRIGGER_HIGH
:
type
=
0
;
break
;
case
IRQF_TRIGGER_RISING
:
type
=
1
;
break
;
case
IRQF_TRIGGER_FALLING
:
type
=
2
;
break
;
case
IRQF_TRIGGER_LOW
:
type
=
3
;
break
;
case
IRQF_TRIGGER_HIGH
:
type
=
0
;
break
;
case
IRQF_TRIGGER_RISING
:
type
=
1
;
handler
=
handle_edge_irq
;
break
;
case
IRQF_TRIGGER_FALLING
:
type
=
2
;
handler
=
handle_edge_irq
;
break
;
case
IRQF_TRIGGER_LOW
:
type
=
3
;
break
;
default:
type
=
0
;
}
desc
->
status
&=
~
(
IRQ_TYPE_SENSE_MASK
|
IRQ_LEVEL
);
desc
->
status
|=
flow_type
&
IRQ_TYPE_SENSE_MASK
;
if
(
flow_type
&
(
IRQ_TYPE_LEVEL_HIGH
|
IRQ_TYPE_LEVEL_LOW
))
desc
->
status
|=
IRQ_LEVEL
;
ctrl_reg
=
in_be32
(
&
intr
->
ctrl
);
ctrl_reg
&=
~
(
0x3
<<
(
22
-
(
l2irq
*
2
)));
ctrl_reg
|=
(
type
<<
(
22
-
(
l2irq
*
2
)));
out_be32
(
&
intr
->
ctrl
,
ctrl_reg
);
__set_irq_handler_unlocked
(
virq
,
handler
);
return
0
;
}
...
...
@@ -247,6 +230,11 @@ static struct irq_chip mpc52xx_extirq_irqchip = {
/*
* Main interrupt irq_chip
*/
static
int
mpc52xx_null_set_type
(
unsigned
int
virq
,
unsigned
int
flow_type
)
{
return
0
;
/* Do nothing so that the sense mask will get updated */
}
static
void
mpc52xx_main_mask
(
unsigned
int
virq
)
{
int
irq
;
...
...
@@ -255,8 +243,6 @@ static void mpc52xx_main_mask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_setbit
(
&
intr
->
main_mask
,
16
-
l2irq
);
}
...
...
@@ -268,8 +254,6 @@ static void mpc52xx_main_unmask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_clrbit
(
&
intr
->
main_mask
,
16
-
l2irq
);
}
...
...
@@ -278,6 +262,7 @@ static struct irq_chip mpc52xx_main_irqchip = {
.
mask
=
mpc52xx_main_mask
,
.
mask_ack
=
mpc52xx_main_mask
,
.
unmask
=
mpc52xx_main_unmask
,
.
set_type
=
mpc52xx_null_set_type
,
};
/*
...
...
@@ -291,8 +276,6 @@ static void mpc52xx_periph_mask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_setbit
(
&
intr
->
per_mask
,
31
-
l2irq
);
}
...
...
@@ -304,8 +287,6 @@ static void mpc52xx_periph_unmask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_clrbit
(
&
intr
->
per_mask
,
31
-
l2irq
);
}
...
...
@@ -314,6 +295,7 @@ static struct irq_chip mpc52xx_periph_irqchip = {
.
mask
=
mpc52xx_periph_mask
,
.
mask_ack
=
mpc52xx_periph_mask
,
.
unmask
=
mpc52xx_periph_unmask
,
.
set_type
=
mpc52xx_null_set_type
,
};
/*
...
...
@@ -327,8 +309,6 @@ static void mpc52xx_sdma_mask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_setbit
(
&
sdma
->
IntMask
,
l2irq
);
}
...
...
@@ -340,8 +320,6 @@ static void mpc52xx_sdma_unmask(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
io_be_clrbit
(
&
sdma
->
IntMask
,
l2irq
);
}
...
...
@@ -353,8 +331,6 @@ static void mpc52xx_sdma_ack(unsigned int virq)
irq
=
irq_map
[
virq
].
hwirq
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"%s: irq=%x. l2=%d
\n
"
,
__func__
,
irq
,
l2irq
);
out_be32
(
&
sdma
->
IntPend
,
1
<<
l2irq
);
}
...
...
@@ -363,8 +339,18 @@ static struct irq_chip mpc52xx_sdma_irqchip = {
.
mask
=
mpc52xx_sdma_mask
,
.
unmask
=
mpc52xx_sdma_unmask
,
.
ack
=
mpc52xx_sdma_ack
,
.
set_type
=
mpc52xx_null_set_type
,
};
/**
* mpc52xx_is_extirq - Returns true if hwirq number is for an external IRQ
*/
static
int
mpc52xx_is_extirq
(
int
l1
,
int
l2
)
{
return
((
l1
==
0
)
&&
(
l2
==
0
))
||
((
l1
==
1
)
&&
(
l2
>=
1
)
&&
(
l2
<=
3
));
}
/**
* mpc52xx_irqhost_xlate - translate virq# from device tree interrupts property
*/
...
...
@@ -383,37 +369,22 @@ static int mpc52xx_irqhost_xlate(struct irq_host *h, struct device_node *ct,
intrvect_l1
=
(
int
)
intspec
[
0
];
intrvect_l2
=
(
int
)
intspec
[
1
];
intrvect_type
=
(
int
)
intspec
[
2
];
intrvect_type
=
(
int
)
intspec
[
2
]
&
0x3
;
intrvect_linux
=
(
intrvect_l1
<<
MPC52xx_IRQ_L1_OFFSET
)
&
MPC52xx_IRQ_L1_MASK
;
intrvect_linux
|=
intrvect_l2
&
MPC52xx_IRQ_L2_MASK
;
pr_debug
(
"return %x, l1=%d, l2=%d
\n
"
,
intrvect_linux
,
intrvect_l1
,
intrvect_l2
);
*
out_hwirq
=
intrvect_linux
;
*
out_flags
=
mpc52xx_map_senses
[
intrvect_type
];
*
out_flags
=
IRQ_TYPE_LEVEL_LOW
;
if
(
mpc52xx_is_extirq
(
intrvect_l1
,
intrvect_l2
))
*
out_flags
=
mpc52xx_map_senses
[
intrvect_type
];
pr_debug
(
"return %x, l1=%d, l2=%d
\n
"
,
intrvect_linux
,
intrvect_l1
,
intrvect_l2
);
return
0
;
}
/**
* mpc52xx_irqx_gettype - determine the IRQ sense type (level/edge)
*
* Only external IRQs need this.
*/
static
int
mpc52xx_irqx_gettype
(
int
irq
)
{
int
type
;
u32
ctrl_reg
;
ctrl_reg
=
in_be32
(
&
intr
->
ctrl
);
type
=
(
ctrl_reg
>>
(
22
-
irq
*
2
))
&
0x3
;
return
mpc52xx_map_senses
[
type
];
}
/**
* mpc52xx_irqhost_map - Hook to map from virq to an irq_chip structure
*/
...
...
@@ -422,68 +393,46 @@ static int mpc52xx_irqhost_map(struct irq_host *h, unsigned int virq,
{
int
l1irq
;
int
l2irq
;
struct
irq_chip
*
good_
irqchip
;
void
*
good_handle
;
struct
irq_chip
*
irqchip
;
void
*
hndlr
;
int
type
;
u32
reg
;
l1irq
=
(
irq
&
MPC52xx_IRQ_L1_MASK
)
>>
MPC52xx_IRQ_L1_OFFSET
;
l2irq
=
irq
&
MPC52xx_IRQ_L2_MASK
;
/*
*
Most of ours IRQs will be level low
*
Only external IRQs on some platform may be others
*
External IRQs are handled differently by the hardware so they are
*
handled by a dedicated irq_chip structure.
*/
type
=
IRQ_TYPE_LEVEL_LOW
;
if
(
mpc52xx_is_extirq
(
l1irq
,
l2irq
))
{
reg
=
in_be32
(
&
intr
->
ctrl
);
type
=
mpc52xx_map_senses
[(
reg
>>
(
22
-
l2irq
*
2
))
&
0x3
];
if
((
type
==
IRQ_TYPE_EDGE_FALLING
)
||
(
type
==
IRQ_TYPE_EDGE_RISING
))
hndlr
=
handle_edge_irq
;
else
hndlr
=
handle_level_irq
;
set_irq_chip_and_handler
(
virq
,
&
mpc52xx_extirq_irqchip
,
hndlr
);
pr_debug
(
"%s: External IRQ%i virq=%x, hw=%x. type=%x
\n
"
,
__func__
,
l2irq
,
virq
,
(
int
)
irq
,
type
);
return
0
;
}
/* It is an internal SOC irq. Choose the correct irq_chip */
switch
(
l1irq
)
{
case
MPC52xx_IRQ_L1_CRIT
:
pr_debug
(
"%s: Critical. l2=%x
\n
"
,
__func__
,
l2irq
);
BUG_ON
(
l2irq
!=
0
);
type
=
mpc52xx_irqx_gettype
(
l2irq
);
good_irqchip
=
&
mpc52xx_extirq_irqchip
;
break
;
case
MPC52xx_IRQ_L1_MAIN
:
pr_debug
(
"%s: Main IRQ[1-3] l2=%x
\n
"
,
__func__
,
l2irq
);
if
((
l2irq
>=
1
)
&&
(
l2irq
<=
3
))
{
type
=
mpc52xx_irqx_gettype
(
l2irq
);
good_irqchip
=
&
mpc52xx_extirq_irqchip
;
}
else
{
good_irqchip
=
&
mpc52xx_main_irqchip
;
}
break
;
case
MPC52xx_IRQ_L1_PERP
:
pr_debug
(
"%s: Peripherals. l2=%x
\n
"
,
__func__
,
l2irq
);
good_irqchip
=
&
mpc52xx_periph_irqchip
;
break
;
case
MPC52xx_IRQ_L1_SDMA
:
pr_debug
(
"%s: SDMA. l2=%x
\n
"
,
__func__
,
l2irq
);
good_irqchip
=
&
mpc52xx_sdma_irqchip
;
break
;
case
MPC52xx_IRQ_L1_MAIN
:
irqchip
=
&
mpc52xx_main_irqchip
;
break
;
case
MPC52xx_IRQ_L1_PERP
:
irqchip
=
&
mpc52xx_periph_irqchip
;
break
;
case
MPC52xx_IRQ_L1_SDMA
:
irqchip
=
&
mpc52xx_sdma_irqchip
;
break
;
default:
pr_err
(
"%s: invalid virq requested (0x%x)
\n
"
,
__func__
,
virq
);
pr_err
(
"%s: invalid irq: virq=%i, l1=%i, l2=%i
\n
"
,
__func__
,
virq
,
l1irq
,
l2irq
);
return
-
EINVAL
;
}
switch
(
type
)
{
case
IRQ_TYPE_EDGE_FALLING
:
case
IRQ_TYPE_EDGE_RISING
:
good_handle
=
handle_edge_irq
;
break
;
default:
good_handle
=
handle_level_irq
;
}
set_irq_chip_and_handler
(
virq
,
good_irqchip
,
good_handle
);
pr_debug
(
"%s: virq=%x, hw=%x. type=%x
\n
"
,
__func__
,
virq
,
(
int
)
irq
,
type
);
set_irq_chip_and_handler
(
virq
,
irqchip
,
handle_level_irq
);
pr_debug
(
"%s: virq=%x, l1=%i, l2=%i
\n
"
,
__func__
,
virq
,
l1irq
,
l2irq
);
return
0
;
}
...
...
@@ -522,6 +471,8 @@ void __init mpc52xx_init_irq(void)
panic
(
__FILE__
": find_and_map failed on 'mpc5200-bestcomm'. "
"Check node !"
);
pr_debug
(
"MPC5200 IRQ controller mapped to 0x%p
\n
"
,
intr
);
/* Disable all interrupt sources. */
out_be32
(
&
sdma
->
IntPend
,
0xffffffff
);
/* 1 means clear pending */
out_be32
(
&
sdma
->
IntMask
,
0xffffffff
);
/* 1 means disabled */
...
...
@@ -613,8 +564,5 @@ unsigned int mpc52xx_get_irq(void)
}
}
pr_debug
(
"%s: irq=%x. virq=%d
\n
"
,
__func__
,
irq
,
irq_linear_revmap
(
mpc52xx_irqhost
,
irq
));
return
irq_linear_revmap
(
mpc52xx_irqhost
,
irq
);
}
drivers/net/fec_mpc52xx.c
View file @
6a4d7a90
...
...
@@ -1123,9 +1123,9 @@ static int mpc52xx_fec_of_resume(struct of_device *op)
#endif
static
struct
of_device_id
mpc52xx_fec_match
[]
=
{
{
.
type
=
"network"
,
.
compatible
=
"fsl,mpc5200b-fec"
,
},
{
.
type
=
"network"
,
.
compatible
=
"fsl,mpc5200-fec"
,
},
{
.
type
=
"network"
,
.
compatible
=
"mpc5200-fec"
,
},
{
.
compatible
=
"fsl,mpc5200b-fec"
,
},
{
.
compatible
=
"fsl,mpc5200-fec"
,
},
{
.
compatible
=
"mpc5200-fec"
,
},
{
}
};
...
...
drivers/serial/mpc52xx_uart.c
View file @
6a4d7a90
...
...
@@ -50,8 +50,8 @@
/* OF Platform device Usage :
*
* This driver is only used for PSCs configured in uart mode. The device
* tree will have a node for each PSC
in uart mode w/ device_type = "serial"
*
and "mpc52xx-psc-uart" in the compatible string
* tree will have a node for each PSC
with "mpc52xx-psc-uart" in the compatible
*
list.
*
* By default, PSC devices are enumerated in the order they are found. However
* a particular PSC number can be forces by adding 'device_no = <port#>'
...
...
@@ -522,7 +522,7 @@ mpc52xx_uart_startup(struct uart_port *port)
/* Request IRQ */
ret
=
request_irq
(
port
->
irq
,
mpc52xx_uart_int
,
IRQF_DISABLED
|
IRQF_SAMPLE_RANDOM
|
IRQF_SHARED
,
IRQF_DISABLED
|
IRQF_SAMPLE_RANDOM
,
"mpc52xx_psc_uart"
,
port
);
if
(
ret
)
return
ret
;
...
...
@@ -1212,30 +1212,18 @@ mpc52xx_uart_of_resume(struct of_device *op)
#endif
static
void
mpc52xx_uart_of_assign
(
struct
device_node
*
np
,
int
idx
)
mpc52xx_uart_of_assign
(
struct
device_node
*
np
)
{
int
free_idx
=
-
1
;
int
i
;
/* Find the first free
node
*/
/* Find the first free
PSC number
*/
for
(
i
=
0
;
i
<
MPC52xx_PSC_MAXNUM
;
i
++
)
{
if
(
mpc52xx_uart_nodes
[
i
]
==
NULL
)
{
free_idx
=
i
;
break
;
of_node_get
(
np
);
mpc52xx_uart_nodes
[
i
]
=
np
;
return
;
}
}
if
((
idx
<
0
)
||
(
idx
>=
MPC52xx_PSC_MAXNUM
))
idx
=
free_idx
;
if
(
idx
<
0
)
return
;
/* No free slot; abort */
of_node_get
(
np
);
/* If the slot is already occupied, then swap slots */
if
(
mpc52xx_uart_nodes
[
idx
]
&&
(
free_idx
!=
-
1
))
mpc52xx_uart_nodes
[
free_idx
]
=
mpc52xx_uart_nodes
[
idx
];
mpc52xx_uart_nodes
[
idx
]
=
np
;
}
static
void
...
...
@@ -1243,23 +1231,17 @@ mpc52xx_uart_of_enumerate(void)
{
static
int
enum_done
;
struct
device_node
*
np
;
const
unsigned
int
*
devno
;
const
struct
of_device_id
*
match
;
int
i
;
if
(
enum_done
)
return
;
for_each_node_by_type
(
np
,
"serial"
)
{
/* Assign index to each PSC in device tree */
for_each_matching_node
(
np
,
mpc52xx_uart_of_match
)
{
match
=
of_match_node
(
mpc52xx_uart_of_match
,
np
);
if
(
!
match
)
continue
;
psc_ops
=
match
->
data
;
/* Is a particular device number requested? */
devno
=
of_get_property
(
np
,
"port-number"
,
NULL
);
mpc52xx_uart_of_assign
(
np
,
devno
?
*
devno
:
-
1
);
mpc52xx_uart_of_assign
(
np
);
}
enum_done
=
1
;
...
...
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