Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
edbc29d7
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
edbc29d7
编写于
2月 11, 2009
作者:
B
Benjamin Herrenschmidt
浏览文件
操作
浏览文件
下载
差异文件
Merge commit 'kumar/next' into next
上级
1db8508c
a0e8618c
变更
36
展开全部
隐藏空白更改
内联
并排
Showing
36 changed file
with
3171 addition
and
149 deletion
+3171
-149
Documentation/powerpc/dts-bindings/fsl/dma.txt
Documentation/powerpc/dts-bindings/fsl/dma.txt
+17
-17
Documentation/powerpc/dts-bindings/fsl/esdhc.txt
Documentation/powerpc/dts-bindings/fsl/esdhc.txt
+24
-0
arch/powerpc/Kconfig
arch/powerpc/Kconfig
+18
-1
arch/powerpc/boot/dts/gef_sbc310.dts
arch/powerpc/boot/dts/gef_sbc310.dts
+364
-0
arch/powerpc/boot/dts/mpc8315erdb.dts
arch/powerpc/boot/dts/mpc8315erdb.dts
+64
-0
arch/powerpc/boot/dts/mpc8377_mds.dts
arch/powerpc/boot/dts/mpc8377_mds.dts
+68
-3
arch/powerpc/boot/dts/mpc8377_rdb.dts
arch/powerpc/boot/dts/mpc8377_rdb.dts
+102
-0
arch/powerpc/boot/dts/mpc8378_mds.dts
arch/powerpc/boot/dts/mpc8378_mds.dts
+68
-3
arch/powerpc/boot/dts/mpc8378_rdb.dts
arch/powerpc/boot/dts/mpc8378_rdb.dts
+102
-0
arch/powerpc/boot/dts/mpc8379_mds.dts
arch/powerpc/boot/dts/mpc8379_mds.dts
+4
-3
arch/powerpc/boot/dts/mpc8379_rdb.dts
arch/powerpc/boot/dts/mpc8379_rdb.dts
+38
-0
arch/powerpc/boot/dts/tqm8540.dts
arch/powerpc/boot/dts/tqm8540.dts
+5
-0
arch/powerpc/boot/dts/tqm8541.dts
arch/powerpc/boot/dts/tqm8541.dts
+5
-0
arch/powerpc/boot/dts/tqm8548-bigflash.dts
arch/powerpc/boot/dts/tqm8548-bigflash.dts
+7
-2
arch/powerpc/boot/dts/tqm8548.dts
arch/powerpc/boot/dts/tqm8548.dts
+7
-2
arch/powerpc/boot/dts/tqm8555.dts
arch/powerpc/boot/dts/tqm8555.dts
+5
-0
arch/powerpc/boot/dts/tqm8560.dts
arch/powerpc/boot/dts/tqm8560.dts
+7
-2
arch/powerpc/configs/86xx/gef_sbc310_defconfig
arch/powerpc/configs/86xx/gef_sbc310_defconfig
+1613
-0
arch/powerpc/include/asm/reg_booke.h
arch/powerpc/include/asm/reg_booke.h
+1
-0
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/Makefile
+1
-0
arch/powerpc/kernel/cpu_setup_fsl_booke.S
arch/powerpc/kernel/cpu_setup_fsl_booke.S
+31
-0
arch/powerpc/kernel/cputable.c
arch/powerpc/kernel/cputable.c
+8
-0
arch/powerpc/kernel/head_booke.h
arch/powerpc/kernel/head_booke.h
+3
-3
arch/powerpc/kernel/head_fsl_booke.S
arch/powerpc/kernel/head_fsl_booke.S
+54
-27
arch/powerpc/mm/fsl_booke_mmu.c
arch/powerpc/mm/fsl_booke_mmu.c
+46
-47
arch/powerpc/platforms/83xx/mpc831x_rdb.c
arch/powerpc/platforms/83xx/mpc831x_rdb.c
+2
-0
arch/powerpc/platforms/83xx/mpc837x_mds.c
arch/powerpc/platforms/83xx/mpc837x_mds.c
+3
-7
arch/powerpc/platforms/83xx/mpc837x_rdb.c
arch/powerpc/platforms/83xx/mpc837x_rdb.c
+2
-0
arch/powerpc/platforms/86xx/Kconfig
arch/powerpc/platforms/86xx/Kconfig
+9
-1
arch/powerpc/platforms/86xx/Makefile
arch/powerpc/platforms/86xx/Makefile
+1
-0
arch/powerpc/platforms/86xx/gef_gpio.c
arch/powerpc/platforms/86xx/gef_gpio.c
+31
-5
arch/powerpc/platforms/86xx/gef_sbc310.c
arch/powerpc/platforms/86xx/gef_sbc310.c
+230
-0
arch/powerpc/sysdev/cpm2.c
arch/powerpc/sysdev/cpm2.c
+2
-1
arch/powerpc/sysdev/fsl_pci.c
arch/powerpc/sysdev/fsl_pci.c
+220
-24
drivers/watchdog/Kconfig
drivers/watchdog/Kconfig
+1
-1
include/linux/pci_ids.h
include/linux/pci_ids.h
+8
-0
未找到文件。
Documentation/powerpc/dts-bindings/fsl/dma.txt
浏览文件 @
edbc29d7
...
...
@@ -35,30 +35,30 @@ Example:
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
reg = <82a8 4>;
ranges = <0
8100
1a4>;
reg = <
0x
82a8 4>;
ranges = <0
0x8100 0x
1a4>;
interrupt-parent = <&ipic>;
interrupts = <
47
8>;
interrupts = <
71
8>;
cell-index = <0>;
dma-channel@0 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
cell-index = <0>;
reg = <0 80>;
reg = <0
0x
80>;
};
dma-channel@80 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
cell-index = <1>;
reg = <
80
80>;
reg = <
0x80 0x
80>;
};
dma-channel@100 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
cell-index = <2>;
reg = <
100
80>;
reg = <
0x100 0x
80>;
};
dma-channel@180 {
compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
cell-index = <3>;
reg = <
180
80>;
reg = <
0x180 0x
80>;
};
};
...
...
@@ -93,36 +93,36 @@ Example:
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma";
reg = <21300 4>;
ranges = <0
21100
200>;
reg = <
0x
21300 4>;
ranges = <0
0x21100 0x
200>;
cell-index = <0>;
dma-channel@0 {
compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
reg = <0 80>;
reg = <0
0x
80>;
cell-index = <0>;
interrupt-parent = <&mpic>;
interrupts = <
14
2>;
interrupts = <
20
2>;
};
dma-channel@80 {
compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
reg = <
80
80>;
reg = <
0x80 0x
80>;
cell-index = <1>;
interrupt-parent = <&mpic>;
interrupts = <
15
2>;
interrupts = <
21
2>;
};
dma-channel@100 {
compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
reg = <
100
80>;
reg = <
0x100 0x
80>;
cell-index = <2>;
interrupt-parent = <&mpic>;
interrupts = <
16
2>;
interrupts = <
22
2>;
};
dma-channel@180 {
compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
reg = <
180
80>;
reg = <
0x180 0x
80>;
cell-index = <3>;
interrupt-parent = <&mpic>;
interrupts = <
17
2>;
interrupts = <
23
2>;
};
};
...
...
Documentation/powerpc/dts-bindings/fsl/esdhc.txt
0 → 100644
浏览文件 @
edbc29d7
* Freescale Enhanced Secure Digital Host Controller (eSDHC)
The Enhanced Secure Digital Host Controller provides an interface
for MMC, SD, and SDIO types of memory cards.
Required properties:
- compatible : should be
"fsl,<chip>-esdhc", "fsl,mpc8379-esdhc" for MPC83xx processors.
"fsl,<chip>-esdhc", "fsl,mpc8536-esdhc" for MPC85xx processors.
- reg : should contain eSDHC registers location and length.
- interrupts : should contain eSDHC interrupt.
- interrupt-parent : interrupt source phandle.
- clock-frequency : specifies eSDHC base clock frequency.
Example:
sdhci@2e000 {
compatible = "fsl,mpc8378-esdhc", "fsl,mpc8379-esdhc";
reg = <0x2e000 0x1000>;
interrupts = <42 0x8>;
interrupt-parent = <&ipic>;
/* Filled in by U-Boot */
clock-frequency = <0>;
};
arch/powerpc/Kconfig
浏览文件 @
edbc29d7
...
...
@@ -594,6 +594,7 @@ config FSL_SOC
config FSL_PCI
bool
select PPC_INDIRECT_PCI
select PCI_QUIRKS
config 4xx_SOC
bool
...
...
@@ -730,6 +731,22 @@ config LOWMEM_SIZE
hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
default "0x30000000"
config LOWMEM_CAM_NUM_BOOL
bool "Set number of CAMs to use to map low memory"
depends on ADVANCED_OPTIONS && FSL_BOOKE
help
This option allows you to set the maximum number of CAM slots that
will be used to map low memory. There are a limited number of slots
available and even more limited number that will fit in the L1 MMU.
However, using more entries will allow mapping more low memory. This
can be useful in optimizing the layout of kernel virtual memory.
Say N here unless you know what you are doing.
config LOWMEM_CAM_NUM
int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL
default 3
config RELOCATABLE
bool "Build a relocatable kernel (EXPERIMENTAL)"
depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE
...
...
@@ -794,7 +811,7 @@ config PHYSICAL_START
config PHYSICAL_ALIGN
hex
default "0x
10
000000" if FSL_BOOKE
default "0x
04
000000" if FSL_BOOKE
help
This value puts the alignment restrictions on physical address
where kernel is loaded and run from. Kernel is compiled for an
...
...
arch/powerpc/boot/dts/gef_sbc310.dts
0 → 100644
浏览文件 @
edbc29d7
/*
*
GE
Fanuc
SBC310
Device
Tree
Source
*
*
Copyright
2008
GE
Fanuc
Intelligent
Platforms
Embedded
Systems
,
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
.
*
*
Based
on
:
SBS
CM6
Device
Tree
Source
*
Copyright
2007
SBS
Technologies
GmbH
&
Co
.
KG
*
And
:
mpc8641_hpcn
.
dts
(
MPC8641
HPCN
Device
Tree
Source
)
*
Copyright
2006
Freescale
Semiconductor
Inc
.
*/
/*
*
Compiled
with
dtc
-
I
dts
-
O
dtb
-
o
gef_sbc310
.
dtb
gef_sbc310
.
dts
*/
/
dts
-
v1
/;
/
{
model
=
"GEF_SBC310"
;
compatible
=
"gef,sbc310"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
aliases
{
ethernet0
=
&
enet0
;
ethernet1
=
&
enet1
;
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
};
cpus
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
PowerPC
,
8641
@
0
{
device_type
=
"cpu"
;
reg
=
<
0
>;
d
-
cache
-
line
-
size
=
<
32
>;
//
32
bytes
i
-
cache
-
line
-
size
=
<
32
>;
//
32
bytes
d
-
cache
-
size
=
<
32768
>;
//
L1
,
32
K
i
-
cache
-
size
=
<
32768
>;
//
L1
,
32
K
timebase
-
frequency
=
<
0
>;
//
From
uboot
bus
-
frequency
=
<
0
>;
//
From
uboot
clock
-
frequency
=
<
0
>;
//
From
uboot
};
PowerPC
,
8641
@
1
{
device_type
=
"cpu"
;
reg
=
<
1
>;
d
-
cache
-
line
-
size
=
<
32
>;
//
32
bytes
i
-
cache
-
line
-
size
=
<
32
>;
//
32
bytes
d
-
cache
-
size
=
<
32768
>;
//
L1
,
32
K
i
-
cache
-
size
=
<
32768
>;
//
L1
,
32
K
timebase
-
frequency
=
<
0
>;
//
From
uboot
bus
-
frequency
=
<
0
>;
//
From
uboot
clock
-
frequency
=
<
0
>;
//
From
uboot
};
};
memory
{
device_type
=
"memory"
;
reg
=
<
0x0
0x40000000
>;
//
set
by
uboot
};
localbus
@
fef05000
{
#
address
-
cells
=
<
2
>;
#
size
-
cells
=
<
1
>;
compatible
=
"fsl,mpc8641-localbus"
,
"simple-bus"
;
reg
=
<
0xfef05000
0x1000
>;
interrupts
=
<
19
2
>;
interrupt
-
parent
=
<&
mpic
>;
ranges
=
<
0
0
0xff000000
0x01000000
//
16
MB
Boot
flash
1
0
0xe0000000
0x08000000
//
Paged
Flash
0
2
0
0xe8000000
0x08000000
//
Paged
Flash
1
3
0
0xfc100000
0x00020000
//
NVRAM
4
0
0xfc000000
0x00010000
>;
//
FPGA
/*
flash
@
0
,
0
is
a
mirror
of
part
of
the
memory
in
flash
@
1
,
0
flash
@
0
,
0
{
compatible
=
"cfi-flash"
;
reg
=
<
0
0
0x01000000
>;
bank
-
width
=
<
2
>;
device
-
width
=
<
2
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
partition
@
0
{
label
=
"firmware"
;
reg
=
<
0x00000000
0x01000000
>;
read
-
only
;
};
};
*/
flash
@
1
,
0
{
compatible
=
"cfi-flash"
;
reg
=
<
1
0
0x8000000
>;
bank
-
width
=
<
2
>;
device
-
width
=
<
2
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
partition
@
0
{
label
=
"user"
;
reg
=
<
0x00000000
0x07800000
>;
};
partition
@
7800000
{
label
=
"firmware"
;
reg
=
<
0x07800000
0x00800000
>;
read
-
only
;
};
};
fpga
@
4
,
0
{
compatible
=
"gef,fpga-regs"
;
reg
=
<
0x4
0x0
0x40
>;
};
wdt
@
4
,
2000
{
#
interrupt
-
cells
=
<
2
>;
device_type
=
"watchdog"
;
compatible
=
"gef,fpga-wdt"
;
reg
=
<
0x4
0x2000
0x8
>;
interrupts
=
<
0x1a
0x4
>;
interrupt
-
parent
=
<&
gef_pic
>;
};
/*
wdt
@
4
,
2010
{
#
interrupt
-
cells
=
<
2
>;
device_type
=
"watchdog"
;
compatible
=
"gef,fpga-wdt"
;
reg
=
<
0x4
0x2010
0x8
>;
interrupts
=
<
0x1b
0x4
>;
interrupt
-
parent
=
<&
gef_pic
>;
};
*/
gef_pic
:
pic
@
4
,
4000
{
#
interrupt
-
cells
=
<
1
>;
interrupt
-
controller
;
compatible
=
"gef,fpga-pic"
;
reg
=
<
0x4
0x4000
0x20
>;
interrupts
=
<
0x8
0x9
>;
interrupt
-
parent
=
<&
mpic
>;
};
gef_gpio
:
gpio
@
4
,
8000
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"gef,sbc310-gpio"
;
reg
=
<
0x4
0x8000
0x24
>;
gpio
-
controller
;
};
};
soc
@
fef00000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
#
interrupt
-
cells
=
<
2
>;
device_type
=
"soc"
;
compatible
=
"simple-bus"
;
ranges
=
<
0x0
0xfef00000
0x00100000
>;
reg
=
<
0xfef00000
0x100000
>;
//
CCSRBAR
1
M
bus
-
frequency
=
<
33333333
>;
i2c1
:
i2c
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl-i2c"
;
reg
=
<
0x3000
0x100
>;
interrupts
=
<
0x2b
0x2
>;
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
rtc
@
51
{
compatible
=
"epson,rx8581"
;
reg
=
<
0x00000051
>;
};
};
i2c2
:
i2c
@
3100
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl-i2c"
;
reg
=
<
0x3100
0x100
>;
interrupts
=
<
0x2b
0x2
>;
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
hwmon
@
48
{
compatible
=
"national,lm92"
;
reg
=
<
0x48
>;
};
hwmon
@
4
c
{
compatible
=
"adi,adt7461"
;
reg
=
<
0x4c
>;
};
eti
@
6
b
{
compatible
=
"dallas,ds1682"
;
reg
=
<
0x6b
>;
};
};
dma
@
21300
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
compatible
=
"fsl,mpc8641-dma"
,
"fsl,eloplus-dma"
;
reg
=
<
0x21300
0x4
>;
ranges
=
<
0x0
0x21100
0x200
>;
cell
-
index
=
<
0
>;
dma
-
channel
@
0
{
compatible
=
"fsl,mpc8641-dma-channel"
,
"fsl,eloplus-dma-channel"
;
reg
=
<
0x0
0x80
>;
cell
-
index
=
<
0
>;
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
20
2
>;
};
dma
-
channel
@
80
{
compatible
=
"fsl,mpc8641-dma-channel"
,
"fsl,eloplus-dma-channel"
;
reg
=
<
0x80
0x80
>;
cell
-
index
=
<
1
>;
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
21
2
>;
};
dma
-
channel
@
100
{
compatible
=
"fsl,mpc8641-dma-channel"
,
"fsl,eloplus-dma-channel"
;
reg
=
<
0x100
0x80
>;
cell
-
index
=
<
2
>;
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
22
2
>;
};
dma
-
channel
@
180
{
compatible
=
"fsl,mpc8641-dma-channel"
,
"fsl,eloplus-dma-channel"
;
reg
=
<
0x180
0x80
>;
cell
-
index
=
<
3
>;
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
23
2
>;
};
};
mdio
@
24520
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
compatible
=
"fsl,gianfar-mdio"
;
reg
=
<
0x24520
0x20
>;
phy0
:
ethernet
-
phy
@
0
{
interrupt
-
parent
=
<&
gef_pic
>;
interrupts
=
<
0x9
0x4
>;
reg
=
<
1
>;
};
phy2
:
ethernet
-
phy
@
2
{
interrupt
-
parent
=
<&
gef_pic
>;
interrupts
=
<
0x8
0x4
>;
reg
=
<
3
>;
};
};
enet0
:
ethernet
@
24000
{
device_type
=
"network"
;
model
=
"eTSEC"
;
compatible
=
"gianfar"
;
reg
=
<
0x24000
0x1000
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
0x1d
0x2
0x1e
0x2
0x22
0x2
>;
interrupt
-
parent
=
<&
mpic
>;
phy
-
handle
=
<&
phy0
>;
phy
-
connection
-
type
=
"gmii"
;
};
enet1
:
ethernet
@
26000
{
device_type
=
"network"
;
model
=
"eTSEC"
;
compatible
=
"gianfar"
;
reg
=
<
0x26000
0x1000
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
0x1f
0x2
0x20
0x2
0x21
0x2
>;
interrupt
-
parent
=
<&
mpic
>;
phy
-
handle
=
<&
phy2
>;
phy
-
connection
-
type
=
"gmii"
;
};
serial0
:
serial
@
4500
{
cell
-
index
=
<
0
>;
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
0x4500
0x100
>;
clock
-
frequency
=
<
0
>;
interrupts
=
<
0x2a
0x2
>;
interrupt
-
parent
=
<&
mpic
>;
};
serial1
:
serial
@
4600
{
cell
-
index
=
<
1
>;
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
0x4600
0x100
>;
clock
-
frequency
=
<
0
>;
interrupts
=
<
0x1c
0x2
>;
interrupt
-
parent
=
<&
mpic
>;
};
mpic
:
pic
@
40000
{
clock
-
frequency
=
<
0
>;
interrupt
-
controller
;
#
address
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
reg
=
<
0x40000
0x40000
>;
compatible
=
"chrp,open-pic"
;
device_type
=
"open-pic"
;
};
global
-
utilities
@
e0000
{
compatible
=
"fsl,mpc8641-guts"
;
reg
=
<
0xe0000
0x1000
>;
fsl
,
has
-
rstcr
;
};
};
pci0
:
pcie
@
fef08000
{
compatible
=
"fsl,mpc8641-pcie"
;
device_type
=
"pci"
;
#
interrupt
-
cells
=
<
1
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
reg
=
<
0xfef08000
0x1000
>;
bus
-
range
=
<
0x0
0xff
>;
ranges
=
<
0x02000000
0x0
0x80000000
0x80000000
0x0
0x40000000
0x01000000
0x0
0x00000000
0xfe000000
0x0
0x00400000
>;
clock
-
frequency
=
<
33333333
>;
interrupt
-
parent
=
<&
mpic
>;
interrupts
=
<
0x18
0x2
>;
interrupt
-
map
-
mask
=
<
0xf800
0x0
0x0
0x7
>;
interrupt
-
map
=
<
0x0000
0x0
0x0
0x1
&
mpic
0x0
0x2
0x0000
0x0
0x0
0x2
&
mpic
0x1
0x2
0x0000
0x0
0x0
0x3
&
mpic
0x2
0x2
0x0000
0x0
0x0
0x4
&
mpic
0x3
0x2
>;
pcie
@
0
{
reg
=
<
0
0
0
0
0
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
device_type
=
"pci"
;
ranges
=
<
0x02000000
0x0
0x80000000
0x02000000
0x0
0x80000000
0x0
0x40000000
0x01000000
0x0
0x00000000
0x01000000
0x0
0x00000000
0x0
0x00400000
>;
};
};
};
arch/powerpc/boot/dts/mpc8315erdb.dts
浏览文件 @
edbc29d7
...
...
@@ -22,6 +22,8 @@
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
pci1
=
&
pci1
;
pci2
=
&
pci2
;
};
cpus
{
...
...
@@ -349,4 +351,66 @@
compatible
=
"fsl,mpc8349-pci"
;
device_type
=
"pci"
;
};
pci1
:
pcie
@
e0009000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8315-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe0009000
0x00001000
>;
ranges
=
<
0x02000000
0
0xa0000000
0xa0000000
0
0x10000000
0x01000000
0
0x00000000
0xb1000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
1
8
0
0
0
2
&
ipic
1
8
0
0
0
3
&
ipic
1
8
0
0
0
4
&
ipic
1
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xa0000000
0x02000000
0
0xa0000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
pci2
:
pcie
@
e000a000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8315-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe000a000
0x00001000
>;
ranges
=
<
0x02000000
0
0xc0000000
0xc0000000
0
0x10000000
0x01000000
0
0x00000000
0xd1000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
2
8
0
0
0
2
&
ipic
2
8
0
0
0
3
&
ipic
2
8
0
0
0
4
&
ipic
2
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xc0000000
0x02000000
0
0xc0000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
};
arch/powerpc/boot/dts/mpc8377_mds.dts
浏览文件 @
edbc29d7
...
...
@@ -23,6 +23,8 @@
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
pci1
=
&
pci1
;
pci2
=
&
pci2
;
};
cpus
{
...
...
@@ -311,12 +313,13 @@
fsl
,
descriptor
-
types
-
mask
=
<
0x3ab0ebf
>;
};
sdhc
@
2e000
{
model
=
"eSDHC"
;
compatible
=
"fsl,esdhc"
;
sdhci
@
2e000
{
compatible
=
"fsl,mpc8377-esdhc"
,
"fsl,mpc8379-esdhc"
;
reg
=
<
0x2e000
0x1000
>;
interrupts
=
<
42
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
/*
Filled
in
by
U
-
Boot
*/
clock
-
frequency
=
<
0
>;
};
sata
@
18000
{
...
...
@@ -409,4 +412,66 @@
compatible
=
"fsl,mpc8349-pci"
;
device_type
=
"pci"
;
};
pci1
:
pcie
@
e0009000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8377-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe0009000
0x00001000
>;
ranges
=
<
0x02000000
0
0xa8000000
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0xb8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
1
8
0
0
0
2
&
ipic
1
8
0
0
0
3
&
ipic
1
8
0
0
0
4
&
ipic
1
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xa8000000
0x02000000
0
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
pci2
:
pcie
@
e000a000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8377-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe000a000
0x00001000
>;
ranges
=
<
0x02000000
0
0xc8000000
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0xd8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
2
8
0
0
0
2
&
ipic
2
8
0
0
0
3
&
ipic
2
8
0
0
0
4
&
ipic
2
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xc8000000
0x02000000
0
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
};
arch/powerpc/boot/dts/mpc8377_rdb.dts
浏览文件 @
edbc29d7
...
...
@@ -22,6 +22,8 @@
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
pci1
=
&
pci1
;
pci2
=
&
pci2
;
};
cpus
{
...
...
@@ -107,6 +109,24 @@
reg
=
<
0x200
0x100
>;
};
gpio1
:
gpio
-
controller
@
c00
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"fsl,mpc8377-gpio"
,
"fsl,mpc8349-gpio"
;
reg
=
<
0xc00
0x100
>;
interrupts
=
<
74
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
gpio
-
controller
;
};
gpio2
:
gpio
-
controller
@
d00
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"fsl,mpc8377-gpio"
,
"fsl,mpc8349-gpio"
;
reg
=
<
0xd00
0x100
>;
interrupts
=
<
75
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
gpio
-
controller
;
};
i2c
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
...
...
@@ -116,6 +136,17 @@
interrupts
=
<
14
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
dfsrr
;
dtt
@
48
{
compatible
=
"national,lm75"
;
reg
=
<
0x48
>;
};
at24
@
50
{
compatible
=
"at24,24c256"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1339"
;
reg
=
<
0x68
>;
...
...
@@ -289,6 +320,15 @@
fsl
,
descriptor
-
types
-
mask
=
<
0x3ab0ebf
>;
};
sdhci
@
2e000
{
compatible
=
"fsl,mpc8377-esdhc"
,
"fsl,mpc8379-esdhc"
;
reg
=
<
0x2e000
0x1000
>;
interrupts
=
<
42
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
/*
Filled
in
by
U
-
Boot
*/
clock
-
frequency
=
<
0
>;
};
sata
@
18000
{
compatible
=
"fsl,mpc8377-sata"
,
"fsl,pq-sata"
;
reg
=
<
0x18000
0x1000
>;
...
...
@@ -350,4 +390,66 @@
compatible
=
"fsl,mpc8349-pci"
;
device_type
=
"pci"
;
};
pci1
:
pcie
@
e0009000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8377-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe0009000
0x00001000
>;
ranges
=
<
0x02000000
0
0xa8000000
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0xb8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
1
8
0
0
0
2
&
ipic
1
8
0
0
0
3
&
ipic
1
8
0
0
0
4
&
ipic
1
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xa8000000
0x02000000
0
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
pci2
:
pcie
@
e000a000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8377-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe000a000
0x00001000
>;
ranges
=
<
0x02000000
0
0xc8000000
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0xd8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
2
8
0
0
0
2
&
ipic
2
8
0
0
0
3
&
ipic
2
8
0
0
0
4
&
ipic
2
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xc8000000
0x02000000
0
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
};
arch/powerpc/boot/dts/mpc8378_mds.dts
浏览文件 @
edbc29d7
...
...
@@ -23,6 +23,8 @@
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
pci1
=
&
pci1
;
pci2
=
&
pci2
;
};
cpus
{
...
...
@@ -311,12 +313,13 @@
fsl
,
descriptor
-
types
-
mask
=
<
0x3ab0ebf
>;
};
sdhc
@
2e000
{
model
=
"eSDHC"
;
compatible
=
"fsl,esdhc"
;
sdhci
@
2e000
{
compatible
=
"fsl,mpc8378-esdhc"
,
"fsl,mpc8379-esdhc"
;
reg
=
<
0x2e000
0x1000
>;
interrupts
=
<
42
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
/*
Filled
in
by
U
-
Boot
*/
clock
-
frequency
=
<
0
>;
};
/*
IPIC
...
...
@@ -395,4 +398,66 @@
compatible
=
"fsl,mpc8349-pci"
;
device_type
=
"pci"
;
};
pci1
:
pcie
@
e0009000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8378-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe0009000
0x00001000
>;
ranges
=
<
0x02000000
0
0xa8000000
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0xb8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
1
8
0
0
0
2
&
ipic
1
8
0
0
0
3
&
ipic
1
8
0
0
0
4
&
ipic
1
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xa8000000
0x02000000
0
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
pci2
:
pcie
@
e000a000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8378-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe000a000
0x00001000
>;
ranges
=
<
0x02000000
0
0xc8000000
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0xd8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
2
8
0
0
0
2
&
ipic
2
8
0
0
0
3
&
ipic
2
8
0
0
0
4
&
ipic
2
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xc8000000
0x02000000
0
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
};
arch/powerpc/boot/dts/mpc8378_rdb.dts
浏览文件 @
edbc29d7
...
...
@@ -22,6 +22,8 @@
serial0
=
&
serial0
;
serial1
=
&
serial1
;
pci0
=
&
pci0
;
pci1
=
&
pci1
;
pci2
=
&
pci2
;
};
cpus
{
...
...
@@ -107,6 +109,24 @@
reg
=
<
0x200
0x100
>;
};
gpio1
:
gpio
-
controller
@
c00
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"fsl,mpc8378-gpio"
,
"fsl,mpc8349-gpio"
;
reg
=
<
0xc00
0x100
>;
interrupts
=
<
74
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
gpio
-
controller
;
};
gpio2
:
gpio
-
controller
@
d00
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"fsl,mpc8378-gpio"
,
"fsl,mpc8349-gpio"
;
reg
=
<
0xd00
0x100
>;
interrupts
=
<
75
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
gpio
-
controller
;
};
i2c
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
...
...
@@ -116,6 +136,17 @@
interrupts
=
<
14
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
dfsrr
;
dtt
@
48
{
compatible
=
"national,lm75"
;
reg
=
<
0x48
>;
};
at24
@
50
{
compatible
=
"at24,24c256"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1339"
;
reg
=
<
0x68
>;
...
...
@@ -287,6 +318,15 @@
fsl
,
descriptor
-
types
-
mask
=
<
0x3ab0ebf
>;
};
sdhci
@
2e000
{
compatible
=
"fsl,mpc8378-esdhc"
,
"fsl,mpc8379-esdhc"
;
reg
=
<
0x2e000
0x1000
>;
interrupts
=
<
42
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
/*
Filled
in
by
U
-
Boot
*/
clock
-
frequency
=
<
0
>;
};
/*
IPIC
*
interrupts
cell
=
<
intr
#,
sense
>
*
sense
values
match
linux
IORESOURCE_IRQ_
*
defines
:
...
...
@@ -334,4 +374,66 @@
compatible
=
"fsl,mpc8349-pci"
;
device_type
=
"pci"
;
};
pci1
:
pcie
@
e0009000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8378-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe0009000
0x00001000
>;
ranges
=
<
0x02000000
0
0xa8000000
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0xb8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
1
8
0
0
0
2
&
ipic
1
8
0
0
0
3
&
ipic
1
8
0
0
0
4
&
ipic
1
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xa8000000
0x02000000
0
0xa8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
pci2
:
pcie
@
e000a000
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
#
interrupt
-
cells
=
<
1
>;
device_type
=
"pci"
;
compatible
=
"fsl,mpc8378-pcie"
,
"fsl,mpc8314-pcie"
;
reg
=
<
0xe000a000
0x00001000
>;
ranges
=
<
0x02000000
0
0xc8000000
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0xd8000000
0
0x00800000
>;
bus
-
range
=
<
0
255
>;
interrupt
-
map
-
mask
=
<
0xf800
0
0
7
>;
interrupt
-
map
=
<
0
0
0
1
&
ipic
2
8
0
0
0
2
&
ipic
2
8
0
0
0
3
&
ipic
2
8
0
0
0
4
&
ipic
2
8
>;
clock
-
frequency
=
<
0
>;
pcie
@
0
{
#
address
-
cells
=
<
3
>;
#
size
-
cells
=
<
2
>;
device_type
=
"pci"
;
reg
=
<
0
0
0
0
0
>;
ranges
=
<
0x02000000
0
0xc8000000
0x02000000
0
0xc8000000
0
0x10000000
0x01000000
0
0x00000000
0x01000000
0
0x00000000
0
0x00800000
>;
};
};
};
arch/powerpc/boot/dts/mpc8379_mds.dts
浏览文件 @
edbc29d7
...
...
@@ -310,12 +310,13 @@
fsl
,
descriptor
-
types
-
mask
=
<
0x3ab0ebf
>;
};
sdhc
@
2e000
{
model
=
"eSDHC"
;
compatible
=
"fsl,esdhc"
;
sdhci
@
2e000
{
compatible
=
"fsl,mpc8379-esdhc"
;
reg
=
<
0x2e000
0x1000
>;
interrupts
=
<
42
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
/*
Filled
in
by
U
-
Boot
*/
clock
-
frequency
=
<
0
>;
};
sata
@
18000
{
...
...
arch/powerpc/boot/dts/mpc8379_rdb.dts
浏览文件 @
edbc29d7
...
...
@@ -107,6 +107,24 @@
reg
=
<
0x200
0x100
>;
};
gpio1
:
gpio
-
controller
@
c00
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"fsl,mpc8379-gpio"
,
"fsl,mpc8349-gpio"
;
reg
=
<
0xc00
0x100
>;
interrupts
=
<
74
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
gpio
-
controller
;
};
gpio2
:
gpio
-
controller
@
d00
{
#
gpio
-
cells
=
<
2
>;
compatible
=
"fsl,mpc8379-gpio"
,
"fsl,mpc8349-gpio"
;
reg
=
<
0xd00
0x100
>;
interrupts
=
<
75
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
gpio
-
controller
;
};
i2c
@
3000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
...
...
@@ -116,6 +134,17 @@
interrupts
=
<
14
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
dfsrr
;
dtt
@
48
{
compatible
=
"national,lm75"
;
reg
=
<
0x48
>;
};
at24
@
50
{
compatible
=
"at24,24c256"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1339"
;
reg
=
<
0x68
>;
...
...
@@ -288,6 +317,15 @@
fsl
,
descriptor
-
types
-
mask
=
<
0x3ab0ebf
>;
};
sdhci
@
2e000
{
compatible
=
"fsl,mpc8379-esdhc"
;
reg
=
<
0x2e000
0x1000
>;
interrupts
=
<
42
0x8
>;
interrupt
-
parent
=
<&
ipic
>;
/*
Filled
in
by
U
-
Boot
*/
clock
-
frequency
=
<
0
>;
};
sata
@
18000
{
compatible
=
"fsl,mpc8379-sata"
,
"fsl,pq-sata"
;
reg
=
<
0x18000
0x1000
>;
...
...
arch/powerpc/boot/dts/tqm8540.dts
浏览文件 @
edbc29d7
...
...
@@ -84,6 +84,11 @@
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
dtt
@
50
{
compatible
=
"national,lm75"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1337"
;
reg
=
<
0x68
>;
...
...
arch/powerpc/boot/dts/tqm8541.dts
浏览文件 @
edbc29d7
...
...
@@ -83,6 +83,11 @@
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
dtt
@
50
{
compatible
=
"national,lm75"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1337"
;
reg
=
<
0x68
>;
...
...
arch/powerpc/boot/dts/tqm8548-bigflash.dts
浏览文件 @
edbc29d7
...
...
@@ -85,6 +85,11 @@
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
dtt
@
50
{
compatible
=
"national,lm75"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1337"
;
reg
=
<
0x68
>;
...
...
@@ -365,14 +370,14 @@
can0
@
2
,
0
{
compatible
=
"intel,82527"
;
//
Bosch
CC770
reg
=
<
2
0x0
0x100
>;
interrupts
=
<
4
0
>;
interrupts
=
<
4
1
>;
interrupt
-
parent
=
<&
mpic
>;
};
can1
@
2
,
100
{
compatible
=
"intel,82527"
;
//
Bosch
CC770
reg
=
<
2
0x100
0x100
>;
interrupts
=
<
4
0
>;
interrupts
=
<
4
1
>;
interrupt
-
parent
=
<&
mpic
>;
};
...
...
arch/powerpc/boot/dts/tqm8548.dts
浏览文件 @
edbc29d7
...
...
@@ -85,6 +85,11 @@
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
dtt
@
50
{
compatible
=
"national,lm75"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1337"
;
reg
=
<
0x68
>;
...
...
@@ -365,14 +370,14 @@
can0
@
2
,
0
{
compatible
=
"intel,82527"
;
//
Bosch
CC770
reg
=
<
2
0x0
0x100
>;
interrupts
=
<
4
0
>;
interrupts
=
<
4
1
>;
interrupt
-
parent
=
<&
mpic
>;
};
can1
@
2
,
100
{
compatible
=
"intel,82527"
;
//
Bosch
CC770
reg
=
<
2
0x100
0x100
>;
interrupts
=
<
4
0
>;
interrupts
=
<
4
1
>;
interrupt
-
parent
=
<&
mpic
>;
};
...
...
arch/powerpc/boot/dts/tqm8555.dts
浏览文件 @
edbc29d7
...
...
@@ -83,6 +83,11 @@
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
dtt
@
50
{
compatible
=
"national,lm75"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1337"
;
reg
=
<
0x68
>;
...
...
arch/powerpc/boot/dts/tqm8560.dts
浏览文件 @
edbc29d7
...
...
@@ -85,6 +85,11 @@
interrupt
-
parent
=
<&
mpic
>;
dfsrr
;
dtt
@
50
{
compatible
=
"national,lm75"
;
reg
=
<
0x50
>;
};
rtc
@
68
{
compatible
=
"dallas,ds1337"
;
reg
=
<
0x68
>;
...
...
@@ -335,14 +340,14 @@
can0
@
2
,
0
{
compatible
=
"intel,82527"
;
//
Bosch
CC770
reg
=
<
2
0x0
0x100
>;
interrupts
=
<
4
0
>;
interrupts
=
<
4
1
>;
interrupt
-
parent
=
<&
mpic
>;
};
can1
@
2
,
100
{
compatible
=
"intel,82527"
;
//
Bosch
CC770
reg
=
<
2
0x100
0x100
>;
interrupts
=
<
4
0
>;
interrupts
=
<
4
1
>;
interrupt
-
parent
=
<&
mpic
>;
};
};
...
...
arch/powerpc/configs/86xx/gef_sbc310_defconfig
0 → 100644
浏览文件 @
edbc29d7
此差异已折叠。
点击以展开。
arch/powerpc/include/asm/reg_booke.h
浏览文件 @
edbc29d7
...
...
@@ -110,6 +110,7 @@
#define SPRN_L1CSR0 0x3F2
/* L1 Cache Control and Status Register 0 */
#define SPRN_L1CSR1 0x3F3
/* L1 Cache Control and Status Register 1 */
#define SPRN_MMUCSR0 0x3F4
/* MMU Control and Status Register 0 */
#define SPRN_MMUCFG 0x3F7
/* MMU Configuration Register */
#define SPRN_PIT 0x3DB
/* Programmable Interval Timer */
#define SPRN_BUCSR 0x3F5
/* Branch Unit Control and Status */
#define SPRN_L2CSR0 0x3F9
/* L2 Data Cache Control and Status Register 0 */
...
...
arch/powerpc/kernel/Makefile
浏览文件 @
edbc29d7
...
...
@@ -61,6 +61,7 @@ obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o \
obj64-$(CONFIG_HIBERNATION)
+=
swsusp_asm64.o
obj-$(CONFIG_MODULES)
+=
module.o module_
$(CONFIG_WORD_SIZE)
.o
obj-$(CONFIG_44x)
+=
cpu_setup_44x.o
obj-$(CONFIG_FSL_BOOKE)
+=
cpu_setup_fsl_booke.o
extra-$(CONFIG_PPC_STD_MMU)
:=
head_32.o
extra-$(CONFIG_PPC64)
:=
head_64.o
...
...
arch/powerpc/kernel/cpu_setup_fsl_booke.S
0 → 100644
浏览文件 @
edbc29d7
/*
*
This
file
contains
low
level
CPU
setup
functions
.
*
Kumar
Gala
<
galak
@
kernel
.
crashing
.
org
>
*
Copyright
2009
Freescale
Semiconductor
,
Inc
.
*
*
Based
on
cpu_setup_6xx
code
by
*
Benjamin
Herrenschmidt
<
benh
@
kernel
.
crashing
.
org
>
*
*
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 <asm/processor.h>
#include <asm/cputable.h>
#include <asm/ppc_asm.h>
_GLOBAL
(
__setup_cpu_e200
)
/
*
enable
dedicated
debug
exception
handling
resources
(
Debug
APU
)
*/
mfspr
r3
,
SPRN_HID0
ori
r3
,
r3
,
HID0_DAPUEN
@
l
mtspr
SPRN_HID0
,
r3
b
__setup_e200_ivors
_GLOBAL
(
__setup_cpu_e500v1
)
_GLOBAL
(
__setup_cpu_e500v2
)
b
__setup_e500_ivors
_GLOBAL
(
__setup_cpu_e500mc
)
b
__setup_e500mc_ivors
arch/powerpc/kernel/cputable.c
浏览文件 @
edbc29d7
...
...
@@ -35,6 +35,10 @@ const char *powerpc_base_platform;
* and ppc64
*/
#ifdef CONFIG_PPC32
extern
void
__setup_cpu_e200
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_e500v1
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_e500v2
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_e500mc
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_440ep
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_440epx
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
extern
void
__setup_cpu_440gx
(
unsigned
long
offset
,
struct
cpu_spec
*
spec
);
...
...
@@ -1687,6 +1691,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
PPC_FEATURE_UNIFIED_CACHE
,
.
mmu_features
=
MMU_FTR_TYPE_FSL_E
,
.
dcache_bsize
=
32
,
.
cpu_setup
=
__setup_cpu_e200
,
.
machine_check
=
machine_check_e200
,
.
platform
=
"ppc5554"
,
}
...
...
@@ -1706,6 +1711,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
num_pmcs
=
4
,
.
oprofile_cpu_type
=
"ppc/e500"
,
.
oprofile_type
=
PPC_OPROFILE_FSL_EMB
,
.
cpu_setup
=
__setup_cpu_e500v1
,
.
machine_check
=
machine_check_e500
,
.
platform
=
"ppc8540"
,
},
...
...
@@ -1724,6 +1730,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
num_pmcs
=
4
,
.
oprofile_cpu_type
=
"ppc/e500"
,
.
oprofile_type
=
PPC_OPROFILE_FSL_EMB
,
.
cpu_setup
=
__setup_cpu_e500v2
,
.
machine_check
=
machine_check_e500
,
.
platform
=
"ppc8548"
,
},
...
...
@@ -1739,6 +1746,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
.
num_pmcs
=
4
,
.
oprofile_cpu_type
=
"ppc/e500"
,
/* xxx - galak, e500mc? */
.
oprofile_type
=
PPC_OPROFILE_FSL_EMB
,
.
cpu_setup
=
__setup_cpu_e500mc
,
.
machine_check
=
machine_check_e500
,
.
platform
=
"ppce500mc"
,
},
...
...
arch/powerpc/kernel/head_booke.h
浏览文件 @
edbc29d7
...
...
@@ -70,10 +70,10 @@
/* only on e500mc/e200 */
#define DEBUG_STACK_BASE dbgirq_ctx
#ifdef CONFIG_PPC_E500MC
#define DEBUG_SPRG SPRN_SPRG9
#else
#ifdef CONFIG_E200
#define DEBUG_SPRG SPRN_SPRG6W
#else
#define DEBUG_SPRG SPRN_SPRG9
#endif
#define EXC_LVL_FRAME_OVERHEAD (THREAD_SIZE - INT_FRAME_SIZE - EXC_LVL_SIZE)
...
...
arch/powerpc/kernel/head_fsl_booke.S
浏览文件 @
edbc29d7
...
...
@@ -103,10 +103,15 @@ invstr: mflr r6 /* Make it accessible */
or
r7
,
r7
,
r4
mtspr
SPRN_MAS6
,
r7
tlbsx
0
,
r6
/*
search
MSR
[
IS
],
SPID
=
PID0
*/
#ifndef CONFIG_E200
mfspr
r7
,
SPRN_MAS1
andis
.
r7
,
r7
,
MAS1_VALID
@
h
bne
match_TLB
mfspr
r7
,
SPRN_MMUCFG
rlwinm
r7
,
r7
,
21
,
28
,
31
/*
extract
MMUCFG
[
NPIDS
]
*/
cmpwi
r7
,
3
bne
match_TLB
/*
skip
if
NPIDS
!=
3
*/
mfspr
r7
,
SPRN_PID1
slwi
r7
,
r7
,
16
or
r7
,
r7
,
r4
...
...
@@ -120,7 +125,7 @@ invstr: mflr r6 /* Make it accessible */
or
r7
,
r7
,
r4
mtspr
SPRN_MAS6
,
r7
tlbsx
0
,
r6
/*
Fall
through
,
we
had
to
match
*/
#endif
match_TLB
:
mfspr
r7
,
SPRN_MAS0
rlwinm
r3
,
r7
,
16
,
20
,
31
/*
Extract
MAS0
(
Entry
)
*/
...
...
@@ -215,14 +220,19 @@ skpinv: addi r6,r6,1 /* Increment */
/*
4.
Clear
out
PIDs
&
Search
info
*/
li
r6
,
0
mtspr
SPRN_MAS6
,
r6
mtspr
SPRN_PID0
,
r6
#ifndef CONFIG_E200
mfspr
r7
,
SPRN_MMUCFG
rlwinm
r7
,
r7
,
21
,
28
,
31
/*
extract
MMUCFG
[
NPIDS
]
*/
cmpwi
r7
,
3
bne
2
f
/*
skip
if
NPIDS
!=
3
*/
mtspr
SPRN_PID1
,
r6
mtspr
SPRN_PID2
,
r6
#endif
mtspr
SPRN_MAS6
,
r6
/*
5.
Invalidate
mapping
we
started
in
*/
2
:
lis
r7
,
0x1000
/*
Set
MAS0
(
TLBSEL
)
=
1
*/
rlwimi
r7
,
r3
,
16
,
4
,
15
/*
Setup
MAS0
=
TLBSEL
|
ESEL
(
r3
)
*/
mtspr
SPRN_MAS0
,
r7
...
...
@@ -298,19 +308,7 @@ skpinv: addi r6,r6,1 /* Increment */
SET_IVOR
(12,
WatchdogTimer
)
;
SET_IVOR
(13,
DataTLBError
)
;
SET_IVOR
(14,
InstructionTLBError
)
;
SET_IVOR
(15,
DebugDebug
)
;
#if defined(CONFIG_E500) && !defined(CONFIG_PPC_E500MC)
SET_IVOR
(15,
DebugCrit
)
;
#endif
SET_IVOR
(32,
SPEUnavailable
)
;
SET_IVOR
(33,
SPEFloatingPointData
)
;
SET_IVOR
(34,
SPEFloatingPointRound
)
;
#ifndef CONFIG_E200
SET_IVOR
(35,
PerformanceMonitor
)
;
#endif
#ifdef CONFIG_PPC_E500MC
SET_IVOR
(36,
Doorbell
)
;
#endif
/
*
Establish
the
interrupt
vector
base
*/
lis
r4
,
interrupt_base
@
h
/*
IVPR
only
uses
the
high
16
-
bits
*/
...
...
@@ -329,12 +327,6 @@ skpinv: addi r6,r6,1 /* Increment */
oris
r2
,
r2
,
HID0_DOZE
@
h
mtspr
SPRN_HID0
,
r2
#endif
#ifdef CONFIG_E200
/
*
enable
dedicated
debug
exception
handling
resources
(
Debug
APU
)
*/
mfspr
r2
,
SPRN_HID0
ori
r2
,
r2
,
HID0_DAPUEN
@
l
mtspr
SPRN_HID0
,
r2
#endif
#if !defined(CONFIG_BDI_SWITCH)
/
*
...
...
@@ -706,15 +698,11 @@ interrupt_base:
/
*
Performance
Monitor
*/
EXCEPTION
(0
x2060
,
PerformanceMonitor
,
performance_monitor_exception
,
EXC_XFER_STD
)
#ifdef CONFIG_PPC_E500MC
EXCEPTION
(0
x2070
,
Doorbell
,
unknown_exception
,
EXC_XFER_STD
)
#endif
/
*
Debug
Interrupt
*/
DEBUG_DEBUG_EXCEPTION
#if defined(CONFIG_E500) && !defined(CONFIG_PPC_E500MC)
DEBUG_CRIT_EXCEPTION
#endif
/*
*
Local
functions
...
...
@@ -897,6 +885,45 @@ KernelSPE:
*
Global
functions
*/
/*
Adjust
or
setup
IVORs
for
e200
*/
_GLOBAL
(
__setup_e200_ivors
)
li
r3
,
DebugDebug
@
l
mtspr
SPRN_IVOR15
,
r3
li
r3
,
SPEUnavailable
@
l
mtspr
SPRN_IVOR32
,
r3
li
r3
,
SPEFloatingPointData
@
l
mtspr
SPRN_IVOR33
,
r3
li
r3
,
SPEFloatingPointRound
@
l
mtspr
SPRN_IVOR34
,
r3
sync
blr
/*
Adjust
or
setup
IVORs
for
e500v1
/
v2
*/
_GLOBAL
(
__setup_e500_ivors
)
li
r3
,
DebugCrit
@
l
mtspr
SPRN_IVOR15
,
r3
li
r3
,
SPEUnavailable
@
l
mtspr
SPRN_IVOR32
,
r3
li
r3
,
SPEFloatingPointData
@
l
mtspr
SPRN_IVOR33
,
r3
li
r3
,
SPEFloatingPointRound
@
l
mtspr
SPRN_IVOR34
,
r3
li
r3
,
PerformanceMonitor
@
l
mtspr
SPRN_IVOR35
,
r3
sync
blr
/*
Adjust
or
setup
IVORs
for
e500mc
*/
_GLOBAL
(
__setup_e500mc_ivors
)
li
r3
,
DebugDebug
@
l
mtspr
SPRN_IVOR15
,
r3
li
r3
,
PerformanceMonitor
@
l
mtspr
SPRN_IVOR35
,
r3
li
r3
,
Doorbell
@
l
mtspr
SPRN_IVOR36
,
r3
sync
blr
/*
*
extern
void
loadcam_entry
(
unsigned
int
index
)
*
...
...
arch/powerpc/mm/fsl_booke_mmu.c
浏览文件 @
edbc29d7
...
...
@@ -56,10 +56,14 @@
extern
void
loadcam_entry
(
unsigned
int
index
);
unsigned
int
tlbcam_index
;
static
unsigned
long
__cam0
,
__cam1
,
__cam2
;
static
unsigned
long
cam
[
CONFIG_LOWMEM_CAM_NUM
]
;
#define NUM_TLBCAMS (16)
#if defined(CONFIG_LOWMEM_CAM_NUM_BOOL) && (CONFIG_LOWMEM_CAM_NUM >= NUM_TLBCAMS)
#error "LOWMEM_CAM_NUM must be less than NUM_TLBCAMS"
#endif
struct
tlbcam
TLBCAM
[
NUM_TLBCAMS
];
struct
tlbcamrange
{
...
...
@@ -152,19 +156,19 @@ void invalidate_tlbcam_entry(int index)
loadcam_entry
(
index
);
}
void
__init
cam_mapin_ram
(
unsigned
long
cam0
,
unsigned
long
cam1
,
unsigned
long
cam2
)
unsigned
long
__init
mmu_mapin_ram
(
void
)
{
settlbcam
(
0
,
PAGE_OFFSET
,
memstart_addr
,
cam0
,
_PAGE_KERNEL
,
0
)
;
tlbcam_index
++
;
if
(
cam1
)
{
tlbcam_index
++
;
settlbcam
(
1
,
PAGE_OFFSET
+
cam0
,
memstart_addr
+
cam0
,
cam1
,
_PAGE_KERNEL
,
0
);
}
if
(
cam2
)
{
unsigned
long
virt
=
PAGE_OFFSET
;
phys_addr_t
phys
=
memstart_addr
;
while
(
cam
[
tlbcam_index
]
&&
tlbcam_index
<
ARRAY_SIZE
(
cam
))
{
settlbcam
(
tlbcam_index
,
virt
,
phys
,
cam
[
tlbcam_index
]
,
_PAGE_KERNEL
,
0
);
virt
+=
cam
[
tlbcam_index
];
phys
+=
cam
[
tlbcam_index
];
tlbcam_index
++
;
settlbcam
(
2
,
PAGE_OFFSET
+
cam0
+
cam1
,
memstart_addr
+
cam0
+
cam1
,
cam2
,
_PAGE_KERNEL
,
0
);
}
return
virt
-
PAGE_OFFSET
;
}
/*
...
...
@@ -175,51 +179,46 @@ void __init MMU_init_hw(void)
flush_instruction_cache
();
}
unsigned
long
__init
mmu_mapin_ram
(
void
)
{
cam_mapin_ram
(
__cam0
,
__cam1
,
__cam2
);
return
__cam0
+
__cam1
+
__cam2
;
}
void
__init
adjust_total_lowmem
(
void
)
{
phys_addr_t
max_lowmem_size
=
__max_low_memory
;
phys_addr_t
cam_max_size
=
0x10000000
;
phys_addr_t
ram
;
unsigned
int
max_cam
=
(
mfspr
(
SPRN_TLB1CFG
)
>>
16
)
&
0xff
;
char
buf
[
ARRAY_SIZE
(
cam
)
*
5
+
1
],
*
p
=
buf
;
int
i
;
unsigned
long
virt
=
PAGE_OFFSET
&
0xffffffffUL
;
unsigned
long
phys
=
memstart_addr
&
0xffffffffUL
;
/* adjust CAM size to max_lowmem_size */
if
(
max_lowmem_size
<
cam_max_size
)
cam_max_size
=
max_lowmem_size
;
/* Convert (4^max) kB to (2^max) bytes */
max_cam
=
max_cam
*
2
+
10
;
/* adjust lowmem size to
max_lowmem_size
*/
ram
=
min
(
max_lowmem_size
,
total_lowmem
);
/* adjust lowmem size to
__max_low_memory
*/
ram
=
min
(
(
phys_addr_t
)
__max_low_memory
,
(
phys_addr_t
)
total_lowmem
);
/* Calculate CAM values */
__cam0
=
1UL
<<
2
*
(
__ilog2
(
ram
)
/
2
);
if
(
__cam0
>
cam_max_size
)
__cam0
=
cam_max_size
;
ram
-=
__cam0
;
if
(
ram
)
{
__cam1
=
1UL
<<
2
*
(
__ilog2
(
ram
)
/
2
);
if
(
__cam1
>
cam_max_size
)
__cam1
=
cam_max_size
;
ram
-=
__cam1
;
}
if
(
ram
)
{
__cam2
=
1UL
<<
2
*
(
__ilog2
(
ram
)
/
2
);
if
(
__cam2
>
cam_max_size
)
__cam2
=
cam_max_size
;
ram
-=
__cam2
;
__max_low_memory
=
0
;
for
(
i
=
0
;
ram
&&
i
<
ARRAY_SIZE
(
cam
);
i
++
)
{
unsigned
int
camsize
=
__ilog2
(
ram
)
&
~
1U
;
unsigned
int
align
=
__ffs
(
virt
|
phys
)
&
~
1U
;
if
(
camsize
>
align
)
camsize
=
align
;
if
(
camsize
>
max_cam
)
camsize
=
max_cam
;
cam
[
i
]
=
1UL
<<
camsize
;
ram
-=
cam
[
i
];
__max_low_memory
+=
cam
[
i
];
virt
+=
cam
[
i
];
phys
+=
cam
[
i
];
p
+=
sprintf
(
p
,
"%lu/"
,
cam
[
i
]
>>
20
);
}
for
(;
i
<
ARRAY_SIZE
(
cam
);
i
++
)
p
+=
sprintf
(
p
,
"0/"
);
p
[
-
1
]
=
'\0'
;
printk
(
KERN_INFO
"Memory CAM mapping: CAM0=%ldMb, CAM1=%ldMb,"
" CAM2=%ldMb residual: %ldMb
\n
"
,
__cam0
>>
20
,
__cam1
>>
20
,
__cam2
>>
20
,
(
long
int
)((
total_lowmem
-
__cam0
-
__cam1
-
__cam2
)
>>
20
));
__max_low_memory
=
__cam0
+
__cam1
+
__cam2
;
pr_info
(
"Memory CAM mapping: %s Mb, residual: %ldMb
\n
"
,
buf
,
(
total_lowmem
-
__max_low_memory
)
>>
20
);
__initial_memory_limit_addr
=
memstart_addr
+
__max_low_memory
;
}
arch/powerpc/platforms/83xx/mpc831x_rdb.c
浏览文件 @
edbc29d7
...
...
@@ -38,6 +38,8 @@ static void __init mpc831x_rdb_setup_arch(void)
#ifdef CONFIG_PCI
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8349-pci"
)
mpc83xx_add_bridge
(
np
);
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8314-pcie"
)
mpc83xx_add_bridge
(
np
);
#endif
mpc831x_usb_cfg
();
}
...
...
arch/powerpc/platforms/83xx/mpc837x_mds.c
浏览文件 @
edbc29d7
...
...
@@ -84,14 +84,10 @@ static void __init mpc837x_mds_setup_arch(void)
ppc_md
.
progress
(
"mpc837x_mds_setup_arch()"
,
0
);
#ifdef CONFIG_PCI
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8349-pci"
)
{
if
(
!
of_device_is_available
(
np
))
{
pr_warning
(
"%s: disabled by the firmware.
\n
"
,
np
->
full_name
);
continue
;
}
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8349-pci"
)
mpc83xx_add_bridge
(
np
);
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8314-pcie"
)
mpc83xx_add_bridge
(
np
);
}
#endif
mpc837xmds_usb_cfg
();
}
...
...
arch/powerpc/platforms/83xx/mpc837x_rdb.c
浏览文件 @
edbc29d7
...
...
@@ -38,6 +38,8 @@ static void __init mpc837x_rdb_setup_arch(void)
#ifdef CONFIG_PCI
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8349-pci"
)
mpc83xx_add_bridge
(
np
);
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8314-pcie"
)
mpc83xx_add_bridge
(
np
);
#endif
mpc837x_usb_cfg
();
}
...
...
arch/powerpc/platforms/86xx/Kconfig
浏览文件 @
edbc29d7
...
...
@@ -31,6 +31,14 @@ config MPC8610_HPCD
help
This option enables support for the MPC8610 HPCD board.
config GEF_SBC310
bool "GE Fanuc SBC310"
select DEFAULT_UIMAGE
select GENERIC_GPIO
select ARCH_REQUIRE_GPIOLIB
help
This option enables support for GE Fanuc's SBC310.
config GEF_SBC610
bool "GE Fanuc SBC610"
select DEFAULT_UIMAGE
...
...
@@ -48,7 +56,7 @@ config MPC8641
select FSL_PCI if PCI
select PPC_UDBG_16550
select MPIC
default y if MPC8641_HPCN || SBC8641D || GEF_SBC610
default y if MPC8641_HPCN || SBC8641D || GEF_SBC610
|| GEF_SBC310
config MPC8610
bool
...
...
arch/powerpc/platforms/86xx/Makefile
浏览文件 @
edbc29d7
...
...
@@ -9,3 +9,4 @@ obj-$(CONFIG_SBC8641D) += sbc8641d.o
obj-$(CONFIG_MPC8610_HPCD)
+=
mpc8610_hpcd.o
gef-gpio-$(CONFIG_GPIOLIB)
+=
gef_gpio.o
obj-$(CONFIG_GEF_SBC610)
+=
gef_sbc610.o gef_pic.o
$
(
gef-gpio-y
)
obj-$(CONFIG_GEF_SBC310)
+=
gef_sbc310.o gef_pic.o
$
(
gef-gpio-y
)
arch/powerpc/platforms/86xx/gef_gpio.c
浏览文件 @
edbc29d7
...
...
@@ -37,8 +37,6 @@
#define GEF_GPIO_OVERRUN 0x1C
#define GEF_GPIO_MODE 0x20
#define NUM_GPIO 19
static
void
_gef_gpio_set
(
void
__iomem
*
reg
,
unsigned
int
offset
,
int
value
)
{
unsigned
int
data
;
...
...
@@ -103,10 +101,10 @@ static void gef_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
static
int
__init
gef_gpio_init
(
void
)
{
struct
device_node
*
np
;
int
retval
;
struct
of_mm_gpio_chip
*
gef_gpio_chip
;
for_each_compatible_node
(
np
,
NULL
,
"gef,sbc610-gpio"
)
{
int
retval
;
struct
of_mm_gpio_chip
*
gef_gpio_chip
;
pr_debug
(
"%s: Initialising GEF GPIO
\n
"
,
np
->
full_name
);
...
...
@@ -120,7 +118,35 @@ static int __init gef_gpio_init(void)
/* Setup pointers to chip functions */
gef_gpio_chip
->
of_gc
.
gpio_cells
=
2
;
gef_gpio_chip
->
of_gc
.
gc
.
ngpio
=
NUM_GPIO
;
gef_gpio_chip
->
of_gc
.
gc
.
ngpio
=
19
;
gef_gpio_chip
->
of_gc
.
gc
.
direction_input
=
gef_gpio_dir_in
;
gef_gpio_chip
->
of_gc
.
gc
.
direction_output
=
gef_gpio_dir_out
;
gef_gpio_chip
->
of_gc
.
gc
.
get
=
gef_gpio_get
;
gef_gpio_chip
->
of_gc
.
gc
.
set
=
gef_gpio_set
;
/* This function adds a memory mapped GPIO chip */
retval
=
of_mm_gpiochip_add
(
np
,
gef_gpio_chip
);
if
(
retval
)
{
kfree
(
gef_gpio_chip
);
pr_err
(
"%s: Unable to add GPIO
\n
"
,
np
->
full_name
);
}
}
for_each_compatible_node
(
np
,
NULL
,
"gef,sbc310-gpio"
)
{
pr_debug
(
"%s: Initialising GEF GPIO
\n
"
,
np
->
full_name
);
/* Allocate chip structure */
gef_gpio_chip
=
kzalloc
(
sizeof
(
*
gef_gpio_chip
),
GFP_KERNEL
);
if
(
!
gef_gpio_chip
)
{
pr_err
(
"%s: Unable to allocate structure
\n
"
,
np
->
full_name
);
continue
;
}
/* Setup pointers to chip functions */
gef_gpio_chip
->
of_gc
.
gpio_cells
=
2
;
gef_gpio_chip
->
of_gc
.
gc
.
ngpio
=
6
;
gef_gpio_chip
->
of_gc
.
gc
.
direction_input
=
gef_gpio_dir_in
;
gef_gpio_chip
->
of_gc
.
gc
.
direction_output
=
gef_gpio_dir_out
;
gef_gpio_chip
->
of_gc
.
gc
.
get
=
gef_gpio_get
;
...
...
arch/powerpc/platforms/86xx/gef_sbc310.c
0 → 100644
浏览文件 @
edbc29d7
/*
* GE Fanuc SBC310 board support
*
* Author: Martyn Welch <martyn.welch@gefanuc.com>
*
* Copyright 2008 GE Fanuc Intelligent Platforms Embedded Systems, 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.
*
* Based on: mpc86xx_hpcn.c (MPC86xx HPCN board specific routines)
* Copyright 2006 Freescale Semiconductor Inc.
*
* NEC fixup adapted from arch/mips/pci/fixup-lm2e.c
*/
#include <linux/stddef.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/kdev_t.h>
#include <linux/delay.h>
#include <linux/seq_file.h>
#include <linux/of_platform.h>
#include <asm/system.h>
#include <asm/time.h>
#include <asm/machdep.h>
#include <asm/pci-bridge.h>
#include <asm/mpc86xx.h>
#include <asm/prom.h>
#include <mm/mmu_decl.h>
#include <asm/udbg.h>
#include <asm/mpic.h>
#include <sysdev/fsl_pci.h>
#include <sysdev/fsl_soc.h>
#include "mpc86xx.h"
#include "gef_pic.h"
#undef DEBUG
#ifdef DEBUG
#define DBG (fmt...) do { printk(KERN_ERR "SBC310: " fmt); } while (0)
#else
#define DBG (fmt...) do { } while (0)
#endif
void
__iomem
*
sbc310_regs
;
static
void
__init
gef_sbc310_init_irq
(
void
)
{
struct
device_node
*
cascade_node
=
NULL
;
mpc86xx_init_irq
();
/*
* There is a simple interrupt handler in the main FPGA, this needs
* to be cascaded into the MPIC
*/
cascade_node
=
of_find_compatible_node
(
NULL
,
NULL
,
"gef,fpga-pic"
);
if
(
!
cascade_node
)
{
printk
(
KERN_WARNING
"SBC310: No FPGA PIC
\n
"
);
return
;
}
gef_pic_init
(
cascade_node
);
of_node_put
(
cascade_node
);
}
static
void
__init
gef_sbc310_setup_arch
(
void
)
{
struct
device_node
*
regs
;
#ifdef CONFIG_PCI
struct
device_node
*
np
;
for_each_compatible_node
(
np
,
"pci"
,
"fsl,mpc8641-pcie"
)
{
fsl_add_bridge
(
np
,
1
);
}
#endif
printk
(
KERN_INFO
"GE Fanuc Intelligent Platforms SBC310 6U VPX SBC
\n
"
);
#ifdef CONFIG_SMP
mpc86xx_smp_init
();
#endif
/* Remap basic board registers */
regs
=
of_find_compatible_node
(
NULL
,
NULL
,
"gef,fpga-regs"
);
if
(
regs
)
{
sbc310_regs
=
of_iomap
(
regs
,
0
);
if
(
sbc310_regs
==
NULL
)
printk
(
KERN_WARNING
"Unable to map board registers
\n
"
);
of_node_put
(
regs
);
}
}
/* Return the PCB revision */
static
unsigned
int
gef_sbc310_get_board_id
(
void
)
{
unsigned
int
reg
;
reg
=
ioread32
(
sbc310_regs
);
return
reg
&
0xff
;
}
/* Return the PCB revision */
static
unsigned
int
gef_sbc310_get_pcb_rev
(
void
)
{
unsigned
int
reg
;
reg
=
ioread32
(
sbc310_regs
);
return
(
reg
>>
8
)
&
0xff
;
}
/* Return the board (software) revision */
static
unsigned
int
gef_sbc310_get_board_rev
(
void
)
{
unsigned
int
reg
;
reg
=
ioread32
(
sbc310_regs
);
return
(
reg
>>
16
)
&
0xff
;
}
/* Return the FPGA revision */
static
unsigned
int
gef_sbc310_get_fpga_rev
(
void
)
{
unsigned
int
reg
;
reg
=
ioread32
(
sbc310_regs
);
return
(
reg
>>
24
)
&
0xf
;
}
static
void
gef_sbc310_show_cpuinfo
(
struct
seq_file
*
m
)
{
uint
svid
=
mfspr
(
SPRN_SVR
);
seq_printf
(
m
,
"Vendor
\t\t
: GE Fanuc Intelligent Platforms
\n
"
);
seq_printf
(
m
,
"Board ID
\t
: 0x%2.2x
\n
"
,
gef_sbc310_get_board_id
());
seq_printf
(
m
,
"Revision
\t
: %u%c
\n
"
,
gef_sbc310_get_pcb_rev
(),
(
'A'
+
gef_sbc310_get_board_rev
()
-
1
));
seq_printf
(
m
,
"FPGA Revision
\t
: %u
\n
"
,
gef_sbc310_get_fpga_rev
());
seq_printf
(
m
,
"SVR
\t\t
: 0x%x
\n
"
,
svid
);
}
static
void
__init
gef_sbc310_nec_fixup
(
struct
pci_dev
*
pdev
)
{
unsigned
int
val
;
printk
(
KERN_INFO
"Running NEC uPD720101 Fixup
\n
"
);
/* Ensure only ports 1 & 2 are enabled */
pci_read_config_dword
(
pdev
,
0xe0
,
&
val
);
pci_write_config_dword
(
pdev
,
0xe0
,
(
val
&
~
7
)
|
0x2
);
/* System clock is 48-MHz Oscillator and EHCI Enabled. */
pci_write_config_dword
(
pdev
,
0xe4
,
1
<<
5
);
}
DECLARE_PCI_FIXUP_HEADER
(
PCI_VENDOR_ID_NEC
,
PCI_DEVICE_ID_NEC_USB
,
gef_sbc310_nec_fixup
);
/*
* Called very early, device-tree isn't unflattened
*
* This function is called to determine whether the BSP is compatible with the
* supplied device-tree, which is assumed to be the correct one for the actual
* board. It is expected thati, in the future, a kernel may support multiple
* boards.
*/
static
int
__init
gef_sbc310_probe
(
void
)
{
unsigned
long
root
=
of_get_flat_dt_root
();
if
(
of_flat_dt_is_compatible
(
root
,
"gef,sbc310"
))
return
1
;
return
0
;
}
static
long
__init
mpc86xx_time_init
(
void
)
{
unsigned
int
temp
;
/* Set the time base to zero */
mtspr
(
SPRN_TBWL
,
0
);
mtspr
(
SPRN_TBWU
,
0
);
temp
=
mfspr
(
SPRN_HID0
);
temp
|=
HID0_TBEN
;
mtspr
(
SPRN_HID0
,
temp
);
asm
volatile
(
"isync"
);
return
0
;
}
static
__initdata
struct
of_device_id
of_bus_ids
[]
=
{
{
.
compatible
=
"simple-bus"
,
},
{},
};
static
int
__init
declare_of_platform_devices
(
void
)
{
printk
(
KERN_DEBUG
"Probe platform devices
\n
"
);
of_platform_bus_probe
(
NULL
,
of_bus_ids
,
NULL
);
return
0
;
}
machine_device_initcall
(
gef_sbc310
,
declare_of_platform_devices
);
define_machine
(
gef_sbc310
)
{
.
name
=
"GE Fanuc SBC310"
,
.
probe
=
gef_sbc310_probe
,
.
setup_arch
=
gef_sbc310_setup_arch
,
.
init_IRQ
=
gef_sbc310_init_irq
,
.
show_cpuinfo
=
gef_sbc310_show_cpuinfo
,
.
get_irq
=
mpic_get_irq
,
.
restart
=
fsl_rstcr_restart
,
.
time_init
=
mpc86xx_time_init
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
#ifdef CONFIG_PCI
.
pcibios_fixup_bus
=
fsl_pcibios_fixup_bus
,
#endif
};
arch/powerpc/sysdev/cpm2.c
浏览文件 @
edbc29d7
...
...
@@ -129,7 +129,8 @@ void __cpm2_setbrg(uint brg, uint rate, uint clk, int div16, int src)
brg
-=
4
;
}
bp
+=
brg
;
val
=
(((
clk
/
rate
)
-
1
)
<<
1
)
|
CPM_BRG_EN
|
src
;
/* Round the clock divider to the nearest integer. */
val
=
(((
clk
*
2
/
rate
)
-
1
)
&
~
1
)
|
CPM_BRG_EN
|
src
;
if
(
div16
)
val
|=
CPM_BRG_DIV16
;
...
...
arch/powerpc/sysdev/fsl_pci.c
浏览文件 @
edbc29d7
/*
* MPC83xx/85xx/86xx PCI/PCIE support routing.
*
* Copyright 2007,2008 Freescale Semiconductor, Inc
* Copyright 2007-2009 Freescale Semiconductor, Inc.
* Copyright 2008-2009 MontaVista Software, Inc.
*
* Initial author: Xianghua Xiao <x.xiao@freescale.com>
* Recode: ZHANG WEI <wei.zhang@freescale.com>
* Rewrite the routing for Frescale PCI and PCI Express
* Roy Zang <tie-fei.zang@freescale.com>
* MPC83xx PCI-Express support:
* Tony Li <tony.li@freescale.com>
* Anton Vorontsov <avorontsov@ru.mvista.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
...
...
@@ -27,6 +31,29 @@
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
static
int
fsl_pcie_bus_fixup
;
static
void
__init
quirk_fsl_pcie_header
(
struct
pci_dev
*
dev
)
{
/* if we aren't a PCIe don't bother */
if
(
!
pci_find_capability
(
dev
,
PCI_CAP_ID_EXP
))
return
;
dev
->
class
=
PCI_CLASS_BRIDGE_PCI
<<
8
;
fsl_pcie_bus_fixup
=
1
;
return
;
}
static
int
__init
fsl_pcie_check_link
(
struct
pci_controller
*
hose
)
{
u32
val
;
early_read_config_dword
(
hose
,
0
,
0
,
PCIE_LTSSM
,
&
val
);
if
(
val
<
PCIE_LTSSM_L0
)
return
1
;
return
0
;
}
#if defined(CONFIG_PPC_85xx) || defined(CONFIG_PPC_86xx)
static
int
__init
setup_one_atmu
(
struct
ccsr_pci
__iomem
*
pci
,
unsigned
int
index
,
const
struct
resource
*
res
,
...
...
@@ -159,28 +186,6 @@ static void __init setup_pci_pcsrbar(struct pci_controller *hose)
#endif
}
static
int
fsl_pcie_bus_fixup
;
static
void
__init
quirk_fsl_pcie_header
(
struct
pci_dev
*
dev
)
{
/* if we aren't a PCIe don't bother */
if
(
!
pci_find_capability
(
dev
,
PCI_CAP_ID_EXP
))
return
;
dev
->
class
=
PCI_CLASS_BRIDGE_PCI
<<
8
;
fsl_pcie_bus_fixup
=
1
;
return
;
}
static
int
__init
fsl_pcie_check_link
(
struct
pci_controller
*
hose
)
{
u32
val
;
early_read_config_dword
(
hose
,
0
,
0
,
PCIE_LTSSM
,
&
val
);
if
(
val
<
PCIE_LTSSM_L0
)
return
1
;
return
0
;
}
void
fsl_pcibios_fixup_bus
(
struct
pci_bus
*
bus
)
{
struct
pci_controller
*
hose
=
(
struct
pci_controller
*
)
bus
->
sysdata
;
...
...
@@ -294,8 +299,184 @@ DECLARE_PCI_FIXUP_HEADER(0x1957, PCI_DEVICE_ID_MPC8610, quirk_fsl_pcie_header);
#endif
/* CONFIG_PPC_85xx || CONFIG_PPC_86xx */
#if defined(CONFIG_PPC_83xx) || defined(CONFIG_PPC_MPC512x)
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8314E
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8314
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8315E
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8315
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8377E
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8377
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8378E
,
quirk_fsl_pcie_header
);
DECLARE_PCI_FIXUP_HEADER
(
0x1957
,
PCI_DEVICE_ID_MPC8378
,
quirk_fsl_pcie_header
);
struct
mpc83xx_pcie_priv
{
void
__iomem
*
cfg_type0
;
void
__iomem
*
cfg_type1
;
u32
dev_base
;
};
/*
* With the convention of u-boot, the PCIE outbound window 0 serves
* as configuration transactions outbound.
*/
#define PEX_OUTWIN0_BAR 0xCA4
#define PEX_OUTWIN0_TAL 0xCA8
#define PEX_OUTWIN0_TAH 0xCAC
static
int
mpc83xx_pcie_exclude_device
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
)
{
struct
pci_controller
*
hose
=
bus
->
sysdata
;
if
(
hose
->
indirect_type
&
PPC_INDIRECT_TYPE_NO_PCIE_LINK
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
/*
* Workaround for the HW bug: for Type 0 configure transactions the
* PCI-E controller does not check the device number bits and just
* assumes that the device number bits are 0.
*/
if
(
bus
->
number
==
hose
->
first_busno
||
bus
->
primary
==
hose
->
first_busno
)
{
if
(
devfn
&
0xf8
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
}
if
(
ppc_md
.
pci_exclude_device
)
{
if
(
ppc_md
.
pci_exclude_device
(
hose
,
bus
->
number
,
devfn
))
return
PCIBIOS_DEVICE_NOT_FOUND
;
}
return
PCIBIOS_SUCCESSFUL
;
}
static
void
__iomem
*
mpc83xx_pcie_remap_cfg
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
offset
)
{
struct
pci_controller
*
hose
=
bus
->
sysdata
;
struct
mpc83xx_pcie_priv
*
pcie
=
hose
->
dn
->
data
;
u8
bus_no
=
bus
->
number
-
hose
->
first_busno
;
u32
dev_base
=
bus_no
<<
24
|
devfn
<<
16
;
int
ret
;
ret
=
mpc83xx_pcie_exclude_device
(
bus
,
devfn
);
if
(
ret
)
return
NULL
;
offset
&=
0xfff
;
/* Type 0 */
if
(
bus
->
number
==
hose
->
first_busno
)
return
pcie
->
cfg_type0
+
offset
;
if
(
pcie
->
dev_base
==
dev_base
)
goto
mapped
;
out_le32
(
pcie
->
cfg_type0
+
PEX_OUTWIN0_TAL
,
dev_base
);
pcie
->
dev_base
=
dev_base
;
mapped:
return
pcie
->
cfg_type1
+
offset
;
}
static
int
mpc83xx_pcie_read_config
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
offset
,
int
len
,
u32
*
val
)
{
void
__iomem
*
cfg_addr
;
cfg_addr
=
mpc83xx_pcie_remap_cfg
(
bus
,
devfn
,
offset
);
if
(
!
cfg_addr
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
switch
(
len
)
{
case
1
:
*
val
=
in_8
(
cfg_addr
);
break
;
case
2
:
*
val
=
in_le16
(
cfg_addr
);
break
;
default:
*
val
=
in_le32
(
cfg_addr
);
break
;
}
return
PCIBIOS_SUCCESSFUL
;
}
static
int
mpc83xx_pcie_write_config
(
struct
pci_bus
*
bus
,
unsigned
int
devfn
,
int
offset
,
int
len
,
u32
val
)
{
void
__iomem
*
cfg_addr
;
cfg_addr
=
mpc83xx_pcie_remap_cfg
(
bus
,
devfn
,
offset
);
if
(
!
cfg_addr
)
return
PCIBIOS_DEVICE_NOT_FOUND
;
switch
(
len
)
{
case
1
:
out_8
(
cfg_addr
,
val
);
break
;
case
2
:
out_le16
(
cfg_addr
,
val
);
break
;
default:
out_le32
(
cfg_addr
,
val
);
break
;
}
return
PCIBIOS_SUCCESSFUL
;
}
static
struct
pci_ops
mpc83xx_pcie_ops
=
{
.
read
=
mpc83xx_pcie_read_config
,
.
write
=
mpc83xx_pcie_write_config
,
};
static
int
__init
mpc83xx_pcie_setup
(
struct
pci_controller
*
hose
,
struct
resource
*
reg
)
{
struct
mpc83xx_pcie_priv
*
pcie
;
u32
cfg_bar
;
int
ret
=
-
ENOMEM
;
pcie
=
zalloc_maybe_bootmem
(
sizeof
(
*
pcie
),
GFP_KERNEL
);
if
(
!
pcie
)
return
ret
;
pcie
->
cfg_type0
=
ioremap
(
reg
->
start
,
resource_size
(
reg
));
if
(
!
pcie
->
cfg_type0
)
goto
err0
;
cfg_bar
=
in_le32
(
pcie
->
cfg_type0
+
PEX_OUTWIN0_BAR
);
if
(
!
cfg_bar
)
{
/* PCI-E isn't configured. */
ret
=
-
ENODEV
;
goto
err1
;
}
pcie
->
cfg_type1
=
ioremap
(
cfg_bar
,
0x1000
);
if
(
!
pcie
->
cfg_type1
)
goto
err1
;
WARN_ON
(
hose
->
dn
->
data
);
hose
->
dn
->
data
=
pcie
;
hose
->
ops
=
&
mpc83xx_pcie_ops
;
out_le32
(
pcie
->
cfg_type0
+
PEX_OUTWIN0_TAH
,
0
);
out_le32
(
pcie
->
cfg_type0
+
PEX_OUTWIN0_TAL
,
0
);
if
(
fsl_pcie_check_link
(
hose
))
hose
->
indirect_type
|=
PPC_INDIRECT_TYPE_NO_PCIE_LINK
;
return
0
;
err1:
iounmap
(
pcie
->
cfg_type0
);
err0:
kfree
(
pcie
);
return
ret
;
}
int
__init
mpc83xx_add_bridge
(
struct
device_node
*
dev
)
{
int
ret
;
int
len
;
struct
pci_controller
*
hose
;
struct
resource
rsrc_reg
;
...
...
@@ -303,6 +484,11 @@ int __init mpc83xx_add_bridge(struct device_node *dev)
const
int
*
bus_range
;
int
primary
;
if
(
!
of_device_is_available
(
dev
))
{
pr_warning
(
"%s: disabled by the firmware.
\n
"
,
dev
->
full_name
);
return
-
ENODEV
;
}
pr_debug
(
"Adding PCI host bridge %s
\n
"
,
dev
->
full_name
);
/* Fetch host bridge registers address */
...
...
@@ -350,7 +536,14 @@ int __init mpc83xx_add_bridge(struct device_node *dev)
hose
->
first_busno
=
bus_range
?
bus_range
[
0
]
:
0
;
hose
->
last_busno
=
bus_range
?
bus_range
[
1
]
:
0xff
;
setup_indirect_pci
(
hose
,
rsrc_cfg
.
start
,
rsrc_cfg
.
start
+
4
,
0
);
if
(
of_device_is_compatible
(
dev
,
"fsl,mpc8314-pcie"
))
{
ret
=
mpc83xx_pcie_setup
(
hose
,
&
rsrc_reg
);
if
(
ret
)
goto
err0
;
}
else
{
setup_indirect_pci
(
hose
,
rsrc_cfg
.
start
,
rsrc_cfg
.
start
+
4
,
0
);
}
printk
(
KERN_INFO
"Found FSL PCI host bridge at 0x%016llx. "
"Firmware bus number: %d->%d
\n
"
,
...
...
@@ -365,5 +558,8 @@ int __init mpc83xx_add_bridge(struct device_node *dev)
pci_process_bridge_OF_ranges
(
hose
,
dev
,
primary
);
return
0
;
err0:
pcibios_free_controller
(
hose
);
return
ret
;
}
#endif
/* CONFIG_PPC_83xx */
drivers/watchdog/Kconfig
浏览文件 @
edbc29d7
...
...
@@ -772,7 +772,7 @@ config TXX9_WDT
config GEF_WDT
tristate "GE Fanuc Watchdog Timer"
depends on GEF_SBC610
depends on GEF_SBC610
|| GEF_SBC310
---help---
Watchdog timer found in a number of GE Fanuc single board computers.
...
...
include/linux/pci_ids.h
浏览文件 @
edbc29d7
...
...
@@ -2217,6 +2217,14 @@
#define PCI_DEVICE_ID_TDI_EHCI 0x0101
#define PCI_VENDOR_ID_FREESCALE 0x1957
#define PCI_DEVICE_ID_MPC8315E 0x00b4
#define PCI_DEVICE_ID_MPC8315 0x00b5
#define PCI_DEVICE_ID_MPC8314E 0x00b6
#define PCI_DEVICE_ID_MPC8314 0x00b7
#define PCI_DEVICE_ID_MPC8378E 0x00c4
#define PCI_DEVICE_ID_MPC8378 0x00c5
#define PCI_DEVICE_ID_MPC8377E 0x00c6
#define PCI_DEVICE_ID_MPC8377 0x00c7
#define PCI_DEVICE_ID_MPC8548E 0x0012
#define PCI_DEVICE_ID_MPC8548 0x0013
#define PCI_DEVICE_ID_MPC8543E 0x0014
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录