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
5a3e3b22
Commit
5a3e3b22
authored
Oct 04, 2006
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream' of
git://git.kernel.org/pub/scm/linux/kernel/git/vitb/linux-2.6-PQ
parents
c730f5b6
91bd6109
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1165 additions
and
9 deletions
+1165
-9
arch/powerpc/Kconfig
arch/powerpc/Kconfig
+1
-0
arch/powerpc/boot/dts/mpc8272ads.dts
arch/powerpc/boot/dts/mpc8272ads.dts
+223
-0
arch/powerpc/platforms/82xx/Kconfig
arch/powerpc/platforms/82xx/Kconfig
+21
-0
arch/powerpc/platforms/82xx/Makefile
arch/powerpc/platforms/82xx/Makefile
+5
-0
arch/powerpc/platforms/82xx/m82xx_pci.h
arch/powerpc/platforms/82xx/m82xx_pci.h
+19
-0
arch/powerpc/platforms/82xx/mpc82xx.c
arch/powerpc/platforms/82xx/mpc82xx.c
+111
-0
arch/powerpc/platforms/82xx/mpc82xx_ads.c
arch/powerpc/platforms/82xx/mpc82xx_ads.c
+661
-0
arch/powerpc/platforms/82xx/pq2ads.h
arch/powerpc/platforms/82xx/pq2ads.h
+67
-0
arch/powerpc/sysdev/cpm2_pic.c
arch/powerpc/sysdev/cpm2_pic.c
+1
-1
arch/powerpc/sysdev/cpm2_pic.h
arch/powerpc/sysdev/cpm2_pic.h
+1
-1
arch/powerpc/sysdev/fsl_soc.c
arch/powerpc/sysdev/fsl_soc.c
+55
-7
No files found.
arch/powerpc/Kconfig
View file @
5a3e3b22
...
@@ -594,6 +594,7 @@ endmenu
...
@@ -594,6 +594,7 @@ endmenu
source arch/powerpc/platforms/embedded6xx/Kconfig
source arch/powerpc/platforms/embedded6xx/Kconfig
source arch/powerpc/platforms/4xx/Kconfig
source arch/powerpc/platforms/4xx/Kconfig
source arch/powerpc/platforms/82xx/Kconfig
source arch/powerpc/platforms/83xx/Kconfig
source arch/powerpc/platforms/83xx/Kconfig
source arch/powerpc/platforms/85xx/Kconfig
source arch/powerpc/platforms/85xx/Kconfig
source arch/powerpc/platforms/86xx/Kconfig
source arch/powerpc/platforms/86xx/Kconfig
...
...
arch/powerpc/boot/dts/mpc8272ads.dts
0 → 100644
View file @
5a3e3b22
/*
*
MPC8272
ADS
Device
Tree
Source
*
*
Copyright
2005
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
=
"MPC8272ADS"
;
compatible
=
"MPC8260ADS"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
linux
,
phandle
=
<
100
>;
cpus
{
#
cpus
=
<
1
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
linux
,
phandle
=
<
200
>;
PowerPC
,
8272
@
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
>;
bus
-
frequency
=
<
0
>;
clock
-
frequency
=
<
0
>;
32
-
bit
;
linux
,
phandle
=
<
201
>;
linux
,
boot
-
cpu
;
};
};
interrupt
-
controller
@
f8200000
{
linux
,
phandle
=
<
f8200000
>;
#
address
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
interrupt
-
controller
;
reg
=
<
f8200000
f8200004
>;
built
-
in
;
device_type
=
"pci-pic"
;
};
memory
{
device_type
=
"memory"
;
linux
,
phandle
=
<
300
>;
reg
=
<
00000000
4000000
f4500000
00000020
>;
};
soc8272
@
f0000000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
#
interrupt
-
cells
=
<
2
>;
device_type
=
"soc"
;
ranges
=
<
0
0
2
00000000
f0000000
00053000
>;
reg
=
<
f0000000
0
>;
mdio
@
0
{
device_type
=
"mdio"
;
compatible
=
"fs_enet"
;
reg
=
<
0
0
>;
linux
,
phandle
=
<
24520
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
ethernet
-
phy
@
0
{
linux
,
phandle
=
<
2452000
>;
interrupt
-
parent
=
<
10
c00
>;
interrupts
=
<
19
1
>;
reg
=
<
0
>;
bitbang
=
[
12
12
13
02
02
01
];
device_type
=
"ethernet-phy"
;
};
ethernet
-
phy
@
1
{
linux
,
phandle
=
<
2452001
>;
interrupt
-
parent
=
<
10
c00
>;
interrupts
=
<
19
1
>;
bitbang
=
[
12
12
13
02
02
01
];
reg
=
<
3
>;
device_type
=
"ethernet-phy"
;
};
};
ethernet
@
24000
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
device_type
=
"network"
;
device
-
id
=
<
2
>;
compatible
=
"fs_enet"
;
model
=
"FCC"
;
reg
=
<
11300
20
8400
100
11380
30
>;
mac
-
address
=
[
00
11
2F
99
43
54
];
interrupts
=
<
20
2
>;
interrupt
-
parent
=
<
10
c00
>;
phy
-
handle
=
<
2452000
>;
rx
-
clock
=
<
13
>;
tx
-
clock
=
<
12
>;
};
ethernet
@
25000
{
device_type
=
"network"
;
device
-
id
=
<
3
>;
compatible
=
"fs_enet"
;
model
=
"FCC"
;
reg
=
<
11320
20
8500
100
113
b0
30
>;
mac
-
address
=
[
00
11
2F
99
44
54
];
interrupts
=
<
21
2
>;
interrupt
-
parent
=
<
10
c00
>;
phy
-
handle
=
<
2452001
>;
rx
-
clock
=
<
17
>;
tx
-
clock
=
<
18
>;
};
cpm
@
f0000000
{
linux
,
phandle
=
<
f0000000
>;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
1
>;
#
interrupt
-
cells
=
<
2
>;
device_type
=
"cpm"
;
model
=
"CPM2"
;
ranges
=
<
00000000
00000000
3f
fff
>;
reg
=
<
10
d80
3280
>;
command
-
proc
=
<
119
c0
>;
brg
-
frequency
=
<
17
D7840
>;
cpm_clk
=
<
BEBC200
>;
scc
@
11
a00
{
device_type
=
"serial"
;
compatible
=
"cpm_uart"
;
model
=
"SCC"
;
device
-
id
=
<
2
>;
reg
=
<
11
a00
20
8000
100
>;
current
-
speed
=
<
1
c200
>;
interrupts
=
<
28
2
>;
interrupt
-
parent
=
<
10
c00
>;
clock
-
setup
=
<
0
00f
fffff
>;
rx
-
clock
=
<
1
>;
tx
-
clock
=
<
1
>;
};
scc
@
11
a60
{
device_type
=
"serial"
;
compatible
=
"cpm_uart"
;
model
=
"SCC"
;
device
-
id
=
<
5
>;
reg
=
<
11
a60
20
8300
100
>;
current
-
speed
=
<
1
c200
>;
interrupts
=
<
2
b
2
>;
interrupt
-
parent
=
<
10
c00
>;
clock
-
setup
=
<
1
b
ffffff00
>;
rx
-
clock
=
<
4
>;
tx
-
clock
=
<
4
>;
};
};
interrupt
-
controller
@
10
c00
{
linux
,
phandle
=
<
10
c00
>;
#
address
-
cells
=
<
0
>;
#
interrupt
-
cells
=
<
2
>;
interrupt
-
controller
;
reg
=
<
10
c00
80
>;
built
-
in
;
device_type
=
"cpm-pic"
;
compatible
=
"CPM2"
;
};
pci
@
0500
{
linux
,
phandle
=
<
0500
>;
#
interrupt
-
cells
=
<
1
>;
#
size
-
cells
=
<
2
>;
#
address
-
cells
=
<
3
>;
compatible
=
"8272"
;
device_type
=
"pci"
;
reg
=
<
10430
4
dc
>;
clock
-
frequency
=
<
3f940
aa
>;
interrupt
-
map
-
mask
=
<
f800
0
0
7
>;
interrupt
-
map
=
<
/*
IDSEL
0x16
*/
b000
0
0
1
f8200000
40
0
b000
0
0
2
f8200000
41
0
b000
0
0
3
f8200000
42
0
b000
0
0
4
f8200000
43
0
/*
IDSEL
0x17
*/
b800
0
0
1
f8200000
43
0
b800
0
0
2
f8200000
40
0
b800
0
0
3
f8200000
41
0
b800
0
0
4
f8200000
42
0
/*
IDSEL
0x18
*/
c000
0
0
1
f8200000
42
0
c000
0
0
2
f8200000
43
0
c000
0
0
3
f8200000
40
0
c000
0
0
4
f8200000
41
0
>;
interrupt
-
parent
=
<
10
c00
>;
interrupts
=
<
14
3
>;
bus
-
range
=
<
0
0
>;
ranges
=
<
02000000
0
80000000
80000000
0
40000000
01000000
0
00000000
f6000000
0
02000000
>;
};
/*
May
need
to
remove
if
on
a
part
without
crypto
engine
*/
crypto
@
30000
{
device_type
=
"crypto"
;
model
=
"SEC2"
;
compatible
=
"talitos"
;
reg
=
<
30000
10000
>;
interrupts
=
<
b
0
>;
interrupt
-
parent
=
<
10
c00
>;
num
-
channels
=
<
4
>;
channel
-
fifo
-
len
=
<
18
>;
exec
-
units
-
mask
=
<
0000007
e
>;
/*
desc
mask
is
for
rev1
.
x
,
we
need
runtime
fixup
for
>=
2.
x
*/
descriptor
-
types
-
mask
=
<
01010
ebf
>;
};
};
};
arch/powerpc/platforms/82xx/Kconfig
0 → 100644
View file @
5a3e3b22
menu "Platform support"
depends on PPC_82xx
choice
prompt "Machine Type"
default MPC82xx_ADS
config MPC82xx_ADS
bool "Freescale MPC82xx ADS"
select DEFAULT_UIMAGE
select PQ2ADS
select 8272
select 8260
select CPM2
select FSL_SOC
help
This option enables support for the MPC8272 ADS board
endchoice
endmenu
arch/powerpc/platforms/82xx/Makefile
0 → 100644
View file @
5a3e3b22
#
# Makefile for the PowerPC 82xx linux kernel.
#
obj-$(CONFIG_PPC_82xx)
+=
mpc82xx.o
obj-$(CONFIG_MPC82xx_ADS)
+=
mpc82xx_ads.o
arch/powerpc/platforms/82xx/m82xx_pci.h
0 → 100644
View file @
5a3e3b22
#ifndef _PPC_KERNEL_M82XX_PCI_H
#define _PPC_KERNEL_M82XX_PCI_H
/*
* 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/m8260_pci.h>
#define SIU_INT_IRQ1 ((uint)0x13 + CPM_IRQ_OFFSET)
#ifndef _IO_BASE
#define _IO_BASE isa_io_base
#endif
#endif
/* _PPC_KERNEL_M8260_PCI_H */
arch/powerpc/platforms/82xx/mpc82xx.c
0 → 100644
View file @
5a3e3b22
/*
* MPC82xx setup and early boot code plus other random bits.
*
* Author: Vitaly Bordug <vbordug@ru.mvista.com>
*
* Copyright (c) 2006 MontaVista Software, 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.
*/
#include <linux/config.h>
#include <linux/stddef.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/reboot.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/kdev_t.h>
#include <linux/major.h>
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <linux/initrd.h>
#include <linux/module.h>
#include <linux/fsl_devices.h>
#include <linux/fs_uart_pd.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/atomic.h>
#include <asm/time.h>
#include <asm/io.h>
#include <asm/machdep.h>
#include <asm/bootinfo.h>
#include <asm/pci-bridge.h>
#include <asm/mpc8260.h>
#include <asm/irq.h>
#include <mm/mmu_decl.h>
#include <asm/prom.h>
#include <asm/cpm2.h>
#include <asm/udbg.h>
#include <asm/i8259.h>
#include <linux/fs_enet_pd.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/cpm2_pic.h>
#include "pq2ads_pd.h"
static
int
__init
get_freq
(
char
*
name
,
unsigned
long
*
val
)
{
struct
device_node
*
cpu
;
unsigned
int
*
fp
;
int
found
=
0
;
/* The cpu node should have timebase and clock frequency properties */
cpu
=
of_find_node_by_type
(
NULL
,
"cpu"
);
if
(
cpu
)
{
fp
=
(
unsigned
int
*
)
get_property
(
cpu
,
name
,
NULL
);
if
(
fp
)
{
found
=
1
;
*
val
=
*
fp
++
;
}
of_node_put
(
cpu
);
}
return
found
;
}
void
__init
m82xx_calibrate_decr
(
void
)
{
ppc_tb_freq
=
125000000
;
if
(
!
get_freq
(
"bus-frequency"
,
&
ppc_tb_freq
))
{
printk
(
KERN_ERR
"WARNING: Estimating decrementer frequency "
"(not found)
\n
"
);
}
ppc_tb_freq
/=
4
;
ppc_proc_freq
=
1000000000
;
if
(
!
get_freq
(
"clock-frequency"
,
&
ppc_proc_freq
))
printk
(
KERN_ERR
"WARNING: Estimating processor frequency"
"(not found)
\n
"
);
}
void
mpc82xx_ads_show_cpuinfo
(
struct
seq_file
*
m
)
{
uint
pvid
,
svid
,
phid1
;
uint
memsize
=
total_memory
;
pvid
=
mfspr
(
SPRN_PVR
);
svid
=
mfspr
(
SPRN_SVR
);
seq_printf
(
m
,
"Vendor
\t\t
: Freescale Semiconductor
\n
"
);
seq_printf
(
m
,
"Machine
\t\t
: %s
\n
"
,
CPUINFO_MACHINE
);
seq_printf
(
m
,
"PVR
\t\t
: 0x%x
\n
"
,
pvid
);
seq_printf
(
m
,
"SVR
\t\t
: 0x%x
\n
"
,
svid
);
/* Display cpu Pll setting */
phid1
=
mfspr
(
SPRN_HID1
);
seq_printf
(
m
,
"PLL setting
\t
: 0x%x
\n
"
,
((
phid1
>>
24
)
&
0x3f
));
/* Display the amount of memory */
seq_printf
(
m
,
"Memory
\t\t
: %d MB
\n
"
,
memsize
/
(
1024
*
1024
));
}
arch/powerpc/platforms/82xx/mpc82xx_ads.c
0 → 100644
View file @
5a3e3b22
This diff is collapsed.
Click to expand it.
arch/powerpc/platforms/82xx/pq2ads.h
0 → 100644
View file @
5a3e3b22
/*
* PQ2/mpc8260 board-specific stuff
*
* A collection of structures, addresses, and values associated with
* the Freescale MPC8260ADS/MPC8266ADS-PCI boards.
* Copied from the RPX-Classic and SBS8260 stuff.
*
* Author: Vitaly Bordug <vbordug@ru.mvista.com>
*
* Originally written by Dan Malek for Motorola MPC8260 family
*
* Copyright (c) 2001 Dan Malek <dan@embeddedalley.com>
* Copyright (c) 2006 MontaVista Software, 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.
*/
#ifdef __KERNEL__
#ifndef __MACH_ADS8260_DEFS
#define __MACH_ADS8260_DEFS
#include <linux/config.h>
#include <asm/ppcboot.h>
/* For our show_cpuinfo hooks. */
#define CPUINFO_VENDOR "Freescale Semiconductor"
#define CPUINFO_MACHINE "PQ2 ADS PowerPC"
/* Backword-compatibility stuff for the drivers */
#define CPM_MAP_ADDR ((uint)0xf0000000)
#define CPM_IRQ_OFFSET 0
/* The ADS8260 has 16, 32-bit wide control/status registers, accessed
* only on word boundaries.
* Not all are used (yet), or are interesting to us (yet).
*/
/* Things of interest in the CSR.
*/
#define BCSR0_LED0 ((uint)0x02000000)
/* 0 == on */
#define BCSR0_LED1 ((uint)0x01000000)
/* 0 == on */
#define BCSR1_FETHIEN ((uint)0x08000000)
/* 0 == enable*/
#define BCSR1_FETH_RST ((uint)0x04000000)
/* 0 == reset */
#define BCSR1_RS232_EN1 ((uint)0x02000000)
/* 0 ==enable */
#define BCSR1_RS232_EN2 ((uint)0x01000000)
/* 0 ==enable */
#define BCSR3_FETHIEN2 ((uint)0x10000000)
/* 0 == enable*/
#define BCSR3_FETH2_RS ((uint)0x80000000)
/* 0 == reset */
/* cpm serial driver works with constants below */
#define SIU_INT_SMC1 ((uint)0x04+CPM_IRQ_OFFSET)
#define SIU_INT_SMC2i ((uint)0x05+CPM_IRQ_OFFSET)
#define SIU_INT_SCC1 ((uint)0x28+CPM_IRQ_OFFSET)
#define SIU_INT_SCC2 ((uint)0x29+CPM_IRQ_OFFSET)
#define SIU_INT_SCC3 ((uint)0x2a+CPM_IRQ_OFFSET)
#define SIU_INT_SCC4 ((uint)0x2b+CPM_IRQ_OFFSET)
void
m82xx_pci_init_irq
(
void
);
void
mpc82xx_ads_show_cpuinfo
(
struct
seq_file
*
);
void
m82xx_calibrate_decr
(
void
);
#endif
/* __MACH_ADS8260_DEFS */
#endif
/* __KERNEL__ */
arch/powerpc/sysdev/cpm2_pic.c
View file @
5a3e3b22
...
@@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
...
@@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = {
.
end
=
cpm2_end_irq
,
.
end
=
cpm2_end_irq
,
};
};
int
cpm2_get_irq
(
struct
pt_regs
*
regs
)
unsigned
int
cpm2_get_irq
(
struct
pt_regs
*
regs
)
{
{
int
irq
;
int
irq
;
unsigned
long
bits
;
unsigned
long
bits
;
...
...
arch/powerpc/sysdev/cpm2_pic.h
View file @
5a3e3b22
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
extern
intctl_cpm2_t
*
cpm2_intctl
;
extern
intctl_cpm2_t
*
cpm2_intctl
;
extern
int
cpm2_get_irq
(
struct
pt_regs
*
regs
);
extern
unsigned
int
cpm2_get_irq
(
struct
pt_regs
*
regs
);
extern
void
cpm2_pic_init
(
struct
device_node
*
);
extern
void
cpm2_pic_init
(
struct
device_node
*
);
...
...
arch/powerpc/sysdev/fsl_soc.c
View file @
5a3e3b22
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
#include <asm/cpm2.h>
#include <asm/cpm2.h>
extern
void
init_fcc_ioports
(
struct
fs_platform_info
*
);
extern
void
init_fcc_ioports
(
struct
fs_platform_info
*
);
extern
void
init_scc_ioports
(
struct
fs_uart_platform_info
*
);
static
phys_addr_t
immrbase
=
-
1
;
static
phys_addr_t
immrbase
=
-
1
;
phys_addr_t
get_immrbase
(
void
)
phys_addr_t
get_immrbase
(
void
)
...
@@ -566,7 +567,7 @@ static int __init fs_enet_of_init(void)
...
@@ -566,7 +567,7 @@ static int __init fs_enet_of_init(void)
struct
resource
r
[
4
];
struct
resource
r
[
4
];
struct
device_node
*
phy
,
*
mdio
;
struct
device_node
*
phy
,
*
mdio
;
struct
fs_platform_info
fs_enet_data
;
struct
fs_platform_info
fs_enet_data
;
const
unsigned
int
*
id
,
*
phy_addr
;
const
unsigned
int
*
id
,
*
phy_addr
,
phy_irq
;
const
void
*
mac_addr
;
const
void
*
mac_addr
;
const
phandle
*
ph
;
const
phandle
*
ph
;
const
char
*
model
;
const
char
*
model
;
...
@@ -588,6 +589,7 @@ static int __init fs_enet_of_init(void)
...
@@ -588,6 +589,7 @@ static int __init fs_enet_of_init(void)
if
(
ret
)
if
(
ret
)
goto
err
;
goto
err
;
r
[
2
].
name
=
fcc_regs_c
;
r
[
2
].
name
=
fcc_regs_c
;
fs_enet_data
.
fcc_regs_c
=
r
[
2
].
start
;
r
[
3
].
start
=
r
[
3
].
end
=
irq_of_parse_and_map
(
np
,
0
);
r
[
3
].
start
=
r
[
3
].
end
=
irq_of_parse_and_map
(
np
,
0
);
r
[
3
].
flags
=
IORESOURCE_IRQ
;
r
[
3
].
flags
=
IORESOURCE_IRQ
;
...
@@ -620,6 +622,8 @@ static int __init fs_enet_of_init(void)
...
@@ -620,6 +622,8 @@ static int __init fs_enet_of_init(void)
phy_addr
=
get_property
(
phy
,
"reg"
,
NULL
);
phy_addr
=
get_property
(
phy
,
"reg"
,
NULL
);
fs_enet_data
.
phy_addr
=
*
phy_addr
;
fs_enet_data
.
phy_addr
=
*
phy_addr
;
phy_irq
=
get_property
(
phy
,
"interrupts"
,
NULL
);
id
=
get_property
(
np
,
"device-id"
,
NULL
);
id
=
get_property
(
np
,
"device-id"
,
NULL
);
fs_enet_data
.
fs_no
=
*
id
;
fs_enet_data
.
fs_no
=
*
id
;
strcpy
(
fs_enet_data
.
fs_type
,
model
);
strcpy
(
fs_enet_data
.
fs_type
,
model
);
...
@@ -637,6 +641,7 @@ static int __init fs_enet_of_init(void)
...
@@ -637,6 +641,7 @@ static int __init fs_enet_of_init(void)
if
(
strstr
(
model
,
"FCC"
))
{
if
(
strstr
(
model
,
"FCC"
))
{
int
fcc_index
=
*
id
-
1
;
int
fcc_index
=
*
id
-
1
;
unsigned
char
*
mdio_bb_prop
;
fs_enet_data
.
dpram_offset
=
(
u32
)
cpm_dpram_addr
(
0
);
fs_enet_data
.
dpram_offset
=
(
u32
)
cpm_dpram_addr
(
0
);
fs_enet_data
.
rx_ring
=
32
;
fs_enet_data
.
rx_ring
=
32
;
...
@@ -652,14 +657,57 @@ static int __init fs_enet_of_init(void)
...
@@ -652,14 +657,57 @@ static int __init fs_enet_of_init(void)
(
u32
)
res
.
start
,
fs_enet_data
.
phy_addr
);
(
u32
)
res
.
start
,
fs_enet_data
.
phy_addr
);
fs_enet_data
.
bus_id
=
(
char
*
)
&
bus_id
[(
*
id
)];
fs_enet_data
.
bus_id
=
(
char
*
)
&
bus_id
[(
*
id
)];
fs_enet_data
.
init_ioports
=
init_fcc_ioports
;
fs_enet_data
.
init_ioports
=
init_fcc_ioports
;
}
of_node_put
(
phy
);
mdio_bb_prop
=
get_property
(
phy
,
"bitbang"
,
NULL
);
of_node_put
(
mdio
);
if
(
mdio_bb_prop
)
{
struct
platform_device
*
fs_enet_mdio_bb_dev
;
struct
fs_mii_bb_platform_info
fs_enet_mdio_bb_data
;
fs_enet_mdio_bb_dev
=
platform_device_register_simple
(
"fsl-bb-mdio"
,
i
,
NULL
,
0
);
memset
(
&
fs_enet_mdio_bb_data
,
0
,
sizeof
(
struct
fs_mii_bb_platform_info
));
fs_enet_mdio_bb_data
.
mdio_dat
.
bit
=
mdio_bb_prop
[
0
];
fs_enet_mdio_bb_data
.
mdio_dir
.
bit
=
mdio_bb_prop
[
1
];
fs_enet_mdio_bb_data
.
mdc_dat
.
bit
=
mdio_bb_prop
[
2
];
fs_enet_mdio_bb_data
.
mdio_port
=
mdio_bb_prop
[
3
];
fs_enet_mdio_bb_data
.
mdc_port
=
mdio_bb_prop
[
4
];
fs_enet_mdio_bb_data
.
delay
=
mdio_bb_prop
[
5
];
fs_enet_mdio_bb_data
.
irq
[
0
]
=
phy_irq
[
0
];
fs_enet_mdio_bb_data
.
irq
[
1
]
=
-
1
;
fs_enet_mdio_bb_data
.
irq
[
2
]
=
-
1
;
fs_enet_mdio_bb_data
.
irq
[
3
]
=
phy_irq
[
0
];
fs_enet_mdio_bb_data
.
irq
[
31
]
=
-
1
;
fs_enet_mdio_bb_data
.
mdio_dat
.
offset
=
(
u32
)
&
cpm2_immr
->
im_ioport
.
iop_pdatc
;
fs_enet_mdio_bb_data
.
mdio_dir
.
offset
=
(
u32
)
&
cpm2_immr
->
im_ioport
.
iop_pdirc
;
fs_enet_mdio_bb_data
.
mdc_dat
.
offset
=
(
u32
)
&
cpm2_immr
->
im_ioport
.
iop_pdatc
;
ret
=
platform_device_add_data
(
fs_enet_mdio_bb_dev
,
&
fs_enet_mdio_bb_data
,
sizeof
(
struct
fs_mii_bb_platform_info
));
if
(
ret
)
goto
unreg
;
}
of_node_put
(
phy
);
of_node_put
(
mdio
);
ret
=
platform_device_add_data
(
fs_enet_dev
,
&
fs_enet_data
,
ret
=
platform_device_add_data
(
fs_enet_dev
,
&
fs_enet_data
,
sizeof
(
struct
sizeof
(
struct
fs_platform_info
));
fs_platform_info
));
if
(
ret
)
if
(
ret
)
goto
unreg
;
goto
unreg
;
}
}
...
...
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