Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
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-2.6.23
Commits
a28cfb84
Commit
a28cfb84
authored
Feb 13, 2007
by
Kumar Gala
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '85xx' into for_paulus
parents
7baca6ad
eb11a720
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1640 additions
and
2 deletions
+1640
-2
arch/powerpc/boot/dts/mpc8568mds.dts
arch/powerpc/boot/dts/mpc8568mds.dts
+380
-0
arch/powerpc/configs/mpc8568mds_defconfig
arch/powerpc/configs/mpc8568mds_defconfig
+992
-0
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/kernel/head_fsl_booke.S
+4
-1
arch/powerpc/platforms/85xx/Kconfig
arch/powerpc/platforms/85xx/Kconfig
+13
-0
arch/powerpc/platforms/85xx/Makefile
arch/powerpc/platforms/85xx/Makefile
+1
-0
arch/powerpc/platforms/85xx/mpc8568_mds.c
arch/powerpc/platforms/85xx/mpc8568_mds.c
+246
-0
arch/ppc/kernel/head_fsl_booke.S
arch/ppc/kernel/head_fsl_booke.S
+4
-1
No files found.
arch/powerpc/boot/dts/mpc8568mds.dts
0 → 100644
View file @
a28cfb84
/*
*
MPC8568E
MDS
Device
Tree
Source
*
*
Copyright
2007
Freescale
Semiconductor
Inc
.
*
*
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
.
*/
/*
/
memreserve
/
00000000
1000000
;
*/
/
{
model
=
"MPC8568EMDS"
;
compatible
=
"MPC85xxMDS"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
linux
,
phandle
=
<
100
>;
cpus
{
#
cpus
=
<
1
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
linux
,
phandle
=
<
200
>;
PowerPC
,
8568
@
0
{
device_type
=
"cpu"
;
reg
=
<
0
>;
d
-
cache
-
line
-
size
=
<
20
>;
//
32
bytes
i
-
cache
-
line
-
size
=
<
20
>;
//
32
bytes
d
-
cache
-
size
=
<
8000
>;
//
L1
,
32
K
i
-
cache
-
size
=
<
8000
>;
//
L1
,
32
K
timebase
-
frequency
=
<
0
>;
bus
-
frequency
=
<
0
>;
clock
-
frequency
=
<
0
>;
32
-
bit
;
linux
,
phandle
=
<
201
>;
};
};
memory
{
device_type
=
"memory"
;
linux
,
phandle
=
<
300
>;
reg
=
<
00000000
10000000
>;
};
bcsr
@
f8000000
{
device_type
=
"board-control"
;
reg
=
<
f8000000
8000
>;
};
soc8568
@
e0000000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
#
interrupt
-
cells
=
<
2
>;
device_type
=
"soc"
;
ranges
=
<
0
e0000000
00100000
>;
reg
=
<
e0000000
00100000
>;
bus
-
frequency
=
<
0
>;
i2c
@
3000
{
device_type
=
"i2c"
;
compatible
=
"fsl-i2c"
;
reg
=
<
3000
100
>;
interrupts
=
<
1
b
2
>;
interrupt
-
parent
=
<
40000
>;
dfsrr
;
};
i2c
@
3100
{
device_type
=
"i2c"
;
compatible
=
"fsl-i2c"
;
reg
=
<
3100
100
>;
interrupts
=
<
1
b
2
>;
interrupt
-
parent
=
<
40000
>;
dfsrr
;
};
mdio
@
24520
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
device_type
=
"mdio"
;
compatible
=
"gianfar"
;
reg
=
<
24520
20
>;
linux
,
phandle
=
<
24520
>;
ethernet
-
phy
@
0
{
linux
,
phandle
=
<
2452000
>;
interrupt
-
parent
=
<
40000
>;
interrupts
=
<
31
1
>;
reg
=
<
0
>;
device_type
=
"ethernet-phy"
;
};
ethernet
-
phy
@
1
{
linux
,
phandle
=
<
2452001
>;
interrupt
-
parent
=
<
40000
>;
interrupts
=
<
32
1
>;
reg
=
<
1
>;
device_type
=
"ethernet-phy"
;
};
ethernet
-
phy
@
2
{
linux
,
phandle
=
<
2452002
>;
interrupt
-
parent
=
<
40000
>;
interrupts
=
<
31
1
>;
reg
=
<
2
>;
device_type
=
"ethernet-phy"
;
};
ethernet
-
phy
@
3
{
linux
,
phandle
=
<
2452003
>;
interrupt
-
parent
=
<
40000
>;
interrupts
=
<
32
1
>;
reg
=
<
3
>;
device_type
=
"ethernet-phy"
;
};
};
ethernet
@
24000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
device_type
=
"network"
;
model
=
"eTSEC"
;
compatible
=
"gianfar"
;
reg
=
<
24000
1000
>;
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
d
2
e
2
12
2
>;
interrupt
-
parent
=
<
40000
>;
phy
-
handle
=
<
2452002
>;
};
ethernet
@
25000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
device_type
=
"network"
;
model
=
"eTSEC"
;
compatible
=
"gianfar"
;
reg
=
<
25000
1000
>;
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
13
2
14
2
18
2
>;
interrupt
-
parent
=
<
40000
>;
phy
-
handle
=
<
2452003
>;
};
serial
@
4500
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
4500
100
>;
clock
-
frequency
=
<
0
>;
interrupts
=
<
1
a
2
>;
interrupt
-
parent
=
<
40000
>;
};
serial
@
4600
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
4600
100
>;
clock
-
frequency
=
<
0
>;
interrupts
=
<
1
a
2
>;
interrupt
-
parent
=
<
40000
>;
};
crypto
@
30000
{
device_type
=
"crypto"
;
model
=
"SEC2"
;
compatible
=
"talitos"
;
reg
=
<
30000
f000
>;
interrupts
=
<
1
d
2
>;
interrupt
-
parent
=
<
40000
>;
num
-
channels
=
<
4
>;
channel
-
fifo
-
len
=
<
18
>;
exec
-
units
-
mask
=
<
000000f
e
>;
descriptor
-
types
-
mask
=
<
012
b0ebf
>;
};
pic
@
40000
{
linux
,
phandle
=
<
40000
>;
clock
-
frequency
=
<
0
>;
interrupt
-
controller
;
#
address
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
reg
=
<
40000
40000
>;
built
-
in
;
compatible
=
"chrp,open-pic"
;
device_type
=
"open-pic"
;
big
-
endian
;
};
par_io
@
e0100
{
reg
=
<
e0100
100
>;
device_type
=
"par_io"
;
num
-
ports
=
<
7
>;
ucc_pin
@
01
{
linux
,
phandle
=
<
e010001
>;
pio
-
map
=
<
/*
port
pin
dir
open_drain
assignment
has_irq
*/
4
0
a
1
0
2
0
/*
TxD0
*/
4
09
1
0
2
0
/*
TxD1
*/
4
08
1
0
2
0
/*
TxD2
*/
4
07
1
0
2
0
/*
TxD3
*/
4
17
1
0
2
0
/*
TxD4
*/
4
16
1
0
2
0
/*
TxD5
*/
4
15
1
0
2
0
/*
TxD6
*/
4
14
1
0
2
0
/*
TxD7
*/
4
0f
2
0
2
0
/*
RxD0
*/
4
0
e
2
0
2
0
/*
RxD1
*/
4
0
d
2
0
2
0
/*
RxD2
*/
4
0
c
2
0
2
0
/*
RxD3
*/
4
1
d
2
0
2
0
/*
RxD4
*/
4
1
c
2
0
2
0
/*
RxD5
*/
4
1
b
2
0
2
0
/*
RxD6
*/
4
1
a
2
0
2
0
/*
RxD7
*/
4
0
b
1
0
2
0
/*
TX_EN
*/
4
18
1
0
2
0
/*
TX_ER
*/
4
0f
2
0
2
0
/*
RX_DV
*/
4
1
e
2
0
2
0
/*
RX_ER
*/
4
11
2
0
2
0
/*
RX_CLK
*/
4
13
1
0
2
0
/*
GTX_CLK
*/
1
1f
2
0
3
0
>;
/*
GTX125
*/
};
ucc_pin
@
02
{
linux
,
phandle
=
<
e010002
>;
pio
-
map
=
<
/*
port
pin
dir
open_drain
assignment
has_irq
*/
5
0
a
1
0
2
0
/*
TxD0
*/
5
09
1
0
2
0
/*
TxD1
*/
5
08
1
0
2
0
/*
TxD2
*/
5
07
1
0
2
0
/*
TxD3
*/
5
17
1
0
2
0
/*
TxD4
*/
5
16
1
0
2
0
/*
TxD5
*/
5
15
1
0
2
0
/*
TxD6
*/
5
14
1
0
2
0
/*
TxD7
*/
5
0f
2
0
2
0
/*
RxD0
*/
5
0
e
2
0
2
0
/*
RxD1
*/
5
0
d
2
0
2
0
/*
RxD2
*/
5
0
c
2
0
2
0
/*
RxD3
*/
5
1
d
2
0
2
0
/*
RxD4
*/
5
1
c
2
0
2
0
/*
RxD5
*/
5
1
b
2
0
2
0
/*
RxD6
*/
5
1
a
2
0
2
0
/*
RxD7
*/
5
0
b
1
0
2
0
/*
TX_EN
*/
5
18
1
0
2
0
/*
TX_ER
*/
5
10
2
0
2
0
/*
RX_DV
*/
5
1
e
2
0
2
0
/*
RX_ER
*/
5
11
2
0
2
0
/*
RX_CLK
*/
5
13
1
0
2
0
/*
GTX_CLK
*/
1
1f
2
0
3
0
/*
GTX125
*/
4
06
3
0
2
0
/*
MDIO
*/
4
05
1
0
2
0
>;
/*
MDC
*/
};
};
};
qe
@
e0080000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
device_type
=
"qe"
;
model
=
"QE"
;
ranges
=
<
0
e0080000
00040000
>;
reg
=
<
e0080000
480
>;
brg
-
frequency
=
<
0
>;
bus
-
frequency
=
<
179
A7B00
>;
muram
@
10000
{
device_type
=
"muram"
;
ranges
=
<
0
00010000
0000
c000
>;
data
-
only
@
0
{
reg
=
<
0
c000
>;
};
};
spi
@
4
c0
{
device_type
=
"spi"
;
compatible
=
"fsl_spi"
;
reg
=
<
4
c0
40
>;
interrupts
=
<
2
>;
interrupt
-
parent
=
<
80
>;
mode
=
"cpu"
;
};
spi
@
500
{
device_type
=
"spi"
;
compatible
=
"fsl_spi"
;
reg
=
<
500
40
>;
interrupts
=
<
1
>;
interrupt
-
parent
=
<
80
>;
mode
=
"cpu"
;
};
ucc
@
2000
{
device_type
=
"network"
;
compatible
=
"ucc_geth"
;
model
=
"UCC"
;
device
-
id
=
<
1
>;
reg
=
<
2000
200
>;
interrupts
=
<
20
>;
interrupt
-
parent
=
<
80
>;
mac
-
address
=
[
00
04
9f
00
23
23
];
rx
-
clock
=
<
0
>;
tx
-
clock
=
<
19
>;
phy
-
handle
=
<
212000
>;
pio
-
handle
=
<
e010001
>;
};
ucc
@
3000
{
device_type
=
"network"
;
compatible
=
"ucc_geth"
;
model
=
"UCC"
;
device
-
id
=
<
2
>;
reg
=
<
3000
200
>;
interrupts
=
<
21
>;
interrupt
-
parent
=
<
80
>;
mac
-
address
=
[
00
11
22
33
44
55
];
rx
-
clock
=
<
0
>;
tx
-
clock
=
<
14
>;
phy
-
handle
=
<
212001
>;
pio
-
handle
=
<
e010002
>;
};
mdio
@
2120
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
reg
=
<
2120
18
>;
device_type
=
"mdio"
;
compatible
=
"ucc_geth_phy"
;
/*
These
are
the
same
PHYs
as
on
*
gianfar
's MDIO bus */
ethernet-phy@00 {
linux,phandle = <212000>;
interrupt-parent = <40000>;
interrupts = <31 1>;
reg = <0>;
device_type = "ethernet-phy";
interface = <6>; //ENET_1000_GMII
};
ethernet-phy@01 {
linux,phandle = <212001>;
interrupt-parent = <40000>;
interrupts = <32 1>;
reg = <1>;
device_type = "ethernet-phy";
interface = <6>;
};
ethernet-phy@02 {
linux,phandle = <212002>;
interrupt-parent = <40000>;
interrupts = <31 1>;
reg = <2>;
device_type = "ethernet-phy";
interface = <6>; //ENET_1000_GMII
};
ethernet-phy@03 {
linux,phandle = <212003>;
interrupt-parent = <40000>;
interrupts = <32 1>;
reg = <3>;
device_type = "ethernet-phy";
interface = <6>; //ENET_1000_GMII
};
};
qeic@80 {
linux,phandle = <80>;
interrupt-controller;
device_type = "qeic";
#address-cells = <0>;
#interrupt-cells = <1>;
reg = <80 80>;
built-in;
big-endian;
interrupts = <1e 2 1e 2>; //high:30 low:30
interrupt-parent = <40000>;
};
};
};
arch/powerpc/configs/mpc8568mds_defconfig
0 → 100644
View file @
a28cfb84
This diff is collapsed.
Click to expand it.
arch/powerpc/kernel/head_fsl_booke.S
View file @
a28cfb84
...
@@ -206,7 +206,8 @@ skpinv: addi r6,r6,1 /* Increment */
...
@@ -206,7 +206,8 @@ skpinv: addi r6,r6,1 /* Increment */
rlwimi
r7
,
r3
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r3
)
*/
rlwimi
r7
,
r3
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r3
)
*/
mtspr
SPRN_MAS0
,
r7
mtspr
SPRN_MAS0
,
r7
tlbre
tlbre
li
r6
,
0
mfspr
r6
,
SPRN_MAS1
rlwinm
r6
,
r6
,
0
,
2
,
0
/*
clear
IPROT
*/
mtspr
SPRN_MAS1
,
r6
mtspr
SPRN_MAS1
,
r6
tlbwe
tlbwe
/
*
Invalidate
TLB1
*/
/
*
Invalidate
TLB1
*/
...
@@ -248,6 +249,8 @@ skpinv: addi r6,r6,1 /* Increment */
...
@@ -248,6 +249,8 @@ skpinv: addi r6,r6,1 /* Increment */
rlwimi
r7
,
r5
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r5
)
*/
rlwimi
r7
,
r5
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r5
)
*/
mtspr
SPRN_MAS0
,
r7
mtspr
SPRN_MAS0
,
r7
tlbre
tlbre
mfspr
r8
,
SPRN_MAS1
rlwinm
r8
,
r8
,
0
,
2
,
0
/*
clear
IPROT
*/
mtspr
SPRN_MAS1
,
r8
mtspr
SPRN_MAS1
,
r8
tlbwe
tlbwe
/
*
Invalidate
TLB1
*/
/
*
Invalidate
TLB1
*/
...
...
arch/powerpc/platforms/85xx/Kconfig
View file @
a28cfb84
...
@@ -23,6 +23,13 @@ config MPC85xx_CDS
...
@@ -23,6 +23,13 @@ config MPC85xx_CDS
help
help
This option enables support for the MPC85xx CDS board
This option enables support for the MPC85xx CDS board
config MPC8568_MDS
bool "Freescale MPC8568 MDS"
select DEFAULT_UIMAGE
# select QUICC_ENGINE
help
This option enables support for the MPC8568 MDS board
endchoice
endchoice
config MPC8540
config MPC8540
...
@@ -36,6 +43,12 @@ config MPC8560
...
@@ -36,6 +43,12 @@ config MPC8560
select PPC_INDIRECT_PCI
select PPC_INDIRECT_PCI
default y if MPC8560_ADS
default y if MPC8560_ADS
config MPC85xx
bool
select PPC_UDBG_16550
select PPC_INDIRECT_PCI
default y if MPC8540_ADS || MPC85xx_CDS || MPC8560_ADS || MPC8568_MDS
config PPC_INDIRECT_PCI_BE
config PPC_INDIRECT_PCI_BE
bool
bool
depends on PPC_85xx
depends on PPC_85xx
...
...
arch/powerpc/platforms/85xx/Makefile
View file @
a28cfb84
...
@@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_85xx) += misc.o pci.o
...
@@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_85xx) += misc.o pci.o
obj-$(CONFIG_MPC8540_ADS)
+=
mpc85xx_ads.o
obj-$(CONFIG_MPC8540_ADS)
+=
mpc85xx_ads.o
obj-$(CONFIG_MPC8560_ADS)
+=
mpc85xx_ads.o
obj-$(CONFIG_MPC8560_ADS)
+=
mpc85xx_ads.o
obj-$(CONFIG_MPC85xx_CDS)
+=
mpc85xx_cds.o
obj-$(CONFIG_MPC85xx_CDS)
+=
mpc85xx_cds.o
obj-$(CONFIG_MPC8568_MDS)
+=
mpc8568_mds.o
arch/powerpc/platforms/85xx/mpc8568_mds.c
0 → 100644
View file @
a28cfb84
/*
* Copyright (C) Freescale Semicondutor, Inc. 2006-2007. All rights reserved.
*
* Author: Andy Fleming <afleming@freescale.com>
*
* Based on 83xx/mpc8360e_pb.c by:
* Li Yang <LeoLi@freescale.com>
* Yin Olivia <Hong-hua.Yin@freescale.com>
*
* Description:
* MPC8568E MDS PB board specific routines.
*
* 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/stddef.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/reboot.h>
#include <linux/pci.h>
#include <linux/kdev_t.h>
#include <linux/major.h>
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <linux/initrd.h>
#include <linux/module.h>
#include <linux/fsl_devices.h>
#include <asm/of_device.h>
#include <asm/of_platform.h>
#include <asm/system.h>
#include <asm/atomic.h>
#include <asm/time.h>
#include <asm/io.h>
#include <asm/machdep.h>
#include <asm/bootinfo.h>
#include <asm/pci-bridge.h>
#include <asm/mpc85xx.h>
#include <asm/irq.h>
#include <mm/mmu_decl.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <sysdev/fsl_soc.h>
#include <asm/qe.h>
#include <asm/qe_ic.h>
#include <asm/mpic.h>
#include "mpc85xx.h"
#undef DEBUG
#ifdef DEBUG
#define DBG(fmt...) udbg_printf(fmt)
#else
#define DBG(fmt...)
#endif
#ifndef CONFIG_PCI
unsigned
long
isa_io_base
=
0
;
unsigned
long
isa_mem_base
=
0
;
#endif
/* ************************************************************************
*
* Setup the architecture
*
*/
static
void
__init
mpc8568_mds_setup_arch
(
void
)
{
struct
device_node
*
np
;
static
u8
*
bcsr_regs
=
NULL
;
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"mpc8568_mds_setup_arch()"
,
0
);
np
=
of_find_node_by_type
(
NULL
,
"cpu"
);
if
(
np
!=
NULL
)
{
const
unsigned
int
*
fp
=
get_property
(
np
,
"clock-frequency"
,
NULL
);
if
(
fp
!=
NULL
)
loops_per_jiffy
=
*
fp
/
HZ
;
else
loops_per_jiffy
=
50000000
/
HZ
;
of_node_put
(
np
);
}
/* Map BCSR area */
np
=
of_find_node_by_name
(
NULL
,
"bcsr"
);
if
(
np
!=
NULL
)
{
struct
resource
res
;
of_address_to_resource
(
np
,
0
,
&
res
);
bcsr_regs
=
ioremap
(
res
.
start
,
res
.
end
-
res
.
start
+
1
);
of_node_put
(
np
);
}
#ifdef CONFIG_PCI
for
(
np
=
NULL
;
(
np
=
of_find_node_by_type
(
np
,
"pci"
))
!=
NULL
;)
{
add_bridge
(
np
);
}
of_node_put
(
np
);
#endif
#ifdef CONFIG_QUICC_ENGINE
if
((
np
=
of_find_node_by_name
(
NULL
,
"qe"
))
!=
NULL
)
{
qe_reset
();
of_node_put
(
np
);
}
if
((
np
=
of_find_node_by_name
(
NULL
,
"par_io"
))
!=
NULL
)
{
struct
device_node
*
ucc
=
NULL
;
par_io_init
(
np
);
of_node_put
(
np
);
for
(
;(
ucc
=
of_find_node_by_name
(
ucc
,
"ucc"
))
!=
NULL
;)
par_io_of_config
(
ucc
);
of_node_put
(
ucc
);
}
if
(
bcsr_regs
)
{
u8
bcsr_phy
;
/* Reset the Ethernet PHY */
bcsr_phy
=
in_be8
(
&
bcsr_regs
[
9
]);
bcsr_phy
&=
~
0x20
;
out_be8
(
&
bcsr_regs
[
9
],
bcsr_phy
);
udelay
(
1000
);
bcsr_phy
=
in_be8
(
&
bcsr_regs
[
9
]);
bcsr_phy
|=
0x20
;
out_be8
(
&
bcsr_regs
[
9
],
bcsr_phy
);
iounmap
(
bcsr_regs
);
}
#endif
/* CONFIG_QUICC_ENGINE */
}
static
struct
of_device_id
mpc8568_ids
[]
=
{
{
.
type
=
"soc"
,
},
{
.
compatible
=
"soc"
,
},
{
.
type
=
"qe"
,
},
{},
};
static
int
__init
mpc8568_publish_devices
(
void
)
{
if
(
!
machine_is
(
mpc8568_mds
))
return
0
;
/* Publish the QE devices */
of_platform_bus_probe
(
NULL
,
mpc8568_ids
,
NULL
);
return
0
;
}
device_initcall
(
mpc8568_publish_devices
);
static
void
__init
mpc8568_mds_pic_init
(
void
)
{
struct
mpic
*
mpic
;
struct
resource
r
;
struct
device_node
*
np
=
NULL
;
np
=
of_find_node_by_type
(
NULL
,
"open-pic"
);
if
(
!
np
)
return
;
if
(
of_address_to_resource
(
np
,
0
,
&
r
))
{
printk
(
KERN_ERR
"Failed to map mpic register space
\n
"
);
of_node_put
(
np
);
return
;
}
mpic
=
mpic_alloc
(
np
,
r
.
start
,
MPIC_PRIMARY
|
MPIC_WANTS_RESET
|
MPIC_BIG_ENDIAN
,
4
,
0
,
" OpenPIC "
);
BUG_ON
(
mpic
==
NULL
);
of_node_put
(
np
);
/* Internal Interrupts */
mpic_assign_isu
(
mpic
,
0
,
r
.
start
+
0x10200
);
mpic_assign_isu
(
mpic
,
1
,
r
.
start
+
0x10280
);
mpic_assign_isu
(
mpic
,
2
,
r
.
start
+
0x10300
);
mpic_assign_isu
(
mpic
,
3
,
r
.
start
+
0x10380
);
mpic_assign_isu
(
mpic
,
4
,
r
.
start
+
0x10400
);
mpic_assign_isu
(
mpic
,
5
,
r
.
start
+
0x10480
);
mpic_assign_isu
(
mpic
,
6
,
r
.
start
+
0x10500
);
mpic_assign_isu
(
mpic
,
7
,
r
.
start
+
0x10580
);
mpic_assign_isu
(
mpic
,
8
,
r
.
start
+
0x10600
);
mpic_assign_isu
(
mpic
,
9
,
r
.
start
+
0x10680
);
mpic_assign_isu
(
mpic
,
10
,
r
.
start
+
0x10700
);
mpic_assign_isu
(
mpic
,
11
,
r
.
start
+
0x10780
);
/* External Interrupts */
mpic_assign_isu
(
mpic
,
12
,
r
.
start
+
0x10000
);
mpic_assign_isu
(
mpic
,
13
,
r
.
start
+
0x10080
);
mpic_assign_isu
(
mpic
,
14
,
r
.
start
+
0x10100
);
mpic_init
(
mpic
);
#ifdef CONFIG_QUICC_ENGINE
np
=
of_find_node_by_type
(
NULL
,
"qeic"
);
if
(
!
np
)
return
;
qe_ic_init
(
np
,
0
);
of_node_put
(
np
);
#endif
/* CONFIG_QUICC_ENGINE */
}
static
int
__init
mpc8568_mds_probe
(
void
)
{
char
*
model
=
of_get_flat_dt_prop
(
of_get_flat_dt_root
(),
"model"
,
NULL
);
if
(
model
==
NULL
)
return
0
;
if
(
strcmp
(
model
,
"MPC8568EMDS"
))
return
0
;
DBG
(
"MPC8568EMDS found
\n
"
);
return
1
;
}
define_machine
(
mpc8568_mds
)
{
.
name
=
"MPC8568E MDS"
,
.
probe
=
mpc8568_mds_probe
,
.
setup_arch
=
mpc8568_mds_setup_arch
,
.
init_IRQ
=
mpc8568_mds_pic_init
,
.
get_irq
=
mpic_get_irq
,
.
restart
=
mpc85xx_restart
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
arch/ppc/kernel/head_fsl_booke.S
View file @
a28cfb84
...
@@ -206,7 +206,8 @@ skpinv: addi r6,r6,1 /* Increment */
...
@@ -206,7 +206,8 @@ skpinv: addi r6,r6,1 /* Increment */
rlwimi
r7
,
r3
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r3
)
*/
rlwimi
r7
,
r3
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r3
)
*/
mtspr
SPRN_MAS0
,
r7
mtspr
SPRN_MAS0
,
r7
tlbre
tlbre
li
r6
,
0
mfspr
r6
,
SPRN_MAS1
rlwinm
r6
,
r6
,
0
,
2
,
0
/*
clear
IPROT
*/
mtspr
SPRN_MAS1
,
r6
mtspr
SPRN_MAS1
,
r6
tlbwe
tlbwe
/
*
Invalidate
TLB1
*/
/
*
Invalidate
TLB1
*/
...
@@ -248,6 +249,8 @@ skpinv: addi r6,r6,1 /* Increment */
...
@@ -248,6 +249,8 @@ skpinv: addi r6,r6,1 /* Increment */
rlwimi
r7
,
r5
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r5
)
*/
rlwimi
r7
,
r5
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r5
)
*/
mtspr
SPRN_MAS0
,
r7
mtspr
SPRN_MAS0
,
r7
tlbre
tlbre
mfspr
r8
,
SPRN_MAS1
rlwinm
r8
,
r8
,
0
,
2
,
0
/*
clear
IPROT
*/
mtspr
SPRN_MAS1
,
r8
mtspr
SPRN_MAS1
,
r8
tlbwe
tlbwe
/
*
Invalidate
TLB1
*/
/
*
Invalidate
TLB1
*/
...
...
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