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