Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
b8583f68
Commit
b8583f68
authored
Feb 09, 2007
by
Kumar Gala
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '83xx' into for_paulus
parents
8f34f6cf
49baa91d
Changes
13
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1923 additions
and
66 deletions
+1923
-66
Documentation/powerpc/booting-without-of.txt
Documentation/powerpc/booting-without-of.txt
+4
-0
arch/powerpc/boot/dts/mpc8313erdb.dts
arch/powerpc/boot/dts/mpc8313erdb.dts
+219
-0
arch/powerpc/boot/dts/mpc834x_mds.dts
arch/powerpc/boot/dts/mpc834x_mds.dts
+6
-0
arch/powerpc/configs/mpc8313_rdb_defconfig
arch/powerpc/configs/mpc8313_rdb_defconfig
+1409
-0
arch/powerpc/configs/mpc834x_mds_defconfig
arch/powerpc/configs/mpc834x_mds_defconfig
+5
-4
arch/powerpc/platforms/83xx/Kconfig
arch/powerpc/platforms/83xx/Kconfig
+18
-6
arch/powerpc/platforms/83xx/Makefile
arch/powerpc/platforms/83xx/Makefile
+2
-1
arch/powerpc/platforms/83xx/mpc8313_rdb.c
arch/powerpc/platforms/83xx/mpc8313_rdb.c
+99
-0
arch/powerpc/platforms/83xx/mpc834x_itx.c
arch/powerpc/platforms/83xx/mpc834x_itx.c
+0
-2
arch/powerpc/platforms/83xx/mpc834x_mds.c
arch/powerpc/platforms/83xx/mpc834x_mds.c
+84
-11
arch/powerpc/platforms/83xx/mpc834x_sys.h
arch/powerpc/platforms/83xx/mpc834x_sys.h
+0
-23
arch/powerpc/platforms/83xx/mpc83xx.h
arch/powerpc/platforms/83xx/mpc83xx.h
+18
-0
arch/powerpc/sysdev/fsl_soc.c
arch/powerpc/sysdev/fsl_soc.c
+59
-19
No files found.
Documentation/powerpc/booting-without-of.txt
View file @
b8583f68
...
...
@@ -1334,6 +1334,9 @@ platforms are moved over to use the flattened-device-tree model.
fsl-usb2-mph compatible controllers. Either this property or
"port0" (or both) must be defined for "fsl-usb2-mph" compatible
controllers.
- dr_mode : indicates the working mode for "fsl-usb2-dr" compatible
controllers. Can be "host", "peripheral", or "otg". Default to
"host" if not defined for backward compatibility.
Recommended properties :
- interrupts : <a b> where a is the interrupt number and b is a
...
...
@@ -1367,6 +1370,7 @@ platforms are moved over to use the flattened-device-tree model.
#size-cells = <0>;
interrupt-parent = <700>;
interrupts = <26 1>;
dr_mode = "otg";
phy = "ulpi";
};
...
...
arch/powerpc/boot/dts/mpc8313erdb.dts
0 → 100644
View file @
b8583f68
/*
*
MPC8313E
RDB
Device
Tree
Source
*
*
Copyright
2005
,
2006
,
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
.
*/
/
{
model
=
"MPC8313ERDB"
;
compatible
=
"MPC83xx"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
cpus
{
#
cpus
=
<
1
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
PowerPC
,
8313
@
0
{
device_type
=
"cpu"
;
reg
=
<
0
>;
d
-
cache
-
line
-
size
=
<
20
>;
//
32
bytes
i
-
cache
-
line
-
size
=
<
20
>;
//
32
bytes
d
-
cache
-
size
=
<
4000
>;
//
L1
,
16
K
i
-
cache
-
size
=
<
4000
>;
//
L1
,
16
K
timebase
-
frequency
=
<
0
>;
//
from
bootloader
bus
-
frequency
=
<
0
>;
//
from
bootloader
clock
-
frequency
=
<
0
>;
//
from
bootloader
32
-
bit
;
};
};
memory
{
device_type
=
"memory"
;
reg
=
<
00000000
08000000
>;
//
128
MB
at
0
};
soc8313
@
e0000000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
#
interrupt
-
cells
=
<
2
>;
device_type
=
"soc"
;
ranges
=
<
0
e0000000
00100000
>;
reg
=
<
e0000000
00000200
>;
bus
-
frequency
=
<
0
>;
wdt
@
200
{
device_type
=
"watchdog"
;
compatible
=
"mpc83xx_wdt"
;
reg
=
<
200
100
>;
};
i2c
@
3000
{
device_type
=
"i2c"
;
compatible
=
"fsl-i2c"
;
reg
=
<
3000
100
>;
interrupts
=
<
e
8
>;
interrupt
-
parent
=
<
700
>;
dfsrr
;
};
i2c
@
3100
{
device_type
=
"i2c"
;
compatible
=
"fsl-i2c"
;
reg
=
<
3100
100
>;
interrupts
=
<
f
8
>;
interrupt
-
parent
=
<
700
>;
dfsrr
;
};
spi
@
7000
{
device_type
=
"spi"
;
compatible
=
"mpc83xx_spi"
;
reg
=
<
7000
1000
>;
interrupts
=
<
10
8
>;
interrupt
-
parent
=
<
700
>;
mode
=
<
0
>;
};
/*
phy
type
(
ULPI
,
UTMI
,
UTMI_WIDE
,
SERIAL
)
*/
usb
@
23000
{
device_type
=
"usb"
;
compatible
=
"fsl-usb2-dr"
;
reg
=
<
23000
1000
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
interrupt
-
parent
=
<
700
>;
interrupts
=
<
26
2
>;
phy_type
=
"utmi_wide"
;
};
mdio
@
24520
{
device_type
=
"mdio"
;
compatible
=
"gianfar"
;
reg
=
<
24520
20
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
linux
,
phandle
=
<
24520
>;
ethernet
-
phy
@
1
{
linux
,
phandle
=
<
2452001
>;
interrupt
-
parent
=
<
700
>;
interrupts
=
<
13
2
>;
reg
=
<
1
>;
device_type
=
"ethernet-phy"
;
};
ethernet
-
phy
@
4
{
linux
,
phandle
=
<
2452004
>;
interrupt
-
parent
=
<
700
>;
interrupts
=
<
14
2
>;
reg
=
<
4
>;
device_type
=
"ethernet-phy"
;
};
};
ethernet
@
24000
{
device_type
=
"network"
;
model
=
"eTSEC"
;
compatible
=
"gianfar"
;
reg
=
<
24000
1000
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
25
8
24
8
23
8
>;
interrupt
-
parent
=
<
700
>;
phy
-
handle
=
<
2452001
>;
};
ethernet
@
25000
{
device_type
=
"network"
;
model
=
"eTSEC"
;
compatible
=
"gianfar"
;
reg
=
<
25000
1000
>;
local
-
mac
-
address
=
[
00
00
00
00
00
00
];
interrupts
=
<
22
8
21
8
20
8
>;
interrupt
-
parent
=
<
700
>;
phy
-
handle
=
<
2452004
>;
};
serial
@
4500
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
4500
100
>;
clock
-
frequency
=
<
0
>;
interrupts
=
<
9
8
>;
interrupt
-
parent
=
<
700
>;
};
serial
@
4600
{
device_type
=
"serial"
;
compatible
=
"ns16550"
;
reg
=
<
4600
100
>;
clock
-
frequency
=
<
0
>;
interrupts
=
<
a
8
>;
interrupt
-
parent
=
<
700
>;
};
pci
@
8500
{
interrupt
-
map
-
mask
=
<
f800
0
0
7
>;
interrupt
-
map
=
<
/*
IDSEL
0x0E
-
mini
PCI
*/
7000
0
0
1
700
12
8
7000
0
0
2
700
12
8
7000
0
0
3
700
12
8
7000
0
0
4
700
12
8
/*
IDSEL
0x0F
-
PCI
slot
*/
7800
0
0
1
700
11
8
7800
0
0
2
700
12
8
7800
0
0
3
700
11
8
7800
0
0
4
700
12
8
>;
interrupt
-
parent
=
<
700
>;
interrupts
=
<
42
8
>;
bus
-
range
=
<
0
0
>;
ranges
=
<
02000000
0
90000000
90000000
0
10000000
42000000
0
80000000
80000000
0
10000000
01000000
0
00000000
e2000000
0
00100000
>;
clock
-
frequency
=
<
3f940
aa
>;
#
interrupt
-
cells
=
<
1
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
reg
=
<
8500
100
>;
compatible
=
"83xx"
;
device_type
=
"pci"
;
};
crypto
@
30000
{
device_type
=
"crypto"
;
model
=
"SEC2"
;
compatible
=
"talitos"
;
reg
=
<
30000
7000
>;
interrupts
=
<
b
8
>;
interrupt
-
parent
=
<
700
>;
/*
Rev
.
2.2
*/
num
-
channels
=
<
1
>;
channel
-
fifo
-
len
=
<
18
>;
exec
-
units
-
mask
=
<
0000004
c
>;
descriptor
-
types
-
mask
=
<
0122003f
>;
};
/*
IPIC
*
interrupts
cell
=
<
intr
#,
sense
>
*
sense
values
match
linux
IORESOURCE_IRQ_
*
defines
:
*
sense
==
8
:
Level
,
low
assertion
*
sense
==
2
:
Edge
,
high
-
to
-
low
change
*/
pic
@
700
{
linux
,
phandle
=
<
700
>;
interrupt
-
controller
;
#
address
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
reg
=
<
700
100
>;
built
-
in
;
device_type
=
"ipic"
;
};
};
};
arch/powerpc/boot/dts/mpc834
9e
mds.dts
→
arch/powerpc/boot/dts/mpc834
x_
mds.dts
View file @
b8583f68
...
...
@@ -39,6 +39,11 @@
reg
=
<
00000000
10000000
>;
//
256
MB
at
0
};
bcsr
@
e2400000
{
device_type
=
"board-control"
;
reg
=
<
e2400000
8000
>;
};
soc8349
@
e0000000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
...
...
@@ -103,6 +108,7 @@
#
size
-
cells
=
<
0
>;
interrupt
-
parent
=
<
700
>;
interrupts
=
<
26
2
>;
dr_mode
=
"otg"
;
phy_type
=
"ulpi"
;
};
...
...
arch/powerpc/configs/mpc8313_rdb_defconfig
0 → 100644
View file @
b8583f68
This diff is collapsed.
Click to expand it.
arch/powerpc/configs/mpc834x_mds_defconfig
View file @
b8583f68
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
-rc5
#
Fri Jan 26 00:19:27
2007
# Linux kernel version: 2.6.20
#
Thu Feb 8 01:00:48
2007
#
# CONFIG_PPC64 is not set
CONFIG_PPC32=y
...
...
@@ -34,9 +34,9 @@ CONFIG_DEFAULT_UIMAGE=y
CONFIG_PPC_83xx=y
# CONFIG_PPC_85xx is not set
# CONFIG_PPC_86xx is not set
# CONFIG_PPC_8xx is not set
# CONFIG_40x is not set
# CONFIG_44x is not set
# CONFIG_8xx is not set
# CONFIG_E200 is not set
CONFIG_6xx=y
CONFIG_83xx=y
...
...
@@ -128,8 +128,9 @@ CONFIG_PPC_GEN550=y
#
# Platform support
#
# CONFIG_MPC8313_RDB is not set
# CONFIG_MPC832x_MDS is not set
CONFIG_MPC834x_
SY
S=y
CONFIG_MPC834x_
MD
S=y
# CONFIG_MPC834x_ITX is not set
# CONFIG_MPC8360E_PB is not set
CONFIG_MPC834x=y
...
...
arch/powerpc/platforms/83xx/Kconfig
View file @
b8583f68
...
...
@@ -3,7 +3,13 @@ menu "Platform support"
choice
prompt "Machine Type"
default MPC834x_SYS
default MPC834x_MDS
config MPC8313_RDB
bool "Freescale MPC8313 RDB"
select DEFAULT_UIMAGE
help
This option enables support for the MPC8313 RDB board.
config MPC832x_MDS
bool "Freescale MPC832x MDS"
...
...
@@ -12,13 +18,13 @@ config MPC832x_MDS
help
This option enables support for the MPC832x MDS evaluation board.
config MPC834x_
SY
S
bool "Freescale MPC834x
SY
S"
config MPC834x_
MD
S
bool "Freescale MPC834x
MD
S"
select DEFAULT_UIMAGE
help
This option enables support for the MPC 834x
SY
S evaluation board.
This option enables support for the MPC 834x
MD
S evaluation board.
Be aware that PCI buses can only function when
SY
S board is plugged
Be aware that PCI buses can only function when
MD
S board is plugged
into the PIB (Platform IO Board) board from Freescale which provide
3 PCI slots. The PIBs PCI initialization is the bootloader's
responsibility.
...
...
@@ -41,6 +47,12 @@ config MPC8360E_PB
endchoice
config PPC_MPC831x
bool
select PPC_UDBG_16550
select PPC_INDIRECT_PCI
default y if MPC8313_RDB
config PPC_MPC832x
bool
select PPC_UDBG_16550
...
...
@@ -51,7 +63,7 @@ config MPC834x
bool
select PPC_UDBG_16550
select PPC_INDIRECT_PCI
default y if MPC834x_
SY
S || MPC834x_ITX
default y if MPC834x_
MD
S || MPC834x_ITX
config PPC_MPC836x
bool
...
...
arch/powerpc/platforms/83xx/Makefile
View file @
b8583f68
...
...
@@ -3,7 +3,8 @@
#
obj-y
:=
misc.o
obj-$(CONFIG_PCI)
+=
pci.o
obj-$(CONFIG_MPC834x_SYS)
+=
mpc834x_sys.o
obj-$(CONFIG_MPC8313_RDB)
+=
mpc8313_rdb.o
obj-$(CONFIG_MPC834x_MDS)
+=
mpc834x_mds.o
obj-$(CONFIG_MPC834x_ITX)
+=
mpc834x_itx.o
obj-$(CONFIG_MPC8360E_PB)
+=
mpc8360e_pb.o
obj-$(CONFIG_MPC832x_MDS)
+=
mpc832x_mds.o
arch/powerpc/platforms/83xx/mpc8313_rdb.c
0 → 100644
View file @
b8583f68
/*
* arch/powerpc/platforms/83xx/mpc8313_rdb.c
*
* Description: MPC8313x RDB board specific routines.
* This file is based on mpc834x_sys.c
* Author: Lo Wlison <r43300@freescale.com>
*
* Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
*
* 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/pci.h>
#include <asm/time.h>
#include <asm/ipic.h>
#include <asm/udbg.h>
#include "mpc83xx.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
mpc8313_rdb_setup_arch
(
void
)
{
struct
device_node
*
np
;
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"mpc8313_rdb_setup_arch()"
,
0
);
#ifdef CONFIG_PCI
for
(
np
=
NULL
;
(
np
=
of_find_node_by_type
(
np
,
"pci"
))
!=
NULL
;)
add_bridge
(
np
);
ppc_md
.
pci_exclude_device
=
mpc83xx_exclude_device
;
#endif
}
void
__init
mpc8313_rdb_init_IRQ
(
void
)
{
struct
device_node
*
np
;
np
=
of_find_node_by_type
(
NULL
,
"ipic"
);
if
(
!
np
)
return
;
ipic_init
(
np
,
0
);
/* Initialize the default interrupt mapping priorities,
* in case the boot rom changed something on us.
*/
ipic_set_default_priority
();
}
/*
* Called very early, MMU is off, device-tree isn't unflattened
*/
static
int
__init
mpc8313_rdb_probe
(
void
)
{
char
*
model
=
of_get_flat_dt_prop
(
of_get_flat_dt_root
(),
"model"
,
NULL
);
if
(
model
==
NULL
)
return
0
;
if
(
strcmp
(
model
,
"MPC8313ERDB"
))
return
0
;
DBG
(
"MPC8313 RDB found
\n
"
);
return
1
;
}
define_machine
(
mpc8313_rdb
)
{
.
name
=
"MPC8313 RDB"
,
.
probe
=
mpc8313_rdb_probe
,
.
setup_arch
=
mpc8313_rdb_setup_arch
,
.
init_IRQ
=
mpc8313_rdb_init_IRQ
,
.
get_irq
=
ipic_get_irq
,
.
restart
=
mpc83xx_restart
,
.
time_init
=
mpc83xx_time_init
,
.
calibrate_decr
=
generic_calibrate_decr
,
.
progress
=
udbg_progress
,
};
arch/powerpc/platforms/83xx/mpc834x_itx.c
View file @
b8583f68
...
...
@@ -38,8 +38,6 @@
#include "mpc83xx.h"
#include <platforms/83xx/mpc834x_sys.h>
#ifndef CONFIG_PCI
unsigned
long
isa_io_base
=
0
;
unsigned
long
isa_mem_base
=
0
;
...
...
arch/powerpc/platforms/83xx/mpc834x_
sy
s.c
→
arch/powerpc/platforms/83xx/mpc834x_
md
s.c
View file @
b8583f68
/*
* arch/powerpc/platforms/83xx/mpc834x_
sy
s.c
* arch/powerpc/platforms/83xx/mpc834x_
md
s.c
*
* MPC834x
SY
S board specific routines
* MPC834x
MD
S board specific routines
*
* Maintainer: Kumar Gala <galak@kernel.crashing.org>
*
...
...
@@ -43,17 +43,87 @@ unsigned long isa_io_base = 0;
unsigned
long
isa_mem_base
=
0
;
#endif
#define BCSR5_INT_USB 0x02
/* Note: This is only for PB, not for PB+PIB
* On PB only port0 is connected using ULPI */
static
int
mpc834x_usb_cfg
(
void
)
{
unsigned
long
sccr
,
sicrl
;
void
__iomem
*
immap
;
void
__iomem
*
bcsr_regs
=
NULL
;
u8
bcsr5
;
struct
device_node
*
np
=
NULL
;
int
port0_is_dr
=
0
;
if
((
np
=
of_find_compatible_node
(
np
,
"usb"
,
"fsl-usb2-dr"
))
!=
NULL
)
port0_is_dr
=
1
;
if
((
np
=
of_find_compatible_node
(
np
,
"usb"
,
"fsl-usb2-mph"
))
!=
NULL
){
if
(
port0_is_dr
)
{
printk
(
KERN_WARNING
"There is only one USB port on PB board!
\n
"
);
return
-
1
;
}
else
if
(
!
port0_is_dr
)
/* No usb port enabled */
return
-
1
;
}
immap
=
ioremap
(
get_immrbase
(),
0x1000
);
if
(
!
immap
)
return
-
1
;
/* Configure clock */
sccr
=
in_be32
(
immap
+
MPC83XX_SCCR_OFFS
);
if
(
port0_is_dr
)
sccr
|=
MPC83XX_SCCR_USB_DRCM_11
;
/* 1:3 */
else
sccr
|=
MPC83XX_SCCR_USB_MPHCM_11
;
/* 1:3 */
out_be32
(
immap
+
MPC83XX_SCCR_OFFS
,
sccr
);
/* Configure Pin */
sicrl
=
in_be32
(
immap
+
MPC83XX_SICRL_OFFS
);
/* set port0 only */
if
(
port0_is_dr
)
sicrl
|=
MPC83XX_SICRL_USB0
;
else
sicrl
&=
~
(
MPC83XX_SICRL_USB0
);
out_be32
(
immap
+
MPC83XX_SICRL_OFFS
,
sicrl
);
iounmap
(
immap
);
/* Map BCSR area */
np
=
of_find_node_by_name
(
NULL
,
"bcsr"
);
if
(
np
!=
0
)
{
struct
resource
res
;
of_address_to_resource
(
np
,
0
,
&
res
);
bcsr_regs
=
ioremap
(
res
.
start
,
res
.
end
-
res
.
start
+
1
);
of_node_put
(
np
);
}
if
(
!
bcsr_regs
)
return
-
1
;
/*
* if MDS board is plug into PIB board,
* force to use the PHY on MDS board
*/
bcsr5
=
in_8
(
bcsr_regs
+
5
);
if
(
!
(
bcsr5
&
BCSR5_INT_USB
))
out_8
(
bcsr_regs
+
5
,
(
bcsr5
|
BCSR5_INT_USB
));
iounmap
(
bcsr_regs
);
return
0
;
}
/* ************************************************************************
*
* Setup the architecture
*
*/
static
void
__init
mpc834x_
sy
s_setup_arch
(
void
)
static
void
__init
mpc834x_
md
s_setup_arch
(
void
)
{
struct
device_node
*
np
;
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"mpc834x_
sy
s_setup_arch()"
,
0
);
ppc_md
.
progress
(
"mpc834x_
md
s_setup_arch()"
,
0
);
np
=
of_find_node_by_type
(
NULL
,
"cpu"
);
if
(
np
!=
0
)
{
...
...
@@ -65,6 +135,7 @@ static void __init mpc834x_sys_setup_arch(void)
loops_per_jiffy
=
50000000
/
HZ
;
of_node_put
(
np
);
}
#ifdef CONFIG_PCI
for
(
np
=
NULL
;
(
np
=
of_find_node_by_type
(
np
,
"pci"
))
!=
NULL
;)
add_bridge
(
np
);
...
...
@@ -72,6 +143,8 @@ static void __init mpc834x_sys_setup_arch(void)
ppc_md
.
pci_exclude_device
=
mpc83xx_exclude_device
;
#endif
mpc834x_usb_cfg
();
#ifdef CONFIG_ROOT_NFS
ROOT_DEV
=
Root_NFS
;
#else
...
...
@@ -79,7 +152,7 @@ static void __init mpc834x_sys_setup_arch(void)
#endif
}
static
void
__init
mpc834x_
sy
s_init_IRQ
(
void
)
static
void
__init
mpc834x_
md
s_init_IRQ
(
void
)
{
struct
device_node
*
np
;
...
...
@@ -119,7 +192,7 @@ late_initcall(mpc834x_rtc_hookup);
/*
* Called very early, MMU is off, device-tree isn't unflattened
*/
static
int
__init
mpc834x_
sy
s_probe
(
void
)
static
int
__init
mpc834x_
md
s_probe
(
void
)
{
/* We always match for now, eventually we should look at the flat
dev tree to ensure this is the board we are suppose to run on
...
...
@@ -127,11 +200,11 @@ static int __init mpc834x_sys_probe(void)
return
1
;
}
define_machine
(
mpc834x_
sy
s
)
{
.
name
=
"MPC834x
SY
S"
,
.
probe
=
mpc834x_
sy
s_probe
,
.
setup_arch
=
mpc834x_
sy
s_setup_arch
,
.
init_IRQ
=
mpc834x_
sy
s_init_IRQ
,
define_machine
(
mpc834x_
md
s
)
{
.
name
=
"MPC834x
MD
S"
,
.
probe
=
mpc834x_
md
s_probe
,
.
setup_arch
=
mpc834x_
md
s_setup_arch
,
.
init_IRQ
=
mpc834x_
md
s_init_IRQ
,
.
get_irq
=
ipic_get_irq
,
.
restart
=
mpc83xx_restart
,
.
time_init
=
mpc83xx_time_init
,
...
...
arch/powerpc/platforms/83xx/mpc834x_sys.h
deleted
100644 → 0
View file @
8f34f6cf
/*
* arch/powerpc/platforms/83xx/mpc834x_sys.h
*
* MPC834X SYS common board definitions
*
* Maintainer: Kumar Gala <galak@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.
*
*/
#ifndef __MACH_MPC83XX_SYS_H__
#define __MACH_MPC83XX_SYS_H__
#define PIRQA MPC83xx_IRQ_EXT4
#define PIRQB MPC83xx_IRQ_EXT5
#define PIRQC MPC83xx_IRQ_EXT6
#define PIRQD MPC83xx_IRQ_EXT7
#endif
/* __MACH_MPC83XX_SYS_H__ */
arch/powerpc/platforms/83xx/mpc83xx.h
View file @
b8583f68
...
...
@@ -4,6 +4,24 @@
#include <linux/init.h>
#include <linux/device.h>
/* System Clock Control Register */
#define MPC83XX_SCCR_OFFS 0xA08
#define MPC83XX_SCCR_USB_MPHCM_11 0x00c00000
#define MPC83XX_SCCR_USB_MPHCM_01 0x00400000
#define MPC83XX_SCCR_USB_MPHCM_10 0x00800000
#define MPC83XX_SCCR_USB_DRCM_11 0x00300000
#define MPC83XX_SCCR_USB_DRCM_01 0x00100000
#define MPC83XX_SCCR_USB_DRCM_10 0x00200000
/* system i/o configuration register low */
#define MPC83XX_SICRL_OFFS 0x114
#define MPC83XX_SICRL_USB0 0x40000000
#define MPC83XX_SICRL_USB1 0x20000000
/* system i/o configuration register high */
#define MPC83XX_SICRH_OFFS 0x118
#define MPC83XX_SICRH_USB_UTMI 0x00020000
/*
* Declaration for the various functions exported by the
* mpc83xx_* files. Mostly for use by mpc83xx_setup
...
...
arch/powerpc/sysdev/fsl_soc.c
View file @
b8583f68
...
...
@@ -441,7 +441,8 @@ static int __init fsl_usb_of_init(void)
{
struct
device_node
*
np
;
unsigned
int
i
;
struct
platform_device
*
usb_dev_mph
=
NULL
,
*
usb_dev_dr
=
NULL
;
struct
platform_device
*
usb_dev_mph
=
NULL
,
*
usb_dev_dr_host
=
NULL
,
*
usb_dev_dr_client
=
NULL
;
int
ret
;
for
(
np
=
NULL
,
i
=
0
;
...
...
@@ -507,33 +508,72 @@ static int __init fsl_usb_of_init(void)
of_irq_to_resource
(
np
,
0
,
&
r
[
1
]);
usb_dev_dr
=
platform_device_register_simple
(
"fsl-ehci"
,
i
,
r
,
2
);
if
(
IS_ERR
(
usb_dev_dr
))
{
ret
=
PTR_ERR
(
usb_dev_dr
);
goto
err
;
}
usb_dev_dr
->
dev
.
coherent_dma_mask
=
0xffffffffUL
;
usb_dev_dr
->
dev
.
dma_mask
=
&
usb_dev_dr
->
dev
.
coherent_dma_mask
;
prop
=
get_property
(
np
,
"dr_mode"
,
NULL
);
if
(
!
prop
||
!
strcmp
(
prop
,
"host"
))
{
usb_data
.
operating_mode
=
FSL_USB2_DR_HOST
;
usb_dev_dr_host
=
platform_device_register_simple
(
"fsl-ehci"
,
i
,
r
,
2
);
if
(
IS_ERR
(
usb_dev_dr_host
))
{
ret
=
PTR_ERR
(
usb_dev_dr_host
);
goto
err
;
}
}
else
if
(
prop
&&
!
strcmp
(
prop
,
"peripheral"
))
{
usb_data
.
operating_mode
=
FSL_USB2_DR_DEVICE
;
usb_dev_dr_client
=
platform_device_register_simple
(
"fsl-usb2-udc"
,
i
,
r
,
2
);
if
(
IS_ERR
(
usb_dev_dr_client
))
{
ret
=
PTR_ERR
(
usb_dev_dr_client
);
goto
err
;
}
}
else
if
(
prop
&&
!
strcmp
(
prop
,
"otg"
))
{
usb_data
.
operating_mode
=
FSL_USB2_DR_OTG
;
usb_dev_dr_host
=
platform_device_register_simple
(
"fsl-ehci"
,
i
,
r
,
2
);
if
(
IS_ERR
(
usb_dev_dr_host
))
{
ret
=
PTR_ERR
(
usb_dev_dr_host
);
goto
err
;
}
usb_dev_dr_client
=
platform_device_register_simple
(
"fsl-usb2-udc"
,
i
,
r
,
2
);
if
(
IS_ERR
(
usb_dev_dr_client
))
{
ret
=
PTR_ERR
(
usb_dev_dr_client
);
goto
err
;
}
}
else
{
ret
=
-
EINVAL
;
goto
err
;
}
prop
=
get_property
(
np
,
"phy_type"
,
NULL
);
usb_data
.
phy_mode
=
determine_usb_phy
(
prop
);
ret
=
platform_device_add_data
(
usb_dev_dr
,
&
usb_data
,
sizeof
(
struct
fsl_usb2_platform_data
));
if
(
ret
)
if
(
usb_dev_dr_host
)
{
usb_dev_dr_host
->
dev
.
coherent_dma_mask
=
0xffffffffUL
;
usb_dev_dr_host
->
dev
.
dma_mask
=
&
usb_dev_dr_host
->
dev
.
coherent_dma_mask
;
if
((
ret
=
platform_device_add_data
(
usb_dev_dr_host
,
&
usb_data
,
sizeof
(
struct
fsl_usb2_platform_data
))))
goto
unreg_dr
;
}
if
(
usb_dev_dr_client
)
{
usb_dev_dr_client
->
dev
.
coherent_dma_mask
=
0xffffffffUL
;
usb_dev_dr_client
->
dev
.
dma_mask
=
&
usb_dev_dr_client
->
dev
.
coherent_dma_mask
;
if
((
ret
=
platform_device_add_data
(
usb_dev_dr_client
,
&
usb_data
,
sizeof
(
struct
fsl_usb2_platform_data
))))
goto
unreg_dr
;
}
}
return
0
;
unreg_dr:
if
(
usb_dev_dr
)
platform_device_unregister
(
usb_dev_dr
);
if
(
usb_dev_dr_host
)
platform_device_unregister
(
usb_dev_dr_host
);
if
(
usb_dev_dr_client
)
platform_device_unregister
(
usb_dev_dr_client
);
unreg_mph:
if
(
usb_dev_mph
)
platform_device_unregister
(
usb_dev_mph
);
...
...
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