diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-10-06 20:15:07 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-10-06 20:15:07 -0400 |
commit | fa6428ebfa2197841902b89cbc25334707e2f6eb (patch) | |
tree | d139b822bc5447198528defb29f0c0e90d89651c | |
parent | c9b59da130b4430910e02a80816f317534cd5e53 (diff) | |
parent | 3d5fa877bdf65451c78c3b3d581355deea403b80 (diff) |
Merge commit 'jwb/jwb-next'
-rw-r--r-- | arch/powerpc/boot/dts/arches.dts | 293 | ||||
-rw-r--r-- | arch/powerpc/configs/44x/arches_defconfig | 767 | ||||
-rw-r--r-- | arch/powerpc/include/asm/dcr-regs.h | 11 | ||||
-rw-r--r-- | arch/powerpc/platforms/44x/Kconfig | 17 | ||||
-rw-r--r-- | arch/powerpc/platforms/44x/ppc44x_simple.c | 3 | ||||
-rw-r--r-- | arch/powerpc/sysdev/ppc4xx_pci.c | 9 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/Kconfig | 12 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/core.c | 60 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/core.h | 11 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/mal.c | 60 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/mal.h | 34 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/phy.c | 84 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/phy.h | 2 |
13 files changed, 1345 insertions, 18 deletions
diff --git a/arch/powerpc/boot/dts/arches.dts b/arch/powerpc/boot/dts/arches.dts new file mode 100644 index 000000000000..d9113b1e8c1d --- /dev/null +++ b/arch/powerpc/boot/dts/arches.dts | |||
@@ -0,0 +1,293 @@ | |||
1 | /* | ||
2 | * Device Tree Source for AMCC Arches (dual 460GT board) | ||
3 | * | ||
4 | * (C) Copyright 2008 Applied Micro Circuits Corporation | ||
5 | * Victor Gallardo <vgallardo@amcc.com> | ||
6 | * Adam Graham <agraham@amcc.com> | ||
7 | * | ||
8 | * Based on the glacier.dts file | ||
9 | * Stefan Roese <sr@denx.de> | ||
10 | * Copyright 2008 DENX Software Engineering | ||
11 | * | ||
12 | * See file CREDITS for list of people who contributed to this | ||
13 | * project. | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or | ||
16 | * modify it under the terms of the GNU General Public License as | ||
17 | * published by the Free Software Foundation; either version 2 of | ||
18 | * the License, or (at your option) any later version. | ||
19 | * | ||
20 | * This program is distributed in the hope that it will be useful, | ||
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
23 | * GNU General Public License for more details. | ||
24 | * | ||
25 | * You should have received a copy of the GNU General Public License | ||
26 | * along with this program; if not, write to the Free Software | ||
27 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
28 | * MA 02111-1307 USA | ||
29 | */ | ||
30 | |||
31 | /dts-v1/; | ||
32 | |||
33 | / { | ||
34 | #address-cells = <2>; | ||
35 | #size-cells = <1>; | ||
36 | model = "amcc,arches"; | ||
37 | compatible = "amcc,arches"; | ||
38 | dcr-parent = <&{/cpus/cpu@0}>; | ||
39 | |||
40 | aliases { | ||
41 | ethernet0 = &EMAC0; | ||
42 | ethernet1 = &EMAC1; | ||
43 | ethernet2 = &EMAC2; | ||
44 | serial0 = &UART0; | ||
45 | }; | ||
46 | |||
47 | cpus { | ||
48 | #address-cells = <1>; | ||
49 | #size-cells = <0>; | ||
50 | |||
51 | cpu@0 { | ||
52 | device_type = "cpu"; | ||
53 | model = "PowerPC,460GT"; | ||
54 | reg = <0x00000000>; | ||
55 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
56 | timebase-frequency = <0>; /* Filled in by U-Boot */ | ||
57 | i-cache-line-size = <32>; | ||
58 | d-cache-line-size = <32>; | ||
59 | i-cache-size = <32768>; | ||
60 | d-cache-size = <32768>; | ||
61 | dcr-controller; | ||
62 | dcr-access-method = "native"; | ||
63 | }; | ||
64 | }; | ||
65 | |||
66 | memory { | ||
67 | device_type = "memory"; | ||
68 | reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */ | ||
69 | }; | ||
70 | |||
71 | UIC0: interrupt-controller0 { | ||
72 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
73 | interrupt-controller; | ||
74 | cell-index = <0>; | ||
75 | dcr-reg = <0x0c0 0x009>; | ||
76 | #address-cells = <0>; | ||
77 | #size-cells = <0>; | ||
78 | #interrupt-cells = <2>; | ||
79 | }; | ||
80 | |||
81 | UIC1: interrupt-controller1 { | ||
82 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
83 | interrupt-controller; | ||
84 | cell-index = <1>; | ||
85 | dcr-reg = <0x0d0 0x009>; | ||
86 | #address-cells = <0>; | ||
87 | #size-cells = <0>; | ||
88 | #interrupt-cells = <2>; | ||
89 | interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */ | ||
90 | interrupt-parent = <&UIC0>; | ||
91 | }; | ||
92 | |||
93 | UIC2: interrupt-controller2 { | ||
94 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
95 | interrupt-controller; | ||
96 | cell-index = <2>; | ||
97 | dcr-reg = <0x0e0 0x009>; | ||
98 | #address-cells = <0>; | ||
99 | #size-cells = <0>; | ||
100 | #interrupt-cells = <2>; | ||
101 | interrupts = <0xa 0x4 0xb 0x4>; /* cascade */ | ||
102 | interrupt-parent = <&UIC0>; | ||
103 | }; | ||
104 | |||
105 | UIC3: interrupt-controller3 { | ||
106 | compatible = "ibm,uic-460gt","ibm,uic"; | ||
107 | interrupt-controller; | ||
108 | cell-index = <3>; | ||
109 | dcr-reg = <0x0f0 0x009>; | ||
110 | #address-cells = <0>; | ||
111 | #size-cells = <0>; | ||
112 | #interrupt-cells = <2>; | ||
113 | interrupts = <0x10 0x4 0x11 0x4>; /* cascade */ | ||
114 | interrupt-parent = <&UIC0>; | ||
115 | }; | ||
116 | |||
117 | SDR0: sdr { | ||
118 | compatible = "ibm,sdr-460gt"; | ||
119 | dcr-reg = <0x00e 0x002>; | ||
120 | }; | ||
121 | |||
122 | CPR0: cpr { | ||
123 | compatible = "ibm,cpr-460gt"; | ||
124 | dcr-reg = <0x00c 0x002>; | ||
125 | }; | ||
126 | |||
127 | plb { | ||
128 | compatible = "ibm,plb-460gt", "ibm,plb4"; | ||
129 | #address-cells = <2>; | ||
130 | #size-cells = <1>; | ||
131 | ranges; | ||
132 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
133 | |||
134 | SDRAM0: sdram { | ||
135 | compatible = "ibm,sdram-460gt", "ibm,sdram-405gp"; | ||
136 | dcr-reg = <0x010 0x002>; | ||
137 | }; | ||
138 | |||
139 | MAL0: mcmal { | ||
140 | compatible = "ibm,mcmal-460gt", "ibm,mcmal2"; | ||
141 | dcr-reg = <0x180 0x062>; | ||
142 | num-tx-chans = <3>; | ||
143 | num-rx-chans = <24>; | ||
144 | #address-cells = <0>; | ||
145 | #size-cells = <0>; | ||
146 | interrupt-parent = <&UIC2>; | ||
147 | interrupts = < /*TXEOB*/ 0x6 0x4 | ||
148 | /*RXEOB*/ 0x7 0x4 | ||
149 | /*SERR*/ 0x3 0x4 | ||
150 | /*TXDE*/ 0x4 0x4 | ||
151 | /*RXDE*/ 0x5 0x4>; | ||
152 | desc-base-addr-high = <0x8>; | ||
153 | }; | ||
154 | |||
155 | POB0: opb { | ||
156 | compatible = "ibm,opb-460gt", "ibm,opb"; | ||
157 | #address-cells = <1>; | ||
158 | #size-cells = <1>; | ||
159 | ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>; | ||
160 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
161 | |||
162 | EBC0: ebc { | ||
163 | compatible = "ibm,ebc-460gt", "ibm,ebc"; | ||
164 | dcr-reg = <0x012 0x002>; | ||
165 | #address-cells = <2>; | ||
166 | #size-cells = <1>; | ||
167 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
168 | /* ranges property is supplied by U-Boot */ | ||
169 | interrupts = <0x6 0x4>; | ||
170 | interrupt-parent = <&UIC1>; | ||
171 | }; | ||
172 | |||
173 | UART0: serial@ef600300 { | ||
174 | device_type = "serial"; | ||
175 | compatible = "ns16550"; | ||
176 | reg = <0xef600300 0x00000008>; | ||
177 | virtual-reg = <0xef600300>; | ||
178 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
179 | current-speed = <0>; /* Filled in by U-Boot */ | ||
180 | interrupt-parent = <&UIC1>; | ||
181 | interrupts = <0x1 0x4>; | ||
182 | }; | ||
183 | |||
184 | IIC0: i2c@ef600700 { | ||
185 | compatible = "ibm,iic-460gt", "ibm,iic"; | ||
186 | reg = <0xef600700 0x00000014>; | ||
187 | interrupt-parent = <&UIC0>; | ||
188 | interrupts = <0x2 0x4>; | ||
189 | }; | ||
190 | |||
191 | IIC1: i2c@ef600800 { | ||
192 | compatible = "ibm,iic-460gt", "ibm,iic"; | ||
193 | reg = <0xef600800 0x00000014>; | ||
194 | interrupt-parent = <&UIC0>; | ||
195 | interrupts = <0x3 0x4>; | ||
196 | }; | ||
197 | |||
198 | TAH0: emac-tah@ef601350 { | ||
199 | compatible = "ibm,tah-460gt", "ibm,tah"; | ||
200 | reg = <0xef601350 0x00000030>; | ||
201 | }; | ||
202 | |||
203 | TAH1: emac-tah@ef601450 { | ||
204 | compatible = "ibm,tah-460gt", "ibm,tah"; | ||
205 | reg = <0xef601450 0x00000030>; | ||
206 | }; | ||
207 | |||
208 | EMAC0: ethernet@ef600e00 { | ||
209 | device_type = "network"; | ||
210 | compatible = "ibm,emac-460gt", "ibm,emac4sync"; | ||
211 | interrupt-parent = <&EMAC0>; | ||
212 | interrupts = <0x0 0x1>; | ||
213 | #interrupt-cells = <1>; | ||
214 | #address-cells = <0>; | ||
215 | #size-cells = <0>; | ||
216 | interrupt-map = </*Status*/ 0x0 &UIC2 0x10 0x4 | ||
217 | /*Wake*/ 0x1 &UIC2 0x14 0x4>; | ||
218 | reg = <0xef600e00 0x000000c4>; | ||
219 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
220 | mal-device = <&MAL0>; | ||
221 | mal-tx-channel = <0>; | ||
222 | mal-rx-channel = <0>; | ||
223 | cell-index = <0>; | ||
224 | max-frame-size = <9000>; | ||
225 | rx-fifo-size = <4096>; | ||
226 | tx-fifo-size = <2048>; | ||
227 | phy-mode = "sgmii"; | ||
228 | phy-map = <0xffffffff>; | ||
229 | gpcs-address = <0x0000000a>; | ||
230 | tah-device = <&TAH0>; | ||
231 | tah-channel = <0>; | ||
232 | has-inverted-stacr-oc; | ||
233 | has-new-stacr-staopc; | ||
234 | }; | ||
235 | |||
236 | EMAC1: ethernet@ef600f00 { | ||
237 | device_type = "network"; | ||
238 | compatible = "ibm,emac-460gt", "ibm,emac4sync"; | ||
239 | interrupt-parent = <&EMAC1>; | ||
240 | interrupts = <0x0 0x1>; | ||
241 | #interrupt-cells = <1>; | ||
242 | #address-cells = <0>; | ||
243 | #size-cells = <0>; | ||
244 | interrupt-map = </*Status*/ 0x0 &UIC2 0x11 0x4 | ||
245 | /*Wake*/ 0x1 &UIC2 0x15 0x4>; | ||
246 | reg = <0xef600f00 0x000000c4>; | ||
247 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
248 | mal-device = <&MAL0>; | ||
249 | mal-tx-channel = <1>; | ||
250 | mal-rx-channel = <8>; | ||
251 | cell-index = <1>; | ||
252 | max-frame-size = <9000>; | ||
253 | rx-fifo-size = <4096>; | ||
254 | tx-fifo-size = <2048>; | ||
255 | phy-mode = "sgmii"; | ||
256 | phy-map = <0x00000000>; | ||
257 | gpcs-address = <0x0000000b>; | ||
258 | tah-device = <&TAH1>; | ||
259 | tah-channel = <1>; | ||
260 | has-inverted-stacr-oc; | ||
261 | has-new-stacr-staopc; | ||
262 | mdio-device = <&EMAC0>; | ||
263 | }; | ||
264 | |||
265 | EMAC2: ethernet@ef601100 { | ||
266 | device_type = "network"; | ||
267 | compatible = "ibm,emac-460gt", "ibm,emac4sync"; | ||
268 | interrupt-parent = <&EMAC2>; | ||
269 | interrupts = <0x0 0x1>; | ||
270 | #interrupt-cells = <1>; | ||
271 | #address-cells = <0>; | ||
272 | #size-cells = <0>; | ||
273 | interrupt-map = </*Status*/ 0x0 &UIC2 0x12 0x4 | ||
274 | /*Wake*/ 0x1 &UIC2 0x16 0x4>; | ||
275 | reg = <0xef601100 0x000000c4>; | ||
276 | local-mac-address = [000000000000]; /* Filled in by U-Boot */ | ||
277 | mal-device = <&MAL0>; | ||
278 | mal-tx-channel = <2>; | ||
279 | mal-rx-channel = <16>; | ||
280 | cell-index = <2>; | ||
281 | max-frame-size = <9000>; | ||
282 | rx-fifo-size = <4096>; | ||
283 | tx-fifo-size = <2048>; | ||
284 | phy-mode = "sgmii"; | ||
285 | phy-map = <0x00000001>; | ||
286 | gpcs-address = <0x0000000C>; | ||
287 | has-inverted-stacr-oc; | ||
288 | has-new-stacr-staopc; | ||
289 | mdio-device = <&EMAC0>; | ||
290 | }; | ||
291 | }; | ||
292 | }; | ||
293 | }; | ||
diff --git a/arch/powerpc/configs/44x/arches_defconfig b/arch/powerpc/configs/44x/arches_defconfig new file mode 100644 index 000000000000..70f46078eb6a --- /dev/null +++ b/arch/powerpc/configs/44x/arches_defconfig | |||
@@ -0,0 +1,767 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.27-rc5 | ||
4 | # Wed Oct 1 15:54:57 2008 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_6xx is not set | ||
12 | # CONFIG_PPC_85xx is not set | ||
13 | # CONFIG_PPC_8xx is not set | ||
14 | # CONFIG_40x is not set | ||
15 | CONFIG_44x=y | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_PPC_FPU=y | ||
18 | CONFIG_4xx=y | ||
19 | CONFIG_BOOKE=y | ||
20 | CONFIG_PTE_64BIT=y | ||
21 | CONFIG_PHYS_64BIT=y | ||
22 | # CONFIG_PPC_MM_SLICES is not set | ||
23 | CONFIG_NOT_COHERENT_CACHE=y | ||
24 | CONFIG_PPC32=y | ||
25 | CONFIG_WORD_SIZE=32 | ||
26 | CONFIG_PPC_MERGE=y | ||
27 | CONFIG_MMU=y | ||
28 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
29 | CONFIG_GENERIC_TIME=y | ||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
31 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
32 | CONFIG_GENERIC_HARDIRQS=y | ||
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
34 | CONFIG_IRQ_PER_CPU=y | ||
35 | CONFIG_STACKTRACE_SUPPORT=y | ||
36 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
37 | CONFIG_LOCKDEP_SUPPORT=y | ||
38 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
39 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
40 | CONFIG_GENERIC_HWEIGHT=y | ||
41 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
42 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
43 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
44 | CONFIG_PPC=y | ||
45 | CONFIG_EARLY_PRINTK=y | ||
46 | CONFIG_GENERIC_NVRAM=y | ||
47 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
48 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
49 | CONFIG_PPC_OF=y | ||
50 | CONFIG_OF=y | ||
51 | CONFIG_PPC_UDBG_16550=y | ||
52 | # CONFIG_GENERIC_TBSYNC is not set | ||
53 | CONFIG_AUDIT_ARCH=y | ||
54 | CONFIG_GENERIC_BUG=y | ||
55 | # CONFIG_DEFAULT_UIMAGE is not set | ||
56 | CONFIG_PPC_DCR_NATIVE=y | ||
57 | # CONFIG_PPC_DCR_MMIO is not set | ||
58 | CONFIG_PPC_DCR=y | ||
59 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
60 | |||
61 | # | ||
62 | # General setup | ||
63 | # | ||
64 | CONFIG_EXPERIMENTAL=y | ||
65 | CONFIG_BROKEN_ON_SMP=y | ||
66 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
67 | CONFIG_LOCALVERSION="" | ||
68 | CONFIG_LOCALVERSION_AUTO=y | ||
69 | CONFIG_SWAP=y | ||
70 | CONFIG_SYSVIPC=y | ||
71 | CONFIG_SYSVIPC_SYSCTL=y | ||
72 | CONFIG_POSIX_MQUEUE=y | ||
73 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
74 | # CONFIG_TASKSTATS is not set | ||
75 | # CONFIG_AUDIT is not set | ||
76 | # CONFIG_IKCONFIG is not set | ||
77 | CONFIG_LOG_BUF_SHIFT=14 | ||
78 | # CONFIG_CGROUPS is not set | ||
79 | # CONFIG_GROUP_SCHED is not set | ||
80 | CONFIG_SYSFS_DEPRECATED=y | ||
81 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
82 | # CONFIG_RELAY is not set | ||
83 | # CONFIG_NAMESPACES is not set | ||
84 | CONFIG_BLK_DEV_INITRD=y | ||
85 | CONFIG_INITRAMFS_SOURCE="" | ||
86 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
87 | CONFIG_SYSCTL=y | ||
88 | CONFIG_EMBEDDED=y | ||
89 | CONFIG_SYSCTL_SYSCALL=y | ||
90 | CONFIG_KALLSYMS=y | ||
91 | # CONFIG_KALLSYMS_ALL is not set | ||
92 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
93 | CONFIG_HOTPLUG=y | ||
94 | CONFIG_PRINTK=y | ||
95 | CONFIG_BUG=y | ||
96 | CONFIG_ELF_CORE=y | ||
97 | CONFIG_COMPAT_BRK=y | ||
98 | CONFIG_BASE_FULL=y | ||
99 | CONFIG_FUTEX=y | ||
100 | CONFIG_ANON_INODES=y | ||
101 | CONFIG_EPOLL=y | ||
102 | CONFIG_SIGNALFD=y | ||
103 | CONFIG_TIMERFD=y | ||
104 | CONFIG_EVENTFD=y | ||
105 | CONFIG_SHMEM=y | ||
106 | CONFIG_VM_EVENT_COUNTERS=y | ||
107 | CONFIG_SLUB_DEBUG=y | ||
108 | # CONFIG_SLAB is not set | ||
109 | CONFIG_SLUB=y | ||
110 | # CONFIG_SLOB is not set | ||
111 | # CONFIG_PROFILING is not set | ||
112 | # CONFIG_MARKERS is not set | ||
113 | CONFIG_HAVE_OPROFILE=y | ||
114 | # CONFIG_KPROBES is not set | ||
115 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
116 | CONFIG_HAVE_IOREMAP_PROT=y | ||
117 | CONFIG_HAVE_KPROBES=y | ||
118 | CONFIG_HAVE_KRETPROBES=y | ||
119 | CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
120 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
121 | # CONFIG_USE_GENERIC_SMP_HELPERS is not set | ||
122 | # CONFIG_HAVE_CLK is not set | ||
123 | CONFIG_PROC_PAGE_MONITOR=y | ||
124 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
125 | CONFIG_SLABINFO=y | ||
126 | CONFIG_RT_MUTEXES=y | ||
127 | # CONFIG_TINY_SHMEM is not set | ||
128 | CONFIG_BASE_SMALL=0 | ||
129 | CONFIG_MODULES=y | ||
130 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
131 | CONFIG_MODULE_UNLOAD=y | ||
132 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
133 | # CONFIG_MODVERSIONS is not set | ||
134 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
135 | CONFIG_KMOD=y | ||
136 | CONFIG_BLOCK=y | ||
137 | CONFIG_LBD=y | ||
138 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
139 | # CONFIG_LSF is not set | ||
140 | # CONFIG_BLK_DEV_BSG is not set | ||
141 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
142 | |||
143 | # | ||
144 | # IO Schedulers | ||
145 | # | ||
146 | CONFIG_IOSCHED_NOOP=y | ||
147 | CONFIG_IOSCHED_AS=y | ||
148 | CONFIG_IOSCHED_DEADLINE=y | ||
149 | CONFIG_IOSCHED_CFQ=y | ||
150 | CONFIG_DEFAULT_AS=y | ||
151 | # CONFIG_DEFAULT_DEADLINE is not set | ||
152 | # CONFIG_DEFAULT_CFQ is not set | ||
153 | # CONFIG_DEFAULT_NOOP is not set | ||
154 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
155 | CONFIG_CLASSIC_RCU=y | ||
156 | CONFIG_PPC4xx_PCI_EXPRESS=y | ||
157 | |||
158 | # | ||
159 | # Platform support | ||
160 | # | ||
161 | # CONFIG_PPC_CELL is not set | ||
162 | # CONFIG_PPC_CELL_NATIVE is not set | ||
163 | # CONFIG_PQ2ADS is not set | ||
164 | # CONFIG_BAMBOO is not set | ||
165 | # CONFIG_EBONY is not set | ||
166 | # CONFIG_SAM440EP is not set | ||
167 | # CONFIG_SEQUOIA is not set | ||
168 | # CONFIG_TAISHAN is not set | ||
169 | # CONFIG_KATMAI is not set | ||
170 | # CONFIG_RAINIER is not set | ||
171 | # CONFIG_WARP is not set | ||
172 | CONFIG_ARCHES=y | ||
173 | # CONFIG_CANYONLANDS is not set | ||
174 | # CONFIG_GLACIER is not set | ||
175 | # CONFIG_YOSEMITE is not set | ||
176 | # CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
177 | CONFIG_PPC44x_SIMPLE=y | ||
178 | CONFIG_460EX=y | ||
179 | # CONFIG_IPIC is not set | ||
180 | # CONFIG_MPIC is not set | ||
181 | # CONFIG_MPIC_WEIRD is not set | ||
182 | # CONFIG_PPC_I8259 is not set | ||
183 | # CONFIG_PPC_RTAS is not set | ||
184 | # CONFIG_MMIO_NVRAM is not set | ||
185 | # CONFIG_PPC_MPC106 is not set | ||
186 | # CONFIG_PPC_970_NAP is not set | ||
187 | # CONFIG_PPC_INDIRECT_IO is not set | ||
188 | # CONFIG_GENERIC_IOMAP is not set | ||
189 | # CONFIG_CPU_FREQ is not set | ||
190 | # CONFIG_FSL_ULI1575 is not set | ||
191 | |||
192 | # | ||
193 | # Kernel options | ||
194 | # | ||
195 | # CONFIG_HIGHMEM is not set | ||
196 | CONFIG_TICK_ONESHOT=y | ||
197 | CONFIG_NO_HZ=y | ||
198 | CONFIG_HIGH_RES_TIMERS=y | ||
199 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
200 | # CONFIG_HZ_100 is not set | ||
201 | CONFIG_HZ_250=y | ||
202 | # CONFIG_HZ_300 is not set | ||
203 | # CONFIG_HZ_1000 is not set | ||
204 | CONFIG_HZ=250 | ||
205 | CONFIG_SCHED_HRTICK=y | ||
206 | CONFIG_PREEMPT_NONE=y | ||
207 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
208 | # CONFIG_PREEMPT is not set | ||
209 | CONFIG_BINFMT_ELF=y | ||
210 | # CONFIG_BINFMT_MISC is not set | ||
211 | # CONFIG_MATH_EMULATION is not set | ||
212 | # CONFIG_IOMMU_HELPER is not set | ||
213 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
214 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
215 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
216 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
217 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
218 | CONFIG_SELECT_MEMORY_MODEL=y | ||
219 | CONFIG_FLATMEM_MANUAL=y | ||
220 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
221 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
222 | CONFIG_FLATMEM=y | ||
223 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
224 | # CONFIG_SPARSEMEM_STATIC is not set | ||
225 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
226 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
227 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
228 | CONFIG_MIGRATION=y | ||
229 | CONFIG_RESOURCES_64BIT=y | ||
230 | CONFIG_ZONE_DMA_FLAG=1 | ||
231 | CONFIG_BOUNCE=y | ||
232 | CONFIG_VIRT_TO_BUS=y | ||
233 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
234 | CONFIG_PROC_DEVICETREE=y | ||
235 | CONFIG_CMDLINE_BOOL=y | ||
236 | CONFIG_CMDLINE="" | ||
237 | CONFIG_EXTRA_TARGETS="" | ||
238 | CONFIG_SECCOMP=y | ||
239 | CONFIG_ISA_DMA_API=y | ||
240 | |||
241 | # | ||
242 | # Bus options | ||
243 | # | ||
244 | CONFIG_ZONE_DMA=y | ||
245 | CONFIG_PPC_INDIRECT_PCI=y | ||
246 | CONFIG_4xx_SOC=y | ||
247 | CONFIG_PPC_PCI_CHOICE=y | ||
248 | CONFIG_PCI=y | ||
249 | CONFIG_PCI_DOMAINS=y | ||
250 | CONFIG_PCI_SYSCALL=y | ||
251 | # CONFIG_PCIEPORTBUS is not set | ||
252 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
253 | # CONFIG_PCI_MSI is not set | ||
254 | CONFIG_PCI_LEGACY=y | ||
255 | # CONFIG_PCI_DEBUG is not set | ||
256 | # CONFIG_PCCARD is not set | ||
257 | # CONFIG_HOTPLUG_PCI is not set | ||
258 | # CONFIG_HAS_RAPIDIO is not set | ||
259 | |||
260 | # | ||
261 | # Advanced setup | ||
262 | # | ||
263 | # CONFIG_ADVANCED_OPTIONS is not set | ||
264 | |||
265 | # | ||
266 | # Default settings for advanced configuration options are used | ||
267 | # | ||
268 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
269 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
270 | CONFIG_KERNEL_START=0xc0000000 | ||
271 | CONFIG_PHYSICAL_START=0x00000000 | ||
272 | CONFIG_TASK_SIZE=0xc0000000 | ||
273 | CONFIG_CONSISTENT_START=0xff100000 | ||
274 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
275 | CONFIG_NET=y | ||
276 | |||
277 | # | ||
278 | # Networking options | ||
279 | # | ||
280 | CONFIG_PACKET=y | ||
281 | # CONFIG_PACKET_MMAP is not set | ||
282 | CONFIG_UNIX=y | ||
283 | # CONFIG_NET_KEY is not set | ||
284 | CONFIG_INET=y | ||
285 | # CONFIG_IP_MULTICAST is not set | ||
286 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
287 | CONFIG_IP_FIB_HASH=y | ||
288 | CONFIG_IP_PNP=y | ||
289 | CONFIG_IP_PNP_DHCP=y | ||
290 | CONFIG_IP_PNP_BOOTP=y | ||
291 | # CONFIG_IP_PNP_RARP is not set | ||
292 | # CONFIG_NET_IPIP is not set | ||
293 | # CONFIG_NET_IPGRE is not set | ||
294 | # CONFIG_ARPD is not set | ||
295 | # CONFIG_SYN_COOKIES is not set | ||
296 | # CONFIG_INET_AH is not set | ||
297 | # CONFIG_INET_ESP is not set | ||
298 | # CONFIG_INET_IPCOMP is not set | ||
299 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
300 | # CONFIG_INET_TUNNEL is not set | ||
301 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
302 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
303 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
304 | # CONFIG_INET_LRO is not set | ||
305 | CONFIG_INET_DIAG=y | ||
306 | CONFIG_INET_TCP_DIAG=y | ||
307 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
308 | CONFIG_TCP_CONG_CUBIC=y | ||
309 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
310 | # CONFIG_TCP_MD5SIG is not set | ||
311 | # CONFIG_IPV6 is not set | ||
312 | # CONFIG_NETWORK_SECMARK is not set | ||
313 | # CONFIG_NETFILTER is not set | ||
314 | # CONFIG_IP_DCCP is not set | ||
315 | # CONFIG_IP_SCTP is not set | ||
316 | # CONFIG_TIPC is not set | ||
317 | # CONFIG_ATM is not set | ||
318 | # CONFIG_BRIDGE is not set | ||
319 | # CONFIG_VLAN_8021Q is not set | ||
320 | # CONFIG_DECNET is not set | ||
321 | # CONFIG_LLC2 is not set | ||
322 | # CONFIG_IPX is not set | ||
323 | # CONFIG_ATALK is not set | ||
324 | # CONFIG_X25 is not set | ||
325 | # CONFIG_LAPB is not set | ||
326 | # CONFIG_ECONET is not set | ||
327 | # CONFIG_WAN_ROUTER is not set | ||
328 | # CONFIG_NET_SCHED is not set | ||
329 | |||
330 | # | ||
331 | # Network testing | ||
332 | # | ||
333 | # CONFIG_NET_PKTGEN is not set | ||
334 | # CONFIG_HAMRADIO is not set | ||
335 | # CONFIG_CAN is not set | ||
336 | # CONFIG_IRDA is not set | ||
337 | # CONFIG_BT is not set | ||
338 | # CONFIG_AF_RXRPC is not set | ||
339 | |||
340 | # | ||
341 | # Wireless | ||
342 | # | ||
343 | # CONFIG_CFG80211 is not set | ||
344 | # CONFIG_WIRELESS_EXT is not set | ||
345 | # CONFIG_MAC80211 is not set | ||
346 | # CONFIG_IEEE80211 is not set | ||
347 | # CONFIG_RFKILL is not set | ||
348 | # CONFIG_NET_9P is not set | ||
349 | |||
350 | # | ||
351 | # Device Drivers | ||
352 | # | ||
353 | |||
354 | # | ||
355 | # Generic Driver Options | ||
356 | # | ||
357 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
358 | CONFIG_STANDALONE=y | ||
359 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
360 | CONFIG_FW_LOADER=y | ||
361 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
362 | CONFIG_EXTRA_FIRMWARE="" | ||
363 | # CONFIG_DEBUG_DRIVER is not set | ||
364 | # CONFIG_DEBUG_DEVRES is not set | ||
365 | # CONFIG_SYS_HYPERVISOR is not set | ||
366 | CONFIG_CONNECTOR=y | ||
367 | CONFIG_PROC_EVENTS=y | ||
368 | # CONFIG_MTD is not set | ||
369 | CONFIG_OF_DEVICE=y | ||
370 | # CONFIG_PARPORT is not set | ||
371 | CONFIG_BLK_DEV=y | ||
372 | # CONFIG_BLK_DEV_FD is not set | ||
373 | # CONFIG_BLK_CPQ_DA is not set | ||
374 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
375 | # CONFIG_BLK_DEV_DAC960 is not set | ||
376 | # CONFIG_BLK_DEV_UMEM is not set | ||
377 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
378 | # CONFIG_BLK_DEV_LOOP is not set | ||
379 | # CONFIG_BLK_DEV_NBD is not set | ||
380 | # CONFIG_BLK_DEV_SX8 is not set | ||
381 | CONFIG_BLK_DEV_RAM=y | ||
382 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
383 | CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
384 | # CONFIG_BLK_DEV_XIP is not set | ||
385 | # CONFIG_CDROM_PKTCDVD is not set | ||
386 | # CONFIG_ATA_OVER_ETH is not set | ||
387 | # CONFIG_XILINX_SYSACE is not set | ||
388 | # CONFIG_BLK_DEV_HD is not set | ||
389 | # CONFIG_MISC_DEVICES is not set | ||
390 | CONFIG_HAVE_IDE=y | ||
391 | # CONFIG_IDE is not set | ||
392 | |||
393 | # | ||
394 | # SCSI device support | ||
395 | # | ||
396 | # CONFIG_RAID_ATTRS is not set | ||
397 | # CONFIG_SCSI is not set | ||
398 | # CONFIG_SCSI_DMA is not set | ||
399 | # CONFIG_SCSI_NETLINK is not set | ||
400 | # CONFIG_ATA is not set | ||
401 | # CONFIG_MD is not set | ||
402 | # CONFIG_FUSION is not set | ||
403 | |||
404 | # | ||
405 | # IEEE 1394 (FireWire) support | ||
406 | # | ||
407 | |||
408 | # | ||
409 | # Enable only one of the two stacks, unless you know what you are doing | ||
410 | # | ||
411 | # CONFIG_FIREWIRE is not set | ||
412 | # CONFIG_IEEE1394 is not set | ||
413 | # CONFIG_I2O is not set | ||
414 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
415 | CONFIG_NETDEVICES=y | ||
416 | # CONFIG_DUMMY is not set | ||
417 | # CONFIG_BONDING is not set | ||
418 | # CONFIG_MACVLAN is not set | ||
419 | # CONFIG_EQUALIZER is not set | ||
420 | # CONFIG_TUN is not set | ||
421 | # CONFIG_VETH is not set | ||
422 | # CONFIG_ARCNET is not set | ||
423 | # CONFIG_PHYLIB is not set | ||
424 | CONFIG_NET_ETHERNET=y | ||
425 | # CONFIG_MII is not set | ||
426 | # CONFIG_HAPPYMEAL is not set | ||
427 | # CONFIG_SUNGEM is not set | ||
428 | # CONFIG_CASSINI is not set | ||
429 | # CONFIG_NET_VENDOR_3COM is not set | ||
430 | # CONFIG_NET_TULIP is not set | ||
431 | # CONFIG_HP100 is not set | ||
432 | CONFIG_IBM_NEW_EMAC=y | ||
433 | CONFIG_IBM_NEW_EMAC_RXB=256 | ||
434 | CONFIG_IBM_NEW_EMAC_TXB=256 | ||
435 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
436 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
437 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
438 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
439 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
440 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
441 | CONFIG_IBM_NEW_EMAC_TAH=y | ||
442 | CONFIG_IBM_NEW_EMAC_EMAC4=y | ||
443 | # CONFIG_NET_PCI is not set | ||
444 | # CONFIG_B44 is not set | ||
445 | # CONFIG_NETDEV_1000 is not set | ||
446 | # CONFIG_NETDEV_10000 is not set | ||
447 | # CONFIG_TR is not set | ||
448 | |||
449 | # | ||
450 | # Wireless LAN | ||
451 | # | ||
452 | # CONFIG_WLAN_PRE80211 is not set | ||
453 | # CONFIG_WLAN_80211 is not set | ||
454 | # CONFIG_IWLWIFI_LEDS is not set | ||
455 | # CONFIG_WAN is not set | ||
456 | # CONFIG_FDDI is not set | ||
457 | # CONFIG_HIPPI is not set | ||
458 | # CONFIG_PPP is not set | ||
459 | # CONFIG_SLIP is not set | ||
460 | # CONFIG_NETCONSOLE is not set | ||
461 | # CONFIG_NETPOLL is not set | ||
462 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
463 | # CONFIG_ISDN is not set | ||
464 | # CONFIG_PHONE is not set | ||
465 | |||
466 | # | ||
467 | # Input device support | ||
468 | # | ||
469 | # CONFIG_INPUT is not set | ||
470 | |||
471 | # | ||
472 | # Hardware I/O ports | ||
473 | # | ||
474 | # CONFIG_SERIO is not set | ||
475 | # CONFIG_GAMEPORT is not set | ||
476 | |||
477 | # | ||
478 | # Character devices | ||
479 | # | ||
480 | # CONFIG_VT is not set | ||
481 | CONFIG_DEVKMEM=y | ||
482 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
483 | # CONFIG_NOZOMI is not set | ||
484 | |||
485 | # | ||
486 | # Serial drivers | ||
487 | # | ||
488 | CONFIG_SERIAL_8250=y | ||
489 | CONFIG_SERIAL_8250_CONSOLE=y | ||
490 | # CONFIG_SERIAL_8250_PCI is not set | ||
491 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
492 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
493 | CONFIG_SERIAL_8250_EXTENDED=y | ||
494 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
495 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
496 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
497 | # CONFIG_SERIAL_8250_RSA is not set | ||
498 | |||
499 | # | ||
500 | # Non-8250 serial port support | ||
501 | # | ||
502 | # CONFIG_SERIAL_UARTLITE is not set | ||
503 | CONFIG_SERIAL_CORE=y | ||
504 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
505 | # CONFIG_SERIAL_JSM is not set | ||
506 | CONFIG_SERIAL_OF_PLATFORM=y | ||
507 | CONFIG_UNIX98_PTYS=y | ||
508 | CONFIG_LEGACY_PTYS=y | ||
509 | CONFIG_LEGACY_PTY_COUNT=256 | ||
510 | # CONFIG_IPMI_HANDLER is not set | ||
511 | # CONFIG_HW_RANDOM is not set | ||
512 | # CONFIG_NVRAM is not set | ||
513 | # CONFIG_GEN_RTC is not set | ||
514 | # CONFIG_R3964 is not set | ||
515 | # CONFIG_APPLICOM is not set | ||
516 | # CONFIG_RAW_DRIVER is not set | ||
517 | # CONFIG_TCG_TPM is not set | ||
518 | CONFIG_DEVPORT=y | ||
519 | # CONFIG_I2C is not set | ||
520 | # CONFIG_SPI is not set | ||
521 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
522 | # CONFIG_GPIOLIB is not set | ||
523 | # CONFIG_W1 is not set | ||
524 | # CONFIG_POWER_SUPPLY is not set | ||
525 | # CONFIG_HWMON is not set | ||
526 | # CONFIG_THERMAL is not set | ||
527 | # CONFIG_THERMAL_HWMON is not set | ||
528 | # CONFIG_WATCHDOG is not set | ||
529 | |||
530 | # | ||
531 | # Sonics Silicon Backplane | ||
532 | # | ||
533 | CONFIG_SSB_POSSIBLE=y | ||
534 | # CONFIG_SSB is not set | ||
535 | |||
536 | # | ||
537 | # Multifunction device drivers | ||
538 | # | ||
539 | # CONFIG_MFD_CORE is not set | ||
540 | # CONFIG_MFD_SM501 is not set | ||
541 | # CONFIG_HTC_PASIC3 is not set | ||
542 | # CONFIG_MFD_TMIO is not set | ||
543 | |||
544 | # | ||
545 | # Multimedia devices | ||
546 | # | ||
547 | |||
548 | # | ||
549 | # Multimedia core support | ||
550 | # | ||
551 | # CONFIG_VIDEO_DEV is not set | ||
552 | # CONFIG_DVB_CORE is not set | ||
553 | # CONFIG_VIDEO_MEDIA is not set | ||
554 | |||
555 | # | ||
556 | # Multimedia drivers | ||
557 | # | ||
558 | CONFIG_DAB=y | ||
559 | |||
560 | # | ||
561 | # Graphics support | ||
562 | # | ||
563 | # CONFIG_AGP is not set | ||
564 | # CONFIG_DRM is not set | ||
565 | # CONFIG_VGASTATE is not set | ||
566 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
567 | # CONFIG_FB is not set | ||
568 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
569 | |||
570 | # | ||
571 | # Display device support | ||
572 | # | ||
573 | # CONFIG_DISPLAY_SUPPORT is not set | ||
574 | # CONFIG_SOUND is not set | ||
575 | # CONFIG_USB_SUPPORT is not set | ||
576 | # CONFIG_MMC is not set | ||
577 | # CONFIG_MEMSTICK is not set | ||
578 | # CONFIG_NEW_LEDS is not set | ||
579 | # CONFIG_ACCESSIBILITY is not set | ||
580 | # CONFIG_INFINIBAND is not set | ||
581 | # CONFIG_EDAC is not set | ||
582 | # CONFIG_RTC_CLASS is not set | ||
583 | # CONFIG_DMADEVICES is not set | ||
584 | # CONFIG_UIO is not set | ||
585 | |||
586 | # | ||
587 | # File systems | ||
588 | # | ||
589 | CONFIG_EXT2_FS=y | ||
590 | # CONFIG_EXT2_FS_XATTR is not set | ||
591 | # CONFIG_EXT2_FS_XIP is not set | ||
592 | # CONFIG_EXT3_FS is not set | ||
593 | # CONFIG_EXT4DEV_FS is not set | ||
594 | # CONFIG_REISERFS_FS is not set | ||
595 | # CONFIG_JFS_FS is not set | ||
596 | # CONFIG_FS_POSIX_ACL is not set | ||
597 | # CONFIG_XFS_FS is not set | ||
598 | # CONFIG_OCFS2_FS is not set | ||
599 | CONFIG_DNOTIFY=y | ||
600 | CONFIG_INOTIFY=y | ||
601 | CONFIG_INOTIFY_USER=y | ||
602 | # CONFIG_QUOTA is not set | ||
603 | # CONFIG_AUTOFS_FS is not set | ||
604 | # CONFIG_AUTOFS4_FS is not set | ||
605 | # CONFIG_FUSE_FS is not set | ||
606 | |||
607 | # | ||
608 | # CD-ROM/DVD Filesystems | ||
609 | # | ||
610 | # CONFIG_ISO9660_FS is not set | ||
611 | # CONFIG_UDF_FS is not set | ||
612 | |||
613 | # | ||
614 | # DOS/FAT/NT Filesystems | ||
615 | # | ||
616 | # CONFIG_MSDOS_FS is not set | ||
617 | # CONFIG_VFAT_FS is not set | ||
618 | # CONFIG_NTFS_FS is not set | ||
619 | |||
620 | # | ||
621 | # Pseudo filesystems | ||
622 | # | ||
623 | CONFIG_PROC_FS=y | ||
624 | CONFIG_PROC_KCORE=y | ||
625 | CONFIG_PROC_SYSCTL=y | ||
626 | CONFIG_SYSFS=y | ||
627 | CONFIG_TMPFS=y | ||
628 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
629 | # CONFIG_HUGETLB_PAGE is not set | ||
630 | # CONFIG_CONFIGFS_FS is not set | ||
631 | |||
632 | # | ||
633 | # Miscellaneous filesystems | ||
634 | # | ||
635 | # CONFIG_ADFS_FS is not set | ||
636 | # CONFIG_AFFS_FS is not set | ||
637 | # CONFIG_HFS_FS is not set | ||
638 | # CONFIG_HFSPLUS_FS is not set | ||
639 | # CONFIG_BEFS_FS is not set | ||
640 | # CONFIG_BFS_FS is not set | ||
641 | # CONFIG_EFS_FS is not set | ||
642 | CONFIG_CRAMFS=y | ||
643 | # CONFIG_VXFS_FS is not set | ||
644 | # CONFIG_MINIX_FS is not set | ||
645 | # CONFIG_OMFS_FS is not set | ||
646 | # CONFIG_HPFS_FS is not set | ||
647 | # CONFIG_QNX4FS_FS is not set | ||
648 | # CONFIG_ROMFS_FS is not set | ||
649 | # CONFIG_SYSV_FS is not set | ||
650 | # CONFIG_UFS_FS is not set | ||
651 | CONFIG_NETWORK_FILESYSTEMS=y | ||
652 | CONFIG_NFS_FS=y | ||
653 | CONFIG_NFS_V3=y | ||
654 | # CONFIG_NFS_V3_ACL is not set | ||
655 | # CONFIG_NFS_V4 is not set | ||
656 | CONFIG_ROOT_NFS=y | ||
657 | # CONFIG_NFSD is not set | ||
658 | CONFIG_LOCKD=y | ||
659 | CONFIG_LOCKD_V4=y | ||
660 | CONFIG_NFS_COMMON=y | ||
661 | CONFIG_SUNRPC=y | ||
662 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
663 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
664 | # CONFIG_SMB_FS is not set | ||
665 | # CONFIG_CIFS is not set | ||
666 | # CONFIG_NCP_FS is not set | ||
667 | # CONFIG_CODA_FS is not set | ||
668 | # CONFIG_AFS_FS is not set | ||
669 | |||
670 | # | ||
671 | # Partition Types | ||
672 | # | ||
673 | # CONFIG_PARTITION_ADVANCED is not set | ||
674 | CONFIG_MSDOS_PARTITION=y | ||
675 | # CONFIG_NLS is not set | ||
676 | # CONFIG_DLM is not set | ||
677 | |||
678 | # | ||
679 | # Library routines | ||
680 | # | ||
681 | CONFIG_BITREVERSE=y | ||
682 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
683 | # CONFIG_CRC_CCITT is not set | ||
684 | # CONFIG_CRC16 is not set | ||
685 | # CONFIG_CRC_T10DIF is not set | ||
686 | # CONFIG_CRC_ITU_T is not set | ||
687 | CONFIG_CRC32=y | ||
688 | # CONFIG_CRC7 is not set | ||
689 | # CONFIG_LIBCRC32C is not set | ||
690 | CONFIG_ZLIB_INFLATE=y | ||
691 | CONFIG_PLIST=y | ||
692 | CONFIG_HAS_IOMEM=y | ||
693 | CONFIG_HAS_IOPORT=y | ||
694 | CONFIG_HAS_DMA=y | ||
695 | CONFIG_HAVE_LMB=y | ||
696 | |||
697 | # | ||
698 | # Kernel hacking | ||
699 | # | ||
700 | # CONFIG_PRINTK_TIME is not set | ||
701 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
702 | CONFIG_ENABLE_MUST_CHECK=y | ||
703 | CONFIG_FRAME_WARN=1024 | ||
704 | CONFIG_MAGIC_SYSRQ=y | ||
705 | # CONFIG_UNUSED_SYMBOLS is not set | ||
706 | CONFIG_DEBUG_FS=y | ||
707 | # CONFIG_HEADERS_CHECK is not set | ||
708 | CONFIG_DEBUG_KERNEL=y | ||
709 | # CONFIG_DEBUG_SHIRQ is not set | ||
710 | CONFIG_DETECT_SOFTLOCKUP=y | ||
711 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
712 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
713 | CONFIG_SCHED_DEBUG=y | ||
714 | # CONFIG_SCHEDSTATS is not set | ||
715 | # CONFIG_TIMER_STATS is not set | ||
716 | # CONFIG_DEBUG_OBJECTS is not set | ||
717 | # CONFIG_SLUB_DEBUG_ON is not set | ||
718 | # CONFIG_SLUB_STATS is not set | ||
719 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
720 | # CONFIG_RT_MUTEX_TESTER is not set | ||
721 | # CONFIG_DEBUG_SPINLOCK is not set | ||
722 | # CONFIG_DEBUG_MUTEXES is not set | ||
723 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
724 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
725 | # CONFIG_DEBUG_KOBJECT is not set | ||
726 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
727 | # CONFIG_DEBUG_INFO is not set | ||
728 | # CONFIG_DEBUG_VM is not set | ||
729 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
730 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
731 | # CONFIG_DEBUG_LIST is not set | ||
732 | # CONFIG_DEBUG_SG is not set | ||
733 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
734 | # CONFIG_RCU_TORTURE_TEST is not set | ||
735 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
736 | # CONFIG_FAULT_INJECTION is not set | ||
737 | # CONFIG_LATENCYTOP is not set | ||
738 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
739 | CONFIG_HAVE_FTRACE=y | ||
740 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
741 | # CONFIG_FTRACE is not set | ||
742 | # CONFIG_SCHED_TRACER is not set | ||
743 | # CONFIG_CONTEXT_SWITCH_TRACER is not set | ||
744 | # CONFIG_SAMPLES is not set | ||
745 | CONFIG_HAVE_ARCH_KGDB=y | ||
746 | # CONFIG_KGDB is not set | ||
747 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
748 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
749 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
750 | # CONFIG_CODE_PATCHING_SELFTEST is not set | ||
751 | # CONFIG_FTR_FIXUP_SELFTEST is not set | ||
752 | # CONFIG_MSI_BITMAP_SELFTEST is not set | ||
753 | # CONFIG_XMON is not set | ||
754 | # CONFIG_IRQSTACKS is not set | ||
755 | # CONFIG_VIRQ_DEBUG is not set | ||
756 | # CONFIG_BDI_SWITCH is not set | ||
757 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
758 | |||
759 | # | ||
760 | # Security options | ||
761 | # | ||
762 | # CONFIG_KEYS is not set | ||
763 | # CONFIG_SECURITY is not set | ||
764 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
765 | # CONFIG_CRYPTO is not set | ||
766 | # CONFIG_PPC_CLOCK is not set | ||
767 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/include/asm/dcr-regs.h b/arch/powerpc/include/asm/dcr-regs.h index 29b0ecef980a..828e3aa1f2fc 100644 --- a/arch/powerpc/include/asm/dcr-regs.h +++ b/arch/powerpc/include/asm/dcr-regs.h | |||
@@ -68,6 +68,17 @@ | |||
68 | #define SDR0_UART3 0x0123 | 68 | #define SDR0_UART3 0x0123 |
69 | #define SDR0_CUST0 0x4000 | 69 | #define SDR0_CUST0 0x4000 |
70 | 70 | ||
71 | /* SDR for 405EZ */ | ||
72 | #define DCRN_SDR_ICINTSTAT 0x4510 | ||
73 | #define ICINTSTAT_ICRX 0x80000000 | ||
74 | #define ICINTSTAT_ICTX0 0x40000000 | ||
75 | #define ICINTSTAT_ICTX1 0x20000000 | ||
76 | #define ICINTSTAT_ICTX 0x60000000 | ||
77 | |||
78 | /* SDRs (460EX/460GT) */ | ||
79 | #define SDR0_ETH_CFG 0x4103 | ||
80 | #define SDR0_ETH_CFG_ECS 0x00000100 /* EMAC int clk source */ | ||
81 | |||
71 | /* | 82 | /* |
72 | * All those DCR register addresses are offsets from the base address | 83 | * All those DCR register addresses are offsets from the base address |
73 | * for the SRAM0 controller (e.g. 0x20 on 440GX). The base address is | 84 | * for the SRAM0 controller (e.g. 0x20 on 440GX). The base address is |
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig index f8ef279f3256..79c1154f88d4 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig | |||
@@ -81,6 +81,17 @@ config WARP | |||
81 | See http://www.pikatechnologies.com/ and follow the "PIKA for Computer | 81 | See http://www.pikatechnologies.com/ and follow the "PIKA for Computer |
82 | Telephony Developers" link for more information. | 82 | Telephony Developers" link for more information. |
83 | 83 | ||
84 | config ARCHES | ||
85 | bool "Arches" | ||
86 | depends on 44x | ||
87 | default n | ||
88 | select PPC44x_SIMPLE | ||
89 | select 460EX # Odd since it uses 460GT but the effects are the same | ||
90 | select PCI | ||
91 | select PPC4xx_PCI_EXPRESS | ||
92 | help | ||
93 | This option enables support for the AMCC Dual PPC460GT evaluation board. | ||
94 | |||
84 | config CANYONLANDS | 95 | config CANYONLANDS |
85 | bool "Canyonlands" | 96 | bool "Canyonlands" |
86 | depends on 44x | 97 | depends on 44x |
@@ -89,6 +100,8 @@ config CANYONLANDS | |||
89 | select 460EX | 100 | select 460EX |
90 | select PCI | 101 | select PCI |
91 | select PPC4xx_PCI_EXPRESS | 102 | select PPC4xx_PCI_EXPRESS |
103 | select IBM_NEW_EMAC_RGMII | ||
104 | select IBM_NEW_EMAC_ZMII | ||
92 | help | 105 | help |
93 | This option enables support for the AMCC PPC460EX evaluation board. | 106 | This option enables support for the AMCC PPC460EX evaluation board. |
94 | 107 | ||
@@ -100,6 +113,8 @@ config GLACIER | |||
100 | select 460EX # Odd since it uses 460GT but the effects are the same | 113 | select 460EX # Odd since it uses 460GT but the effects are the same |
101 | select PCI | 114 | select PCI |
102 | select PPC4xx_PCI_EXPRESS | 115 | select PPC4xx_PCI_EXPRESS |
116 | select IBM_NEW_EMAC_RGMII | ||
117 | select IBM_NEW_EMAC_ZMII | ||
103 | help | 118 | help |
104 | This option enables support for the AMCC PPC460GT evaluation board. | 119 | This option enables support for the AMCC PPC460GT evaluation board. |
105 | 120 | ||
@@ -195,8 +210,6 @@ config 460EX | |||
195 | bool | 210 | bool |
196 | select PPC_FPU | 211 | select PPC_FPU |
197 | select IBM_NEW_EMAC_EMAC4 | 212 | select IBM_NEW_EMAC_EMAC4 |
198 | select IBM_NEW_EMAC_RGMII | ||
199 | select IBM_NEW_EMAC_ZMII | ||
200 | select IBM_NEW_EMAC_TAH | 213 | select IBM_NEW_EMAC_TAH |
201 | 214 | ||
202 | # 44x errata/workaround config symbols, selected by the CPU models above | 215 | # 44x errata/workaround config symbols, selected by the CPU models above |
diff --git a/arch/powerpc/platforms/44x/ppc44x_simple.c b/arch/powerpc/platforms/44x/ppc44x_simple.c index 57e71203d0f8..29671262801f 100644 --- a/arch/powerpc/platforms/44x/ppc44x_simple.c +++ b/arch/powerpc/platforms/44x/ppc44x_simple.c | |||
@@ -50,8 +50,9 @@ machine_device_initcall(ppc44x_simple, ppc44x_device_probe); | |||
50 | * board.c file for it rather than adding it to this list. | 50 | * board.c file for it rather than adding it to this list. |
51 | */ | 51 | */ |
52 | static char *board[] __initdata = { | 52 | static char *board[] __initdata = { |
53 | "amcc,arches", | ||
53 | "amcc,bamboo", | 54 | "amcc,bamboo", |
54 | "amcc,cayonlands", | 55 | "amcc,canyonlands", |
55 | "amcc,glacier", | 56 | "amcc,glacier", |
56 | "ibm,ebony", | 57 | "ibm,ebony", |
57 | "amcc,katmai", | 58 | "amcc,katmai", |
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c index 5da8a44ea2f6..9f6f73d584d6 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.c +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | |||
@@ -276,9 +276,16 @@ static void __init ppc4xx_probe_pci_bridge(struct device_node *np) | |||
276 | const int *bus_range; | 276 | const int *bus_range; |
277 | int primary = 0; | 277 | int primary = 0; |
278 | 278 | ||
279 | /* Check if device is enabled */ | ||
280 | if (!of_device_is_available(np)) { | ||
281 | printk(KERN_INFO "%s: Port disabled via device-tree\n", | ||
282 | np->full_name); | ||
283 | return; | ||
284 | } | ||
285 | |||
279 | /* Fetch config space registers address */ | 286 | /* Fetch config space registers address */ |
280 | if (of_address_to_resource(np, 0, &rsrc_cfg)) { | 287 | if (of_address_to_resource(np, 0, &rsrc_cfg)) { |
281 | printk(KERN_ERR "%s:Can't get PCI config register base !", | 288 | printk(KERN_ERR "%s: Can't get PCI config register base !", |
282 | np->full_name); | 289 | np->full_name); |
283 | return; | 290 | return; |
284 | } | 291 | } |
diff --git a/drivers/net/ibm_newemac/Kconfig b/drivers/net/ibm_newemac/Kconfig index 70a3272ee998..44e5a0e9922a 100644 --- a/drivers/net/ibm_newemac/Kconfig +++ b/drivers/net/ibm_newemac/Kconfig | |||
@@ -62,3 +62,15 @@ config IBM_NEW_EMAC_TAH | |||
62 | config IBM_NEW_EMAC_EMAC4 | 62 | config IBM_NEW_EMAC_EMAC4 |
63 | bool | 63 | bool |
64 | default n | 64 | default n |
65 | |||
66 | config IBM_NEW_EMAC_NO_FLOW_CTRL | ||
67 | bool | ||
68 | default n | ||
69 | |||
70 | config IBM_NEW_EMAC_MAL_CLR_ICINTSTAT | ||
71 | bool | ||
72 | default n | ||
73 | |||
74 | config IBM_NEW_EMAC_MAL_COMMON_ERR | ||
75 | bool | ||
76 | default n | ||
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c index ccd9d9058f6d..efcf21c9f5c7 100644 --- a/drivers/net/ibm_newemac/core.c +++ b/drivers/net/ibm_newemac/core.c | |||
@@ -130,6 +130,7 @@ static inline void emac_report_timeout_error(struct emac_instance *dev, | |||
130 | const char *error) | 130 | const char *error) |
131 | { | 131 | { |
132 | if (emac_has_feature(dev, EMAC_FTR_440GX_PHY_CLK_FIX | | 132 | if (emac_has_feature(dev, EMAC_FTR_440GX_PHY_CLK_FIX | |
133 | EMAC_FTR_460EX_PHY_CLK_FIX | | ||
133 | EMAC_FTR_440EP_PHY_CLK_FIX)) | 134 | EMAC_FTR_440EP_PHY_CLK_FIX)) |
134 | DBG(dev, "%s" NL, error); | 135 | DBG(dev, "%s" NL, error); |
135 | else if (net_ratelimit()) | 136 | else if (net_ratelimit()) |
@@ -201,13 +202,15 @@ static inline int emac_phy_supports_gige(int phy_mode) | |||
201 | { | 202 | { |
202 | return phy_mode == PHY_MODE_GMII || | 203 | return phy_mode == PHY_MODE_GMII || |
203 | phy_mode == PHY_MODE_RGMII || | 204 | phy_mode == PHY_MODE_RGMII || |
205 | phy_mode == PHY_MODE_SGMII || | ||
204 | phy_mode == PHY_MODE_TBI || | 206 | phy_mode == PHY_MODE_TBI || |
205 | phy_mode == PHY_MODE_RTBI; | 207 | phy_mode == PHY_MODE_RTBI; |
206 | } | 208 | } |
207 | 209 | ||
208 | static inline int emac_phy_gpcs(int phy_mode) | 210 | static inline int emac_phy_gpcs(int phy_mode) |
209 | { | 211 | { |
210 | return phy_mode == PHY_MODE_TBI || | 212 | return phy_mode == PHY_MODE_SGMII || |
213 | phy_mode == PHY_MODE_TBI || | ||
211 | phy_mode == PHY_MODE_RTBI; | 214 | phy_mode == PHY_MODE_RTBI; |
212 | } | 215 | } |
213 | 216 | ||
@@ -351,10 +354,24 @@ static int emac_reset(struct emac_instance *dev) | |||
351 | emac_tx_disable(dev); | 354 | emac_tx_disable(dev); |
352 | } | 355 | } |
353 | 356 | ||
357 | #ifdef CONFIG_PPC_DCR_NATIVE | ||
358 | /* Enable internal clock source */ | ||
359 | if (emac_has_feature(dev, EMAC_FTR_460EX_PHY_CLK_FIX)) | ||
360 | dcri_clrset(SDR0, SDR0_ETH_CFG, | ||
361 | 0, SDR0_ETH_CFG_ECS << dev->cell_index); | ||
362 | #endif | ||
363 | |||
354 | out_be32(&p->mr0, EMAC_MR0_SRST); | 364 | out_be32(&p->mr0, EMAC_MR0_SRST); |
355 | while ((in_be32(&p->mr0) & EMAC_MR0_SRST) && n) | 365 | while ((in_be32(&p->mr0) & EMAC_MR0_SRST) && n) |
356 | --n; | 366 | --n; |
357 | 367 | ||
368 | #ifdef CONFIG_PPC_DCR_NATIVE | ||
369 | /* Enable external clock source */ | ||
370 | if (emac_has_feature(dev, EMAC_FTR_460EX_PHY_CLK_FIX)) | ||
371 | dcri_clrset(SDR0, SDR0_ETH_CFG, | ||
372 | SDR0_ETH_CFG_ECS << dev->cell_index, 0); | ||
373 | #endif | ||
374 | |||
358 | if (n) { | 375 | if (n) { |
359 | dev->reset_failed = 0; | 376 | dev->reset_failed = 0; |
360 | return 0; | 377 | return 0; |
@@ -547,8 +564,9 @@ static int emac_configure(struct emac_instance *dev) | |||
547 | switch (dev->phy.speed) { | 564 | switch (dev->phy.speed) { |
548 | case SPEED_1000: | 565 | case SPEED_1000: |
549 | if (emac_phy_gpcs(dev->phy.mode)) { | 566 | if (emac_phy_gpcs(dev->phy.mode)) { |
550 | mr1 |= EMAC_MR1_MF_1000GPCS | | 567 | mr1 |= EMAC_MR1_MF_1000GPCS | EMAC_MR1_MF_IPPA( |
551 | EMAC_MR1_MF_IPPA(dev->phy.address); | 568 | (dev->phy.gpcs_address != 0xffffffff) ? |
569 | dev->phy.gpcs_address : dev->phy.address); | ||
552 | 570 | ||
553 | /* Put some arbitrary OUI, Manuf & Rev IDs so we can | 571 | /* Put some arbitrary OUI, Manuf & Rev IDs so we can |
554 | * identify this GPCS PHY later. | 572 | * identify this GPCS PHY later. |
@@ -660,8 +678,12 @@ static int emac_configure(struct emac_instance *dev) | |||
660 | out_be32(&p->iser, r); | 678 | out_be32(&p->iser, r); |
661 | 679 | ||
662 | /* We need to take GPCS PHY out of isolate mode after EMAC reset */ | 680 | /* We need to take GPCS PHY out of isolate mode after EMAC reset */ |
663 | if (emac_phy_gpcs(dev->phy.mode)) | 681 | if (emac_phy_gpcs(dev->phy.mode)) { |
664 | emac_mii_reset_phy(&dev->phy); | 682 | if (dev->phy.gpcs_address != 0xffffffff) |
683 | emac_mii_reset_gpcs(&dev->phy); | ||
684 | else | ||
685 | emac_mii_reset_phy(&dev->phy); | ||
686 | } | ||
665 | 687 | ||
666 | return 0; | 688 | return 0; |
667 | } | 689 | } |
@@ -866,7 +888,9 @@ static int emac_mdio_read(struct net_device *ndev, int id, int reg) | |||
866 | struct emac_instance *dev = netdev_priv(ndev); | 888 | struct emac_instance *dev = netdev_priv(ndev); |
867 | int res; | 889 | int res; |
868 | 890 | ||
869 | res = __emac_mdio_read(dev->mdio_instance ? dev->mdio_instance : dev, | 891 | res = __emac_mdio_read((dev->mdio_instance && |
892 | dev->phy.gpcs_address != id) ? | ||
893 | dev->mdio_instance : dev, | ||
870 | (u8) id, (u8) reg); | 894 | (u8) id, (u8) reg); |
871 | return res; | 895 | return res; |
872 | } | 896 | } |
@@ -875,7 +899,9 @@ static void emac_mdio_write(struct net_device *ndev, int id, int reg, int val) | |||
875 | { | 899 | { |
876 | struct emac_instance *dev = netdev_priv(ndev); | 900 | struct emac_instance *dev = netdev_priv(ndev); |
877 | 901 | ||
878 | __emac_mdio_write(dev->mdio_instance ? dev->mdio_instance : dev, | 902 | __emac_mdio_write((dev->mdio_instance && |
903 | dev->phy.gpcs_address != id) ? | ||
904 | dev->mdio_instance : dev, | ||
879 | (u8) id, (u8) reg, (u16) val); | 905 | (u8) id, (u8) reg, (u16) val); |
880 | } | 906 | } |
881 | 907 | ||
@@ -2367,7 +2393,11 @@ static int __devinit emac_init_phy(struct emac_instance *dev) | |||
2367 | * XXX I probably should move these settings to the dev tree | 2393 | * XXX I probably should move these settings to the dev tree |
2368 | */ | 2394 | */ |
2369 | dev->phy.address = -1; | 2395 | dev->phy.address = -1; |
2370 | dev->phy.features = SUPPORTED_100baseT_Full | SUPPORTED_MII; | 2396 | dev->phy.features = SUPPORTED_MII; |
2397 | if (emac_phy_supports_gige(dev->phy_mode)) | ||
2398 | dev->phy.features |= SUPPORTED_1000baseT_Full; | ||
2399 | else | ||
2400 | dev->phy.features |= SUPPORTED_100baseT_Full; | ||
2371 | dev->phy.pause = 1; | 2401 | dev->phy.pause = 1; |
2372 | 2402 | ||
2373 | return 0; | 2403 | return 0; |
@@ -2406,7 +2436,9 @@ static int __devinit emac_init_phy(struct emac_instance *dev) | |||
2406 | * Note that the busy_phy_map is currently global | 2436 | * Note that the busy_phy_map is currently global |
2407 | * while it should probably be per-ASIC... | 2437 | * while it should probably be per-ASIC... |
2408 | */ | 2438 | */ |
2409 | dev->phy.address = dev->cell_index; | 2439 | dev->phy.gpcs_address = dev->gpcs_address; |
2440 | if (dev->phy.gpcs_address == 0xffffffff) | ||
2441 | dev->phy.address = dev->cell_index; | ||
2410 | } | 2442 | } |
2411 | 2443 | ||
2412 | emac_configure(dev); | 2444 | emac_configure(dev); |
@@ -2516,6 +2548,8 @@ static int __devinit emac_init_config(struct emac_instance *dev) | |||
2516 | dev->phy_address = 0xffffffff; | 2548 | dev->phy_address = 0xffffffff; |
2517 | if (emac_read_uint_prop(np, "phy-map", &dev->phy_map, 0)) | 2549 | if (emac_read_uint_prop(np, "phy-map", &dev->phy_map, 0)) |
2518 | dev->phy_map = 0xffffffff; | 2550 | dev->phy_map = 0xffffffff; |
2551 | if (emac_read_uint_prop(np, "gpcs-address", &dev->gpcs_address, 0)) | ||
2552 | dev->gpcs_address = 0xffffffff; | ||
2519 | if (emac_read_uint_prop(np->parent, "clock-frequency", &dev->opb_bus_freq, 1)) | 2553 | if (emac_read_uint_prop(np->parent, "clock-frequency", &dev->opb_bus_freq, 1)) |
2520 | return -ENXIO; | 2554 | return -ENXIO; |
2521 | if (emac_read_uint_prop(np, "tah-device", &dev->tah_ph, 0)) | 2555 | if (emac_read_uint_prop(np, "tah-device", &dev->tah_ph, 0)) |
@@ -2559,6 +2593,9 @@ static int __devinit emac_init_config(struct emac_instance *dev) | |||
2559 | /* Check EMAC version */ | 2593 | /* Check EMAC version */ |
2560 | if (of_device_is_compatible(np, "ibm,emac4sync")) { | 2594 | if (of_device_is_compatible(np, "ibm,emac4sync")) { |
2561 | dev->features |= (EMAC_FTR_EMAC4 | EMAC_FTR_EMAC4SYNC); | 2595 | dev->features |= (EMAC_FTR_EMAC4 | EMAC_FTR_EMAC4SYNC); |
2596 | if (of_device_is_compatible(np, "ibm,emac-460ex") || | ||
2597 | of_device_is_compatible(np, "ibm,emac-460gt")) | ||
2598 | dev->features |= EMAC_FTR_460EX_PHY_CLK_FIX; | ||
2562 | } else if (of_device_is_compatible(np, "ibm,emac4")) { | 2599 | } else if (of_device_is_compatible(np, "ibm,emac4")) { |
2563 | dev->features |= EMAC_FTR_EMAC4; | 2600 | dev->features |= EMAC_FTR_EMAC4; |
2564 | if (of_device_is_compatible(np, "ibm,emac-440gx")) | 2601 | if (of_device_is_compatible(np, "ibm,emac-440gx")) |
@@ -2567,6 +2604,8 @@ static int __devinit emac_init_config(struct emac_instance *dev) | |||
2567 | if (of_device_is_compatible(np, "ibm,emac-440ep") || | 2604 | if (of_device_is_compatible(np, "ibm,emac-440ep") || |
2568 | of_device_is_compatible(np, "ibm,emac-440gr")) | 2605 | of_device_is_compatible(np, "ibm,emac-440gr")) |
2569 | dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX; | 2606 | dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX; |
2607 | if (of_device_is_compatible(np, "ibm,emac-405ez")) | ||
2608 | dev->features |= EMAC_FTR_NO_FLOW_CONTROL_40x; | ||
2570 | } | 2609 | } |
2571 | 2610 | ||
2572 | /* Fixup some feature bits based on the device tree */ | 2611 | /* Fixup some feature bits based on the device tree */ |
@@ -2824,6 +2863,9 @@ static int __devinit emac_probe(struct of_device *ofdev, | |||
2824 | ndev->dev_addr[0], ndev->dev_addr[1], ndev->dev_addr[2], | 2863 | ndev->dev_addr[0], ndev->dev_addr[1], ndev->dev_addr[2], |
2825 | ndev->dev_addr[3], ndev->dev_addr[4], ndev->dev_addr[5]); | 2864 | ndev->dev_addr[3], ndev->dev_addr[4], ndev->dev_addr[5]); |
2826 | 2865 | ||
2866 | if (dev->phy_mode == PHY_MODE_SGMII) | ||
2867 | printk(KERN_NOTICE "%s: in SGMII mode\n", ndev->name); | ||
2868 | |||
2827 | if (dev->phy.address >= 0) | 2869 | if (dev->phy.address >= 0) |
2828 | printk("%s: found %s PHY (0x%02x)\n", ndev->name, | 2870 | printk("%s: found %s PHY (0x%02x)\n", ndev->name, |
2829 | dev->phy.def->name, dev->phy.address); | 2871 | dev->phy.def->name, dev->phy.address); |
diff --git a/drivers/net/ibm_newemac/core.h b/drivers/net/ibm_newemac/core.h index 6545e69d12c3..18d56c6c4238 100644 --- a/drivers/net/ibm_newemac/core.h +++ b/drivers/net/ibm_newemac/core.h | |||
@@ -190,6 +190,9 @@ struct emac_instance { | |||
190 | struct delayed_work link_work; | 190 | struct delayed_work link_work; |
191 | int link_polling; | 191 | int link_polling; |
192 | 192 | ||
193 | /* GPCS PHY infos */ | ||
194 | u32 gpcs_address; | ||
195 | |||
193 | /* Shared MDIO if any */ | 196 | /* Shared MDIO if any */ |
194 | u32 mdio_ph; | 197 | u32 mdio_ph; |
195 | struct of_device *mdio_dev; | 198 | struct of_device *mdio_dev; |
@@ -317,6 +320,10 @@ struct emac_instance { | |||
317 | * The 405EX and 460EX contain the EMAC4SYNC core | 320 | * The 405EX and 460EX contain the EMAC4SYNC core |
318 | */ | 321 | */ |
319 | #define EMAC_FTR_EMAC4SYNC 0x00000200 | 322 | #define EMAC_FTR_EMAC4SYNC 0x00000200 |
323 | /* | ||
324 | * Set if we need phy clock workaround for 460ex or 460gt | ||
325 | */ | ||
326 | #define EMAC_FTR_460EX_PHY_CLK_FIX 0x00000400 | ||
320 | 327 | ||
321 | 328 | ||
322 | /* Right now, we don't quite handle the always/possible masks on the | 329 | /* Right now, we don't quite handle the always/possible masks on the |
@@ -341,6 +348,10 @@ enum { | |||
341 | #ifdef CONFIG_IBM_NEW_EMAC_RGMII | 348 | #ifdef CONFIG_IBM_NEW_EMAC_RGMII |
342 | EMAC_FTR_HAS_RGMII | | 349 | EMAC_FTR_HAS_RGMII | |
343 | #endif | 350 | #endif |
351 | #ifdef CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL | ||
352 | EMAC_FTR_NO_FLOW_CONTROL_40x | | ||
353 | #endif | ||
354 | EMAC_FTR_460EX_PHY_CLK_FIX | | ||
344 | EMAC_FTR_440EP_PHY_CLK_FIX, | 355 | EMAC_FTR_440EP_PHY_CLK_FIX, |
345 | }; | 356 | }; |
346 | 357 | ||
diff --git a/drivers/net/ibm_newemac/mal.c b/drivers/net/ibm_newemac/mal.c index 10c267b2b961..1839d3f154a3 100644 --- a/drivers/net/ibm_newemac/mal.c +++ b/drivers/net/ibm_newemac/mal.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/delay.h> | 28 | #include <linux/delay.h> |
29 | 29 | ||
30 | #include "core.h" | 30 | #include "core.h" |
31 | #include <asm/dcr-regs.h> | ||
31 | 32 | ||
32 | static int mal_count; | 33 | static int mal_count; |
33 | 34 | ||
@@ -279,6 +280,10 @@ static irqreturn_t mal_txeob(int irq, void *dev_instance) | |||
279 | mal_schedule_poll(mal); | 280 | mal_schedule_poll(mal); |
280 | set_mal_dcrn(mal, MAL_TXEOBISR, r); | 281 | set_mal_dcrn(mal, MAL_TXEOBISR, r); |
281 | 282 | ||
283 | if (mal_has_feature(mal, MAL_FTR_CLEAR_ICINTSTAT)) | ||
284 | mtdcri(SDR0, DCRN_SDR_ICINTSTAT, | ||
285 | (mfdcri(SDR0, DCRN_SDR_ICINTSTAT) | ICINTSTAT_ICTX)); | ||
286 | |||
282 | return IRQ_HANDLED; | 287 | return IRQ_HANDLED; |
283 | } | 288 | } |
284 | 289 | ||
@@ -293,6 +298,10 @@ static irqreturn_t mal_rxeob(int irq, void *dev_instance) | |||
293 | mal_schedule_poll(mal); | 298 | mal_schedule_poll(mal); |
294 | set_mal_dcrn(mal, MAL_RXEOBISR, r); | 299 | set_mal_dcrn(mal, MAL_RXEOBISR, r); |
295 | 300 | ||
301 | if (mal_has_feature(mal, MAL_FTR_CLEAR_ICINTSTAT)) | ||
302 | mtdcri(SDR0, DCRN_SDR_ICINTSTAT, | ||
303 | (mfdcri(SDR0, DCRN_SDR_ICINTSTAT) | ICINTSTAT_ICRX)); | ||
304 | |||
296 | return IRQ_HANDLED; | 305 | return IRQ_HANDLED; |
297 | } | 306 | } |
298 | 307 | ||
@@ -336,6 +345,25 @@ static irqreturn_t mal_rxde(int irq, void *dev_instance) | |||
336 | return IRQ_HANDLED; | 345 | return IRQ_HANDLED; |
337 | } | 346 | } |
338 | 347 | ||
348 | static irqreturn_t mal_int(int irq, void *dev_instance) | ||
349 | { | ||
350 | struct mal_instance *mal = dev_instance; | ||
351 | u32 esr = get_mal_dcrn(mal, MAL_ESR); | ||
352 | |||
353 | if (esr & MAL_ESR_EVB) { | ||
354 | /* descriptor error */ | ||
355 | if (esr & MAL_ESR_DE) { | ||
356 | if (esr & MAL_ESR_CIDT) | ||
357 | return mal_rxde(irq, dev_instance); | ||
358 | else | ||
359 | return mal_txde(irq, dev_instance); | ||
360 | } else { /* SERR */ | ||
361 | return mal_serr(irq, dev_instance); | ||
362 | } | ||
363 | } | ||
364 | return IRQ_HANDLED; | ||
365 | } | ||
366 | |||
339 | void mal_poll_disable(struct mal_instance *mal, struct mal_commac *commac) | 367 | void mal_poll_disable(struct mal_instance *mal, struct mal_commac *commac) |
340 | { | 368 | { |
341 | /* Spinlock-type semantics: only one caller disable poll at a time */ | 369 | /* Spinlock-type semantics: only one caller disable poll at a time */ |
@@ -493,6 +521,8 @@ static int __devinit mal_probe(struct of_device *ofdev, | |||
493 | unsigned int dcr_base; | 521 | unsigned int dcr_base; |
494 | const u32 *prop; | 522 | const u32 *prop; |
495 | u32 cfg; | 523 | u32 cfg; |
524 | unsigned long irqflags; | ||
525 | irq_handler_t hdlr_serr, hdlr_txde, hdlr_rxde; | ||
496 | 526 | ||
497 | mal = kzalloc(sizeof(struct mal_instance), GFP_KERNEL); | 527 | mal = kzalloc(sizeof(struct mal_instance), GFP_KERNEL); |
498 | if (!mal) { | 528 | if (!mal) { |
@@ -542,11 +572,21 @@ static int __devinit mal_probe(struct of_device *ofdev, | |||
542 | goto fail; | 572 | goto fail; |
543 | } | 573 | } |
544 | 574 | ||
575 | if (of_device_is_compatible(ofdev->node, "ibm,mcmal-405ez")) | ||
576 | mal->features |= (MAL_FTR_CLEAR_ICINTSTAT | | ||
577 | MAL_FTR_COMMON_ERR_INT); | ||
578 | |||
545 | mal->txeob_irq = irq_of_parse_and_map(ofdev->node, 0); | 579 | mal->txeob_irq = irq_of_parse_and_map(ofdev->node, 0); |
546 | mal->rxeob_irq = irq_of_parse_and_map(ofdev->node, 1); | 580 | mal->rxeob_irq = irq_of_parse_and_map(ofdev->node, 1); |
547 | mal->serr_irq = irq_of_parse_and_map(ofdev->node, 2); | 581 | mal->serr_irq = irq_of_parse_and_map(ofdev->node, 2); |
548 | mal->txde_irq = irq_of_parse_and_map(ofdev->node, 3); | 582 | |
549 | mal->rxde_irq = irq_of_parse_and_map(ofdev->node, 4); | 583 | if (mal_has_feature(mal, MAL_FTR_COMMON_ERR_INT)) { |
584 | mal->txde_irq = mal->rxde_irq = mal->serr_irq; | ||
585 | } else { | ||
586 | mal->txde_irq = irq_of_parse_and_map(ofdev->node, 3); | ||
587 | mal->rxde_irq = irq_of_parse_and_map(ofdev->node, 4); | ||
588 | } | ||
589 | |||
550 | if (mal->txeob_irq == NO_IRQ || mal->rxeob_irq == NO_IRQ || | 590 | if (mal->txeob_irq == NO_IRQ || mal->rxeob_irq == NO_IRQ || |
551 | mal->serr_irq == NO_IRQ || mal->txde_irq == NO_IRQ || | 591 | mal->serr_irq == NO_IRQ || mal->txde_irq == NO_IRQ || |
552 | mal->rxde_irq == NO_IRQ) { | 592 | mal->rxde_irq == NO_IRQ) { |
@@ -608,16 +648,26 @@ static int __devinit mal_probe(struct of_device *ofdev, | |||
608 | sizeof(struct mal_descriptor) * | 648 | sizeof(struct mal_descriptor) * |
609 | mal_rx_bd_offset(mal, i)); | 649 | mal_rx_bd_offset(mal, i)); |
610 | 650 | ||
611 | err = request_irq(mal->serr_irq, mal_serr, 0, "MAL SERR", mal); | 651 | if (mal_has_feature(mal, MAL_FTR_COMMON_ERR_INT)) { |
652 | irqflags = IRQF_SHARED; | ||
653 | hdlr_serr = hdlr_txde = hdlr_rxde = mal_int; | ||
654 | } else { | ||
655 | irqflags = 0; | ||
656 | hdlr_serr = mal_serr; | ||
657 | hdlr_txde = mal_txde; | ||
658 | hdlr_rxde = mal_rxde; | ||
659 | } | ||
660 | |||
661 | err = request_irq(mal->serr_irq, hdlr_serr, irqflags, "MAL SERR", mal); | ||
612 | if (err) | 662 | if (err) |
613 | goto fail2; | 663 | goto fail2; |
614 | err = request_irq(mal->txde_irq, mal_txde, 0, "MAL TX DE", mal); | 664 | err = request_irq(mal->txde_irq, hdlr_txde, irqflags, "MAL TX DE", mal); |
615 | if (err) | 665 | if (err) |
616 | goto fail3; | 666 | goto fail3; |
617 | err = request_irq(mal->txeob_irq, mal_txeob, 0, "MAL TX EOB", mal); | 667 | err = request_irq(mal->txeob_irq, mal_txeob, 0, "MAL TX EOB", mal); |
618 | if (err) | 668 | if (err) |
619 | goto fail4; | 669 | goto fail4; |
620 | err = request_irq(mal->rxde_irq, mal_rxde, 0, "MAL RX DE", mal); | 670 | err = request_irq(mal->rxde_irq, hdlr_rxde, irqflags, "MAL RX DE", mal); |
621 | if (err) | 671 | if (err) |
622 | goto fail5; | 672 | goto fail5; |
623 | err = request_irq(mal->rxeob_irq, mal_rxeob, 0, "MAL RX EOB", mal); | 673 | err = request_irq(mal->rxeob_irq, mal_rxeob, 0, "MAL RX EOB", mal); |
diff --git a/drivers/net/ibm_newemac/mal.h b/drivers/net/ibm_newemac/mal.h index eaa7262dc079..0b2413839b78 100644 --- a/drivers/net/ibm_newemac/mal.h +++ b/drivers/net/ibm_newemac/mal.h | |||
@@ -213,6 +213,8 @@ struct mal_instance { | |||
213 | struct of_device *ofdev; | 213 | struct of_device *ofdev; |
214 | int index; | 214 | int index; |
215 | spinlock_t lock; | 215 | spinlock_t lock; |
216 | |||
217 | unsigned int features; | ||
216 | }; | 218 | }; |
217 | 219 | ||
218 | static inline u32 get_mal_dcrn(struct mal_instance *mal, int reg) | 220 | static inline u32 get_mal_dcrn(struct mal_instance *mal, int reg) |
@@ -225,6 +227,38 @@ static inline void set_mal_dcrn(struct mal_instance *mal, int reg, u32 val) | |||
225 | dcr_write(mal->dcr_host, reg, val); | 227 | dcr_write(mal->dcr_host, reg, val); |
226 | } | 228 | } |
227 | 229 | ||
230 | /* Features of various MAL implementations */ | ||
231 | |||
232 | /* Set if you have interrupt coalescing and you have to clear the SDR | ||
233 | * register for TXEOB and RXEOB interrupts to work | ||
234 | */ | ||
235 | #define MAL_FTR_CLEAR_ICINTSTAT 0x00000001 | ||
236 | |||
237 | /* Set if your MAL has SERR, TXDE, and RXDE OR'd into a single UIC | ||
238 | * interrupt | ||
239 | */ | ||
240 | #define MAL_FTR_COMMON_ERR_INT 0x00000002 | ||
241 | |||
242 | enum { | ||
243 | MAL_FTRS_ALWAYS = 0, | ||
244 | |||
245 | MAL_FTRS_POSSIBLE = | ||
246 | #ifdef CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT | ||
247 | MAL_FTR_CLEAR_ICINTSTAT | | ||
248 | #endif | ||
249 | #ifdef CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR | ||
250 | MAL_FTR_COMMON_ERR_INT | | ||
251 | #endif | ||
252 | 0, | ||
253 | }; | ||
254 | |||
255 | static inline int mal_has_feature(struct mal_instance *dev, | ||
256 | unsigned long feature) | ||
257 | { | ||
258 | return (MAL_FTRS_ALWAYS & feature) || | ||
259 | (MAL_FTRS_POSSIBLE & dev->features & feature); | ||
260 | } | ||
261 | |||
228 | /* Register MAL devices */ | 262 | /* Register MAL devices */ |
229 | int mal_init(void); | 263 | int mal_init(void); |
230 | void mal_exit(void); | 264 | void mal_exit(void); |
diff --git a/drivers/net/ibm_newemac/phy.c b/drivers/net/ibm_newemac/phy.c index 37bfeea8788a..606db53ef78e 100644 --- a/drivers/net/ibm_newemac/phy.c +++ b/drivers/net/ibm_newemac/phy.c | |||
@@ -38,6 +38,16 @@ static inline void phy_write(struct mii_phy *phy, int reg, int val) | |||
38 | phy->mdio_write(phy->dev, phy->address, reg, val); | 38 | phy->mdio_write(phy->dev, phy->address, reg, val); |
39 | } | 39 | } |
40 | 40 | ||
41 | static inline int gpcs_phy_read(struct mii_phy *phy, int reg) | ||
42 | { | ||
43 | return phy->mdio_read(phy->dev, phy->gpcs_address, reg); | ||
44 | } | ||
45 | |||
46 | static inline void gpcs_phy_write(struct mii_phy *phy, int reg, int val) | ||
47 | { | ||
48 | phy->mdio_write(phy->dev, phy->gpcs_address, reg, val); | ||
49 | } | ||
50 | |||
41 | int emac_mii_reset_phy(struct mii_phy *phy) | 51 | int emac_mii_reset_phy(struct mii_phy *phy) |
42 | { | 52 | { |
43 | int val; | 53 | int val; |
@@ -62,6 +72,37 @@ int emac_mii_reset_phy(struct mii_phy *phy) | |||
62 | return limit <= 0; | 72 | return limit <= 0; |
63 | } | 73 | } |
64 | 74 | ||
75 | int emac_mii_reset_gpcs(struct mii_phy *phy) | ||
76 | { | ||
77 | int val; | ||
78 | int limit = 10000; | ||
79 | |||
80 | val = gpcs_phy_read(phy, MII_BMCR); | ||
81 | val &= ~(BMCR_ISOLATE | BMCR_ANENABLE); | ||
82 | val |= BMCR_RESET; | ||
83 | gpcs_phy_write(phy, MII_BMCR, val); | ||
84 | |||
85 | udelay(300); | ||
86 | |||
87 | while (limit--) { | ||
88 | val = gpcs_phy_read(phy, MII_BMCR); | ||
89 | if (val >= 0 && (val & BMCR_RESET) == 0) | ||
90 | break; | ||
91 | udelay(10); | ||
92 | } | ||
93 | if ((val & BMCR_ISOLATE) && limit > 0) | ||
94 | gpcs_phy_write(phy, MII_BMCR, val & ~BMCR_ISOLATE); | ||
95 | |||
96 | if (limit > 0 && phy->mode == PHY_MODE_SGMII) { | ||
97 | /* Configure GPCS interface to recommended setting for SGMII */ | ||
98 | gpcs_phy_write(phy, 0x04, 0x8120); /* AsymPause, FDX */ | ||
99 | gpcs_phy_write(phy, 0x07, 0x2801); /* msg_pg, toggle */ | ||
100 | gpcs_phy_write(phy, 0x00, 0x0140); /* 1Gbps, FDX */ | ||
101 | } | ||
102 | |||
103 | return limit <= 0; | ||
104 | } | ||
105 | |||
65 | static int genmii_setup_aneg(struct mii_phy *phy, u32 advertise) | 106 | static int genmii_setup_aneg(struct mii_phy *phy, u32 advertise) |
66 | { | 107 | { |
67 | int ctl, adv; | 108 | int ctl, adv; |
@@ -332,6 +373,33 @@ static int m88e1111_init(struct mii_phy *phy) | |||
332 | return 0; | 373 | return 0; |
333 | } | 374 | } |
334 | 375 | ||
376 | static int m88e1112_init(struct mii_phy *phy) | ||
377 | { | ||
378 | /* | ||
379 | * Marvell 88E1112 PHY needs to have the SGMII MAC | ||
380 | * interace (page 2) properly configured to | ||
381 | * communicate with the 460EX/GT GPCS interface. | ||
382 | */ | ||
383 | |||
384 | u16 reg_short; | ||
385 | |||
386 | pr_debug("%s: Marvell 88E1112 Ethernet\n", __func__); | ||
387 | |||
388 | /* Set access to Page 2 */ | ||
389 | phy_write(phy, 0x16, 0x0002); | ||
390 | |||
391 | phy_write(phy, 0x00, 0x0040); /* 1Gbps */ | ||
392 | reg_short = (u16)(phy_read(phy, 0x1a)); | ||
393 | reg_short |= 0x8000; /* bypass Auto-Negotiation */ | ||
394 | phy_write(phy, 0x1a, reg_short); | ||
395 | emac_mii_reset_phy(phy); /* reset MAC interface */ | ||
396 | |||
397 | /* Reset access to Page 0 */ | ||
398 | phy_write(phy, 0x16, 0x0000); | ||
399 | |||
400 | return 0; | ||
401 | } | ||
402 | |||
335 | static int et1011c_init(struct mii_phy *phy) | 403 | static int et1011c_init(struct mii_phy *phy) |
336 | { | 404 | { |
337 | u16 reg_short; | 405 | u16 reg_short; |
@@ -384,11 +452,27 @@ static struct mii_phy_def m88e1111_phy_def = { | |||
384 | .ops = &m88e1111_phy_ops, | 452 | .ops = &m88e1111_phy_ops, |
385 | }; | 453 | }; |
386 | 454 | ||
455 | static struct mii_phy_ops m88e1112_phy_ops = { | ||
456 | .init = m88e1112_init, | ||
457 | .setup_aneg = genmii_setup_aneg, | ||
458 | .setup_forced = genmii_setup_forced, | ||
459 | .poll_link = genmii_poll_link, | ||
460 | .read_link = genmii_read_link | ||
461 | }; | ||
462 | |||
463 | static struct mii_phy_def m88e1112_phy_def = { | ||
464 | .phy_id = 0x01410C90, | ||
465 | .phy_id_mask = 0x0ffffff0, | ||
466 | .name = "Marvell 88E1112 Ethernet", | ||
467 | .ops = &m88e1112_phy_ops, | ||
468 | }; | ||
469 | |||
387 | static struct mii_phy_def *mii_phy_table[] = { | 470 | static struct mii_phy_def *mii_phy_table[] = { |
388 | &et1011c_phy_def, | 471 | &et1011c_phy_def, |
389 | &cis8201_phy_def, | 472 | &cis8201_phy_def, |
390 | &bcm5248_phy_def, | 473 | &bcm5248_phy_def, |
391 | &m88e1111_phy_def, | 474 | &m88e1111_phy_def, |
475 | &m88e1112_phy_def, | ||
392 | &genmii_phy_def, | 476 | &genmii_phy_def, |
393 | NULL | 477 | NULL |
394 | }; | 478 | }; |
diff --git a/drivers/net/ibm_newemac/phy.h b/drivers/net/ibm_newemac/phy.h index 1b65c81f6557..5d2bf4cbe50b 100644 --- a/drivers/net/ibm_newemac/phy.h +++ b/drivers/net/ibm_newemac/phy.h | |||
@@ -57,6 +57,7 @@ struct mii_phy { | |||
57 | or determined automaticaly */ | 57 | or determined automaticaly */ |
58 | int address; /* PHY address */ | 58 | int address; /* PHY address */ |
59 | int mode; /* PHY mode */ | 59 | int mode; /* PHY mode */ |
60 | int gpcs_address; /* GPCS PHY address */ | ||
60 | 61 | ||
61 | /* 1: autoneg enabled, 0: disabled */ | 62 | /* 1: autoneg enabled, 0: disabled */ |
62 | int autoneg; | 63 | int autoneg; |
@@ -81,5 +82,6 @@ struct mii_phy { | |||
81 | */ | 82 | */ |
82 | int emac_mii_phy_probe(struct mii_phy *phy, int address); | 83 | int emac_mii_phy_probe(struct mii_phy *phy, int address); |
83 | int emac_mii_reset_phy(struct mii_phy *phy); | 84 | int emac_mii_reset_phy(struct mii_phy *phy); |
85 | int emac_mii_reset_gpcs(struct mii_phy *phy); | ||
84 | 86 | ||
85 | #endif /* __IBM_NEWEMAC_PHY_H */ | 87 | #endif /* __IBM_NEWEMAC_PHY_H */ |