aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/SubmitChecklist2
-rw-r--r--Documentation/ja_JP/SubmitChecklist2
-rw-r--r--MAINTAINERS16
-rw-r--r--arch/blackfin/include/asm/atomic.h109
-rw-r--r--arch/blackfin/include/asm/auxvec.h5
-rw-r--r--arch/blackfin/include/asm/bitops.h198
-rw-r--r--arch/blackfin/include/asm/bugs.h17
-rw-r--r--arch/blackfin/include/asm/cputime.h5
-rw-r--r--arch/blackfin/include/asm/current.h24
-rw-r--r--arch/blackfin/include/asm/device.h6
-rw-r--r--arch/blackfin/include/asm/elf.h2
-rw-r--r--arch/blackfin/include/asm/emergency-restart.h5
-rw-r--r--arch/blackfin/include/asm/errno.h7
-rw-r--r--arch/blackfin/include/asm/fb.h13
-rw-r--r--arch/blackfin/include/asm/futex.h5
-rw-r--r--arch/blackfin/include/asm/hardirq.h42
-rw-r--r--arch/blackfin/include/asm/hw_irq.h7
-rw-r--r--arch/blackfin/include/asm/io.h1
-rw-r--r--arch/blackfin/include/asm/ioctls.h84
-rw-r--r--arch/blackfin/include/asm/ipcbuf.h31
-rw-r--r--arch/blackfin/include/asm/irq.h5
-rw-r--r--arch/blackfin/include/asm/kmap_types.h5
-rw-r--r--arch/blackfin/include/asm/local.h5
-rw-r--r--arch/blackfin/include/asm/mman.h44
-rw-r--r--arch/blackfin/include/asm/msgbuf.h32
-rw-r--r--arch/blackfin/include/asm/mutex.h2
-rw-r--r--arch/blackfin/include/asm/page.h85
-rw-r--r--arch/blackfin/include/asm/param.h23
-rw-r--r--arch/blackfin/include/asm/percpu.h5
-rw-r--r--arch/blackfin/include/asm/pgalloc.h9
-rw-r--r--arch/blackfin/include/asm/poll.h21
-rw-r--r--arch/blackfin/include/asm/posix_types.h56
-rw-r--r--arch/blackfin/include/asm/processor.h35
-rw-r--r--arch/blackfin/include/asm/resource.h5
-rw-r--r--arch/blackfin/include/asm/sembuf.h26
-rw-r--r--arch/blackfin/include/asm/serial.h6
-rw-r--r--arch/blackfin/include/asm/setup.h18
-rw-r--r--arch/blackfin/include/asm/shmbuf.h43
-rw-r--r--arch/blackfin/include/asm/shmparam.h7
-rw-r--r--arch/blackfin/include/asm/signal.h159
-rw-r--r--arch/blackfin/include/asm/socket.h60
-rw-r--r--arch/blackfin/include/asm/sockios.h14
-rw-r--r--arch/blackfin/include/asm/spinlock.h6
-rw-r--r--arch/blackfin/include/asm/statfs.h5
-rw-r--r--arch/blackfin/include/asm/swab.h6
-rw-r--r--arch/blackfin/include/asm/termbits.h199
-rw-r--r--arch/blackfin/include/asm/termios.h95
-rw-r--r--arch/blackfin/include/asm/tlbflush.h57
-rw-r--r--arch/blackfin/include/asm/topology.h5
-rw-r--r--arch/blackfin/include/asm/types.h37
-rw-r--r--arch/blackfin/include/asm/ucontext.h18
-rw-r--r--arch/blackfin/include/asm/unaligned.h12
-rw-r--r--arch/blackfin/include/asm/user.h90
-rw-r--r--arch/blackfin/kernel/bfin_ksyms.c1
-rw-r--r--arch/blackfin/kernel/process.c23
-rw-r--r--arch/blackfin/mach-common/Makefile3
-rw-r--r--arch/blackfin/mach-common/ints-priority.c4
-rw-r--r--arch/blackfin/mach-common/irqpanic.c11
-rw-r--r--arch/powerpc/Kconfig.debug17
-rw-r--r--arch/powerpc/boot/cuboot-85xx.c2
-rw-r--r--arch/powerpc/boot/dts/asp834x-redboot.dts2
-rw-r--r--arch/powerpc/boot/dts/gef_sbc610.dts10
-rw-r--r--arch/powerpc/boot/dts/kmeter1.dts520
-rw-r--r--arch/powerpc/boot/dts/mpc8272ads.dts19
-rw-r--r--arch/powerpc/boot/dts/mpc8315erdb.dts15
-rw-r--r--arch/powerpc/boot/dts/mpc8349emitx.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc834x_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8377_rdb.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8378_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8378_rdb.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8379_mds.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8379_rdb.dts2
-rw-r--r--arch/powerpc/boot/dts/mpc8569mds.dts87
-rw-r--r--arch/powerpc/boot/dts/mpc8610_hpcd.dts32
-rw-r--r--arch/powerpc/boot/dts/pcm030.dts26
-rw-r--r--arch/powerpc/boot/dts/sbc8349.dts2
-rw-r--r--arch/powerpc/boot/dts/xcalibur1501.dts696
-rw-r--r--arch/powerpc/boot/dts/xpedite5200.dts466
-rw-r--r--arch/powerpc/boot/dts/xpedite5200_xmon.dts506
-rw-r--r--arch/powerpc/boot/dts/xpedite5301.dts640
-rw-r--r--arch/powerpc/boot/dts/xpedite5330.dts707
-rw-r--r--arch/powerpc/boot/dts/xpedite5370.dts638
-rwxr-xr-xarch/powerpc/boot/wrapper4
-rw-r--r--arch/powerpc/configs/83xx/kmeter1_defconfig908
-rw-r--r--arch/powerpc/configs/85xx/xes_mpc85xx_defconfig1821
-rw-r--r--arch/powerpc/include/asm/delay.h36
-rw-r--r--arch/powerpc/include/asm/fsl_lbc.h4
-rw-r--r--arch/powerpc/include/asm/mpc52xx.h2
-rw-r--r--arch/powerpc/include/asm/mpc5xxx.h (renamed from arch/powerpc/include/asm/mpc512x.h)10
-rw-r--r--arch/powerpc/include/asm/reg.h3
-rw-r--r--arch/powerpc/include/asm/reg_booke.h2
-rw-r--r--arch/powerpc/kernel/Makefile2
-rw-r--r--arch/powerpc/kernel/cpu_setup_6xx.S3
-rw-r--r--arch/powerpc/kernel/cpu_setup_fsl_booke.S49
-rw-r--r--arch/powerpc/kvm/Makefile2
-rw-r--r--arch/powerpc/lib/Makefile2
-rw-r--r--arch/powerpc/mm/Makefile2
-rw-r--r--arch/powerpc/oprofile/Makefile2
-rw-r--r--arch/powerpc/platforms/44x/warp.c8
-rw-r--r--arch/powerpc/platforms/512x/clock.c10
-rw-r--r--arch/powerpc/platforms/512x/mpc512x.h1
-rw-r--r--arch/powerpc/platforms/512x/mpc512x_shared.c23
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.c32
-rw-r--r--arch/powerpc/platforms/83xx/Kconfig7
-rw-r--r--arch/powerpc/platforms/83xx/Makefile1
-rw-r--r--arch/powerpc/platforms/83xx/kmeter1.c191
-rw-r--r--arch/powerpc/platforms/83xx/mpc83xx.h4
-rw-r--r--arch/powerpc/platforms/83xx/usb.c10
-rw-r--r--arch/powerpc/platforms/85xx/Kconfig13
-rw-r--r--arch/powerpc/platforms/85xx/Makefile1
-rw-r--r--arch/powerpc/platforms/85xx/mpc8536_ds.c17
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_ds.c19
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_mds.c20
-rw-r--r--arch/powerpc/platforms/85xx/xes_mpc85xx.c282
-rw-r--r--arch/powerpc/platforms/86xx/Kconfig1
-rw-r--r--arch/powerpc/platforms/86xx/mpc8610_hpcd.c4
-rw-r--r--arch/powerpc/platforms/86xx/mpc86xx_hpcn.c15
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype9
-rw-r--r--arch/powerpc/platforms/Makefile2
-rw-r--r--arch/powerpc/sysdev/Makefile5
-rw-r--r--arch/powerpc/sysdev/mpc5xxx_clocks.c33
-rw-r--r--arch/powerpc/xmon/Makefile2
-rw-r--r--arch/sparc/mm/init_64.c6
-rw-r--r--block/Kconfig4
-rw-r--r--block/blk-settings.c4
-rw-r--r--drivers/ata/pata_mpc52xx.c2
-rw-r--r--drivers/block/hd.c10
-rw-r--r--drivers/char/dtlk.c6
-rw-r--r--drivers/char/hvc_iseries.c2
-rw-r--r--drivers/char/hvc_vio.c2
-rw-r--r--drivers/char/hvcs.c2
-rw-r--r--drivers/char/istallion.c2
-rw-r--r--drivers/char/moxa.c7
-rw-r--r--drivers/gpio/Kconfig6
-rw-r--r--drivers/gpio/Makefile1
-rw-r--r--drivers/gpio/pl061.c341
-rw-r--r--drivers/i2c/busses/i2c-mpc.c2
-rw-r--r--drivers/md/dm-exception-store.h2
-rw-r--r--drivers/message/fusion/mptbase.c8
-rw-r--r--drivers/net/fec_mpc52xx.c2
-rw-r--r--drivers/net/fec_mpc52xx_phy.c2
-rw-r--r--drivers/net/igbvf/netdev.c13
-rw-r--r--drivers/net/ixgbe/ixgbe_fcoe.c2
-rw-r--r--drivers/net/ps3_gelic_net.c22
-rw-r--r--drivers/net/ps3_gelic_wireless.c6
-rw-r--r--drivers/rapidio/rio-scan.c43
-rw-r--r--drivers/rapidio/rio-sysfs.c6
-rw-r--r--drivers/rtc/interface.c12
-rw-r--r--drivers/rtc/rtc-dev.c6
-rw-r--r--drivers/rtc/rtc-ds1305.c3
-rw-r--r--drivers/rtc/rtc-ds1307.c5
-rw-r--r--drivers/rtc/rtc-ds1374.c5
-rw-r--r--drivers/rtc/rtc-test.c2
-rw-r--r--drivers/scsi/ps3rom.c10
-rw-r--r--drivers/serial/mpc52xx_uart.c5
-rw-r--r--drivers/serial/of_serial.c2
-rw-r--r--drivers/serial/ucc_uart.c19
-rw-r--r--drivers/spi/Kconfig16
-rw-r--r--drivers/spi/Makefile2
-rw-r--r--drivers/spi/spi_mpc8xxx.c (renamed from drivers/spi/spi_mpc83xx.c)511
-rw-r--r--drivers/usb/host/ehci-ps3.c4
-rw-r--r--drivers/usb/host/ohci-ps3.c4
-rw-r--r--drivers/video/Kconfig6
-rw-r--r--drivers/video/xilinxfb.c59
-rw-r--r--drivers/watchdog/mpc5200_wdt.c2
-rw-r--r--fs/ext3/resize.c2
-rw-r--r--fs/ext3/super.c2
-rw-r--r--fs/ext4/resize.c2
-rw-r--r--fs/ext4/super.c10
-rw-r--r--fs/gfs2/Kconfig2
-rw-r--r--fs/ocfs2/super.c2
-rw-r--r--fs/xfs/linux-2.6/xfs_linux.h2
-rw-r--r--fs/xfs/linux-2.6/xfs_super.c2
-rw-r--r--include/linux/amba/pl061.h15
-rw-r--r--include/linux/dma-mapping.h43
-rw-r--r--include/linux/kernel.h2
-rw-r--r--include/linux/types.h2
-rw-r--r--kernel/exit.c7
-rw-r--r--mm/bootmem.c14
-rw-r--r--sound/pci/lx6464es/lx6464es.c2
181 files changed, 8790 insertions, 2276 deletions
diff --git a/Documentation/SubmitChecklist b/Documentation/SubmitChecklist
index ac5e0b2f1097..78a9168ff377 100644
--- a/Documentation/SubmitChecklist
+++ b/Documentation/SubmitChecklist
@@ -54,7 +54,7 @@ kernel patches.
54 CONFIG_PREEMPT. 54 CONFIG_PREEMPT.
55 55
5614: If the patch affects IO/Disk, etc: has been tested with and without 5614: If the patch affects IO/Disk, etc: has been tested with and without
57 CONFIG_LBD. 57 CONFIG_LBDAF.
58 58
5915: All codepaths have been exercised with all lockdep features enabled. 5915: All codepaths have been exercised with all lockdep features enabled.
60 60
diff --git a/Documentation/ja_JP/SubmitChecklist b/Documentation/ja_JP/SubmitChecklist
index 6c42e071d723..2df4576f1173 100644
--- a/Documentation/ja_JP/SubmitChecklist
+++ b/Documentation/ja_JP/SubmitChecklist
@@ -75,7 +75,7 @@ Linux カーネルパッチ投稿者向けチェックリスト
75 ビルドした上、動作確認を行ってください。 75 ビルドした上、動作確認を行ってください。
76 76
7714: もしパッチがディスクのI/O性能などに影響を与えるようであれば、 7714: もしパッチがディスクのI/O性能などに影響を与えるようであれば、
78 'CONFIG_LBD'オプションを有効にした場合と無効にした場合の両方で 78 'CONFIG_LBDAF'オプションを有効にした場合と無効にした場合の両方で
79 テストを実施してみてください。 79 テストを実施してみてください。
80 80
8115: lockdepの機能を全て有効にした上で、全てのコードパスを評価してください。 8115: lockdepの機能を全て有効にした上で、全てのコードパスを評価してください。
diff --git a/MAINTAINERS b/MAINTAINERS
index 035df9d26609..a08882ea6861 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -946,7 +946,7 @@ M: me@bobcopeland.com
946L: linux-wireless@vger.kernel.org 946L: linux-wireless@vger.kernel.org
947L: ath5k-devel@lists.ath5k.org 947L: ath5k-devel@lists.ath5k.org
948S: Maintained 948S: Maintained
949F: drivers/net/wireless/ath5k/ 949F: drivers/net/wireless/ath/ath5k/
950 950
951ATHEROS ATH9K WIRELESS DRIVER 951ATHEROS ATH9K WIRELESS DRIVER
952P: Luis R. Rodriguez 952P: Luis R. Rodriguez
@@ -962,7 +962,7 @@ M: senthilkumar@atheros.com
962L: linux-wireless@vger.kernel.org 962L: linux-wireless@vger.kernel.org
963L: ath9k-devel@lists.ath9k.org 963L: ath9k-devel@lists.ath9k.org
964S: Supported 964S: Supported
965F: drivers/net/wireless/ath9k/ 965F: drivers/net/wireless/ath/ath9k/
966 966
967ATHEROS AR9170 WIRELESS DRIVER 967ATHEROS AR9170 WIRELESS DRIVER
968P: Christian Lamparter 968P: Christian Lamparter
@@ -970,7 +970,7 @@ M: chunkeey@web.de
970L: linux-wireless@vger.kernel.org 970L: linux-wireless@vger.kernel.org
971W: http://wireless.kernel.org/en/users/Drivers/ar9170 971W: http://wireless.kernel.org/en/users/Drivers/ar9170
972S: Maintained 972S: Maintained
973F: drivers/net/wireless/ar9170/ 973F: drivers/net/wireless/ath/ar9170/
974 974
975ATI_REMOTE2 DRIVER 975ATI_REMOTE2 DRIVER
976P: Ville Syrjala 976P: Ville Syrjala
@@ -2053,8 +2053,8 @@ F: drivers/edac/i5400_edac.c
2053 2053
2054EDAC-I82975X 2054EDAC-I82975X
2055P: Ranganathan Desikan 2055P: Ranganathan Desikan
2056P: Arvind R.
2057M: rdesikan@jetzbroadband.com 2056M: rdesikan@jetzbroadband.com
2057P: Arvind R.
2058M: arvind@acarlab.com 2058M: arvind@acarlab.com
2059L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers) 2059L: bluesmoke-devel@lists.sourceforge.net (moderated for non-subscribers)
2060W: bluesmoke.sourceforge.net 2060W: bluesmoke.sourceforge.net
@@ -2390,7 +2390,7 @@ FTRACE
2390P: Steven Rostedt 2390P: Steven Rostedt
2391M: rostedt@goodmis.org 2391M: rostedt@goodmis.org
2392S: Maintained 2392S: Maintained
2393F: Documentation/ftrace.txt 2393F: Documentation/trace/ftrace.txt
2394F: arch/*/*/*/ftrace.h 2394F: arch/*/*/*/ftrace.h
2395F: arch/*/kernel/ftrace.c 2395F: arch/*/kernel/ftrace.c
2396F: include/*/ftrace.h 2396F: include/*/ftrace.h
@@ -2849,7 +2849,7 @@ W: http://apps.sourceforge.net/trac/linux-zigbee
2849T: git git://git.kernel.org/pub/scm/linux/kernel/git/lumag/lowpan.git 2849T: git git://git.kernel.org/pub/scm/linux/kernel/git/lumag/lowpan.git
2850S: Maintained 2850S: Maintained
2851F: net/ieee802154/ 2851F: net/ieee802154/
2852F: drivers/ieee801254/ 2852F: drivers/ieee802154/
2853 2853
2854INTEGRITY MEASUREMENT ARCHITECTURE (IMA) 2854INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
2855P: Mimi Zohar 2855P: Mimi Zohar
@@ -3406,7 +3406,7 @@ P: Eduard - Gabriel Munteanu
3406M: eduard.munteanu@linux360.ro 3406M: eduard.munteanu@linux360.ro
3407S: Maintained 3407S: Maintained
3408F: Documentation/trace/kmemtrace.txt 3408F: Documentation/trace/kmemtrace.txt
3409F: include/trace/kmemtrace.h 3409F: include/linux/kmemtrace.h
3410F: kernel/trace/kmemtrace.c 3410F: kernel/trace/kmemtrace.c
3411 3411
3412KPROBES 3412KPROBES
@@ -4083,7 +4083,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
4083S: Maintained 4083S: Maintained
4084F: net/wireless/ 4084F: net/wireless/
4085F: include/net/ieee80211* 4085F: include/net/ieee80211*
4086F: include/net/wireless.h 4086F: include/linux/wireless.h
4087 4087
4088NETWORKING DRIVERS 4088NETWORKING DRIVERS
4089L: netdev@vger.kernel.org 4089L: netdev@vger.kernel.org
diff --git a/arch/blackfin/include/asm/atomic.h b/arch/blackfin/include/asm/atomic.h
index b1d92f13ef96..88f36d599fe8 100644
--- a/arch/blackfin/include/asm/atomic.h
+++ b/arch/blackfin/include/asm/atomic.h
@@ -1,24 +1,21 @@
1#ifndef __ARCH_BLACKFIN_ATOMIC__ 1#ifndef __ARCH_BLACKFIN_ATOMIC__
2#define __ARCH_BLACKFIN_ATOMIC__ 2#define __ARCH_BLACKFIN_ATOMIC__
3 3
4#ifndef CONFIG_SMP
5# include <asm-generic/atomic.h>
6#else
7
4#include <linux/types.h> 8#include <linux/types.h>
5#include <asm/system.h> /* local_irq_XXX() */ 9#include <asm/system.h> /* local_irq_XXX() */
6 10
7/* 11/*
8 * Atomic operations that C can't guarantee us. Useful for 12 * Atomic operations that C can't guarantee us. Useful for
9 * resource counting etc.. 13 * resource counting etc..
10 *
11 * Generally we do not concern about SMP BFIN systems, so we don't have
12 * to deal with that.
13 *
14 * Tony Kou (tonyko@lineo.ca) Lineo Inc. 2001
15 */ 14 */
16 15
17#define ATOMIC_INIT(i) { (i) } 16#define ATOMIC_INIT(i) { (i) }
18#define atomic_set(v, i) (((v)->counter) = i) 17#define atomic_set(v, i) (((v)->counter) = i)
19 18
20#ifdef CONFIG_SMP
21
22#define atomic_read(v) __raw_uncached_fetch_asm(&(v)->counter) 19#define atomic_read(v) __raw_uncached_fetch_asm(&(v)->counter)
23 20
24asmlinkage int __raw_uncached_fetch_asm(const volatile int *ptr); 21asmlinkage int __raw_uncached_fetch_asm(const volatile int *ptr);
@@ -84,100 +81,6 @@ static inline int atomic_test_mask(int mask, atomic_t *v)
84#define smp_mb__before_atomic_inc() barrier() 81#define smp_mb__before_atomic_inc() barrier()
85#define smp_mb__after_atomic_inc() barrier() 82#define smp_mb__after_atomic_inc() barrier()
86 83
87#else /* !CONFIG_SMP */
88
89#define atomic_read(v) ((v)->counter)
90
91static inline void atomic_add(int i, atomic_t *v)
92{
93 unsigned long flags;
94
95 local_irq_save_hw(flags);
96 v->counter += i;
97 local_irq_restore_hw(flags);
98}
99
100static inline void atomic_sub(int i, atomic_t *v)
101{
102 unsigned long flags;
103
104 local_irq_save_hw(flags);
105 v->counter -= i;
106 local_irq_restore_hw(flags);
107
108}
109
110static inline int atomic_add_return(int i, atomic_t *v)
111{
112 int __temp = 0;
113 unsigned long flags;
114
115 local_irq_save_hw(flags);
116 v->counter += i;
117 __temp = v->counter;
118 local_irq_restore_hw(flags);
119
120
121 return __temp;
122}
123
124static inline int atomic_sub_return(int i, atomic_t *v)
125{
126 int __temp = 0;
127 unsigned long flags;
128
129 local_irq_save_hw(flags);
130 v->counter -= i;
131 __temp = v->counter;
132 local_irq_restore_hw(flags);
133
134 return __temp;
135}
136
137static inline void atomic_inc(volatile atomic_t *v)
138{
139 unsigned long flags;
140
141 local_irq_save_hw(flags);
142 v->counter++;
143 local_irq_restore_hw(flags);
144}
145
146static inline void atomic_dec(volatile atomic_t *v)
147{
148 unsigned long flags;
149
150 local_irq_save_hw(flags);
151 v->counter--;
152 local_irq_restore_hw(flags);
153}
154
155static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
156{
157 unsigned long flags;
158
159 local_irq_save_hw(flags);
160 v->counter &= ~mask;
161 local_irq_restore_hw(flags);
162}
163
164static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
165{
166 unsigned long flags;
167
168 local_irq_save_hw(flags);
169 v->counter |= mask;
170 local_irq_restore_hw(flags);
171}
172
173/* Atomic operations are already serializing */
174#define smp_mb__before_atomic_dec() barrier()
175#define smp_mb__after_atomic_dec() barrier()
176#define smp_mb__before_atomic_inc() barrier()
177#define smp_mb__after_atomic_inc() barrier()
178
179#endif /* !CONFIG_SMP */
180
181#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0) 84#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
182#define atomic_dec_return(v) atomic_sub_return(1,(v)) 85#define atomic_dec_return(v) atomic_sub_return(1,(v))
183#define atomic_inc_return(v) atomic_add_return(1,(v)) 86#define atomic_inc_return(v) atomic_add_return(1,(v))
@@ -210,4 +113,6 @@ static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
210 113
211#include <asm-generic/atomic-long.h> 114#include <asm-generic/atomic-long.h>
212 115
213#endif /* __ARCH_BLACKFIN_ATOMIC __ */ 116#endif
117
118#endif
diff --git a/arch/blackfin/include/asm/auxvec.h b/arch/blackfin/include/asm/auxvec.h
index 215506cd87b7..41fa68b71287 100644
--- a/arch/blackfin/include/asm/auxvec.h
+++ b/arch/blackfin/include/asm/auxvec.h
@@ -1,4 +1 @@
1#ifndef __ASMBFIN_AUXVEC_H #include <asm-generic/auxvec.h>
2#define __ASMBFIN_AUXVEC_H
3
4#endif
diff --git a/arch/blackfin/include/asm/bitops.h b/arch/blackfin/include/asm/bitops.h
index 75fee2f7d9f2..daffa71576d4 100644
--- a/arch/blackfin/include/asm/bitops.h
+++ b/arch/blackfin/include/asm/bitops.h
@@ -1,26 +1,22 @@
1#ifndef _BLACKFIN_BITOPS_H 1#ifndef _BLACKFIN_BITOPS_H
2#define _BLACKFIN_BITOPS_H 2#define _BLACKFIN_BITOPS_H
3 3
4/* 4#ifndef CONFIG_SMP
5 * Copyright 1992, Linus Torvalds. 5# include <asm-generic/bitops.h>
6 */ 6#else
7
8#include <linux/compiler.h>
9#include <asm/byteorder.h> /* swab32 */
10
11#ifdef __KERNEL__
12 7
13#ifndef _LINUX_BITOPS_H 8#ifndef _LINUX_BITOPS_H
14#error only <linux/bitops.h> can be included directly 9#error only <linux/bitops.h> can be included directly
15#endif 10#endif
16 11
12#include <linux/compiler.h>
13#include <asm/byteorder.h> /* swab32 */
14
17#include <asm-generic/bitops/ffs.h> 15#include <asm-generic/bitops/ffs.h>
18#include <asm-generic/bitops/__ffs.h> 16#include <asm-generic/bitops/__ffs.h>
19#include <asm-generic/bitops/sched.h> 17#include <asm-generic/bitops/sched.h>
20#include <asm-generic/bitops/ffz.h> 18#include <asm-generic/bitops/ffz.h>
21 19
22#ifdef CONFIG_SMP
23
24#include <linux/linkage.h> 20#include <linux/linkage.h>
25 21
26asmlinkage int __raw_bit_set_asm(volatile unsigned long *addr, int nr); 22asmlinkage int __raw_bit_set_asm(volatile unsigned long *addr, int nr);
@@ -79,189 +75,13 @@ static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
79 return __raw_bit_test_toggle_asm(a, nr & 0x1f); 75 return __raw_bit_test_toggle_asm(a, nr & 0x1f);
80} 76}
81 77
82#else /* !CONFIG_SMP */
83
84#include <asm/system.h> /* save_flags */
85
86static inline void set_bit(int nr, volatile unsigned long *addr)
87{
88 int *a = (int *)addr;
89 int mask;
90 unsigned long flags;
91 a += nr >> 5;
92 mask = 1 << (nr & 0x1f);
93 local_irq_save_hw(flags);
94 *a |= mask;
95 local_irq_restore_hw(flags);
96}
97
98static inline void clear_bit(int nr, volatile unsigned long *addr)
99{
100 int *a = (int *)addr;
101 int mask;
102 unsigned long flags;
103 a += nr >> 5;
104 mask = 1 << (nr & 0x1f);
105 local_irq_save_hw(flags);
106 *a &= ~mask;
107 local_irq_restore_hw(flags);
108}
109
110static inline void change_bit(int nr, volatile unsigned long *addr)
111{
112 int mask;
113 unsigned long flags;
114 unsigned long *ADDR = (unsigned long *)addr;
115
116 ADDR += nr >> 5;
117 mask = 1 << (nr & 31);
118 local_irq_save_hw(flags);
119 *ADDR ^= mask;
120 local_irq_restore_hw(flags);
121}
122
123static inline int test_and_set_bit(int nr, volatile unsigned long *addr)
124{
125 int mask, retval;
126 volatile unsigned int *a = (volatile unsigned int *)addr;
127 unsigned long flags;
128
129 a += nr >> 5;
130 mask = 1 << (nr & 0x1f);
131 local_irq_save_hw(flags);
132 retval = (mask & *a) != 0;
133 *a |= mask;
134 local_irq_restore_hw(flags);
135
136 return retval;
137}
138
139static inline int test_and_clear_bit(int nr, volatile unsigned long *addr)
140{
141 int mask, retval;
142 volatile unsigned int *a = (volatile unsigned int *)addr;
143 unsigned long flags;
144
145 a += nr >> 5;
146 mask = 1 << (nr & 0x1f);
147 local_irq_save_hw(flags);
148 retval = (mask & *a) != 0;
149 *a &= ~mask;
150 local_irq_restore_hw(flags);
151
152 return retval;
153}
154
155static inline int test_and_change_bit(int nr, volatile unsigned long *addr)
156{
157 int mask, retval;
158 volatile unsigned int *a = (volatile unsigned int *)addr;
159 unsigned long flags;
160
161 a += nr >> 5;
162 mask = 1 << (nr & 0x1f);
163 local_irq_save_hw(flags);
164 retval = (mask & *a) != 0;
165 *a ^= mask;
166 local_irq_restore_hw(flags);
167 return retval;
168}
169
170#endif /* CONFIG_SMP */
171
172/* 78/*
173 * clear_bit() doesn't provide any barrier for the compiler. 79 * clear_bit() doesn't provide any barrier for the compiler.
174 */ 80 */
175#define smp_mb__before_clear_bit() barrier() 81#define smp_mb__before_clear_bit() barrier()
176#define smp_mb__after_clear_bit() barrier() 82#define smp_mb__after_clear_bit() barrier()
177 83
178static inline void __set_bit(int nr, volatile unsigned long *addr) 84#include <asm-generic/bitops/non-atomic.h>
179{
180 int *a = (int *)addr;
181 int mask;
182
183 a += nr >> 5;
184 mask = 1 << (nr & 0x1f);
185 *a |= mask;
186}
187
188static inline void __clear_bit(int nr, volatile unsigned long *addr)
189{
190 int *a = (int *)addr;
191 int mask;
192
193 a += nr >> 5;
194 mask = 1 << (nr & 0x1f);
195 *a &= ~mask;
196}
197
198static inline void __change_bit(int nr, volatile unsigned long *addr)
199{
200 int mask;
201 unsigned long *ADDR = (unsigned long *)addr;
202
203 ADDR += nr >> 5;
204 mask = 1 << (nr & 31);
205 *ADDR ^= mask;
206}
207
208static inline int __test_and_set_bit(int nr, volatile unsigned long *addr)
209{
210 int mask, retval;
211 volatile unsigned int *a = (volatile unsigned int *)addr;
212
213 a += nr >> 5;
214 mask = 1 << (nr & 0x1f);
215 retval = (mask & *a) != 0;
216 *a |= mask;
217 return retval;
218}
219
220static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr)
221{
222 int mask, retval;
223 volatile unsigned int *a = (volatile unsigned int *)addr;
224
225 a += nr >> 5;
226 mask = 1 << (nr & 0x1f);
227 retval = (mask & *a) != 0;
228 *a &= ~mask;
229 return retval;
230}
231
232static inline int __test_and_change_bit(int nr,
233 volatile unsigned long *addr)
234{
235 int mask, retval;
236 volatile unsigned int *a = (volatile unsigned int *)addr;
237
238 a += nr >> 5;
239 mask = 1 << (nr & 0x1f);
240 retval = (mask & *a) != 0;
241 *a ^= mask;
242 return retval;
243}
244
245static inline int __test_bit(int nr, const void *addr)
246{
247 int *a = (int *)addr;
248 int mask;
249
250 a += nr >> 5;
251 mask = 1 << (nr & 0x1f);
252 return ((mask & *a) != 0);
253}
254
255#ifndef CONFIG_SMP
256/*
257 * This routine doesn't need irq save and restore ops in UP
258 * context.
259 */
260static inline int test_bit(int nr, const void *addr)
261{
262 return __test_bit(nr, addr);
263}
264#endif
265 85
266#include <asm-generic/bitops/find.h> 86#include <asm-generic/bitops/find.h>
267#include <asm-generic/bitops/hweight.h> 87#include <asm-generic/bitops/hweight.h>
@@ -272,10 +92,10 @@ static inline int test_bit(int nr, const void *addr)
272 92
273#include <asm-generic/bitops/minix.h> 93#include <asm-generic/bitops/minix.h>
274 94
275#endif /* __KERNEL__ */
276
277#include <asm-generic/bitops/fls.h> 95#include <asm-generic/bitops/fls.h>
278#include <asm-generic/bitops/__fls.h> 96#include <asm-generic/bitops/__fls.h>
279#include <asm-generic/bitops/fls64.h> 97#include <asm-generic/bitops/fls64.h>
280 98
99#endif /* CONFIG_SMP */
100
281#endif /* _BLACKFIN_BITOPS_H */ 101#endif /* _BLACKFIN_BITOPS_H */
diff --git a/arch/blackfin/include/asm/bugs.h b/arch/blackfin/include/asm/bugs.h
index 9093c9c1fb81..61791e1ad9f5 100644
--- a/arch/blackfin/include/asm/bugs.h
+++ b/arch/blackfin/include/asm/bugs.h
@@ -1,16 +1 @@
1/* #include <asm-generic/bugs.h>
2 * include/asm-blackfin/bugs.h
3 *
4 * Copyright (C) 1994 Linus Torvalds
5 */
6
7/*
8 * This is included by init/main.c to check for architecture-dependent bugs.
9 *
10 * Needs:
11 * void check_bugs(void);
12 */
13
14static void check_bugs(void)
15{
16}
diff --git a/arch/blackfin/include/asm/cputime.h b/arch/blackfin/include/asm/cputime.h
index 2b19705f9885..6d68ad7e0ea3 100644
--- a/arch/blackfin/include/asm/cputime.h
+++ b/arch/blackfin/include/asm/cputime.h
@@ -1,6 +1 @@
1#ifndef __BLACKFIN_CPUTIME_H
2#define __BLACKFIN_CPUTIME_H
3
4#include <asm-generic/cputime.h> #include <asm-generic/cputime.h>
5
6#endif /* __BLACKFIN_CPUTIME_H */
diff --git a/arch/blackfin/include/asm/current.h b/arch/blackfin/include/asm/current.h
index 31918d29122c..4c51401b5537 100644
--- a/arch/blackfin/include/asm/current.h
+++ b/arch/blackfin/include/asm/current.h
@@ -1,23 +1 @@
1#ifndef _BLACKFIN_CURRENT_H #include <asm-generic/current.h>
2#define _BLACKFIN_CURRENT_H
3/*
4 * current.h
5 * (C) Copyright 2000, Lineo, David McCullough <davidm@lineo.com>
6 *
7 * rather than dedicate a register (as the m68k source does), we
8 * just keep a global, we should probably just change it all to be
9 * current and lose _current_task.
10 */
11#include <linux/thread_info.h>
12
13struct task_struct;
14
15static inline struct task_struct *get_current(void) __attribute__ ((__const__));
16static inline struct task_struct *get_current(void)
17{
18 return (current_thread_info()->task);
19}
20
21#define current (get_current())
22
23#endif /* _BLACKFIN_CURRENT_H */
diff --git a/arch/blackfin/include/asm/device.h b/arch/blackfin/include/asm/device.h
index d8f9872b0e2d..f0a4c256403b 100644
--- a/arch/blackfin/include/asm/device.h
+++ b/arch/blackfin/include/asm/device.h
@@ -1,7 +1 @@
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is released under the GPLv2
5 */
6#include <asm-generic/device.h> #include <asm-generic/device.h>
7
diff --git a/arch/blackfin/include/asm/elf.h b/arch/blackfin/include/asm/elf.h
index 230e1605d3fb..5a87baf0659d 100644
--- a/arch/blackfin/include/asm/elf.h
+++ b/arch/blackfin/include/asm/elf.h
@@ -20,7 +20,7 @@
20 20
21typedef unsigned long elf_greg_t; 21typedef unsigned long elf_greg_t;
22 22
23#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) 23#define ELF_NGREG 40 /* (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) */
24typedef elf_greg_t elf_gregset_t[ELF_NGREG]; 24typedef elf_greg_t elf_gregset_t[ELF_NGREG];
25 25
26typedef struct user_bfinfp_struct elf_fpregset_t; 26typedef struct user_bfinfp_struct elf_fpregset_t;
diff --git a/arch/blackfin/include/asm/emergency-restart.h b/arch/blackfin/include/asm/emergency-restart.h
index 27f6c785d103..3711bd9d50bd 100644
--- a/arch/blackfin/include/asm/emergency-restart.h
+++ b/arch/blackfin/include/asm/emergency-restart.h
@@ -1,6 +1 @@
1#ifndef _ASM_EMERGENCY_RESTART_H
2#define _ASM_EMERGENCY_RESTART_H
3
4#include <asm-generic/emergency-restart.h> #include <asm-generic/emergency-restart.h>
5
6#endif /* _ASM_EMERGENCY_RESTART_H */
diff --git a/arch/blackfin/include/asm/errno.h b/arch/blackfin/include/asm/errno.h
index 164e4f39bb57..4c82b503d92f 100644
--- a/arch/blackfin/include/asm/errno.h
+++ b/arch/blackfin/include/asm/errno.h
@@ -1,6 +1 @@
1#ifndef _BFIN_ERRNO_H #include <asm-generic/errno.h>
2#define _BFIN_ERRNO_H
3
4#include<asm-generic/errno.h>
5
6#endif /* _BFIN_ERRNO_H */
diff --git a/arch/blackfin/include/asm/fb.h b/arch/blackfin/include/asm/fb.h
index c7df38030992..3a4988e8df45 100644
--- a/arch/blackfin/include/asm/fb.h
+++ b/arch/blackfin/include/asm/fb.h
@@ -1,12 +1 @@
1#ifndef _ASM_FB_H_ #include <asm-generic/fb.h>
2#define _ASM_FB_H_
3#include <linux/fb.h>
4
5#define fb_pgprotect(...) do {} while (0)
6
7static inline int fb_is_primary_device(struct fb_info *info)
8{
9 return 0;
10}
11
12#endif /* _ASM_FB_H_ */
diff --git a/arch/blackfin/include/asm/futex.h b/arch/blackfin/include/asm/futex.h
index 6a332a9f099c..0b745828f42b 100644
--- a/arch/blackfin/include/asm/futex.h
+++ b/arch/blackfin/include/asm/futex.h
@@ -1,6 +1 @@
1#ifndef _ASM_FUTEX_H
2#define _ASM_FUTEX_H
3
4#include <asm-generic/futex.h> #include <asm-generic/futex.h>
5
6#endif
diff --git a/arch/blackfin/include/asm/hardirq.h b/arch/blackfin/include/asm/hardirq.h
index 717181a1749b..cbd52f86bb9f 100644
--- a/arch/blackfin/include/asm/hardirq.h
+++ b/arch/blackfin/include/asm/hardirq.h
@@ -1,47 +1,11 @@
1#ifndef __BFIN_HARDIRQ_H 1#ifndef __BFIN_HARDIRQ_H
2#define __BFIN_HARDIRQ_H 2#define __BFIN_HARDIRQ_H
3 3
4#include <linux/cache.h>
5#include <linux/threads.h>
6#include <asm/irq.h>
7
8typedef struct {
9 unsigned int __softirq_pending;
10 unsigned int __syscall_count;
11 struct task_struct *__ksoftirqd_task;
12} ____cacheline_aligned irq_cpustat_t;
13
14#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
15
16/*
17 * We put the hardirq and softirq counter into the preemption
18 * counter. The bitmask has the following meaning:
19 *
20 * - bits 0-7 are the preemption count (max preemption depth: 256)
21 * - bits 8-15 are the softirq count (max # of softirqs: 256)
22 * - bits 16-23 are the hardirq count (max # of hardirqs: 256)
23 *
24 * - ( bit 26 is the PREEMPT_ACTIVE flag. )
25 *
26 * PREEMPT_MASK: 0x000000ff
27 * HARDIRQ_MASK: 0x0000ff00
28 * SOFTIRQ_MASK: 0x00ff0000
29 */
30
31#if NR_IRQS > 256
32#define HARDIRQ_BITS 9
33#else
34#define HARDIRQ_BITS 8
35#endif
36
37#ifdef NR_IRQS
38# if (1 << HARDIRQ_BITS) < NR_IRQS
39# error HARDIRQ_BITS is too low!
40# endif
41#endif
42
43#define __ARCH_IRQ_EXIT_IRQS_DISABLED 1 4#define __ARCH_IRQ_EXIT_IRQS_DISABLED 1
44 5
45extern void ack_bad_irq(unsigned int irq); 6extern void ack_bad_irq(unsigned int irq);
7#define ack_bad_irq ack_bad_irq
8
9#include <asm-generic/hardirq.h>
46 10
47#endif 11#endif
diff --git a/arch/blackfin/include/asm/hw_irq.h b/arch/blackfin/include/asm/hw_irq.h
index 5b51eaec012c..1f5ef7da0045 100644
--- a/arch/blackfin/include/asm/hw_irq.h
+++ b/arch/blackfin/include/asm/hw_irq.h
@@ -1,6 +1 @@
1#ifndef __ASM_BFIN_HW_IRQ_H #include <asm-generic/hw_irq.h>
2#define __ASM_BFIN_HW_IRQ_H
3
4/* Dummy include. */
5
6#endif
diff --git a/arch/blackfin/include/asm/io.h b/arch/blackfin/include/asm/io.h
index 3022b5c96b37..37053eca200e 100644
--- a/arch/blackfin/include/asm/io.h
+++ b/arch/blackfin/include/asm/io.h
@@ -222,7 +222,6 @@ extern void blkfin_inv_cache_all(void);
222#define ioport_unmap(addr) 222#define ioport_unmap(addr)
223 223
224/* Pages to physical address... */ 224/* Pages to physical address... */
225#define page_to_phys(page) ((page - mem_map) << PAGE_SHIFT)
226#define page_to_bus(page) ((page - mem_map) << PAGE_SHIFT) 225#define page_to_bus(page) ((page - mem_map) << PAGE_SHIFT)
227 226
228#define phys_to_virt(vaddr) ((void *) (vaddr)) 227#define phys_to_virt(vaddr) ((void *) (vaddr))
diff --git a/arch/blackfin/include/asm/ioctls.h b/arch/blackfin/include/asm/ioctls.h
index 895e3173165d..eca8d75b0a8a 100644
--- a/arch/blackfin/include/asm/ioctls.h
+++ b/arch/blackfin/include/asm/ioctls.h
@@ -1,87 +1,7 @@
1#ifndef __ARCH_BFIN_IOCTLS_H__ 1#ifndef __ARCH_BFIN_IOCTLS_H__
2#define __ARCH_BFIN_IOCTLS_H__ 2#define __ARCH_BFIN_IOCTLS_H__
3 3
4#include <asm/ioctl.h>
5
6/* 0x54 is just a magic number to make these relatively unique ('T') */
7
8#define TCGETS 0x5401
9#define TCSETS 0x5402
10#define TCSETSW 0x5403
11#define TCSETSF 0x5404
12#define TCGETA 0x5405
13#define TCSETA 0x5406
14#define TCSETAW 0x5407
15#define TCSETAF 0x5408
16#define TCSBRK 0x5409
17#define TCXONC 0x540A
18#define TCFLSH 0x540B
19#define TIOCEXCL 0x540C
20#define TIOCNXCL 0x540D
21#define TIOCSCTTY 0x540E
22#define TIOCGPGRP 0x540F
23#define TIOCSPGRP 0x5410
24#define TIOCOUTQ 0x5411
25#define TIOCSTI 0x5412
26#define TIOCGWINSZ 0x5413
27#define TIOCSWINSZ 0x5414
28#define TIOCMGET 0x5415
29#define TIOCMBIS 0x5416
30#define TIOCMBIC 0x5417
31#define TIOCMSET 0x5418
32#define TIOCGSOFTCAR 0x5419
33#define TIOCSSOFTCAR 0x541A
34#define FIONREAD 0x541B
35#define TIOCINQ FIONREAD
36#define TIOCLINUX 0x541C
37#define TIOCCONS 0x541D
38#define TIOCGSERIAL 0x541E
39#define TIOCSSERIAL 0x541F
40#define TIOCPKT 0x5420
41#define FIONBIO 0x5421
42#define TIOCNOTTY 0x5422
43#define TIOCSETD 0x5423
44#define TIOCGETD 0x5424
45#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
46#define TIOCTTYGSTRUCT 0x5426 /* For debugging only */
47#define TIOCSBRK 0x5427 /* BSD compatibility */
48#define TIOCCBRK 0x5428 /* BSD compatibility */
49#define TIOCGSID 0x5429 /* Return the session ID of FD */
50#define TCGETS2 _IOR('T', 0x2A, struct termios2)
51#define TCSETS2 _IOW('T', 0x2B, struct termios2)
52#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
53#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
54/* Get Pty Number (of pty-mux device) */
55#define TIOCGPTN _IOR('T', 0x30, unsigned int)
56#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
57
58#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
59#define FIOCLEX 0x5451
60#define FIOASYNC 0x5452
61#define TIOCSERCONFIG 0x5453
62#define TIOCSERGWILD 0x5454
63#define TIOCSERSWILD 0x5455
64#define TIOCGLCKTRMIOS 0x5456
65#define TIOCSLCKTRMIOS 0x5457
66#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
67#define TIOCSERGETLSR 0x5459 /* Get line status register */
68#define TIOCSERGETMULTI 0x545A /* Get multiport config */
69#define TIOCSERSETMULTI 0x545B /* Set multiport config */
70
71#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
72#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
73
74#define FIOQSIZE 0x545E 4#define FIOQSIZE 0x545E
5#include <asm-generic/ioctls.h>
75 6
76/* Used for packet mode */ 7#endif
77#define TIOCPKT_DATA 0
78#define TIOCPKT_FLUSHREAD 1
79#define TIOCPKT_FLUSHWRITE 2
80#define TIOCPKT_STOP 4
81#define TIOCPKT_START 8
82#define TIOCPKT_NOSTOP 16
83#define TIOCPKT_DOSTOP 32
84
85#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
86
87#endif /* __ARCH_BFIN_IOCTLS_H__ */
diff --git a/arch/blackfin/include/asm/ipcbuf.h b/arch/blackfin/include/asm/ipcbuf.h
index 8f0899cdf4d2..84c7e51cb6d0 100644
--- a/arch/blackfin/include/asm/ipcbuf.h
+++ b/arch/blackfin/include/asm/ipcbuf.h
@@ -1,30 +1 @@
1/* Changes origined from m68k version. Lineo Inc. May 2001 */ #include <asm-generic/ipcbuf.h>
2
3#ifndef __BFIN_IPCBUF_H__
4#define __BFIN_IPCBUF_H__
5
6/*
7 * The user_ipc_perm structure for m68k architecture.
8 * Note extra padding because this structure is passed back and forth
9 * between kernel and user space.
10 *
11 * Pad space is left for:
12 * - 32-bit mode_t and seq
13 * - 2 miscellaneous 32-bit values
14 */
15
16struct ipc64_perm {
17 __kernel_key_t key;
18 __kernel_uid32_t uid;
19 __kernel_gid32_t gid;
20 __kernel_uid32_t cuid;
21 __kernel_gid32_t cgid;
22 __kernel_mode_t mode;
23 unsigned short __pad1;
24 unsigned short seq;
25 unsigned short __pad2;
26 unsigned long __unused1;
27 unsigned long __unused2;
28};
29
30#endif /* __BFIN_IPCBUF_H__ */
diff --git a/arch/blackfin/include/asm/irq.h b/arch/blackfin/include/asm/irq.h
index 400bdd52ce87..9a7f63a83c47 100644
--- a/arch/blackfin/include/asm/irq.h
+++ b/arch/blackfin/include/asm/irq.h
@@ -45,9 +45,6 @@
45 : "d" (bfin_irq_flags) \ 45 : "d" (bfin_irq_flags) \
46 ) 46 )
47 47
48static inline int irq_canonicalize(int irq) 48#include <asm-generic/irq.h>
49{
50 return irq;
51}
52 49
53#endif /* _BFIN_IRQ_H_ */ 50#endif /* _BFIN_IRQ_H_ */
diff --git a/arch/blackfin/include/asm/kmap_types.h b/arch/blackfin/include/asm/kmap_types.h
index 0a88622339ee..3575c64af42a 100644
--- a/arch/blackfin/include/asm/kmap_types.h
+++ b/arch/blackfin/include/asm/kmap_types.h
@@ -1,6 +1 @@
1#ifndef _ASM_KMAP_TYPES_H
2#define _ASM_KMAP_TYPES_H
3
4#include <asm-generic/kmap_types.h> #include <asm-generic/kmap_types.h>
5
6#endif
diff --git a/arch/blackfin/include/asm/local.h b/arch/blackfin/include/asm/local.h
index 75afffbc6421..c11c530f74d0 100644
--- a/arch/blackfin/include/asm/local.h
+++ b/arch/blackfin/include/asm/local.h
@@ -1,6 +1 @@
1#ifndef __BLACKFIN_LOCAL_H
2#define __BLACKFIN_LOCAL_H
3
4#include <asm-generic/local.h> #include <asm-generic/local.h>
5
6#endif /* __BLACKFIN_LOCAL_H */
diff --git a/arch/blackfin/include/asm/mman.h b/arch/blackfin/include/asm/mman.h
index b58f5ad3f024..8eebf89f5ab1 100644
--- a/arch/blackfin/include/asm/mman.h
+++ b/arch/blackfin/include/asm/mman.h
@@ -1,43 +1 @@
1#ifndef __BFIN_MMAN_H__ #include <asm-generic/mman.h>
2#define __BFIN_MMAN_H__
3
4#define PROT_READ 0x1 /* page can be read */
5#define PROT_WRITE 0x2 /* page can be written */
6#define PROT_EXEC 0x4 /* page can be executed */
7#define PROT_SEM 0x8 /* page may be used for atomic ops */
8#define PROT_NONE 0x0 /* page can not be accessed */
9#define PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */
10#define PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */
11
12#define MAP_SHARED 0x01 /* Share changes */
13#define MAP_PRIVATE 0x02 /* Changes are private */
14#define MAP_TYPE 0x0f /* Mask for type of mapping */
15#define MAP_FIXED 0x10 /* Interpret addr exactly */
16#define MAP_ANONYMOUS 0x20 /* don't use a file */
17
18#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
19#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
20#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
21#define MAP_LOCKED 0x2000 /* pages are locked */
22#define MAP_NORESERVE 0x4000 /* don't check for reservations */
23#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
24#define MAP_NONBLOCK 0x10000 /* do not block on IO */
25
26#define MS_ASYNC 1 /* sync memory asynchronously */
27#define MS_INVALIDATE 2 /* invalidate the caches */
28#define MS_SYNC 4 /* synchronous memory sync */
29
30#define MCL_CURRENT 1 /* lock all current mappings */
31#define MCL_FUTURE 2 /* lock all future mappings */
32
33#define MADV_NORMAL 0x0 /* default page-in behavior */
34#define MADV_RANDOM 0x1 /* page-in minimum required */
35#define MADV_SEQUENTIAL 0x2 /* read-ahead aggressively */
36#define MADV_WILLNEED 0x3 /* pre-fault pages */
37#define MADV_DONTNEED 0x4 /* discard these pages */
38
39/* compatibility flags */
40#define MAP_ANON MAP_ANONYMOUS
41#define MAP_FILE 0
42
43#endif /* __BFIN_MMAN_H__ */
diff --git a/arch/blackfin/include/asm/msgbuf.h b/arch/blackfin/include/asm/msgbuf.h
index 6fcbe8cd801d..809134c644a6 100644
--- a/arch/blackfin/include/asm/msgbuf.h
+++ b/arch/blackfin/include/asm/msgbuf.h
@@ -1,31 +1 @@
1#ifndef _BFIN_MSGBUF_H #include <asm-generic/msgbuf.h>
2#define _BFIN_MSGBUF_H
3
4/*
5 * The msqid64_ds structure for bfin architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct msqid64_ds {
15 struct ipc64_perm msg_perm;
16 __kernel_time_t msg_stime; /* last msgsnd time */
17 unsigned long __unused1;
18 __kernel_time_t msg_rtime; /* last msgrcv time */
19 unsigned long __unused2;
20 __kernel_time_t msg_ctime; /* last change time */
21 unsigned long __unused3;
22 unsigned long msg_cbytes; /* current number of bytes on queue */
23 unsigned long msg_qnum; /* number of messages in queue */
24 unsigned long msg_qbytes; /* max number of bytes on queue */
25 __kernel_pid_t msg_lspid; /* pid of last msgsnd */
26 __kernel_pid_t msg_lrpid; /* last receive pid */
27 unsigned long __unused4;
28 unsigned long __unused5;
29};
30
31#endif /* _BFIN_MSGBUF_H */
diff --git a/arch/blackfin/include/asm/mutex.h b/arch/blackfin/include/asm/mutex.h
index 5d399256bf06..5cc641c50834 100644
--- a/arch/blackfin/include/asm/mutex.h
+++ b/arch/blackfin/include/asm/mutex.h
@@ -10,7 +10,7 @@
10#define _ASM_MUTEX_H 10#define _ASM_MUTEX_H
11 11
12#ifndef CONFIG_SMP 12#ifndef CONFIG_SMP
13#include <asm-generic/mutex-dec.h> 13#include <asm-generic/mutex.h>
14#else 14#else
15 15
16static inline void 16static inline void
diff --git a/arch/blackfin/include/asm/page.h b/arch/blackfin/include/asm/page.h
index 3ea2016a1d4a..29dcf75c6112 100644
--- a/arch/blackfin/include/asm/page.h
+++ b/arch/blackfin/include/asm/page.h
@@ -1,88 +1,7 @@
1#ifndef _BLACKFIN_PAGE_H 1#ifndef _BLACKFIN_PAGE_H
2#define _BLACKFIN_PAGE_H 2#define _BLACKFIN_PAGE_H
3 3
4/* PAGE_SHIFT determines the page size */ 4#include <asm-generic/page.h>
5#define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)
5 6
6#define PAGE_SHIFT 12
7#ifdef __ASSEMBLY__
8#define PAGE_SIZE (1 << PAGE_SHIFT)
9#else
10#define PAGE_SIZE (1UL << PAGE_SHIFT)
11#endif 7#endif
12#define PAGE_MASK (~(PAGE_SIZE-1))
13
14#include <asm/setup.h>
15
16#ifndef __ASSEMBLY__
17
18#define get_user_page(vaddr) __get_free_page(GFP_KERNEL)
19#define free_user_page(page, addr) free_page(addr)
20
21#define clear_page(page) memset((page), 0, PAGE_SIZE)
22#define copy_page(to,from) memcpy((to), (from), PAGE_SIZE)
23
24#define clear_user_page(page, vaddr,pg) clear_page(page)
25#define copy_user_page(to, from, vaddr,pg) copy_page(to, from)
26
27/*
28 * These are used to make use of C type-checking..
29 */
30typedef struct {
31 unsigned long pte;
32} pte_t;
33typedef struct {
34 unsigned long pmd[16];
35} pmd_t;
36typedef struct {
37 unsigned long pgd;
38} pgd_t;
39typedef struct {
40 unsigned long pgprot;
41} pgprot_t;
42typedef struct page *pgtable_t;
43
44#define pte_val(x) ((x).pte)
45#define pmd_val(x) ((&x)->pmd[0])
46#define pgd_val(x) ((x).pgd)
47#define pgprot_val(x) ((x).pgprot)
48
49#define __pte(x) ((pte_t) { (x) } )
50#define __pmd(x) ((pmd_t) { (x) } )
51#define __pgd(x) ((pgd_t) { (x) } )
52#define __pgprot(x) ((pgprot_t) { (x) } )
53
54extern unsigned long memory_start;
55extern unsigned long memory_end;
56
57#endif /* !__ASSEMBLY__ */
58
59#include <asm/page_offset.h>
60#include <asm/io.h>
61
62#define PAGE_OFFSET (PAGE_OFFSET_RAW)
63
64#ifndef __ASSEMBLY__
65
66#define __pa(vaddr) virt_to_phys((void *)(vaddr))
67#define __va(paddr) phys_to_virt((unsigned long)(paddr))
68
69#define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)
70
71#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
72#define pfn_to_virt(pfn) __va((pfn) << PAGE_SHIFT)
73#define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
74#define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET)
75#define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
76
77#define pfn_to_page(pfn) virt_to_page(pfn_to_virt(pfn))
78#define page_to_pfn(page) virt_to_pfn(page_to_virt(page))
79#define pfn_valid(pfn) ((pfn) < max_mapnr)
80
81#define virt_addr_valid(kaddr) (((void *)(kaddr) >= (void *)PAGE_OFFSET) && \
82 ((void *)(kaddr) < (void *)memory_end))
83
84#include <asm-generic/getorder.h>
85
86#endif /* __ASSEMBLY__ */
87
88#endif /* _BLACKFIN_PAGE_H */
diff --git a/arch/blackfin/include/asm/param.h b/arch/blackfin/include/asm/param.h
index 41564a6347f8..965d45427975 100644
--- a/arch/blackfin/include/asm/param.h
+++ b/arch/blackfin/include/asm/param.h
@@ -1,22 +1 @@
1#ifndef _BLACKFIN_PARAM_H #include <asm-generic/param.h>
2#define _BLACKFIN_PARAM_H
3
4#ifdef __KERNEL__
5#define HZ CONFIG_HZ
6#define USER_HZ 100
7#define CLOCKS_PER_SEC (USER_HZ)
8#endif
9
10#ifndef HZ
11#define HZ 100
12#endif
13
14#define EXEC_PAGESIZE 4096
15
16#ifndef NOGROUP
17#define NOGROUP (-1)
18#endif
19
20#define MAXHOSTNAMELEN 64 /* max length of hostname */
21
22#endif /* _BLACKFIN_PARAM_H */
diff --git a/arch/blackfin/include/asm/percpu.h b/arch/blackfin/include/asm/percpu.h
index c94c7bc88c71..06a959d67234 100644
--- a/arch/blackfin/include/asm/percpu.h
+++ b/arch/blackfin/include/asm/percpu.h
@@ -1,6 +1 @@
1#ifndef __ARCH_BLACKFIN_PERCPU__
2#define __ARCH_BLACKFIN_PERCPU__
3
4#include <asm-generic/percpu.h> #include <asm-generic/percpu.h>
5
6#endif /* __ARCH_BLACKFIN_PERCPU__ */
diff --git a/arch/blackfin/include/asm/pgalloc.h b/arch/blackfin/include/asm/pgalloc.h
index c686e0542fd0..f261cb7dda06 100644
--- a/arch/blackfin/include/asm/pgalloc.h
+++ b/arch/blackfin/include/asm/pgalloc.h
@@ -1,8 +1 @@
1#ifndef _BLACKFIN_PGALLOC_H #include <asm-generic/pgalloc.h>
2#define _BLACKFIN_PGALLOC_H
3
4#include <asm/setup.h>
5
6#define check_pgt_cache() do { } while (0)
7
8#endif /* _BLACKFIN_PGALLOC_H */
diff --git a/arch/blackfin/include/asm/poll.h b/arch/blackfin/include/asm/poll.h
index 94cc2636e0e2..a0556671357b 100644
--- a/arch/blackfin/include/asm/poll.h
+++ b/arch/blackfin/include/asm/poll.h
@@ -1,24 +1,9 @@
1#ifndef __BFIN_POLL_H 1#ifndef __BFIN_POLL_H
2#define __BFIN_POLL_H 2#define __BFIN_POLL_H
3 3
4#define POLLIN 1 4#define POLLWRNORM 4 /* POLLOUT */
5#define POLLPRI 2
6#define POLLOUT 4
7#define POLLERR 8
8#define POLLHUP 16
9#define POLLNVAL 32
10#define POLLRDNORM 64
11#define POLLWRNORM POLLOUT
12#define POLLRDBAND 128
13#define POLLWRBAND 256 5#define POLLWRBAND 256
14#define POLLMSG 0x0400
15#define POLLREMOVE 0x1000
16#define POLLRDHUP 0x2000
17 6
18struct pollfd { 7#include <asm-generic/poll.h>
19 int fd;
20 short events;
21 short revents;
22};
23 8
24#endif /* __BFIN_POLL_H */ 9#endif
diff --git a/arch/blackfin/include/asm/posix_types.h b/arch/blackfin/include/asm/posix_types.h
index 23aa1f8c1bd1..80c9d64eb26c 100644
--- a/arch/blackfin/include/asm/posix_types.h
+++ b/arch/blackfin/include/asm/posix_types.h
@@ -1,61 +1,27 @@
1#ifndef __ARCH_BFIN_POSIX_TYPES_H 1#ifndef __ARCH_BFIN_POSIX_TYPES_H
2#define __ARCH_BFIN_POSIX_TYPES_H 2#define __ARCH_BFIN_POSIX_TYPES_H
3 3
4/*
5 * This file is generally used by user-level software, so you need to
6 * be a little careful about namespace pollution etc. Also, we cannot
7 * assume GCC is being used.
8 */
9
10typedef unsigned long __kernel_ino_t;
11typedef unsigned short __kernel_mode_t; 4typedef unsigned short __kernel_mode_t;
5#define __kernel_mode_t __kernel_mode_t
6
12typedef unsigned short __kernel_nlink_t; 7typedef unsigned short __kernel_nlink_t;
13typedef long __kernel_off_t; 8#define __kernel_nlink_t __kernel_nlink_t
14typedef int __kernel_pid_t; 9
15typedef unsigned int __kernel_ipc_pid_t; 10typedef unsigned int __kernel_ipc_pid_t;
16typedef unsigned int __kernel_uid_t; 11#define __kernel_ipc_pid_t __kernel_ipc_pid_t
17typedef unsigned int __kernel_gid_t; 12
18typedef unsigned long __kernel_size_t; 13typedef unsigned long __kernel_size_t;
19typedef long __kernel_ssize_t; 14typedef long __kernel_ssize_t;
20typedef int __kernel_ptrdiff_t; 15typedef int __kernel_ptrdiff_t;
21typedef long __kernel_time_t; 16#define __kernel_size_t __kernel_size_t
22typedef long __kernel_suseconds_t;
23typedef long __kernel_clock_t;
24typedef int __kernel_timer_t;
25typedef int __kernel_clockid_t;
26typedef int __kernel_daddr_t;
27typedef char *__kernel_caddr_t;
28typedef unsigned short __kernel_uid16_t;
29typedef unsigned short __kernel_gid16_t;
30typedef unsigned int __kernel_uid32_t;
31typedef unsigned int __kernel_gid32_t;
32 17
33typedef unsigned short __kernel_old_uid_t; 18typedef unsigned short __kernel_old_uid_t;
34typedef unsigned short __kernel_old_gid_t; 19typedef unsigned short __kernel_old_gid_t;
35typedef unsigned short __kernel_old_dev_t; 20#define __kernel_old_uid_t __kernel_old_uid_t
36
37#ifdef __GNUC__
38typedef long long __kernel_loff_t;
39#endif
40 21
41typedef struct { 22typedef unsigned short __kernel_old_dev_t;
42 int val[2]; 23#define __kernel_old_dev_t __kernel_old_dev_t
43} __kernel_fsid_t;
44
45#if defined(__KERNEL__)
46
47#undef __FD_SET
48#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
49
50#undef __FD_CLR
51#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
52
53#undef __FD_ISSET
54#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
55
56#undef __FD_ZERO
57#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof(*(fd_set *)fdsetp)))
58 24
59#endif /* defined(__KERNEL__) */ 25#include <asm-generic/posix_types.h>
60 26
61#endif 27#endif
diff --git a/arch/blackfin/include/asm/processor.h b/arch/blackfin/include/asm/processor.h
index 3040415523b2..d0be99be8308 100644
--- a/arch/blackfin/include/asm/processor.h
+++ b/arch/blackfin/include/asm/processor.h
@@ -7,9 +7,8 @@
7 */ 7 */
8#define current_text_addr() ({ __label__ _l; _l: &&_l;}) 8#define current_text_addr() ({ __label__ _l; _l: &&_l;})
9 9
10#include <asm/ptrace.h>
10#include <asm/blackfin.h> 11#include <asm/blackfin.h>
11#include <asm/segment.h>
12#include <linux/compiler.h>
13 12
14static inline unsigned long rdusp(void) 13static inline unsigned long rdusp(void)
15{ 14{
@@ -59,36 +58,8 @@ struct thread_struct {
59 PS_S, 0, 0 \ 58 PS_S, 0, 0 \
60} 59}
61 60
62/* 61extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
63 * Do necessary setup to start up a newly executed thread. 62 unsigned long new_sp);
64 *
65 * pass the data segment into user programs if it exists,
66 * it can't hurt anything as far as I can tell
67 */
68#ifndef CONFIG_SMP
69#define start_thread(_regs, _pc, _usp) \
70do { \
71 set_fs(USER_DS); \
72 (_regs)->pc = (_pc); \
73 if (current->mm) \
74 (_regs)->p5 = current->mm->start_data; \
75 task_thread_info(current)->l1_task_info.stack_start \
76 = (void *)current->mm->context.stack_start; \
77 task_thread_info(current)->l1_task_info.lowest_sp = (void *)(_usp); \
78 memcpy(L1_SCRATCH_TASK_INFO, &task_thread_info(current)->l1_task_info, \
79 sizeof(*L1_SCRATCH_TASK_INFO)); \
80 wrusp(_usp); \
81} while(0)
82#else
83#define start_thread(_regs, _pc, _usp) \
84do { \
85 set_fs(USER_DS); \
86 (_regs)->pc = (_pc); \
87 if (current->mm) \
88 (_regs)->p5 = current->mm->start_data; \
89 wrusp(_usp); \
90} while (0)
91#endif
92 63
93/* Forward declaration, a strange C thing */ 64/* Forward declaration, a strange C thing */
94struct task_struct; 65struct task_struct;
diff --git a/arch/blackfin/include/asm/resource.h b/arch/blackfin/include/asm/resource.h
index 091355ab3495..04bc4db8921b 100644
--- a/arch/blackfin/include/asm/resource.h
+++ b/arch/blackfin/include/asm/resource.h
@@ -1,6 +1 @@
1#ifndef _BFIN_RESOURCE_H
2#define _BFIN_RESOURCE_H
3
4#include <asm-generic/resource.h> #include <asm-generic/resource.h>
5
6#endif /* _BFIN_RESOURCE_H */
diff --git a/arch/blackfin/include/asm/sembuf.h b/arch/blackfin/include/asm/sembuf.h
index 18deb5c7fa5d..7673b83cfef7 100644
--- a/arch/blackfin/include/asm/sembuf.h
+++ b/arch/blackfin/include/asm/sembuf.h
@@ -1,25 +1 @@
1#ifndef _BFIN_SEMBUF_H #include <asm-generic/sembuf.h>
2#define _BFIN_SEMBUF_H
3
4/*
5 * The semid64_ds structure for bfin architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct semid64_ds {
15 struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
16 __kernel_time_t sem_otime; /* last semop time */
17 unsigned long __unused1;
18 __kernel_time_t sem_ctime; /* last change time */
19 unsigned long __unused2;
20 unsigned long sem_nsems; /* no. of semaphores in array */
21 unsigned long __unused3;
22 unsigned long __unused4;
23};
24
25#endif /* _BFIN_SEMBUF_H */
diff --git a/arch/blackfin/include/asm/serial.h b/arch/blackfin/include/asm/serial.h
index 3a47606c858b..94a4a12e3bf2 100644
--- a/arch/blackfin/include/asm/serial.h
+++ b/arch/blackfin/include/asm/serial.h
@@ -1,6 +1,2 @@
1/* 1#include <asm-generic/serial.h>
2 * include/asm-blackfin/serial.h
3 */
4
5#define SERIAL_EXTRA_IRQ_FLAGS IRQF_TRIGGER_HIGH 2#define SERIAL_EXTRA_IRQ_FLAGS IRQF_TRIGGER_HIGH
6#define BASE_BAUD (1843200 / 16)
diff --git a/arch/blackfin/include/asm/setup.h b/arch/blackfin/include/asm/setup.h
index 01c8c6cbe6fc..552df83f1a49 100644
--- a/arch/blackfin/include/asm/setup.h
+++ b/arch/blackfin/include/asm/setup.h
@@ -1,17 +1 @@
1/* #include <asm-generic/setup.h>
2** asm/setup.h -- Definition of the Linux/bfin setup information
3**
4** This file is subject to the terms and conditions of the GNU General Public
5** License. See the file COPYING in the main directory of this archive
6** for more details.
7**
8** Copyright Lineo, Inc 2001 Tony Kou
9**
10*/
11
12#ifndef _BFIN_SETUP_H
13#define _BFIN_SETUP_H
14
15#define COMMAND_LINE_SIZE 512
16
17#endif /* _BFIN_SETUP_H */
diff --git a/arch/blackfin/include/asm/shmbuf.h b/arch/blackfin/include/asm/shmbuf.h
index 612436303e89..83c05fc2de38 100644
--- a/arch/blackfin/include/asm/shmbuf.h
+++ b/arch/blackfin/include/asm/shmbuf.h
@@ -1,42 +1 @@
1#ifndef _BFIN_SHMBUF_H #include <asm-generic/shmbuf.h>
2#define _BFIN_SHMBUF_H
3
4/*
5 * The shmid64_ds structure for bfin architecture.
6 * Note extra padding because this structure is passed back and forth
7 * between kernel and user space.
8 *
9 * Pad space is left for:
10 * - 64-bit time_t to solve y2038 problem
11 * - 2 miscellaneous 32-bit values
12 */
13
14struct shmid64_ds {
15 struct ipc64_perm shm_perm; /* operation perms */
16 size_t shm_segsz; /* size of segment (bytes) */
17 __kernel_time_t shm_atime; /* last attach time */
18 unsigned long __unused1;
19 __kernel_time_t shm_dtime; /* last detach time */
20 unsigned long __unused2;
21 __kernel_time_t shm_ctime; /* last change time */
22 unsigned long __unused3;
23 __kernel_pid_t shm_cpid; /* pid of creator */
24 __kernel_pid_t shm_lpid; /* pid of last operator */
25 unsigned long shm_nattch; /* no. of current attaches */
26 unsigned long __unused4;
27 unsigned long __unused5;
28};
29
30struct shminfo64 {
31 unsigned long shmmax;
32 unsigned long shmmin;
33 unsigned long shmmni;
34 unsigned long shmseg;
35 unsigned long shmall;
36 unsigned long __unused1;
37 unsigned long __unused2;
38 unsigned long __unused3;
39 unsigned long __unused4;
40};
41
42#endif /* _BFIN_SHMBUF_H */
diff --git a/arch/blackfin/include/asm/shmparam.h b/arch/blackfin/include/asm/shmparam.h
index 3c03906b7664..93f30deb95d0 100644
--- a/arch/blackfin/include/asm/shmparam.h
+++ b/arch/blackfin/include/asm/shmparam.h
@@ -1,6 +1 @@
1#ifndef _BFIN_SHMPARAM_H #include <asm-generic/shmparam.h>
2#define _BFIN_SHMPARAM_H
3
4#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
5
6#endif /* _BFIN_SHMPARAM_H */
diff --git a/arch/blackfin/include/asm/signal.h b/arch/blackfin/include/asm/signal.h
index 2eea90794454..77a3bf37b69d 100644
--- a/arch/blackfin/include/asm/signal.h
+++ b/arch/blackfin/include/asm/signal.h
@@ -1,160 +1,7 @@
1#ifndef _BLACKFIN_SIGNAL_H 1#ifndef _BLACKFIN_SIGNAL_H
2#define _BLACKFIN_SIGNAL_H 2#define _BLACKFIN_SIGNAL_H
3 3
4#include <linux/types.h> 4#define SA_RESTORER 0x04000000
5#include <asm-generic/signal.h>
5 6
6/* Avoid too many header ordering problems. */ 7#endif
7struct siginfo;
8
9#ifdef __KERNEL__
10/* Most things should be clean enough to redefine this at will, if care
11 is taken to make libc match. */
12
13#define _NSIG 64
14#define _NSIG_BPW 32
15#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
16
17typedef unsigned long old_sigset_t; /* at least 32 bits */
18
19typedef struct {
20 unsigned long sig[_NSIG_WORDS];
21} sigset_t;
22
23#else
24/* Here we must cater to libcs that poke about in kernel headers. */
25
26#define NSIG 32
27typedef unsigned long sigset_t;
28
29#endif /* __KERNEL__ */
30
31#define SIGHUP 1
32#define SIGINT 2
33#define SIGQUIT 3
34#define SIGILL 4
35#define SIGTRAP 5
36#define SIGABRT 6
37#define SIGIOT 6
38#define SIGBUS 7
39#define SIGFPE 8
40#define SIGKILL 9
41#define SIGUSR1 10
42#define SIGSEGV 11
43#define SIGUSR2 12
44#define SIGPIPE 13
45#define SIGALRM 14
46#define SIGTERM 15
47#define SIGSTKFLT 16
48#define SIGCHLD 17
49#define SIGCONT 18
50#define SIGSTOP 19
51#define SIGTSTP 20
52#define SIGTTIN 21
53#define SIGTTOU 22
54#define SIGURG 23
55#define SIGXCPU 24
56#define SIGXFSZ 25
57#define SIGVTALRM 26
58#define SIGPROF 27
59#define SIGWINCH 28
60#define SIGIO 29
61#define SIGPOLL SIGIO
62/*
63#define SIGLOST 29
64*/
65#define SIGPWR 30
66#define SIGSYS 31
67#define SIGUNUSED 31
68
69/* These should not be considered constants from userland. */
70#define SIGRTMIN 32
71#define SIGRTMAX _NSIG
72
73/*
74 * SA_FLAGS values:
75 *
76 * SA_ONSTACK indicates that a registered stack_t will be used.
77 * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
78 * SA_RESTART flag to get restarting signals (which were the default long ago)
79 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
80 * SA_RESETHAND clears the handler when the signal is delivered.
81 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
82 * SA_NODEFER prevents the current signal from being masked in the handler.
83 *
84 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
85 * Unix names RESETHAND and NODEFER respectively.
86 */
87#define SA_NOCLDSTOP 0x00000001
88#define SA_NOCLDWAIT 0x00000002 /* not supported yet */
89#define SA_SIGINFO 0x00000004
90#define SA_ONSTACK 0x08000000
91#define SA_RESTART 0x10000000
92#define SA_NODEFER 0x40000000
93#define SA_RESETHAND 0x80000000
94
95#define SA_NOMASK SA_NODEFER
96#define SA_ONESHOT SA_RESETHAND
97
98/*
99 * sigaltstack controls
100 */
101#define SS_ONSTACK 1
102#define SS_DISABLE 2
103
104#define MINSIGSTKSZ 2048
105#define SIGSTKSZ 8192
106
107#include <asm-generic/signal-defs.h>
108
109#ifdef __KERNEL__
110struct old_sigaction {
111 __sighandler_t sa_handler;
112 old_sigset_t sa_mask;
113 unsigned long sa_flags;
114 void (*sa_restorer) (void);
115};
116
117struct sigaction {
118 __sighandler_t sa_handler;
119 unsigned long sa_flags;
120 void (*sa_restorer) (void);
121 sigset_t sa_mask; /* mask last for extensibility */
122};
123
124struct k_sigaction {
125 struct sigaction sa;
126};
127#else
128/* Here we must cater to libcs that poke about in kernel headers. */
129
130struct sigaction {
131 union {
132 __sighandler_t _sa_handler;
133 void (*_sa_sigaction) (int, struct siginfo *, void *);
134 } _u;
135 sigset_t sa_mask;
136 unsigned long sa_flags;
137 void (*sa_restorer) (void);
138};
139
140#define sa_handler _u._sa_handler
141#define sa_sigaction _u._sa_sigaction
142
143#endif /* __KERNEL__ */
144
145typedef struct sigaltstack {
146 void __user *ss_sp;
147 int ss_flags;
148 size_t ss_size;
149} stack_t;
150
151#ifdef __KERNEL__
152
153#include <asm/sigcontext.h>
154#undef __HAVE_ARCH_SIG_BITOPS
155
156#define ptrace_signal_deliver(regs, cookie) do { } while (0)
157
158#endif /* __KERNEL__ */
159
160#endif /* _BLACKFIN_SIGNAL_H */
diff --git a/arch/blackfin/include/asm/socket.h b/arch/blackfin/include/asm/socket.h
index fac7fe9e1f8a..6b71384b9d8b 100644
--- a/arch/blackfin/include/asm/socket.h
+++ b/arch/blackfin/include/asm/socket.h
@@ -1,59 +1 @@
1#ifndef _ASM_SOCKET_H #include <asm-generic/socket.h>
2#define _ASM_SOCKET_H
3
4#include <asm/sockios.h>
5
6/* For setsockoptions(2) */
7#define SOL_SOCKET 1
8
9#define SO_DEBUG 1
10#define SO_REUSEADDR 2
11#define SO_TYPE 3
12#define SO_ERROR 4
13#define SO_DONTROUTE 5
14#define SO_BROADCAST 6
15#define SO_SNDBUF 7
16#define SO_RCVBUF 8
17#define SO_SNDBUFFORCE 32
18#define SO_RCVBUFFORCE 33
19#define SO_KEEPALIVE 9
20#define SO_OOBINLINE 10
21#define SO_NO_CHECK 11
22#define SO_PRIORITY 12
23#define SO_LINGER 13
24#define SO_BSDCOMPAT 14
25/* To add :#define SO_REUSEPORT 15 */
26#define SO_PASSCRED 16
27#define SO_PEERCRED 17
28#define SO_RCVLOWAT 18
29#define SO_SNDLOWAT 19
30#define SO_RCVTIMEO 20
31#define SO_SNDTIMEO 21
32
33/* Security levels - as per NRL IPv6 - don't actually do anything */
34#define SO_SECURITY_AUTHENTICATION 22
35#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
36#define SO_SECURITY_ENCRYPTION_NETWORK 24
37
38#define SO_BINDTODEVICE 25
39
40/* Socket filtering */
41#define SO_ATTACH_FILTER 26
42#define SO_DETACH_FILTER 27
43
44#define SO_PEERNAME 28
45#define SO_TIMESTAMP 29
46#define SCM_TIMESTAMP SO_TIMESTAMP
47
48#define SO_ACCEPTCONN 30
49#define SO_PEERSEC 31
50#define SO_PASSSEC 34
51#define SO_TIMESTAMPNS 35
52#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
53
54#define SO_MARK 36
55
56#define SO_TIMESTAMPING 37
57#define SCM_TIMESTAMPING SO_TIMESTAMPING
58
59#endif /* _ASM_SOCKET_H */
diff --git a/arch/blackfin/include/asm/sockios.h b/arch/blackfin/include/asm/sockios.h
index 426b89bfaa8b..def6d4746ee7 100644
--- a/arch/blackfin/include/asm/sockios.h
+++ b/arch/blackfin/include/asm/sockios.h
@@ -1,13 +1 @@
1#ifndef __ARCH_BFIN_SOCKIOS__ #include <asm-generic/sockios.h>
2#define __ARCH_BFIN_SOCKIOS__
3
4/* Socket-level I/O control calls. */
5#define FIOSETOWN 0x8901
6#define SIOCSPGRP 0x8902
7#define FIOGETOWN 0x8903
8#define SIOCGPGRP 0x8904
9#define SIOCATMARK 0x8905
10#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
11#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
12
13#endif /* __ARCH_BFIN_SOCKIOS__ */
diff --git a/arch/blackfin/include/asm/spinlock.h b/arch/blackfin/include/asm/spinlock.h
index 0249ac319476..d6ff4b59fcb1 100644
--- a/arch/blackfin/include/asm/spinlock.h
+++ b/arch/blackfin/include/asm/spinlock.h
@@ -1,6 +1,10 @@
1#ifndef __BFIN_SPINLOCK_H 1#ifndef __BFIN_SPINLOCK_H
2#define __BFIN_SPINLOCK_H 2#define __BFIN_SPINLOCK_H
3 3
4#ifndef CONFIG_SMP
5# include <asm-generic/spinlock.h>
6#else
7
4#include <asm/atomic.h> 8#include <asm/atomic.h>
5 9
6asmlinkage int __raw_spin_is_locked_asm(volatile int *ptr); 10asmlinkage int __raw_spin_is_locked_asm(volatile int *ptr);
@@ -86,4 +90,6 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw)
86#define _raw_read_relax(lock) cpu_relax() 90#define _raw_read_relax(lock) cpu_relax()
87#define _raw_write_relax(lock) cpu_relax() 91#define _raw_write_relax(lock) cpu_relax()
88 92
93#endif
94
89#endif /* !__BFIN_SPINLOCK_H */ 95#endif /* !__BFIN_SPINLOCK_H */
diff --git a/arch/blackfin/include/asm/statfs.h b/arch/blackfin/include/asm/statfs.h
index 350672091ba3..0b91fe198c20 100644
--- a/arch/blackfin/include/asm/statfs.h
+++ b/arch/blackfin/include/asm/statfs.h
@@ -1,6 +1 @@
1#ifndef _BFIN_STATFS_H
2#define _BFIN_STATFS_H
3
4#include <asm-generic/statfs.h> #include <asm-generic/statfs.h>
5
6#endif /* _BFIN_STATFS_H */
diff --git a/arch/blackfin/include/asm/swab.h b/arch/blackfin/include/asm/swab.h
index 6403ad2932eb..d442113de515 100644
--- a/arch/blackfin/include/asm/swab.h
+++ b/arch/blackfin/include/asm/swab.h
@@ -2,11 +2,7 @@
2#define _BLACKFIN_SWAB_H 2#define _BLACKFIN_SWAB_H
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/compiler.h> 5#include <asm-generic/swab.h>
6
7#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
8# define __SWAB_64_THRU_32__
9#endif
10 6
11#ifdef __GNUC__ 7#ifdef __GNUC__
12 8
diff --git a/arch/blackfin/include/asm/termbits.h b/arch/blackfin/include/asm/termbits.h
index f37feb7cf895..3935b106de79 100644
--- a/arch/blackfin/include/asm/termbits.h
+++ b/arch/blackfin/include/asm/termbits.h
@@ -1,198 +1 @@
1#ifndef __ARCH_BFIN_TERMBITS_H__ #include <asm-generic/termbits.h>
2#define __ARCH_BFIN_TERMBITS_H__
3
4#include <linux/posix_types.h>
5
6typedef unsigned char cc_t;
7typedef unsigned int speed_t;
8typedef unsigned int tcflag_t;
9
10#define NCCS 19
11struct termios {
12 tcflag_t c_iflag; /* input mode flags */
13 tcflag_t c_oflag; /* output mode flags */
14 tcflag_t c_cflag; /* control mode flags */
15 tcflag_t c_lflag; /* local mode flags */
16 cc_t c_line; /* line discipline */
17 cc_t c_cc[NCCS]; /* control characters */
18};
19
20struct termios2 {
21 tcflag_t c_iflag; /* input mode flags */
22 tcflag_t c_oflag; /* output mode flags */
23 tcflag_t c_cflag; /* control mode flags */
24 tcflag_t c_lflag; /* local mode flags */
25 cc_t c_line; /* line discipline */
26 cc_t c_cc[NCCS]; /* control characters */
27 speed_t c_ispeed; /* input speed */
28 speed_t c_ospeed; /* output speed */
29};
30
31struct ktermios {
32 tcflag_t c_iflag; /* input mode flags */
33 tcflag_t c_oflag; /* output mode flags */
34 tcflag_t c_cflag; /* control mode flags */
35 tcflag_t c_lflag; /* local mode flags */
36 cc_t c_line; /* line discipline */
37 cc_t c_cc[NCCS]; /* control characters */
38 speed_t c_ispeed; /* input speed */
39 speed_t c_ospeed; /* output speed */
40};
41
42/* c_cc characters */
43#define VINTR 0
44#define VQUIT 1
45#define VERASE 2
46#define VKILL 3
47#define VEOF 4
48#define VTIME 5
49#define VMIN 6
50#define VSWTC 7
51#define VSTART 8
52#define VSTOP 9
53#define VSUSP 10
54#define VEOL 11
55#define VREPRINT 12
56#define VDISCARD 13
57#define VWERASE 14
58#define VLNEXT 15
59#define VEOL2 16
60
61/* c_iflag bits */
62#define IGNBRK 0000001
63#define BRKINT 0000002
64#define IGNPAR 0000004
65#define PARMRK 0000010
66#define INPCK 0000020
67#define ISTRIP 0000040
68#define INLCR 0000100
69#define IGNCR 0000200
70#define ICRNL 0000400
71#define IUCLC 0001000
72#define IXON 0002000
73#define IXANY 0004000
74#define IXOFF 0010000
75#define IMAXBEL 0020000
76#define IUTF8 0040000
77
78/* c_oflag bits */
79#define OPOST 0000001
80#define OLCUC 0000002
81#define ONLCR 0000004
82#define OCRNL 0000010
83#define ONOCR 0000020
84#define ONLRET 0000040
85#define OFILL 0000100
86#define OFDEL 0000200
87#define NLDLY 0000400
88#define NL0 0000000
89#define NL1 0000400
90#define CRDLY 0003000
91#define CR0 0000000
92#define CR1 0001000
93#define CR2 0002000
94#define CR3 0003000
95#define TABDLY 0014000
96#define TAB0 0000000
97#define TAB1 0004000
98#define TAB2 0010000
99#define TAB3 0014000
100#define XTABS 0014000
101#define BSDLY 0020000
102#define BS0 0000000
103#define BS1 0020000
104#define VTDLY 0040000
105#define VT0 0000000
106#define VT1 0040000
107#define FFDLY 0100000
108#define FF0 0000000
109#define FF1 0100000
110
111/* c_cflag bit meaning */
112#define CBAUD 0010017
113#define B0 0000000 /* hang up */
114#define B50 0000001
115#define B75 0000002
116#define B110 0000003
117#define B134 0000004
118#define B150 0000005
119#define B200 0000006
120#define B300 0000007
121#define B600 0000010
122#define B1200 0000011
123#define B1800 0000012
124#define B2400 0000013
125#define B4800 0000014
126#define B9600 0000015
127#define B19200 0000016
128#define B38400 0000017
129#define EXTA B19200
130#define EXTB B38400
131#define CSIZE 0000060
132#define CS5 0000000
133#define CS6 0000020
134#define CS7 0000040
135#define CS8 0000060
136#define CSTOPB 0000100
137#define CREAD 0000200
138#define PARENB 0000400
139#define PARODD 0001000
140#define HUPCL 0002000
141#define CLOCAL 0004000
142#define CBAUDEX 0010000
143#define BOTHER 0010000
144#define B57600 0010001
145#define B115200 0010002
146#define B230400 0010003
147#define B460800 0010004
148#define B500000 0010005
149#define B576000 0010006
150#define B921600 0010007
151#define B1000000 0010010
152#define B1152000 0010011
153#define B1500000 0010012
154#define B2000000 0010013
155#define B2500000 0010014
156#define B3000000 0010015
157#define B3500000 0010016
158#define B4000000 0010017
159#define CIBAUD 002003600000 /* input baud rate */
160#define CMSPAR 010000000000 /* mark or space (stick) parity */
161#define CRTSCTS 020000000000 /* flow control */
162
163#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
164
165/* c_lflag bits */
166#define ISIG 0000001
167#define ICANON 0000002
168#define XCASE 0000004
169#define ECHO 0000010
170#define ECHOE 0000020
171#define ECHOK 0000040
172#define ECHONL 0000100
173#define NOFLSH 0000200
174#define TOSTOP 0000400
175#define ECHOCTL 0001000
176#define ECHOPRT 0002000
177#define ECHOKE 0004000
178#define FLUSHO 0010000
179#define PENDIN 0040000
180#define IEXTEN 0100000
181
182/* tcflow() and TCXONC use these */
183#define TCOOFF 0
184#define TCOON 1
185#define TCIOFF 2
186#define TCION 3
187
188/* tcflush() and TCFLSH use these */
189#define TCIFLUSH 0
190#define TCOFLUSH 1
191#define TCIOFLUSH 2
192
193/* tcsetattr uses these */
194#define TCSANOW 0
195#define TCSADRAIN 1
196#define TCSAFLUSH 2
197
198#endif /* __ARCH_BFIN_TERMBITS_H__ */
diff --git a/arch/blackfin/include/asm/termios.h b/arch/blackfin/include/asm/termios.h
index d50d063c605a..280d78a9d966 100644
--- a/arch/blackfin/include/asm/termios.h
+++ b/arch/blackfin/include/asm/termios.h
@@ -1,94 +1 @@
1#ifndef __BFIN_TERMIOS_H__ #include <asm-generic/termios.h>
2#define __BFIN_TERMIOS_H__
3
4#include <asm/termbits.h>
5#include <asm/ioctls.h>
6
7struct winsize {
8 unsigned short ws_row;
9 unsigned short ws_col;
10 unsigned short ws_xpixel;
11 unsigned short ws_ypixel;
12};
13
14#define NCC 8
15struct termio {
16 unsigned short c_iflag; /* input mode flags */
17 unsigned short c_oflag; /* output mode flags */
18 unsigned short c_cflag; /* control mode flags */
19 unsigned short c_lflag; /* local mode flags */
20 unsigned char c_line; /* line discipline */
21 unsigned char c_cc[NCC]; /* control characters */
22};
23
24/* modem lines */
25#define TIOCM_LE 0x001
26#define TIOCM_DTR 0x002
27#define TIOCM_RTS 0x004
28#define TIOCM_ST 0x008
29#define TIOCM_SR 0x010
30#define TIOCM_CTS 0x020
31#define TIOCM_CAR 0x040
32#define TIOCM_RNG 0x080
33#define TIOCM_DSR 0x100
34#define TIOCM_CD TIOCM_CAR
35#define TIOCM_RI TIOCM_RNG
36#define TIOCM_OUT1 0x2000
37#define TIOCM_OUT2 0x4000
38#define TIOCM_LOOP 0x8000
39
40/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
41
42#ifdef __KERNEL__
43
44/* intr=^C quit=^\ erase=del kill=^U
45 eof=^D vtime=\0 vmin=\1 sxtc=\0
46 start=^Q stop=^S susp=^Z eol=\0
47 reprint=^R discard=^U werase=^W lnext=^V
48 eol2=\0
49*/
50#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
51
52/*
53 * Translate a "termio" structure into a "termios". Ugh.
54 */
55#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
56 unsigned short __tmp; \
57 get_user(__tmp,&(termio)->x); \
58 *(unsigned short *) &(termios)->x = __tmp; \
59}
60
61#define user_termio_to_kernel_termios(termios, termio) \
62({ \
63 SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
64 SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
65 SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
66 SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
67 copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
68})
69
70/*
71 * Translate a "termios" structure into a "termio". Ugh.
72 */
73#define kernel_termios_to_user_termio(termio, termios) \
74({ \
75 put_user((termios)->c_iflag, &(termio)->c_iflag); \
76 put_user((termios)->c_oflag, &(termio)->c_oflag); \
77 put_user((termios)->c_cflag, &(termio)->c_cflag); \
78 put_user((termios)->c_lflag, &(termio)->c_lflag); \
79 put_user((termios)->c_line, &(termio)->c_line); \
80 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
81})
82
83#define user_termios_to_kernel_termios(k, u) \
84 copy_from_user(k, u, sizeof(struct termios2))
85#define kernel_termios_to_user_termios(u, k) \
86 copy_to_user(u, k, sizeof(struct termios2))
87#define user_termios_to_kernel_termios_1(k, u) \
88 copy_from_user(k, u, sizeof(struct termios))
89#define kernel_termios_to_user_termios_1(u, k) \
90 copy_to_user(u, k, sizeof(struct termios))
91
92#endif /* __KERNEL__ */
93
94#endif /* __BFIN_TERMIOS_H__ */
diff --git a/arch/blackfin/include/asm/tlbflush.h b/arch/blackfin/include/asm/tlbflush.h
index 277b400924b8..f1a06c006ed0 100644
--- a/arch/blackfin/include/asm/tlbflush.h
+++ b/arch/blackfin/include/asm/tlbflush.h
@@ -1,56 +1 @@
1#ifndef _BLACKFIN_TLBFLUSH_H #include <asm-generic/tlbflush.h>
2#define _BLACKFIN_TLBFLUSH_H
3
4/*
5 * Copyright (C) 2000 Lineo, David McCullough <davidm@uclinux.org>
6 * Copyright (C) 2000-2002, Greg Ungerer <gerg@snapgear.com>
7 */
8
9#include <asm/setup.h>
10
11/*
12 * flush all user-space atc entries.
13 */
14static inline void __flush_tlb(void)
15{
16 BUG();
17}
18
19static inline void __flush_tlb_one(unsigned long addr)
20{
21 BUG();
22}
23
24#define flush_tlb() __flush_tlb()
25
26/*
27 * flush all atc entries (both kernel and user-space entries).
28 */
29static inline void flush_tlb_all(void)
30{
31 BUG();
32}
33
34static inline void flush_tlb_mm(struct mm_struct *mm)
35{
36 BUG();
37}
38
39static inline void flush_tlb_page(struct vm_area_struct *vma,
40 unsigned long addr)
41{
42 BUG();
43}
44
45static inline void flush_tlb_range(struct mm_struct *mm,
46 unsigned long start, unsigned long end)
47{
48 BUG();
49}
50
51static inline void flush_tlb_kernel_page(unsigned long addr)
52{
53 BUG();
54}
55
56#endif
diff --git a/arch/blackfin/include/asm/topology.h b/arch/blackfin/include/asm/topology.h
index acee23987897..5428f333a02c 100644
--- a/arch/blackfin/include/asm/topology.h
+++ b/arch/blackfin/include/asm/topology.h
@@ -1,6 +1 @@
1#ifndef _ASM_BLACKFIN_TOPOLOGY_H
2#define _ASM_BLACKFIN_TOPOLOGY_H
3
4#include <asm-generic/topology.h> #include <asm-generic/topology.h>
5
6#endif /* _ASM_BLACKFIN_TOPOLOGY_H */
diff --git a/arch/blackfin/include/asm/types.h b/arch/blackfin/include/asm/types.h
index 8441cbc2bf9e..b9e79bc580dd 100644
--- a/arch/blackfin/include/asm/types.h
+++ b/arch/blackfin/include/asm/types.h
@@ -1,36 +1 @@
1#ifndef _BFIN_TYPES_H #include <asm-generic/types.h>
2#define _BFIN_TYPES_H
3
4/*
5 * This file is never included by application software unless
6 * explicitly requested (e.g., via linux/types.h) in which case the
7 * application is Linux specific so (user-) name space pollution is
8 * not a major issue. However, for interoperability, libraries still
9 * need to be careful to avoid a name clashes.
10 */
11#include <asm-generic/int-ll64.h>
12
13#ifndef __ASSEMBLY__
14
15typedef unsigned short umode_t;
16
17#endif /* __ASSEMBLY__ */
18/*
19 * These aren't exported outside the kernel to avoid name space clashes
20 */
21#ifdef __KERNEL__
22
23#define BITS_PER_LONG 32
24
25#ifndef __ASSEMBLY__
26
27/* Dma addresses are 32-bits wide. */
28
29typedef u32 dma_addr_t;
30typedef u64 dma64_addr_t;
31
32#endif /* __ASSEMBLY__ */
33
34#endif /* __KERNEL__ */
35
36#endif /* _BFIN_TYPES_H */
diff --git a/arch/blackfin/include/asm/ucontext.h b/arch/blackfin/include/asm/ucontext.h
index 4a4e3856beba..9bc07b9f30fb 100644
--- a/arch/blackfin/include/asm/ucontext.h
+++ b/arch/blackfin/include/asm/ucontext.h
@@ -1,17 +1 @@
1/** Changes made by Tony Kou Lineo Inc. May 2001 #include <asm-generic/ucontext.h>
2 *
3 * Based on: include/m68knommu/ucontext.h
4 */
5
6#ifndef _BLACKFIN_UCONTEXT_H
7#define _BLACKFIN_UCONTEXT_H
8
9struct ucontext {
10 unsigned long uc_flags; /* the others are necessary */
11 struct ucontext *uc_link;
12 stack_t uc_stack;
13 struct sigcontext uc_mcontext;
14 sigset_t uc_sigmask; /* mask last for extensibility */
15};
16
17#endif /* _BLACKFIN_UCONTEXT_H */
diff --git a/arch/blackfin/include/asm/unaligned.h b/arch/blackfin/include/asm/unaligned.h
index fd8a1d634945..6cecbbb2111f 100644
--- a/arch/blackfin/include/asm/unaligned.h
+++ b/arch/blackfin/include/asm/unaligned.h
@@ -1,11 +1 @@
1#ifndef _ASM_BLACKFIN_UNALIGNED_H #include <asm-generic/unaligned.h>
2#define _ASM_BLACKFIN_UNALIGNED_H
3
4#include <linux/unaligned/le_struct.h>
5#include <linux/unaligned/be_byteshift.h>
6#include <linux/unaligned/generic.h>
7
8#define get_unaligned __get_unaligned_le
9#define put_unaligned __put_unaligned_le
10
11#endif /* _ASM_BLACKFIN_UNALIGNED_H */
diff --git a/arch/blackfin/include/asm/user.h b/arch/blackfin/include/asm/user.h
index afe6a0e1f7ce..4792a60831e4 100644
--- a/arch/blackfin/include/asm/user.h
+++ b/arch/blackfin/include/asm/user.h
@@ -1,89 +1 @@
1#ifndef _BFIN_USER_H #include <asm-generic/user.h>
2#define _BFIN_USER_H
3
4/* Changes by Tony Kou Lineo, Inc. July, 2001
5 *
6 * Based include/asm-m68knommu/user.h
7 *
8 */
9
10/* Core file format: The core file is written in such a way that gdb
11 can understand it and provide useful information to the user (under
12 linux we use the 'trad-core' bfd). There are quite a number of
13 obstacles to being able to view the contents of the floating point
14 registers, and until these are solved you will not be able to view the
15 contents of them. Actually, you can read in the core file and look at
16 the contents of the user struct to find out what the floating point
17 registers contain.
18 The actual file contents are as follows:
19 UPAGE: 1 page consisting of a user struct that tells gdb what is present
20 in the file. Directly after this is a copy of the task_struct, which
21 is currently not used by gdb, but it may come in useful at some point.
22 All of the registers are stored as part of the upage. The upage should
23 always be only one page.
24 DATA: The data area is stored. We use current->end_text to
25 current->brk to pick up all of the user variables, plus any memory
26 that may have been malloced. No attempt is made to determine if a page
27 is demand-zero or if a page is totally unused, we just cover the entire
28 range. All of the addresses are rounded in such a way that an integral
29 number of pages is written.
30 STACK: We need the stack information in order to get a meaningful
31 backtrace. We need to write the data from (esp) to
32 current->start_stack, so we round each of these off in order to be able
33 to write an integer number of pages.
34 The minimum core file size is 3 pages, or 12288 bytes.
35*/
36struct user_bfinfp_struct {
37};
38
39/* This is the old layout of "struct pt_regs" as of Linux 1.x, and
40 is still the layout used by user (the new pt_regs doesn't have
41 all registers). */
42struct user_regs_struct {
43 long r0, r1, r2, r3, r4, r5, r6, r7;
44 long p0, p1, p2, p3, p4, p5, usp, fp;
45 long i0, i1, i2, i3;
46 long l0, l1, l2, l3;
47 long b0, b1, b2, b3;
48 long m0, m1, m2, m3;
49 long a0w, a1w;
50 long a0x, a1x;
51 unsigned long rets;
52 unsigned long astat;
53 unsigned long pc;
54 unsigned long orig_p0;
55};
56
57/* When the kernel dumps core, it starts by dumping the user struct -
58 this will be used by gdb to figure out where the data and stack segments
59 are within the file, and what virtual addresses to use. */
60
61struct user {
62/* We start with the registers, to mimic the way that "memory" is returned
63 from the ptrace(3,...) function. */
64
65 struct user_regs_struct regs; /* Where the registers are actually stored */
66
67/* The rest of this junk is to help gdb figure out what goes where */
68 unsigned long int u_tsize; /* Text segment size (pages). */
69 unsigned long int u_dsize; /* Data segment size (pages). */
70 unsigned long int u_ssize; /* Stack segment size (pages). */
71 unsigned long start_code; /* Starting virtual address of text. */
72 unsigned long start_stack; /* Starting virtual address of stack area.
73 This is actually the bottom of the stack,
74 the top of the stack is always found in the
75 esp register. */
76 long int signal; /* Signal that caused the core dump. */
77 int reserved; /* No longer used */
78 unsigned long u_ar0;
79 /* Used by gdb to help find the values for */
80 /* the registers. */
81 unsigned long magic; /* To uniquely identify a core file */
82 char u_comm[32]; /* User command that was responsible */
83};
84#define NBPG PAGE_SIZE
85#define UPAGES 1
86#define HOST_TEXT_START_ADDR (u.start_code)
87#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
88
89#endif
diff --git a/arch/blackfin/kernel/bfin_ksyms.c b/arch/blackfin/kernel/bfin_ksyms.c
index aa05e638fb7c..ed8392c117ea 100644
--- a/arch/blackfin/kernel/bfin_ksyms.c
+++ b/arch/blackfin/kernel/bfin_ksyms.c
@@ -10,6 +10,7 @@
10#include <linux/uaccess.h> 10#include <linux/uaccess.h>
11 11
12#include <asm/cacheflush.h> 12#include <asm/cacheflush.h>
13#include <asm/io.h>
13 14
14/* Allow people to have their own Blackfin exception handler in a module */ 15/* Allow people to have their own Blackfin exception handler in a module */
15EXPORT_SYMBOL(bfin_return_from_exception); 16EXPORT_SYMBOL(bfin_return_from_exception);
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index 30d0843ed701..3e1d86e456f6 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -160,6 +160,29 @@ pid_t kernel_thread(int (*fn) (void *), void *arg, unsigned long flags)
160} 160}
161EXPORT_SYMBOL(kernel_thread); 161EXPORT_SYMBOL(kernel_thread);
162 162
163/*
164 * Do necessary setup to start up a newly executed thread.
165 *
166 * pass the data segment into user programs if it exists,
167 * it can't hurt anything as far as I can tell
168 */
169void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
170{
171 set_fs(USER_DS);
172 regs->pc = new_ip;
173 if (current->mm)
174 regs->p5 = current->mm->start_data;
175#ifdef CONFIG_SMP
176 task_thread_info(current)->l1_task_info.stack_start =
177 (void *)current->mm->context.stack_start;
178 task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp;
179 memcpy(L1_SCRATCH_TASK_INFO, &task_thread_info(current)->l1_task_info,
180 sizeof(*L1_SCRATCH_TASK_INFO));
181#endif
182 wrusp(new_sp);
183}
184EXPORT_SYMBOL_GPL(start_thread);
185
163void flush_thread(void) 186void flush_thread(void)
164{ 187{
165} 188}
diff --git a/arch/blackfin/mach-common/Makefile b/arch/blackfin/mach-common/Makefile
index 1f3228ed713f..dd8b2dc97f56 100644
--- a/arch/blackfin/mach-common/Makefile
+++ b/arch/blackfin/mach-common/Makefile
@@ -4,7 +4,7 @@
4 4
5obj-y := \ 5obj-y := \
6 cache.o cache-c.o entry.o head.o \ 6 cache.o cache-c.o entry.o head.o \
7 interrupt.o irqpanic.o arch_checks.o ints-priority.o 7 interrupt.o arch_checks.o ints-priority.o
8 8
9obj-$(CONFIG_BFIN_ICACHE_LOCK) += lock.o 9obj-$(CONFIG_BFIN_ICACHE_LOCK) += lock.o
10obj-$(CONFIG_PM) += pm.o dpmc_modes.o 10obj-$(CONFIG_PM) += pm.o dpmc_modes.o
@@ -12,3 +12,4 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq.o
12obj-$(CONFIG_CPU_VOLTAGE) += dpmc.o 12obj-$(CONFIG_CPU_VOLTAGE) += dpmc.o
13obj-$(CONFIG_SMP) += smp.o 13obj-$(CONFIG_SMP) += smp.o
14obj-$(CONFIG_BFIN_KERNEL_CLOCK) += clocks-init.o 14obj-$(CONFIG_BFIN_KERNEL_CLOCK) += clocks-init.o
15obj-$(CONFIG_DEBUG_ICACHE_CHECK) += irqpanic.o
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 351afd0e36d8..af70f09acd55 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -472,7 +472,7 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
472 472
473 if (type == IRQ_TYPE_PROBE) { 473 if (type == IRQ_TYPE_PROBE) {
474 /* only probe unenabled GPIO interrupt lines */ 474 /* only probe unenabled GPIO interrupt lines */
475 if (__test_bit(gpionr, gpio_enabled)) 475 if (test_bit(gpionr, gpio_enabled))
476 return 0; 476 return 0;
477 type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING; 477 type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
478 } 478 }
@@ -782,7 +782,7 @@ static int bfin_gpio_irq_type(unsigned int irq, unsigned int type)
782 782
783 if (type == IRQ_TYPE_PROBE) { 783 if (type == IRQ_TYPE_PROBE) {
784 /* only probe unenabled GPIO interrupt lines */ 784 /* only probe unenabled GPIO interrupt lines */
785 if (__test_bit(gpionr, gpio_enabled)) 785 if (test_bit(gpionr, gpio_enabled))
786 return 0; 786 return 0;
787 type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING; 787 type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
788 } 788 }
diff --git a/arch/blackfin/mach-common/irqpanic.c b/arch/blackfin/mach-common/irqpanic.c
index 05004df0f78b..883e3241b17e 100644
--- a/arch/blackfin/mach-common/irqpanic.c
+++ b/arch/blackfin/mach-common/irqpanic.c
@@ -30,21 +30,17 @@
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/kernel_stat.h> 31#include <linux/kernel_stat.h>
32#include <linux/sched.h> 32#include <linux/sched.h>
33#include <asm/traps.h>
34#include <asm/blackfin.h> 33#include <asm/blackfin.h>
35 34
36#ifdef CONFIG_DEBUG_ICACHE_CHECK
37#define L1_ICACHE_START 0xffa10000 35#define L1_ICACHE_START 0xffa10000
38#define L1_ICACHE_END 0xffa13fff 36#define L1_ICACHE_END 0xffa13fff
39void irq_panic(int reason, struct pt_regs *regs) __attribute__ ((l1_text));
40#endif
41 37
42/* 38/*
43 * irq_panic - calls panic with string setup 39 * irq_panic - calls panic with string setup
44 */ 40 */
41__attribute__ ((l1_text))
45asmlinkage void irq_panic(int reason, struct pt_regs *regs) 42asmlinkage void irq_panic(int reason, struct pt_regs *regs)
46{ 43{
47#ifdef CONFIG_DEBUG_ICACHE_CHECK
48 unsigned int cmd, tag, ca, cache_hi, cache_lo, *pa; 44 unsigned int cmd, tag, ca, cache_hi, cache_lo, *pa;
49 unsigned short i, j, die; 45 unsigned short i, j, die;
50 unsigned int bad[10][6]; 46 unsigned int bad[10][6];
@@ -126,9 +122,6 @@ asmlinkage void irq_panic(int reason, struct pt_regs *regs)
126 bad[j][3], bad[j][4], bad[j][5]); 122 bad[j][3], bad[j][4], bad[j][5]);
127 } 123 }
128 panic("icache coherency error"); 124 panic("icache coherency error");
129 } else { 125 } else
130 printk(KERN_EMERG "icache checked, and OK\n"); 126 printk(KERN_EMERG "icache checked, and OK\n");
131 }
132#endif
133
134} 127}
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
index d79a902d155a..3b1005185390 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -2,6 +2,23 @@ menu "Kernel hacking"
2 2
3source "lib/Kconfig.debug" 3source "lib/Kconfig.debug"
4 4
5config PPC_DISABLE_WERROR
6 bool "Don't build arch/powerpc code with -Werror"
7 default n
8 help
9 This option tells the compiler NOT to build the code under
10 arch/powerpc with the -Werror flag (which means warnings
11 are treated as errors).
12
13 Only enable this if you are hitting a build failure in the
14 arch/powerpc code caused by a warning, and you don't feel
15 inclined to fix it.
16
17config PPC_WERROR
18 bool
19 depends on !PPC_DISABLE_WERROR
20 default y
21
5config PRINT_STACK_DEPTH 22config PRINT_STACK_DEPTH
6 int "Stack depth to print" if DEBUG_KERNEL 23 int "Stack depth to print" if DEBUG_KERNEL
7 default 64 24 default 64
diff --git a/arch/powerpc/boot/cuboot-85xx.c b/arch/powerpc/boot/cuboot-85xx.c
index 6776a1a29f13..277ba4a79b5a 100644
--- a/arch/powerpc/boot/cuboot-85xx.c
+++ b/arch/powerpc/boot/cuboot-85xx.c
@@ -15,6 +15,7 @@
15#include "cuboot.h" 15#include "cuboot.h"
16 16
17#define TARGET_85xx 17#define TARGET_85xx
18#define TARGET_HAS_ETH3
18#include "ppcboot.h" 19#include "ppcboot.h"
19 20
20static bd_t bd; 21static bd_t bd;
@@ -27,6 +28,7 @@ static void platform_fixups(void)
27 dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); 28 dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr);
28 dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); 29 dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr);
29 dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr); 30 dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr);
31 dt_fixup_mac_address_by_alias("ethernet3", bd.bi_enet3addr);
30 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); 32 dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq);
31 33
32 /* Unfortunately, the specific model number is encoded in the 34 /* Unfortunately, the specific model number is encoded in the
diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts
index 7da84fd7be93..261d10c4534b 100644
--- a/arch/powerpc/boot/dts/asp834x-redboot.dts
+++ b/arch/powerpc/boot/dts/asp834x-redboot.dts
@@ -167,7 +167,7 @@
167 interrupt-parent = <&ipic>; 167 interrupt-parent = <&ipic>;
168 interrupts = <39 0x8>; 168 interrupts = <39 0x8>;
169 phy_type = "ulpi"; 169 phy_type = "ulpi";
170 port1; 170 port0;
171 }; 171 };
172 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 172 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
173 usb@23000 { 173 usb@23000 {
diff --git a/arch/powerpc/boot/dts/gef_sbc610.dts b/arch/powerpc/boot/dts/gef_sbc610.dts
index 217f8aa66725..35a63183eecc 100644
--- a/arch/powerpc/boot/dts/gef_sbc610.dts
+++ b/arch/powerpc/boot/dts/gef_sbc610.dts
@@ -152,6 +152,16 @@
152 interrupt-parent = <&mpic>; 152 interrupt-parent = <&mpic>;
153 dfsrr; 153 dfsrr;
154 154
155 hwmon@48 {
156 compatible = "national,lm92";
157 reg = <0x48>;
158 };
159
160 hwmon@4c {
161 compatible = "adi,adt7461";
162 reg = <0x4c>;
163 };
164
155 rtc@51 { 165 rtc@51 {
156 compatible = "epson,rx8581"; 166 compatible = "epson,rx8581";
157 reg = <0x00000051>; 167 reg = <0x00000051>;
diff --git a/arch/powerpc/boot/dts/kmeter1.dts b/arch/powerpc/boot/dts/kmeter1.dts
new file mode 100644
index 000000000000..167044f7de1d
--- /dev/null
+++ b/arch/powerpc/boot/dts/kmeter1.dts
@@ -0,0 +1,520 @@
1/*
2 * Keymile KMETER1 Device Tree Source
3 *
4 * 2008 DENX Software Engineering GmbH
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12/dts-v1/;
13
14/ {
15 model = "KMETER1";
16 compatible = "keymile,KMETER1";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 ethernet0 = &enet_piggy2;
22 ethernet1 = &enet_estar1;
23 ethernet2 = &enet_estar2;
24 ethernet3 = &enet_eth1;
25 ethernet4 = &enet_eth2;
26 ethernet5 = &enet_eth3;
27 ethernet6 = &enet_eth4;
28 serial0 = &serial0;
29 };
30
31 cpus {
32 #address-cells = <1>;
33 #size-cells = <0>;
34
35 PowerPC,8360@0 {
36 device_type = "cpu";
37 reg = <0x0>;
38 d-cache-line-size = <32>; // 32 bytes
39 i-cache-line-size = <32>; // 32 bytes
40 d-cache-size = <32768>; // L1, 32K
41 i-cache-size = <32768>; // L1, 32K
42 timebase-frequency = <0>; /* Filled in by U-Boot */
43 bus-frequency = <0>; /* Filled in by U-Boot */
44 clock-frequency = <0>; /* Filled in by U-Boot */
45 };
46 };
47
48 memory {
49 device_type = "memory";
50 reg = <0 0>; /* Filled in by U-Boot */
51 };
52
53 soc8360@e0000000 {
54 #address-cells = <1>;
55 #size-cells = <1>;
56 device_type = "soc";
57 compatible = "fsl,mpc8360-immr", "simple-bus";
58 ranges = <0x0 0xe0000000 0x00200000>;
59 reg = <0xe0000000 0x00000200>;
60 bus-frequency = <0>; /* Filled in by U-Boot */
61
62 i2c@3000 {
63 #address-cells = <1>;
64 #size-cells = <0>;
65 cell-index = <0>;
66 compatible = "fsl-i2c";
67 reg = <0x3000 0x100>;
68 interrupts = <14 0x8>;
69 interrupt-parent = <&ipic>;
70 dfsrr;
71 };
72
73 serial0: serial@4500 {
74 cell-index = <0>;
75 device_type = "serial";
76 compatible = "ns16550";
77 reg = <0x4500 0x100>;
78 clock-frequency = <264000000>;
79 interrupts = <9 0x8>;
80 interrupt-parent = <&ipic>;
81 };
82
83 dma@82a8 {
84 #address-cells = <1>;
85 #size-cells = <1>;
86 compatible = "fsl,mpc8360-dma", "fsl,elo-dma";
87 reg = <0x82a8 4>;
88 ranges = <0 0x8100 0x1a8>;
89 interrupt-parent = <&ipic>;
90 interrupts = <71 8>;
91 cell-index = <0>;
92 dma-channel@0 {
93 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
94 reg = <0 0x80>;
95 interrupt-parent = <&ipic>;
96 interrupts = <71 8>;
97 };
98 dma-channel@80 {
99 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
100 reg = <0x80 0x80>;
101 interrupt-parent = <&ipic>;
102 interrupts = <71 8>;
103 };
104 dma-channel@100 {
105 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
106 reg = <0x100 0x80>;
107 interrupt-parent = <&ipic>;
108 interrupts = <71 8>;
109 };
110 dma-channel@180 {
111 compatible = "fsl,mpc8360-dma-channel", "fsl,elo-dma-channel";
112 reg = <0x180 0x28>;
113 interrupt-parent = <&ipic>;
114 interrupts = <71 8>;
115 };
116 };
117
118 ipic: pic@700 {
119 #address-cells = <0>;
120 #interrupt-cells = <2>;
121 compatible = "fsl,pq2pro-pic", "fsl,ipic";
122 interrupt-controller;
123 reg = <0x700 0x100>;
124 };
125
126 par_io@1400 {
127 #address-cells = <1>;
128 #size-cells = <0>;
129 reg = <0x1400 0x100>;
130 compatible = "fsl,mpc8360-par_io";
131 num-ports = <7>;
132
133 pio_ucc1: ucc_pin@0 {
134 reg = <0>;
135
136 pio-map = <
137 /* port pin dir open_drain assignment has_irq */
138 0 1 3 0 2 0 /* MDIO */
139 0 2 1 0 1 0 /* MDC */
140
141 0 3 1 0 1 0 /* TxD0 */
142 0 4 1 0 1 0 /* TxD1 */
143 0 5 1 0 1 0 /* TxD2 */
144 0 6 1 0 1 0 /* TxD3 */
145 0 9 2 0 1 0 /* RxD0 */
146 0 10 2 0 1 0 /* RxD1 */
147 0 11 2 0 1 0 /* RxD2 */
148 0 12 2 0 1 0 /* RxD3 */
149 0 7 1 0 1 0 /* TX_EN */
150 0 8 1 0 1 0 /* TX_ER */
151 0 15 2 0 1 0 /* RX_DV */
152 0 16 2 0 1 0 /* RX_ER */
153 0 0 2 0 1 0 /* RX_CLK */
154 2 9 1 0 3 0 /* GTX_CLK - CLK10 */
155 2 8 2 0 1 0 /* GTX125 - CLK9 */
156 >;
157 };
158
159 pio_ucc2: ucc_pin@1 {
160 reg = <1>;
161
162 pio-map = <
163 /* port pin dir open_drain assignment has_irq */
164 0 1 3 0 2 0 /* MDIO */
165 0 2 1 0 1 0 /* MDC */
166
167 0 17 1 0 1 0 /* TxD0 */
168 0 18 1 0 1 0 /* TxD1 */
169 0 19 1 0 1 0 /* TxD2 */
170 0 20 1 0 1 0 /* TxD3 */
171 0 23 2 0 1 0 /* RxD0 */
172 0 24 2 0 1 0 /* RxD1 */
173 0 25 2 0 1 0 /* RxD2 */
174 0 26 2 0 1 0 /* RxD3 */
175 0 21 1 0 1 0 /* TX_EN */
176 0 22 1 0 1 0 /* TX_ER */
177 0 29 2 0 1 0 /* RX_DV */
178 0 30 2 0 1 0 /* RX_ER */
179 0 31 2 0 1 0 /* RX_CLK */
180 2 2 1 0 2 0 /* GTX_CLK - CLK3 */
181 2 3 2 0 1 0 /* GTX125 - CLK4 */
182 >;
183 };
184
185 pio_ucc4: ucc_pin@3 {
186 reg = <3>;
187
188 pio-map = <
189 /* port pin dir open_drain assignment has_irq */
190 0 1 3 0 2 0 /* MDIO */
191 0 2 1 0 1 0 /* MDC */
192
193 1 14 1 0 1 0 /* TxD0 (PB14, out, f1) */
194 1 15 1 0 1 0 /* TxD1 (PB15, out, f1) */
195 1 20 2 0 1 0 /* RxD0 (PB20, in, f1) */
196 1 21 2 0 1 0 /* RxD1 (PB21, in, f1) */
197 1 18 1 0 1 0 /* TX_EN (PB18, out, f1) */
198 1 26 2 0 1 0 /* RX_DV (PB26, in, f1) */
199 1 27 2 0 1 0 /* RX_ER (PB27, in, f1) */
200
201 2 16 2 0 1 0 /* UCC4_RMII_CLK (CLK17) */
202 >;
203 };
204
205 pio_ucc5: ucc_pin@4 {
206 reg = <4>;
207
208 pio-map = <
209 /* port pin dir open_drain assignment has_irq */
210 0 1 3 0 2 0 /* MDIO */
211 0 2 1 0 1 0 /* MDC */
212
213 3 0 1 0 1 0 /* TxD0 (PD0, out, f1) */
214 3 1 1 0 1 0 /* TxD1 (PD1, out, f1) */
215 3 6 2 0 1 0 /* RxD0 (PD6, in, f1) */
216 3 7 2 0 1 0 /* RxD1 (PD7, in, f1) */
217 3 4 1 0 1 0 /* TX_EN (PD4, out, f1) */
218 3 12 2 0 1 0 /* RX_DV (PD12, in, f1) */
219 3 13 2 0 1 0 /* RX_ER (PD13, in, f1) */
220 >;
221 };
222
223 pio_ucc6: ucc_pin@5 {
224 reg = <5>;
225
226 pio-map = <
227 /* port pin dir open_drain assignment has_irq */
228 0 1 3 0 2 0 /* MDIO */
229 0 2 1 0 1 0 /* MDC */
230
231 3 14 1 0 1 0 /* TxD0 (PD14, out, f1) */
232 3 15 1 0 1 0 /* TxD1 (PD15, out, f1) */
233 3 20 2 0 1 0 /* RxD0 (PD20, in, f1) */
234 3 21 2 0 1 0 /* RxD1 (PD21, in, f1) */
235 3 18 1 0 1 0 /* TX_EN (PD18, out, f1) */
236 3 26 2 0 1 0 /* RX_DV (PD26, in, f1) */
237 3 27 2 0 1 0 /* RX_ER (PD27, in, f1) */
238 >;
239 };
240
241 pio_ucc7: ucc_pin@6 {
242 reg = <6>;
243
244 pio-map = <
245 /* port pin dir open_drain assignment has_irq */
246 0 1 3 0 2 0 /* MDIO */
247 0 2 1 0 1 0 /* MDC */
248
249 4 0 1 0 1 0 /* TxD0 (PE0, out, f1) */
250 4 1 1 0 1 0 /* TxD1 (PE1, out, f1) */
251 4 6 2 0 1 0 /* RxD0 (PE6, in, f1) */
252 4 7 2 0 1 0 /* RxD1 (PE7, in, f1) */
253 4 4 1 0 1 0 /* TX_EN (PE4, out, f1) */
254 4 12 2 0 1 0 /* RX_DV (PE12, in, f1) */
255 4 13 2 0 1 0 /* RX_ER (PE13, in, f1) */
256 >;
257 };
258
259 pio_ucc8: ucc_pin@7 {
260 reg = <7>;
261
262 pio-map = <
263 /* port pin dir open_drain assignment has_irq */
264 0 1 3 0 2 0 /* MDIO */
265 0 2 1 0 1 0 /* MDC */
266
267 4 14 1 0 2 0 /* TxD0 (PE14, out, f2) */
268 4 15 1 0 1 0 /* TxD1 (PE15, out, f1) */
269 4 20 2 0 1 0 /* RxD0 (PE20, in, f1) */
270 4 21 2 0 1 0 /* RxD1 (PE21, in, f1) */
271 4 18 1 0 1 0 /* TX_EN (PE18, out, f1) */
272 4 26 2 0 1 0 /* RX_DV (PE26, in, f1) */
273 4 27 2 0 1 0 /* RX_ER (PE27, in, f1) */
274
275 2 15 2 0 1 0 /* UCCx_RMII_CLK (CLK16) */
276 >;
277 };
278
279 };
280
281 qe@100000 {
282 #address-cells = <1>;
283 #size-cells = <1>;
284 compatible = "fsl,qe";
285 ranges = <0x0 0x100000 0x100000>;
286 reg = <0x100000 0x480>;
287 clock-frequency = <0>; /* Filled in by U-Boot */
288 brg-frequency = <0>; /* Filled in by U-Boot */
289 bus-frequency = <0>; /* Filled in by U-Boot */
290
291 muram@10000 {
292 #address-cells = <1>;
293 #size-cells = <1>;
294 compatible = "fsl,qe-muram", "fsl,cpm-muram";
295 ranges = <0x0 0x00010000 0x0000c000>;
296
297 data-only@0 {
298 compatible = "fsl,qe-muram-data",
299 "fsl,cpm-muram-data";
300 reg = <0x0 0xc000>;
301 };
302 };
303
304 /* ESTAR-1 (UCC1, MDIO 0x10, RGMII) */
305 enet_estar1: ucc@2000 {
306 device_type = "network";
307 compatible = "ucc_geth";
308 cell-index = <1>;
309 reg = <0x2000 0x200>;
310 interrupts = <32>;
311 interrupt-parent = <&qeic>;
312 local-mac-address = [ 00 00 00 00 00 00 ];
313 rx-clock-name = "none";
314 tx-clock-name = "clk9";
315 phy-handle = <&phy_estar1>;
316 phy-connection-type = "rgmii-id";
317 pio-handle = <&pio_ucc1>;
318 };
319
320 /* ESTAR-2 (UCC2, MDIO 0x11, RGMII) */
321 enet_estar2: ucc@3000 {
322 device_type = "network";
323 compatible = "ucc_geth";
324 cell-index = <2>;
325 reg = <0x3000 0x200>;
326 interrupts = <33>;
327 interrupt-parent = <&qeic>;
328 local-mac-address = [ 00 00 00 00 00 00 ];
329 rx-clock-name = "none";
330 tx-clock-name = "clk4";
331 phy-handle = <&phy_estar2>;
332 phy-connection-type = "rgmii-id";
333 pio-handle = <&pio_ucc2>;
334 };
335
336 /* Piggy2 (UCC4, MDIO 0x00, RMII) */
337 enet_piggy2: ucc@3200 {
338 device_type = "network";
339 compatible = "ucc_geth";
340 cell-index = <4>;
341 reg = <0x3200 0x200>;
342 interrupts = <35>;
343 interrupt-parent = <&qeic>;
344 local-mac-address = [ 00 00 00 00 00 00 ];
345 rx-clock-name = "none";
346 tx-clock-name = "clk17";
347 phy-handle = <&phy_piggy2>;
348 phy-connection-type = "rmii";
349 pio-handle = <&pio_ucc4>;
350 };
351
352 /* Eth-1 (UCC5, MDIO 0x08, RMII) */
353 enet_eth1: ucc@2400 {
354 device_type = "network";
355 compatible = "ucc_geth";
356 cell-index = <5>;
357 reg = <0x2400 0x200>;
358 interrupts = <40>;
359 interrupt-parent = <&qeic>;
360 local-mac-address = [ 00 00 00 00 00 00 ];
361 rx-clock-name = "none";
362 tx-clock-name = "clk16";
363 phy-handle = <&phy_eth1>;
364 phy-connection-type = "rmii";
365 pio-handle = <&pio_ucc5>;
366 };
367
368 /* Eth-2 (UCC6, MDIO 0x09, RMII) */
369 enet_eth2: ucc@3400 {
370 device_type = "network";
371 compatible = "ucc_geth";
372 cell-index = <6>;
373 reg = <0x3400 0x200>;
374 interrupts = <41>;
375 interrupt-parent = <&qeic>;
376 local-mac-address = [ 00 00 00 00 00 00 ];
377 rx-clock-name = "none";
378 tx-clock-name = "clk16";
379 phy-handle = <&phy_eth2>;
380 phy-connection-type = "rmii";
381 pio-handle = <&pio_ucc6>;
382 };
383
384 /* Eth-3 (UCC7, MDIO 0x0a, RMII) */
385 enet_eth3: ucc@2600 {
386 device_type = "network";
387 compatible = "ucc_geth";
388 cell-index = <7>;
389 reg = <0x2600 0x200>;
390 interrupts = <42>;
391 interrupt-parent = <&qeic>;
392 local-mac-address = [ 00 00 00 00 00 00 ];
393 rx-clock-name = "none";
394 tx-clock-name = "clk16";
395 phy-handle = <&phy_eth3>;
396 phy-connection-type = "rmii";
397 pio-handle = <&pio_ucc7>;
398 };
399
400 /* Eth-4 (UCC8, MDIO 0x0b, RMII) */
401 enet_eth4: ucc@3600 {
402 device_type = "network";
403 compatible = "ucc_geth";
404 cell-index = <8>;
405 reg = <0x3600 0x200>;
406 interrupts = <43>;
407 interrupt-parent = <&qeic>;
408 local-mac-address = [ 00 00 00 00 00 00 ];
409 rx-clock-name = "none";
410 tx-clock-name = "clk16";
411 phy-handle = <&phy_eth4>;
412 phy-connection-type = "rmii";
413 pio-handle = <&pio_ucc8>;
414 };
415
416 mdio@3320 {
417 #address-cells = <1>;
418 #size-cells = <0>;
419 reg = <0x3320 0x18>;
420 compatible = "fsl,ucc-mdio";
421
422 /* Piggy2 (UCC4, MDIO 0x00, RMII) */
423 phy_piggy2: ethernet-phy@00 {
424 reg = <0x0>;
425 };
426
427 /* Eth-1 (UCC5, MDIO 0x08, RMII) */
428 phy_eth1: ethernet-phy@08 {
429 reg = <0x08>;
430 };
431
432 /* Eth-2 (UCC6, MDIO 0x09, RMII) */
433 phy_eth2: ethernet-phy@09 {
434 reg = <0x09>;
435 };
436
437 /* Eth-3 (UCC7, MDIO 0x0a, RMII) */
438 phy_eth3: ethernet-phy@0a {
439 reg = <0x0a>;
440 };
441
442 /* Eth-4 (UCC8, MDIO 0x0b, RMII) */
443 phy_eth4: ethernet-phy@0b {
444 reg = <0x0b>;
445 };
446
447 /* ESTAR-1 (UCC1, MDIO 0x10, RGMII) */
448 phy_estar1: ethernet-phy@10 {
449 interrupt-parent = <&ipic>;
450 interrupts = <17 0x8>;
451 reg = <0x10>;
452 };
453
454 /* ESTAR-2 (UCC2, MDIO 0x11, RGMII) */
455 phy_estar2: ethernet-phy@11 {
456 interrupt-parent = <&ipic>;
457 interrupts = <18 0x8>;
458 reg = <0x11>;
459 };
460 };
461
462 qeic: interrupt-controller@80 {
463 interrupt-controller;
464 compatible = "fsl,qe-ic";
465 #address-cells = <0>;
466 #interrupt-cells = <1>;
467 reg = <0x80 0x80>;
468 interrupts = <32 8 33 8>;
469 interrupt-parent = <&ipic>;
470 };
471 };
472 };
473
474 localbus@e0005000 {
475 #address-cells = <2>;
476 #size-cells = <1>;
477 compatible = "fsl,mpc8360-localbus", "fsl,pq2pro-localbus",
478 "simple-bus";
479 reg = <0xe0005000 0xd8>;
480 ranges = <0 0 0xf0000000 0x04000000>; /* Filled in by U-Boot */
481
482 flash@f0000000,0 {
483 compatible = "cfi-flash";
484 /*
485 * The Intel P30 chip has 2 non-identical chips on
486 * one die, so we need to define 2 seperate regions
487 * that are scanned by physmap_of independantly.
488 */
489 reg = <0 0x00000000 0x02000000
490 0 0x02000000 0x02000000>; /* Filled in by U-Boot */
491 bank-width = <2>;
492 #address-cells = <1>;
493 #size-cells = <1>;
494 partition@0 {
495 label = "u-boot";
496 reg = <0 0x40000>;
497 };
498 partition@40000 {
499 label = "env";
500 reg = <0x40000 0x40000>;
501 };
502 partition@80000 {
503 label = "dtb";
504 reg = <0x80000 0x20000>;
505 };
506 partition@a0000 {
507 label = "kernel";
508 reg = <0xa0000 0x300000>;
509 };
510 partition@3a0000 {
511 label = "ramdisk";
512 reg = <0x3a0000 0x800000>;
513 };
514 partition@ba0000 {
515 label = "user";
516 reg = <0xba0000 0x3460000>;
517 };
518 };
519 };
520};
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
index 2a1929acaabd..60f332778e41 100644
--- a/arch/powerpc/boot/dts/mpc8272ads.dts
+++ b/arch/powerpc/boot/dts/mpc8272ads.dts
@@ -17,6 +17,13 @@
17 #address-cells = <1>; 17 #address-cells = <1>;
18 #size-cells = <1>; 18 #size-cells = <1>;
19 19
20 aliases {
21 ethernet0 = &eth0;
22 ethernet1 = &eth1;
23 serial0 = &scc1;
24 serial1 = &scc4;
25 };
26
20 cpus { 27 cpus {
21 #address-cells = <1>; 28 #address-cells = <1>;
22 #size-cells = <0>; 29 #size-cells = <0>;
@@ -46,13 +53,13 @@
46 #size-cells = <1>; 53 #size-cells = <1>;
47 reg = <0xf0010100 0x40>; 54 reg = <0xf0010100 0x40>;
48 55
49 ranges = <0x0 0x0 0xfe000000 0x2000000 56 ranges = <0x0 0x0 0xff800000 0x00800000
50 0x1 0x0 0xf4500000 0x8000 57 0x1 0x0 0xf4500000 0x8000
51 0x3 0x0 0xf8200000 0x8000>; 58 0x3 0x0 0xf8200000 0x8000>;
52 59
53 flash@0,0 { 60 flash@0,0 {
54 compatible = "jedec-flash"; 61 compatible = "jedec-flash";
55 reg = <0x0 0x0 0x2000000>; 62 reg = <0x0 0x0 0x00800000>;
56 bank-width = <4>; 63 bank-width = <4>;
57 device-width = <1>; 64 device-width = <1>;
58 }; 65 };
@@ -144,7 +151,7 @@
144 reg = <0x119f0 0x10 0x115f0 0x10>; 151 reg = <0x119f0 0x10 0x115f0 0x10>;
145 }; 152 };
146 153
147 serial@11a00 { 154 scc1: serial@11a00 {
148 device_type = "serial"; 155 device_type = "serial";
149 compatible = "fsl,mpc8272-scc-uart", 156 compatible = "fsl,mpc8272-scc-uart",
150 "fsl,cpm2-scc-uart"; 157 "fsl,cpm2-scc-uart";
@@ -155,7 +162,7 @@
155 fsl,cpm-command = <0x800000>; 162 fsl,cpm-command = <0x800000>;
156 }; 163 };
157 164
158 serial@11a60 { 165 scc4: serial@11a60 {
159 device_type = "serial"; 166 device_type = "serial";
160 compatible = "fsl,mpc8272-scc-uart", 167 compatible = "fsl,mpc8272-scc-uart",
161 "fsl,cpm2-scc-uart"; 168 "fsl,cpm2-scc-uart";
@@ -192,7 +199,7 @@
192 }; 199 };
193 }; 200 };
194 201
195 ethernet@11300 { 202 eth0: ethernet@11300 {
196 device_type = "network"; 203 device_type = "network";
197 compatible = "fsl,mpc8272-fcc-enet", 204 compatible = "fsl,mpc8272-fcc-enet",
198 "fsl,cpm2-fcc-enet"; 205 "fsl,cpm2-fcc-enet";
@@ -205,7 +212,7 @@
205 fsl,cpm-command = <0x12000300>; 212 fsl,cpm-command = <0x12000300>;
206 }; 213 };
207 214
208 ethernet@11320 { 215 eth1: ethernet@11320 {
209 device_type = "network"; 216 device_type = "network";
210 compatible = "fsl,mpc8272-fcc-enet", 217 compatible = "fsl,mpc8272-fcc-enet",
211 "fsl,cpm2-fcc-enet"; 218 "fsl,cpm2-fcc-enet";
diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts
index 3f4c5fb988a0..32e10f588c1d 100644
--- a/arch/powerpc/boot/dts/mpc8315erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8315erdb.dts
@@ -322,6 +322,21 @@
322 reg = <0x700 0x100>; 322 reg = <0x700 0x100>;
323 device_type = "ipic"; 323 device_type = "ipic";
324 }; 324 };
325
326 ipic-msi@7c0 {
327 compatible = "fsl,ipic-msi";
328 reg = <0x7c0 0x40>;
329 msi-available-ranges = <0 0x100>;
330 interrupts = <0x43 0x8
331 0x4 0x8
332 0x51 0x8
333 0x52 0x8
334 0x56 0x8
335 0x57 0x8
336 0x58 0x8
337 0x59 0x8>;
338 interrupt-parent = < &ipic >;
339 };
325 }; 340 };
326 341
327 pci0: pci@e0008500 { 342 pci0: pci@e0008500 {
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index e3eeaeda9187..feeeb7f9d609 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -156,7 +156,7 @@
156 interrupt-parent = <&ipic>; 156 interrupt-parent = <&ipic>;
157 interrupts = <39 0x8>; 157 interrupts = <39 0x8>;
158 phy_type = "ulpi"; 158 phy_type = "ulpi";
159 port1; 159 port0;
160 }; 160 };
161 161
162 usb@23000 { 162 usb@23000 {
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index a2553a6f9009..230febb9b72f 100644
--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -153,7 +153,7 @@
153 interrupt-parent = <&ipic>; 153 interrupt-parent = <&ipic>;
154 interrupts = <39 0x8>; 154 interrupts = <39 0x8>;
155 phy_type = "ulpi"; 155 phy_type = "ulpi";
156 port1; 156 port0;
157 }; 157 };
158 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 158 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
159 usb@23000 { 159 usb@23000 {
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
index 67bb372c9451..f32c2811c6d9 100644
--- a/arch/powerpc/boot/dts/mpc8377_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -155,7 +155,7 @@
155 }; 155 };
156 156
157 sdhci@2e000 { 157 sdhci@2e000 {
158 compatible = "fsl,mpc8377-esdhc", "fsl,mpc8379-esdhc"; 158 compatible = "fsl,mpc8377-esdhc", "fsl,esdhc";
159 reg = <0x2e000 0x1000>; 159 reg = <0x2e000 0x1000>;
160 interrupts = <42 0x8>; 160 interrupts = <42 0x8>;
161 interrupt-parent = <&ipic>; 161 interrupt-parent = <&ipic>;
diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts
index 053339390c22..224b4f0704b8 100644
--- a/arch/powerpc/boot/dts/mpc8377_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts
@@ -169,7 +169,7 @@
169 }; 169 };
170 170
171 sdhci@2e000 { 171 sdhci@2e000 {
172 compatible = "fsl,mpc8377-esdhc", "fsl,mpc8379-esdhc"; 172 compatible = "fsl,mpc8377-esdhc", "fsl,esdhc";
173 reg = <0x2e000 0x1000>; 173 reg = <0x2e000 0x1000>;
174 interrupts = <42 0x8>; 174 interrupts = <42 0x8>;
175 interrupt-parent = <&ipic>; 175 interrupt-parent = <&ipic>;
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
index a955a577db81..f720ab9af30d 100644
--- a/arch/powerpc/boot/dts/mpc8378_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
@@ -155,7 +155,7 @@
155 }; 155 };
156 156
157 sdhci@2e000 { 157 sdhci@2e000 {
158 compatible = "fsl,mpc8378-esdhc", "fsl,mpc8379-esdhc"; 158 compatible = "fsl,mpc8378-esdhc", "fsl,esdhc";
159 reg = <0x2e000 0x1000>; 159 reg = <0x2e000 0x1000>;
160 interrupts = <42 0x8>; 160 interrupts = <42 0x8>;
161 interrupt-parent = <&ipic>; 161 interrupt-parent = <&ipic>;
diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts
index 5d90e85704c3..474ea2fa3f86 100644
--- a/arch/powerpc/boot/dts/mpc8378_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts
@@ -169,7 +169,7 @@
169 }; 169 };
170 170
171 sdhci@2e000 { 171 sdhci@2e000 {
172 compatible = "fsl,mpc8378-esdhc", "fsl,mpc8379-esdhc"; 172 compatible = "fsl,mpc8378-esdhc", "fsl,esdhc";
173 reg = <0x2e000 0x1000>; 173 reg = <0x2e000 0x1000>;
174 interrupts = <42 0x8>; 174 interrupts = <42 0x8>;
175 interrupt-parent = <&ipic>; 175 interrupt-parent = <&ipic>;
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
index d266ddbfc28d..4fa221fd9bdc 100644
--- a/arch/powerpc/boot/dts/mpc8379_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
@@ -153,7 +153,7 @@
153 }; 153 };
154 154
155 sdhci@2e000 { 155 sdhci@2e000 {
156 compatible = "fsl,mpc8379-esdhc"; 156 compatible = "fsl,mpc8379-esdhc", "fsl,esdhc";
157 reg = <0x2e000 0x1000>; 157 reg = <0x2e000 0x1000>;
158 interrupts = <42 0x8>; 158 interrupts = <42 0x8>;
159 interrupt-parent = <&ipic>; 159 interrupt-parent = <&ipic>;
diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts
index 98ae95bd18f4..d4838af8d379 100644
--- a/arch/powerpc/boot/dts/mpc8379_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts
@@ -167,7 +167,7 @@
167 }; 167 };
168 168
169 sdhci@2e000 { 169 sdhci@2e000 {
170 compatible = "fsl,mpc8379-esdhc"; 170 compatible = "fsl,mpc8379-esdhc", "fsl,esdhc";
171 reg = <0x2e000 0x1000>; 171 reg = <0x2e000 0x1000>;
172 interrupts = <42 0x8>; 172 interrupts = <42 0x8>;
173 interrupt-parent = <&ipic>; 173 interrupt-parent = <&ipic>;
diff --git a/arch/powerpc/boot/dts/mpc8569mds.dts b/arch/powerpc/boot/dts/mpc8569mds.dts
index 39c2927503cf..a8dcb018c4a5 100644
--- a/arch/powerpc/boot/dts/mpc8569mds.dts
+++ b/arch/powerpc/boot/dts/mpc8569mds.dts
@@ -24,6 +24,8 @@
24 ethernet1 = &enet1; 24 ethernet1 = &enet1;
25 ethernet2 = &enet2; 25 ethernet2 = &enet2;
26 ethernet3 = &enet3; 26 ethernet3 = &enet3;
27 ethernet5 = &enet5;
28 ethernet7 = &enet7;
27 pci1 = &pci1; 29 pci1 = &pci1;
28 rapidio0 = &rio0; 30 rapidio0 = &rio0;
29 }; 31 };
@@ -70,8 +72,30 @@
70 #size-cells = <1>; 72 #size-cells = <1>;
71 compatible = "cfi-flash"; 73 compatible = "cfi-flash";
72 reg = <0x0 0x0 0x02000000>; 74 reg = <0x0 0x0 0x02000000>;
73 bank-width = <2>; 75 bank-width = <1>;
74 device-width = <1>; 76 device-width = <1>;
77 partition@0 {
78 label = "ramdisk";
79 reg = <0x00000000 0x01c00000>;
80 };
81 partition@1c00000 {
82 label = "kernel";
83 reg = <0x01c00000 0x002e0000>;
84 };
85 partiton@1ee0000 {
86 label = "dtb";
87 reg = <0x01ee0000 0x00020000>;
88 };
89 partition@1f00000 {
90 label = "firmware";
91 reg = <0x01f00000 0x00080000>;
92 read-only;
93 };
94 partition@1f80000 {
95 label = "u-boot";
96 reg = <0x01f80000 0x00080000>;
97 read-only;
98 };
75 }; 99 };
76 100
77 bcsr@1,0 { 101 bcsr@1,0 {
@@ -466,6 +490,37 @@
466 reg = <0x3>; 490 reg = <0x3>;
467 device_type = "ethernet-phy"; 491 device_type = "ethernet-phy";
468 }; 492 };
493 qe_phy5: ethernet-phy@04 {
494 interrupt-parent = <&mpic>;
495 reg = <0x04>;
496 device_type = "ethernet-phy";
497 };
498 qe_phy7: ethernet-phy@06 {
499 interrupt-parent = <&mpic>;
500 reg = <0x6>;
501 device_type = "ethernet-phy";
502 };
503 };
504 mdio@3520 {
505 #address-cells = <1>;
506 #size-cells = <0>;
507 reg = <0x3520 0x18>;
508 compatible = "fsl,ucc-mdio";
509
510 tbi0: tbi-phy@15 {
511 reg = <0x15>;
512 device_type = "tbi-phy";
513 };
514 };
515 mdio@3720 {
516 #address-cells = <1>;
517 #size-cells = <0>;
518 reg = <0x3720 0x38>;
519 compatible = "fsl,ucc-mdio";
520 tbi1: tbi-phy@17 {
521 reg = <0x17>;
522 device_type = "tbi-phy";
523 };
469 }; 524 };
470 525
471 enet2: ucc@2200 { 526 enet2: ucc@2200 {
@@ -513,6 +568,36 @@
513 phy-connection-type = "rgmii-id"; 568 phy-connection-type = "rgmii-id";
514 }; 569 };
515 570
571 enet5: ucc@3400 {
572 device_type = "network";
573 compatible = "ucc_geth";
574 cell-index = <6>;
575 reg = <0x3400 0x200>;
576 interrupts = <41>;
577 interrupt-parent = <&qeic>;
578 local-mac-address = [ 00 00 00 00 00 00 ];
579 rx-clock-name = "none";
580 tx-clock-name = "none";
581 tbi-handle = <&tbi0>;
582 phy-handle = <&qe_phy5>;
583 phy-connection-type = "sgmii";
584 };
585
586 enet7: ucc@3600 {
587 device_type = "network";
588 compatible = "ucc_geth";
589 cell-index = <8>;
590 reg = <0x3600 0x200>;
591 interrupts = <43>;
592 interrupt-parent = <&qeic>;
593 local-mac-address = [ 00 00 00 00 00 00 ];
594 rx-clock-name = "none";
595 tx-clock-name = "none";
596 tbi-handle = <&tbi1>;
597 phy-handle = <&qe_phy7>;
598 phy-connection-type = "sgmii";
599 };
600
516 muram@10000 { 601 muram@10000 {
517 #address-cells = <1>; 602 #address-cells = <1>;
518 #size-cells = <1>; 603 #size-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
index cfc2c60d1f5f..f468d215f716 100644
--- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts
+++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
@@ -100,8 +100,18 @@
100 }; 100 };
101 101
102 board-control@3,0 { 102 board-control@3,0 {
103 #address-cells = <1>;
104 #size-cells = <1>;
103 compatible = "fsl,fpga-pixis"; 105 compatible = "fsl,fpga-pixis";
104 reg = <3 0 0x20>; 106 reg = <3 0 0x20>;
107 ranges = <0 3 0 0x20>;
108
109 sdcsr_pio: gpio-controller@a {
110 #gpio-cells = <2>;
111 compatible = "fsl,fpga-pixis-gpio-bank";
112 reg = <0xa 1>;
113 gpio-controller;
114 };
105 }; 115 };
106 }; 116 };
107 117
@@ -176,6 +186,28 @@
176 interrupt-parent = <&mpic>; 186 interrupt-parent = <&mpic>;
177 }; 187 };
178 188
189 spi@7000 {
190 #address-cells = <1>;
191 #size-cells = <0>;
192 compatible = "fsl,mpc8610-spi", "fsl,spi";
193 reg = <0x7000 0x40>;
194 cell-index = <0>;
195 interrupts = <59 2>;
196 interrupt-parent = <&mpic>;
197 mode = "cpu";
198 gpios = <&sdcsr_pio 7 0>;
199
200 mmc-slot@0 {
201 compatible = "fsl,mpc8610hpcd-mmc-slot",
202 "mmc-spi-slot";
203 reg = <0>;
204 gpios = <&sdcsr_pio 0 1 /* nCD */
205 &sdcsr_pio 1 0>; /* WP */
206 voltage-ranges = <3300 3300>;
207 spi-max-frequency = <50000000>;
208 };
209 };
210
179 display@2c000 { 211 display@2c000 {
180 compatible = "fsl,diu"; 212 compatible = "fsl,diu";
181 reg = <0x2c000 100>; 213 reg = <0x2c000 100>;
diff --git a/arch/powerpc/boot/dts/pcm030.dts b/arch/powerpc/boot/dts/pcm030.dts
index 895834713894..30bfdc04c6df 100644
--- a/arch/powerpc/boot/dts/pcm030.dts
+++ b/arch/powerpc/boot/dts/pcm030.dts
@@ -258,34 +258,16 @@
258 compatible = "nxp,pcf8563"; 258 compatible = "nxp,pcf8563";
259 reg = <0x51>; 259 reg = <0x51>;
260 }; 260 };
261 /* FIXME: EEPROM */ 261 eeprom@52 {
262 compatible = "catalyst,24c32";
263 reg = <0x52>;
264 };
262 }; 265 };
263 266
264 sram@8000 { 267 sram@8000 {
265 compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram"; 268 compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
266 reg = <0x8000 0x4000>; 269 reg = <0x8000 0x4000>;
267 }; 270 };
268
269 /* This is only an example device to show the usage of gpios. It maps all available
270 * gpios to the "gpio-provider" device.
271 */
272 gpio {
273 compatible = "gpio-provider";
274
275 /* mpc52xx exp.con patchfield */
276 gpios = <&gpio_wkup 0 0 /* GPIO_WKUP_7 11d jp13-3 */
277 &gpio_wkup 1 0 /* GPIO_WKUP_6 14c */
278 &gpio_wkup 6 0 /* PSC2_4 43c x5-11 */
279 &gpio_simple 2 0 /* IRDA_1 24c x7-6 set GPS_PORT_CONFIG[IRDA] = 0 */
280 &gpio_simple 3 0 /* IRDA_0 x8-5 set GPS_PORT_CONFIG[IRDA] = 0 */
281 &gpt2 0 0 /* timer2 12d x4-4 */
282 &gpt3 0 0 /* timer3 13d x6-4 */
283 &gpt4 0 0 /* timer4 61c x2-16 */
284 &gpt5 0 0 /* timer5 44c x7-11 */
285 &gpt6 0 0 /* timer6 60c x8-15 */
286 &gpt7 0 0 /* timer7 36a x17-9 */
287 >;
288 };
289 }; 271 };
290 272
291 pci@f0000d00 { 273 pci@f0000d00 {
diff --git a/arch/powerpc/boot/dts/sbc8349.dts b/arch/powerpc/boot/dts/sbc8349.dts
index 5fb6f6684b0e..2d9fa68f641c 100644
--- a/arch/powerpc/boot/dts/sbc8349.dts
+++ b/arch/powerpc/boot/dts/sbc8349.dts
@@ -144,7 +144,7 @@
144 interrupt-parent = <&ipic>; 144 interrupt-parent = <&ipic>;
145 interrupts = <39 0x8>; 145 interrupts = <39 0x8>;
146 phy_type = "ulpi"; 146 phy_type = "ulpi";
147 port1; 147 port0;
148 }; 148 };
149 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ 149 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
150 usb@23000 { 150 usb@23000 {
diff --git a/arch/powerpc/boot/dts/xcalibur1501.dts b/arch/powerpc/boot/dts/xcalibur1501.dts
new file mode 100644
index 000000000000..ac0a617b4299
--- /dev/null
+++ b/arch/powerpc/boot/dts/xcalibur1501.dts
@@ -0,0 +1,696 @@
1/*
2 * Copyright (C) 2008 Extreme Engineering Solutions, Inc.
3 * Based on MPC8572DS device tree from Freescale Semiconductor, Inc.
4 *
5 * XCalibur1501 6U CompactPCI single-board computer based on MPC8572E
6 *
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13/ {
14 model = "xes,xcalibur1501";
15 compatible = "xes,xcalibur1501", "xes,MPC8572";
16 #address-cells = <2>;
17 #size-cells = <2>;
18
19 aliases {
20 ethernet0 = &enet0;
21 ethernet1 = &enet1;
22 ethernet2 = &enet2;
23 ethernet3 = &enet3;
24 serial0 = &serial0;
25 serial1 = &serial1;
26 pci2 = &pci2;
27 };
28
29 cpus {
30 #address-cells = <1>;
31 #size-cells = <0>;
32
33 PowerPC,8572@0 {
34 device_type = "cpu";
35 reg = <0x0>;
36 d-cache-line-size = <32>; // 32 bytes
37 i-cache-line-size = <32>; // 32 bytes
38 d-cache-size = <0x8000>; // L1, 32K
39 i-cache-size = <0x8000>; // L1, 32K
40 timebase-frequency = <0>;
41 bus-frequency = <0>;
42 clock-frequency = <0>;
43 next-level-cache = <&L2>;
44 };
45
46 PowerPC,8572@1 {
47 device_type = "cpu";
48 reg = <0x1>;
49 d-cache-line-size = <32>; // 32 bytes
50 i-cache-line-size = <32>; // 32 bytes
51 d-cache-size = <0x8000>; // L1, 32K
52 i-cache-size = <0x8000>; // L1, 32K
53 timebase-frequency = <0>;
54 bus-frequency = <0>;
55 clock-frequency = <0>;
56 next-level-cache = <&L2>;
57 };
58 };
59
60 memory {
61 device_type = "memory";
62 reg = <0x0 0x0 0x0 0x0>; // Filled in by U-Boot
63 };
64
65 localbus@ef005000 {
66 #address-cells = <2>;
67 #size-cells = <1>;
68 compatible = "fsl,mpc8572-elbc", "fsl,elbc", "simple-bus";
69 reg = <0 0xef005000 0 0x1000>;
70 interrupts = <19 2>;
71 interrupt-parent = <&mpic>;
72 /* Local bus region mappings */
73 ranges = <0 0 0 0xf8000000 0x8000000 /* CS0: Flash 1 */
74 1 0 0 0xf0000000 0x8000000 /* CS1: Flash 2 */
75 2 0 0 0xef800000 0x40000 /* CS2: NAND CE1 */
76 3 0 0 0xef840000 0x40000 /* CS3: NAND CE2 */
77 4 0 0 0xe9000000 0x100000>; /* CS4: USB */
78
79 nor-boot@0,0 {
80 compatible = "amd,s29gl01gp", "cfi-flash";
81 bank-width = <2>;
82 reg = <0 0 0x8000000>; /* 128MB */
83 #address-cells = <1>;
84 #size-cells = <1>;
85 partition@0 {
86 label = "Primary user space";
87 reg = <0x00000000 0x6f00000>; /* 111 MB */
88 };
89 partition@6f00000 {
90 label = "Primary kernel";
91 reg = <0x6f00000 0x1000000>; /* 16 MB */
92 };
93 partition@7f00000 {
94 label = "Primary DTB";
95 reg = <0x7f00000 0x40000>; /* 256 KB */
96 };
97 partition@7f40000 {
98 label = "Primary U-Boot environment";
99 reg = <0x7f40000 0x40000>; /* 256 KB */
100 };
101 partition@7f80000 {
102 label = "Primary U-Boot";
103 reg = <0x7f80000 0x80000>; /* 512 KB */
104 read-only;
105 };
106 };
107
108 nor-alternate@1,0 {
109 compatible = "amd,s29gl01gp", "cfi-flash";
110 bank-width = <2>;
111 //reg = <0xf0000000 0x08000000>; /* 128MB */
112 reg = <1 0 0x8000000>; /* 128MB */
113 #address-cells = <1>;
114 #size-cells = <1>;
115 partition@0 {
116 label = "Secondary user space";
117 reg = <0x00000000 0x6f00000>; /* 111 MB */
118 };
119 partition@6f00000 {
120 label = "Secondary kernel";
121 reg = <0x6f00000 0x1000000>; /* 16 MB */
122 };
123 partition@7f00000 {
124 label = "Secondary DTB";
125 reg = <0x7f00000 0x40000>; /* 256 KB */
126 };
127 partition@7f40000 {
128 label = "Secondary U-Boot environment";
129 reg = <0x7f40000 0x40000>; /* 256 KB */
130 };
131 partition@7f80000 {
132 label = "Secondary U-Boot";
133 reg = <0x7f80000 0x80000>; /* 512 KB */
134 read-only;
135 };
136 };
137
138 nand@2,0 {
139 #address-cells = <1>;
140 #size-cells = <1>;
141 /*
142 * Actual part could be ST Micro NAND08GW3B2A (1 GB),
143 * Micron MT29F8G08DAA (2x 512 MB), or Micron
144 * MT29F16G08FAA (2x 1 GB), depending on the build
145 * configuration
146 */
147 compatible = "fsl,mpc8572-fcm-nand",
148 "fsl,elbc-fcm-nand";
149 reg = <2 0 0x40000>;
150 /* U-Boot should fix this up if chip size > 1 GB */
151 partition@0 {
152 label = "NAND Filesystem";
153 reg = <0 0x40000000>;
154 };
155 };
156
157 usb@4,0 {
158 compatible = "nxp,usb-isp1761";
159 reg = <4 0 0x100000>;
160 bus-width = <32>;
161 interrupt-parent = <&mpic>;
162 interrupts = <10 1>;
163 };
164 };
165
166 soc8572@ef000000 {
167 #address-cells = <1>;
168 #size-cells = <1>;
169 device_type = "soc";
170 compatible = "fsl,mpc8572-immr", "simple-bus";
171 ranges = <0x0 0 0xef000000 0x100000>;
172 bus-frequency = <0>; // Filled out by uboot.
173
174 ecm-law@0 {
175 compatible = "fsl,ecm-law";
176 reg = <0x0 0x1000>;
177 fsl,num-laws = <12>;
178 };
179
180 ecm@1000 {
181 compatible = "fsl,mpc8572-ecm", "fsl,ecm";
182 reg = <0x1000 0x1000>;
183 interrupts = <17 2>;
184 interrupt-parent = <&mpic>;
185 };
186
187 memory-controller@2000 {
188 compatible = "fsl,mpc8572-memory-controller";
189 reg = <0x2000 0x1000>;
190 interrupt-parent = <&mpic>;
191 interrupts = <18 2>;
192 };
193
194 memory-controller@6000 {
195 compatible = "fsl,mpc8572-memory-controller";
196 reg = <0x6000 0x1000>;
197 interrupt-parent = <&mpic>;
198 interrupts = <18 2>;
199 };
200
201 L2: l2-cache-controller@20000 {
202 compatible = "fsl,mpc8572-l2-cache-controller";
203 reg = <0x20000 0x1000>;
204 cache-line-size = <32>; // 32 bytes
205 cache-size = <0x100000>; // L2, 1M
206 interrupt-parent = <&mpic>;
207 interrupts = <16 2>;
208 };
209
210 i2c@3000 {
211 #address-cells = <1>;
212 #size-cells = <0>;
213 cell-index = <0>;
214 compatible = "fsl-i2c";
215 reg = <0x3000 0x100>;
216 interrupts = <43 2>;
217 interrupt-parent = <&mpic>;
218 dfsrr;
219
220 temp-sensor@48 {
221 compatible = "dallas,ds1631", "dallas,ds1621";
222 reg = <0x48>;
223 };
224
225 temp-sensor@4c {
226 compatible = "adi,adt7461";
227 reg = <0x4c>;
228 };
229
230 cpu-supervisor@51 {
231 compatible = "dallas,ds4510";
232 reg = <0x51>;
233 };
234
235 eeprom@54 {
236 compatible = "atmel,at24c128b";
237 reg = <0x54>;
238 };
239
240 rtc@68 {
241 compatible = "stm,m41t00",
242 "dallas,ds1338";
243 reg = <0x68>;
244 };
245
246 pcie-switch@6a {
247 compatible = "plx,pex8648";
248 reg = <0x6a>;
249 };
250
251 /* On-board signals for VID, flash, serial */
252 gpio1: gpio@18 {
253 compatible = "nxp,pca9557";
254 reg = <0x18>;
255 #gpio-cells = <2>;
256 gpio-controller;
257 polarity = <0x00>;
258 };
259
260 /* PMC0/XMC0 signals */
261 gpio2: gpio@1c {
262 compatible = "nxp,pca9557";
263 reg = <0x1c>;
264 #gpio-cells = <2>;
265 gpio-controller;
266 polarity = <0x00>;
267 };
268
269 /* PMC1/XMC1 signals */
270 gpio3: gpio@1d {
271 compatible = "nxp,pca9557";
272 reg = <0x1d>;
273 #gpio-cells = <2>;
274 gpio-controller;
275 polarity = <0x00>;
276 };
277
278 /* CompactPCI signals (sysen, GA[4:0]) */
279 gpio4: gpio@1e {
280 compatible = "nxp,pca9557";
281 reg = <0x1e>;
282 #gpio-cells = <2>;
283 gpio-controller;
284 polarity = <0x00>;
285 };
286
287 /* CompactPCI J5 GPIO and FAL/DEG/PRST */
288 gpio5: gpio@1f {
289 compatible = "nxp,pca9557";
290 reg = <0x1f>;
291 #gpio-cells = <2>;
292 gpio-controller;
293 polarity = <0x00>;
294 };
295 };
296
297 i2c@3100 {
298 #address-cells = <1>;
299 #size-cells = <0>;
300 cell-index = <1>;
301 compatible = "fsl-i2c";
302 reg = <0x3100 0x100>;
303 interrupts = <43 2>;
304 interrupt-parent = <&mpic>;
305 dfsrr;
306 };
307
308 dma@c300 {
309 #address-cells = <1>;
310 #size-cells = <1>;
311 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
312 reg = <0xc300 0x4>;
313 ranges = <0x0 0xc100 0x200>;
314 cell-index = <1>;
315 dma-channel@0 {
316 compatible = "fsl,mpc8572-dma-channel",
317 "fsl,eloplus-dma-channel";
318 reg = <0x0 0x80>;
319 cell-index = <0>;
320 interrupt-parent = <&mpic>;
321 interrupts = <76 2>;
322 };
323 dma-channel@80 {
324 compatible = "fsl,mpc8572-dma-channel",
325 "fsl,eloplus-dma-channel";
326 reg = <0x80 0x80>;
327 cell-index = <1>;
328 interrupt-parent = <&mpic>;
329 interrupts = <77 2>;
330 };
331 dma-channel@100 {
332 compatible = "fsl,mpc8572-dma-channel",
333 "fsl,eloplus-dma-channel";
334 reg = <0x100 0x80>;
335 cell-index = <2>;
336 interrupt-parent = <&mpic>;
337 interrupts = <78 2>;
338 };
339 dma-channel@180 {
340 compatible = "fsl,mpc8572-dma-channel",
341 "fsl,eloplus-dma-channel";
342 reg = <0x180 0x80>;
343 cell-index = <3>;
344 interrupt-parent = <&mpic>;
345 interrupts = <79 2>;
346 };
347 };
348
349 dma@21300 {
350 #address-cells = <1>;
351 #size-cells = <1>;
352 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
353 reg = <0x21300 0x4>;
354 ranges = <0x0 0x21100 0x200>;
355 cell-index = <0>;
356 dma-channel@0 {
357 compatible = "fsl,mpc8572-dma-channel",
358 "fsl,eloplus-dma-channel";
359 reg = <0x0 0x80>;
360 cell-index = <0>;
361 interrupt-parent = <&mpic>;
362 interrupts = <20 2>;
363 };
364 dma-channel@80 {
365 compatible = "fsl,mpc8572-dma-channel",
366 "fsl,eloplus-dma-channel";
367 reg = <0x80 0x80>;
368 cell-index = <1>;
369 interrupt-parent = <&mpic>;
370 interrupts = <21 2>;
371 };
372 dma-channel@100 {
373 compatible = "fsl,mpc8572-dma-channel",
374 "fsl,eloplus-dma-channel";
375 reg = <0x100 0x80>;
376 cell-index = <2>;
377 interrupt-parent = <&mpic>;
378 interrupts = <22 2>;
379 };
380 dma-channel@180 {
381 compatible = "fsl,mpc8572-dma-channel",
382 "fsl,eloplus-dma-channel";
383 reg = <0x180 0x80>;
384 cell-index = <3>;
385 interrupt-parent = <&mpic>;
386 interrupts = <23 2>;
387 };
388 };
389
390 /* eTSEC 1 front panel 0 */
391 enet0: ethernet@24000 {
392 #address-cells = <1>;
393 #size-cells = <1>;
394 cell-index = <0>;
395 device_type = "network";
396 model = "eTSEC";
397 compatible = "gianfar";
398 reg = <0x24000 0x1000>;
399 ranges = <0x0 0x24000 0x1000>;
400 local-mac-address = [ 00 00 00 00 00 00 ];
401 interrupts = <29 2 30 2 34 2>;
402 interrupt-parent = <&mpic>;
403 tbi-handle = <&tbi0>;
404 phy-handle = <&phy0>;
405 phy-connection-type = "sgmii";
406
407 mdio@520 {
408 #address-cells = <1>;
409 #size-cells = <0>;
410 compatible = "fsl,gianfar-mdio";
411 reg = <0x520 0x20>;
412
413 phy0: ethernet-phy@1 {
414 interrupt-parent = <&mpic>;
415 interrupts = <4 1>;
416 reg = <0x1>;
417 };
418 phy1: ethernet-phy@2 {
419 interrupt-parent = <&mpic>;
420 interrupts = <4 1>;
421 reg = <0x2>;
422 };
423 phy2: ethernet-phy@3 {
424 interrupt-parent = <&mpic>;
425 interrupts = <5 1>;
426 reg = <0x3>;
427 };
428 phy3: ethernet-phy@4 {
429 interrupt-parent = <&mpic>;
430 interrupts = <5 1>;
431 reg = <0x4>;
432 };
433 tbi0: tbi-phy@11 {
434 reg = <0x11>;
435 device_type = "tbi-phy";
436 };
437 };
438 };
439
440 /* eTSEC 2 front panel 1 */
441 enet1: ethernet@25000 {
442 #address-cells = <1>;
443 #size-cells = <1>;
444 cell-index = <1>;
445 device_type = "network";
446 model = "eTSEC";
447 compatible = "gianfar";
448 reg = <0x25000 0x1000>;
449 ranges = <0x0 0x25000 0x1000>;
450 local-mac-address = [ 00 00 00 00 00 00 ];
451 interrupts = <35 2 36 2 40 2>;
452 interrupt-parent = <&mpic>;
453 tbi-handle = <&tbi1>;
454 phy-handle = <&phy1>;
455 phy-connection-type = "sgmii";
456
457 mdio@520 {
458 #address-cells = <1>;
459 #size-cells = <0>;
460 compatible = "fsl,gianfar-tbi";
461 reg = <0x520 0x20>;
462
463 tbi1: tbi-phy@11 {
464 reg = <0x11>;
465 device_type = "tbi-phy";
466 };
467 };
468 };
469
470 /* eTSEC 3 PICMG2.16 backplane port 0 */
471 enet2: ethernet@26000 {
472 #address-cells = <1>;
473 #size-cells = <1>;
474 cell-index = <2>;
475 device_type = "network";
476 model = "eTSEC";
477 compatible = "gianfar";
478 reg = <0x26000 0x1000>;
479 ranges = <0x0 0x26000 0x1000>;
480 local-mac-address = [ 00 00 00 00 00 00 ];
481 interrupts = <31 2 32 2 33 2>;
482 interrupt-parent = <&mpic>;
483 tbi-handle = <&tbi2>;
484 phy-handle = <&phy2>;
485 phy-connection-type = "sgmii";
486
487 mdio@520 {
488 #address-cells = <1>;
489 #size-cells = <0>;
490 compatible = "fsl,gianfar-tbi";
491 reg = <0x520 0x20>;
492
493 tbi2: tbi-phy@11 {
494 reg = <0x11>;
495 device_type = "tbi-phy";
496 };
497 };
498 };
499
500 /* eTSEC 4 PICMG2.16 backplane port 1 */
501 enet3: ethernet@27000 {
502 #address-cells = <1>;
503 #size-cells = <1>;
504 cell-index = <3>;
505 device_type = "network";
506 model = "eTSEC";
507 compatible = "gianfar";
508 reg = <0x27000 0x1000>;
509 ranges = <0x0 0x27000 0x1000>;
510 local-mac-address = [ 00 00 00 00 00 00 ];
511 interrupts = <37 2 38 2 39 2>;
512 interrupt-parent = <&mpic>;
513 tbi-handle = <&tbi3>;
514 phy-handle = <&phy3>;
515 phy-connection-type = "sgmii";
516
517 mdio@520 {
518 #address-cells = <1>;
519 #size-cells = <0>;
520 compatible = "fsl,gianfar-tbi";
521 reg = <0x520 0x20>;
522
523 tbi3: tbi-phy@11 {
524 reg = <0x11>;
525 device_type = "tbi-phy";
526 };
527 };
528 };
529
530 /* UART0 */
531 serial0: serial@4500 {
532 cell-index = <0>;
533 device_type = "serial";
534 compatible = "ns16550";
535 reg = <0x4500 0x100>;
536 clock-frequency = <0>;
537 interrupts = <42 2>;
538 interrupt-parent = <&mpic>;
539 };
540
541 /* UART1 */
542 serial1: serial@4600 {
543 cell-index = <1>;
544 device_type = "serial";
545 compatible = "ns16550";
546 reg = <0x4600 0x100>;
547 clock-frequency = <0>;
548 interrupts = <42 2>;
549 interrupt-parent = <&mpic>;
550 };
551
552 global-utilities@e0000 { //global utilities block
553 compatible = "fsl,mpc8572-guts";
554 reg = <0xe0000 0x1000>;
555 fsl,has-rstcr;
556 };
557
558 msi@41600 {
559 compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
560 reg = <0x41600 0x80>;
561 msi-available-ranges = <0 0x100>;
562 interrupts = <
563 0xe0 0
564 0xe1 0
565 0xe2 0
566 0xe3 0
567 0xe4 0
568 0xe5 0
569 0xe6 0
570 0xe7 0>;
571 interrupt-parent = <&mpic>;
572 };
573
574 crypto@30000 {
575 compatible = "fsl,sec3.0", "fsl,sec2.4", "fsl,sec2.2",
576 "fsl,sec2.1", "fsl,sec2.0";
577 reg = <0x30000 0x10000>;
578 interrupts = <45 2 58 2>;
579 interrupt-parent = <&mpic>;
580 fsl,num-channels = <4>;
581 fsl,channel-fifo-len = <24>;
582 fsl,exec-units-mask = <0x9fe>;
583 fsl,descriptor-types-mask = <0x3ab0ebf>;
584 };
585
586 mpic: pic@40000 {
587 interrupt-controller;
588 #address-cells = <0>;
589 #interrupt-cells = <2>;
590 reg = <0x40000 0x40000>;
591 compatible = "chrp,open-pic";
592 device_type = "open-pic";
593 };
594
595 gpio0: gpio@f000 {
596 compatible = "fsl,mpc8572-gpio";
597 reg = <0xf000 0x1000>;
598 interrupts = <47 2>;
599 interrupt-parent = <&mpic>;
600 #gpio-cells = <2>;
601 gpio-controller;
602 };
603
604 gpio-leds {
605 compatible = "gpio-leds";
606
607 heartbeat {
608 label = "Heartbeat";
609 gpios = <&gpio0 4 1>;
610 linux,default-trigger = "heartbeat";
611 };
612
613 yellow {
614 label = "Yellow";
615 gpios = <&gpio0 5 1>;
616 };
617
618 red {
619 label = "Red";
620 gpios = <&gpio0 6 1>;
621 };
622
623 green {
624 label = "Green";
625 gpios = <&gpio0 7 1>;
626 };
627 };
628
629 /* PME (pattern-matcher) */
630 pme@10000 {
631 compatible = "fsl,mpc8572-pme", "pme8572";
632 reg = <0x10000 0x5000>;
633 interrupts = <57 2 64 2 65 2 66 2 67 2>;
634 interrupt-parent = <&mpic>;
635 };
636
637 tlu@2f000 {
638 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
639 reg = <0x2f000 0x1000>;
640 interupts = <61 2 >;
641 interrupt-parent = <&mpic>;
642 };
643
644 tlu@15000 {
645 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
646 reg = <0x15000 0x1000>;
647 interupts = <75 2>;
648 interrupt-parent = <&mpic>;
649 };
650 };
651
652 /*
653 * PCI Express controller 3 @ ef008000 is not used.
654 * This would have been pci0 on other mpc85xx platforms.
655 *
656 * PCI Express controller 2 @ ef009000 is not used.
657 * This would have been pci1 on other mpc85xx platforms.
658 */
659
660 /* PCI Express controller 1, wired to PEX8648 PCIe switch */
661 pci2: pcie@ef00a000 {
662 compatible = "fsl,mpc8548-pcie";
663 device_type = "pci";
664 #interrupt-cells = <1>;
665 #size-cells = <2>;
666 #address-cells = <3>;
667 reg = <0 0xef00a000 0 0x1000>;
668 bus-range = <0 255>;
669 ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x40000000
670 0x1000000 0x0 0x00000000 0 0xe8000000 0x0 0x10000>;
671 clock-frequency = <33333333>;
672 interrupt-parent = <&mpic>;
673 interrupts = <26 2>;
674 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
675 interrupt-map = <
676 /* IDSEL 0x0 */
677 0x0 0x0 0x0 0x1 &mpic 0x0 0x1
678 0x0 0x0 0x0 0x2 &mpic 0x1 0x1
679 0x0 0x0 0x0 0x3 &mpic 0x2 0x1
680 0x0 0x0 0x0 0x4 &mpic 0x3 0x1
681 >;
682 pcie@0 {
683 reg = <0x0 0x0 0x0 0x0 0x0>;
684 #size-cells = <2>;
685 #address-cells = <3>;
686 device_type = "pci";
687 ranges = <0x2000000 0x0 0x80000000
688 0x2000000 0x0 0x80000000
689 0x0 0x40000000
690
691 0x1000000 0x0 0x0
692 0x1000000 0x0 0x0
693 0x0 0x100000>;
694 };
695 };
696};
diff --git a/arch/powerpc/boot/dts/xpedite5200.dts b/arch/powerpc/boot/dts/xpedite5200.dts
new file mode 100644
index 000000000000..a0cf53fbd55c
--- /dev/null
+++ b/arch/powerpc/boot/dts/xpedite5200.dts
@@ -0,0 +1,466 @@
1/*
2 * Copyright (C) 2009 Extreme Engineering Solutions, Inc.
3 * Based on TQM8548 device tree
4 *
5 * XPedite5200 PrPMC/XMC module based on MPC8548E
6 *
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13
14/ {
15 model = "xes,xpedite5200";
16 compatible = "xes,xpedite5200", "xes,MPC8548";
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 aliases {
21 ethernet0 = &enet0;
22 ethernet1 = &enet1;
23 ethernet2 = &enet2;
24 ethernet3 = &enet3;
25
26 serial0 = &serial0;
27 serial1 = &serial1;
28 pci0 = &pci0;
29 };
30
31 cpus {
32 #address-cells = <1>;
33 #size-cells = <0>;
34
35 PowerPC,8548@0 {
36 device_type = "cpu";
37 reg = <0>;
38 d-cache-line-size = <32>; // 32 bytes
39 i-cache-line-size = <32>; // 32 bytes
40 d-cache-size = <0x8000>; // L1, 32K
41 i-cache-size = <0x8000>; // L1, 32K
42 next-level-cache = <&L2>;
43 };
44 };
45
46 memory {
47 device_type = "memory";
48 reg = <0x0 0x0>; // Filled in by U-Boot
49 };
50
51 soc@ef000000 {
52 #address-cells = <1>;
53 #size-cells = <1>;
54 device_type = "soc";
55 ranges = <0x0 0xef000000 0x100000>;
56 bus-frequency = <0>;
57 compatible = "fsl,mpc8548-immr", "simple-bus";
58
59 ecm-law@0 {
60 compatible = "fsl,ecm-law";
61 reg = <0x0 0x1000>;
62 fsl,num-laws = <12>;
63 };
64
65 ecm@1000 {
66 compatible = "fsl,mpc8548-ecm", "fsl,ecm";
67 reg = <0x1000 0x1000>;
68 interrupts = <17 2>;
69 interrupt-parent = <&mpic>;
70 };
71
72 memory-controller@2000 {
73 compatible = "fsl,mpc8548-memory-controller";
74 reg = <0x2000 0x1000>;
75 interrupt-parent = <&mpic>;
76 interrupts = <18 2>;
77 };
78
79 L2: l2-cache-controller@20000 {
80 compatible = "fsl,mpc8548-l2-cache-controller";
81 reg = <0x20000 0x1000>;
82 cache-line-size = <32>; // 32 bytes
83 cache-size = <0x80000>; // L2, 512K
84 interrupt-parent = <&mpic>;
85 interrupts = <16 2>;
86 };
87
88 /* On-card I2C */
89 i2c@3000 {
90 #address-cells = <1>;
91 #size-cells = <0>;
92 cell-index = <0>;
93 compatible = "fsl-i2c";
94 reg = <0x3000 0x100>;
95 interrupts = <43 2>;
96 interrupt-parent = <&mpic>;
97 dfsrr;
98
99 /*
100 * Board GPIO:
101 * 0: BRD_CFG0 (1: P14 IO present)
102 * 1: BRD_CFG1 (1: FP ethernet present)
103 * 2: BRD_CFG2 (1: XMC IO present)
104 * 3: XMC root complex indicator
105 * 4: Flash boot device indicator
106 * 5: Flash write protect enable
107 * 6: PMC monarch indicator
108 * 7: PMC EREADY
109 */
110 gpio1: gpio@18 {
111 compatible = "nxp,pca9556";
112 reg = <0x18>;
113 #gpio-cells = <2>;
114 gpio-controller;
115 polarity = <0x00>;
116 };
117
118 /* P14 GPIO */
119 gpio2: gpio@19 {
120 compatible = "nxp,pca9556";
121 reg = <0x19>;
122 #gpio-cells = <2>;
123 gpio-controller;
124 polarity = <0x00>;
125 };
126
127 eeprom@50 {
128 compatible = "atmel,at24c16";
129 reg = <0x50>;
130 };
131
132 rtc@68 {
133 compatible = "stm,m41t00",
134 "dallas,ds1338";
135 reg = <0x68>;
136 };
137
138 dtt@48 {
139 compatible = "maxim,max1237";
140 reg = <0x34>;
141 };
142 };
143
144 /* Off-card I2C */
145 i2c@3100 {
146 #address-cells = <1>;
147 #size-cells = <0>;
148 cell-index = <1>;
149 compatible = "fsl-i2c";
150 reg = <0x3100 0x100>;
151 interrupts = <43 2>;
152 interrupt-parent = <&mpic>;
153 dfsrr;
154 };
155
156 dma@21300 {
157 #address-cells = <1>;
158 #size-cells = <1>;
159 compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
160 reg = <0x21300 0x4>;
161 ranges = <0x0 0x21100 0x200>;
162 cell-index = <0>;
163 dma-channel@0 {
164 compatible = "fsl,mpc8548-dma-channel",
165 "fsl,eloplus-dma-channel";
166 reg = <0x0 0x80>;
167 cell-index = <0>;
168 interrupt-parent = <&mpic>;
169 interrupts = <20 2>;
170 };
171 dma-channel@80 {
172 compatible = "fsl,mpc8548-dma-channel",
173 "fsl,eloplus-dma-channel";
174 reg = <0x80 0x80>;
175 cell-index = <1>;
176 interrupt-parent = <&mpic>;
177 interrupts = <21 2>;
178 };
179 dma-channel@100 {
180 compatible = "fsl,mpc8548-dma-channel",
181 "fsl,eloplus-dma-channel";
182 reg = <0x100 0x80>;
183 cell-index = <2>;
184 interrupt-parent = <&mpic>;
185 interrupts = <22 2>;
186 };
187 dma-channel@180 {
188 compatible = "fsl,mpc8548-dma-channel",
189 "fsl,eloplus-dma-channel";
190 reg = <0x180 0x80>;
191 cell-index = <3>;
192 interrupt-parent = <&mpic>;
193 interrupts = <23 2>;
194 };
195 };
196
197 /* eTSEC1: Front panel port 0 */
198 enet0: ethernet@24000 {
199 #address-cells = <1>;
200 #size-cells = <1>;
201 cell-index = <0>;
202 device_type = "network";
203 model = "eTSEC";
204 compatible = "gianfar";
205 reg = <0x24000 0x1000>;
206 ranges = <0x0 0x24000 0x1000>;
207 local-mac-address = [ 00 00 00 00 00 00 ];
208 interrupts = <29 2 30 2 34 2>;
209 interrupt-parent = <&mpic>;
210 tbi-handle = <&tbi0>;
211 phy-handle = <&phy0>;
212
213 mdio@520 {
214 #address-cells = <1>;
215 #size-cells = <0>;
216 compatible = "fsl,gianfar-mdio";
217 reg = <0x520 0x20>;
218
219 phy0: ethernet-phy@1 {
220 interrupt-parent = <&mpic>;
221 interrupts = <8 1>;
222 reg = <0x1>;
223 };
224 phy1: ethernet-phy@2 {
225 interrupt-parent = <&mpic>;
226 interrupts = <8 1>;
227 reg = <0x2>;
228 };
229 phy2: ethernet-phy@3 {
230 interrupt-parent = <&mpic>;
231 interrupts = <8 1>;
232 reg = <0x3>;
233 };
234 phy3: ethernet-phy@4 {
235 interrupt-parent = <&mpic>;
236 interrupts = <8 1>;
237 reg = <0x4>;
238 };
239 tbi0: tbi-phy@11 {
240 reg = <0x11>;
241 device_type = "tbi-phy";
242 };
243 };
244 };
245
246 /* eTSEC2: Front panel port 1 */
247 enet1: ethernet@25000 {
248 #address-cells = <1>;
249 #size-cells = <1>;
250 cell-index = <1>;
251 device_type = "network";
252 model = "eTSEC";
253 compatible = "gianfar";
254 reg = <0x25000 0x1000>;
255 ranges = <0x0 0x25000 0x1000>;
256 local-mac-address = [ 00 00 00 00 00 00 ];
257 interrupts = <35 2 36 2 40 2>;
258 interrupt-parent = <&mpic>;
259 tbi-handle = <&tbi1>;
260 phy-handle = <&phy1>;
261
262 mdio@520 {
263 #address-cells = <1>;
264 #size-cells = <0>;
265 compatible = "fsl,gianfar-tbi";
266 reg = <0x520 0x20>;
267
268 tbi1: tbi-phy@11 {
269 reg = <0x11>;
270 device_type = "tbi-phy";
271 };
272 };
273 };
274
275 /* eTSEC3: Rear panel port 2 */
276 enet2: ethernet@26000 {
277 #address-cells = <1>;
278 #size-cells = <1>;
279 cell-index = <2>;
280 device_type = "network";
281 model = "eTSEC";
282 compatible = "gianfar";
283 reg = <0x26000 0x1000>;
284 ranges = <0x0 0x26000 0x1000>;
285 local-mac-address = [ 00 00 00 00 00 00 ];
286 interrupts = <31 2 32 2 33 2>;
287 interrupt-parent = <&mpic>;
288 tbi-handle = <&tbi2>;
289 phy-handle = <&phy2>;
290
291 mdio@520 {
292 #address-cells = <1>;
293 #size-cells = <0>;
294 compatible = "fsl,gianfar-tbi";
295 reg = <0x520 0x20>;
296
297 tbi2: tbi-phy@11 {
298 reg = <0x11>;
299 device_type = "tbi-phy";
300 };
301 };
302 };
303
304 /* eTSEC4: Rear panel port 3 */
305 enet3: ethernet@27000 {
306 #address-cells = <1>;
307 #size-cells = <1>;
308 cell-index = <3>;
309 device_type = "network";
310 model = "eTSEC";
311 compatible = "gianfar";
312 reg = <0x27000 0x1000>;
313 ranges = <0x0 0x27000 0x1000>;
314 local-mac-address = [ 00 00 00 00 00 00 ];
315 interrupts = <37 2 38 2 39 2>;
316 interrupt-parent = <&mpic>;
317 tbi-handle = <&tbi3>;
318 phy-handle = <&phy3>;
319
320 mdio@520 {
321 #address-cells = <1>;
322 #size-cells = <0>;
323 compatible = "fsl,gianfar-tbi";
324 reg = <0x520 0x20>;
325
326 tbi3: tbi-phy@11 {
327 reg = <0x11>;
328 device_type = "tbi-phy";
329 };
330 };
331 };
332
333 serial0: serial@4500 {
334 cell-index = <0>;
335 device_type = "serial";
336 compatible = "ns16550";
337 reg = <0x4500 0x100>;
338 clock-frequency = <0>;
339 current-speed = <115200>;
340 interrupts = <42 2>;
341 interrupt-parent = <&mpic>;
342 };
343
344 serial1: serial@4600 {
345 cell-index = <1>;
346 device_type = "serial";
347 compatible = "ns16550";
348 reg = <0x4600 0x100>;
349 clock-frequency = <0>;
350 current-speed = <115200>;
351 interrupts = <42 2>;
352 interrupt-parent = <&mpic>;
353 };
354
355 global-utilities@e0000 { // global utilities reg
356 compatible = "fsl,mpc8548-guts";
357 reg = <0xe0000 0x1000>;
358 fsl,has-rstcr;
359 };
360
361 mpic: pic@40000 {
362 interrupt-controller;
363 #address-cells = <0>;
364 #interrupt-cells = <2>;
365 reg = <0x40000 0x40000>;
366 compatible = "chrp,open-pic";
367 device_type = "open-pic";
368 };
369 };
370
371 localbus@ef005000 {
372 compatible = "fsl,mpc8548-localbus", "fsl,pq3-localbus",
373 "simple-bus";
374 #address-cells = <2>;
375 #size-cells = <1>;
376 reg = <0xef005000 0x100>; // BRx, ORx, etc.
377
378 ranges = <
379 0 0x0 0xfc000000 0x04000000 // NOR boot flash
380 1 0x0 0xf8000000 0x04000000 // NOR expansion flash
381 2 0x0 0xef800000 0x00010000 // NAND CE1
382 3 0x0 0xef840000 0x00010000 // NAND CE2
383 >;
384
385 nor-boot@0,0 {
386 #address-cells = <1>;
387 #size-cells = <1>;
388 compatible = "cfi-flash";
389 reg = <0 0x0 0x4000000>;
390 bank-width = <2>;
391
392 partition@0 {
393 label = "Primary OS";
394 reg = <0x00000000 0x180000>;
395 };
396 partition@180000 {
397 label = "Secondary OS";
398 reg = <0x00180000 0x180000>;
399 };
400 partition@300000 {
401 label = "User";
402 reg = <0x00300000 0x3c80000>;
403 };
404 partition@3f80000 {
405 label = "Boot firmware";
406 reg = <0x03f80000 0x80000>;
407 };
408 };
409
410 nor-alternate@1,0 {
411 #address-cells = <1>;
412 #size-cells = <1>;
413 compatible = "cfi-flash";
414 reg = <1 0x0 0x4000000>;
415 bank-width = <2>;
416
417 partition@0 {
418 label = "Filesystem";
419 reg = <0x00000000 0x3f80000>;
420 };
421 partition@3f80000 {
422 label = "Alternate boot firmware";
423 reg = <0x03f80000 0x80000>;
424 };
425 };
426
427 nand@2,0 {
428 #address-cells = <1>;
429 #size-cells = <1>;
430 compatible = "xes,address-ctl-nand";
431 reg = <2 0x0 0x10000>;
432 cle-line = <0x8>; /* CLE tied to A3 */
433 ale-line = <0x10>; /* ALE tied to A4 */
434
435 /* U-Boot should fix this up */
436 partition@0 {
437 label = "NAND Filesystem";
438 reg = <0 0x40000000>;
439 };
440 };
441 };
442
443 /* PMC interface */
444 pci0: pci@ef008000 {
445 #interrupt-cells = <1>;
446 #size-cells = <2>;
447 #address-cells = <3>;
448 compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
449 device_type = "pci";
450 reg = <0xef008000 0x1000>;
451 clock-frequency = <33333333>;
452 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
453 interrupt-map = <
454 /* IDSEL */
455 0xe000 0 0 1 &mpic 2 1
456 0xe000 0 0 2 &mpic 3 1>;
457
458 interrupt-parent = <&mpic>;
459 interrupts = <24 2>;
460 bus-range = <0 0>;
461 ranges = <0x02000000 0 0x80000000 0x80000000 0 0x40000000
462 0x01000000 0 0x00000000 0xe8000000 0 0x00800000>;
463 };
464
465 /* XMC PCIe is not yet enabled in U-Boot on XPedite5200 */
466};
diff --git a/arch/powerpc/boot/dts/xpedite5200_xmon.dts b/arch/powerpc/boot/dts/xpedite5200_xmon.dts
new file mode 100644
index 000000000000..c5b29752651a
--- /dev/null
+++ b/arch/powerpc/boot/dts/xpedite5200_xmon.dts
@@ -0,0 +1,506 @@
1/*
2 * Copyright (C) 2009 Extreme Engineering Solutions, Inc.
3 * Based on TQM8548 device tree
4 *
5 * XPedite5200 PrPMC/XMC module based on MPC8548E. This dts is for the
6 * xMon boot loader memory map which differs from U-Boot's.
7 *
8 * This is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13/dts-v1/;
14
15/ {
16 model = "xes,xpedite5200";
17 compatible = "xes,xpedite5200", "xes,MPC8548";
18 #address-cells = <1>;
19 #size-cells = <1>;
20 form-factor = "PMC/XMC";
21 boot-bank = <0x0>;
22
23 aliases {
24 ethernet0 = &enet0;
25 ethernet1 = &enet1;
26 ethernet2 = &enet2;
27 ethernet3 = &enet3;
28
29 serial0 = &serial0;
30 serial1 = &serial1;
31 pci0 = &pci0;
32 pci1 = &pci1;
33 };
34
35 cpus {
36 #address-cells = <1>;
37 #size-cells = <0>;
38
39 PowerPC,8548@0 {
40 device_type = "cpu";
41 reg = <0>;
42 d-cache-line-size = <32>; // 32 bytes
43 i-cache-line-size = <32>; // 32 bytes
44 d-cache-size = <0x8000>; // L1, 32K
45 i-cache-size = <0x8000>; // L1, 32K
46 next-level-cache = <&L2>;
47 };
48 };
49
50 memory {
51 device_type = "memory";
52 reg = <0x0 0x0>; // Filled in by boot loader
53 };
54
55 soc@ef000000 {
56 #address-cells = <1>;
57 #size-cells = <1>;
58 device_type = "soc";
59 ranges = <0x0 0xef000000 0x100000>;
60 bus-frequency = <0>;
61 compatible = "fsl,mpc8548-immr", "simple-bus";
62
63 ecm-law@0 {
64 compatible = "fsl,ecm-law";
65 reg = <0x0 0x1000>;
66 fsl,num-laws = <12>;
67 };
68
69 ecm@1000 {
70 compatible = "fsl,mpc8548-ecm", "fsl,ecm";
71 reg = <0x1000 0x1000>;
72 interrupts = <17 2>;
73 interrupt-parent = <&mpic>;
74 };
75
76 memory-controller@2000 {
77 compatible = "fsl,mpc8548-memory-controller";
78 reg = <0x2000 0x1000>;
79 interrupt-parent = <&mpic>;
80 interrupts = <18 2>;
81 };
82
83 L2: l2-cache-controller@20000 {
84 compatible = "fsl,mpc8548-l2-cache-controller";
85 reg = <0x20000 0x1000>;
86 cache-line-size = <32>; // 32 bytes
87 cache-size = <0x80000>; // L2, 512K
88 interrupt-parent = <&mpic>;
89 interrupts = <16 2>;
90 };
91
92 /* On-card I2C */
93 i2c@3000 {
94 #address-cells = <1>;
95 #size-cells = <0>;
96 cell-index = <0>;
97 compatible = "fsl-i2c";
98 reg = <0x3000 0x100>;
99 interrupts = <43 2>;
100 interrupt-parent = <&mpic>;
101 dfsrr;
102
103 /*
104 * Board GPIO:
105 * 0: BRD_CFG0 (1: P14 IO present)
106 * 1: BRD_CFG1 (1: FP ethernet present)
107 * 2: BRD_CFG2 (1: XMC IO present)
108 * 3: XMC root complex indicator
109 * 4: Flash boot device indicator
110 * 5: Flash write protect enable
111 * 6: PMC monarch indicator
112 * 7: PMC EREADY
113 */
114 gpio1: gpio@18 {
115 compatible = "nxp,pca9556";
116 reg = <0x18>;
117 #gpio-cells = <2>;
118 gpio-controller;
119 polarity = <0x00>;
120 };
121
122 /* P14 GPIO */
123 gpio2: gpio@19 {
124 compatible = "nxp,pca9556";
125 reg = <0x19>;
126 #gpio-cells = <2>;
127 gpio-controller;
128 polarity = <0x00>;
129 };
130
131 eeprom@50 {
132 compatible = "atmel,at24c16";
133 reg = <0x50>;
134 };
135
136 rtc@68 {
137 compatible = "stm,m41t00",
138 "dallas,ds1338";
139 reg = <0x68>;
140 };
141
142 dtt@48 {
143 compatible = "maxim,max1237";
144 reg = <0x34>;
145 };
146 };
147
148 /* Off-card I2C */
149 i2c@3100 {
150 #address-cells = <1>;
151 #size-cells = <0>;
152 cell-index = <1>;
153 compatible = "fsl-i2c";
154 reg = <0x3100 0x100>;
155 interrupts = <43 2>;
156 interrupt-parent = <&mpic>;
157 dfsrr;
158 };
159
160 dma@21300 {
161 #address-cells = <1>;
162 #size-cells = <1>;
163 compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
164 reg = <0x21300 0x4>;
165 ranges = <0x0 0x21100 0x200>;
166 cell-index = <0>;
167 dma-channel@0 {
168 compatible = "fsl,mpc8548-dma-channel",
169 "fsl,eloplus-dma-channel";
170 reg = <0x0 0x80>;
171 cell-index = <0>;
172 interrupt-parent = <&mpic>;
173 interrupts = <20 2>;
174 };
175 dma-channel@80 {
176 compatible = "fsl,mpc8548-dma-channel",
177 "fsl,eloplus-dma-channel";
178 reg = <0x80 0x80>;
179 cell-index = <1>;
180 interrupt-parent = <&mpic>;
181 interrupts = <21 2>;
182 };
183 dma-channel@100 {
184 compatible = "fsl,mpc8548-dma-channel",
185 "fsl,eloplus-dma-channel";
186 reg = <0x100 0x80>;
187 cell-index = <2>;
188 interrupt-parent = <&mpic>;
189 interrupts = <22 2>;
190 };
191 dma-channel@180 {
192 compatible = "fsl,mpc8548-dma-channel",
193 "fsl,eloplus-dma-channel";
194 reg = <0x180 0x80>;
195 cell-index = <3>;
196 interrupt-parent = <&mpic>;
197 interrupts = <23 2>;
198 };
199 };
200
201 /* eTSEC1: Front panel port 0 */
202 enet0: ethernet@24000 {
203 #address-cells = <1>;
204 #size-cells = <1>;
205 cell-index = <0>;
206 device_type = "network";
207 model = "eTSEC";
208 compatible = "gianfar";
209 reg = <0x24000 0x1000>;
210 ranges = <0x0 0x24000 0x1000>;
211 local-mac-address = [ 00 00 00 00 00 00 ];
212 interrupts = <29 2 30 2 34 2>;
213 interrupt-parent = <&mpic>;
214 tbi-handle = <&tbi0>;
215 phy-handle = <&phy0>;
216
217 mdio@520 {
218 #address-cells = <1>;
219 #size-cells = <0>;
220 compatible = "fsl,gianfar-mdio";
221 reg = <0x520 0x20>;
222
223 phy0: ethernet-phy@1 {
224 interrupt-parent = <&mpic>;
225 interrupts = <8 1>;
226 reg = <0x1>;
227 };
228 phy1: ethernet-phy@2 {
229 interrupt-parent = <&mpic>;
230 interrupts = <8 1>;
231 reg = <0x2>;
232 };
233 phy2: ethernet-phy@3 {
234 interrupt-parent = <&mpic>;
235 interrupts = <8 1>;
236 reg = <0x3>;
237 };
238 phy3: ethernet-phy@4 {
239 interrupt-parent = <&mpic>;
240 interrupts = <8 1>;
241 reg = <0x4>;
242 };
243 tbi0: tbi-phy@11 {
244 reg = <0x11>;
245 device_type = "tbi-phy";
246 };
247 };
248 };
249
250 /* eTSEC2: Front panel port 1 */
251 enet1: ethernet@25000 {
252 #address-cells = <1>;
253 #size-cells = <1>;
254 cell-index = <1>;
255 device_type = "network";
256 model = "eTSEC";
257 compatible = "gianfar";
258 reg = <0x25000 0x1000>;
259 ranges = <0x0 0x25000 0x1000>;
260 local-mac-address = [ 00 00 00 00 00 00 ];
261 interrupts = <35 2 36 2 40 2>;
262 interrupt-parent = <&mpic>;
263 tbi-handle = <&tbi1>;
264 phy-handle = <&phy1>;
265
266 mdio@520 {
267 #address-cells = <1>;
268 #size-cells = <0>;
269 compatible = "fsl,gianfar-tbi";
270 reg = <0x520 0x20>;
271
272 tbi1: tbi-phy@11 {
273 reg = <0x11>;
274 device_type = "tbi-phy";
275 };
276 };
277 };
278
279 /* eTSEC3: Rear panel port 2 */
280 enet2: ethernet@26000 {
281 #address-cells = <1>;
282 #size-cells = <1>;
283 cell-index = <2>;
284 device_type = "network";
285 model = "eTSEC";
286 compatible = "gianfar";
287 reg = <0x26000 0x1000>;
288 ranges = <0x0 0x26000 0x1000>;
289 local-mac-address = [ 00 00 00 00 00 00 ];
290 interrupts = <31 2 32 2 33 2>;
291 interrupt-parent = <&mpic>;
292 tbi-handle = <&tbi2>;
293 phy-handle = <&phy2>;
294
295 mdio@520 {
296 #address-cells = <1>;
297 #size-cells = <0>;
298 compatible = "fsl,gianfar-tbi";
299 reg = <0x520 0x20>;
300
301 tbi2: tbi-phy@11 {
302 reg = <0x11>;
303 device_type = "tbi-phy";
304 };
305 };
306 };
307
308 /* eTSEC4: Rear panel port 3 */
309 enet3: ethernet@27000 {
310 #address-cells = <1>;
311 #size-cells = <1>;
312 cell-index = <3>;
313 device_type = "network";
314 model = "eTSEC";
315 compatible = "gianfar";
316 reg = <0x27000 0x1000>;
317 ranges = <0x0 0x27000 0x1000>;
318 local-mac-address = [ 00 00 00 00 00 00 ];
319 interrupts = <37 2 38 2 39 2>;
320 interrupt-parent = <&mpic>;
321 tbi-handle = <&tbi3>;
322 phy-handle = <&phy3>;
323
324 mdio@520 {
325 #address-cells = <1>;
326 #size-cells = <0>;
327 compatible = "fsl,gianfar-tbi";
328 reg = <0x520 0x20>;
329
330 tbi3: tbi-phy@11 {
331 reg = <0x11>;
332 device_type = "tbi-phy";
333 };
334 };
335 };
336
337 serial0: serial@4500 {
338 cell-index = <0>;
339 device_type = "serial";
340 compatible = "ns16550";
341 reg = <0x4500 0x100>;
342 clock-frequency = <0>;
343 current-speed = <9600>;
344 interrupts = <42 2>;
345 interrupt-parent = <&mpic>;
346 };
347
348 serial1: serial@4600 {
349 cell-index = <1>;
350 device_type = "serial";
351 compatible = "ns16550";
352 reg = <0x4600 0x100>;
353 clock-frequency = <0>;
354 current-speed = <9600>;
355 interrupts = <42 2>;
356 interrupt-parent = <&mpic>;
357 };
358
359 global-utilities@e0000 { // global utilities reg
360 compatible = "fsl,mpc8548-guts";
361 reg = <0xe0000 0x1000>;
362 fsl,has-rstcr;
363 };
364
365 mpic: pic@40000 {
366 interrupt-controller;
367 #address-cells = <0>;
368 #interrupt-cells = <2>;
369 reg = <0x40000 0x40000>;
370 compatible = "chrp,open-pic";
371 device_type = "open-pic";
372 };
373 };
374
375 localbus@ef005000 {
376 compatible = "fsl,mpc8548-localbus", "fsl,pq3-localbus",
377 "simple-bus";
378 #address-cells = <2>;
379 #size-cells = <1>;
380 reg = <0xef005000 0x100>; // BRx, ORx, etc.
381
382 ranges = <
383 0 0x0 0xf8000000 0x08000000 // NOR boot flash
384 1 0x0 0xf0000000 0x08000000 // NOR expansion flash
385 2 0x0 0xe8000000 0x00010000 // NAND CE1
386 3 0x0 0xe8010000 0x00010000 // NAND CE2
387 >;
388
389 nor-boot@0,0 {
390 #address-cells = <1>;
391 #size-cells = <1>;
392 compatible = "cfi-flash";
393 reg = <0 0x0 0x4000000>;
394 bank-width = <2>;
395
396 partition@0 {
397 label = "Primary OS";
398 reg = <0x00000000 0x180000>;
399 };
400 partition@180000 {
401 label = "Secondary OS";
402 reg = <0x00180000 0x180000>;
403 };
404 partition@300000 {
405 label = "User";
406 reg = <0x00300000 0x3c80000>;
407 };
408 partition@3f80000 {
409 label = "Boot firmware";
410 reg = <0x03f80000 0x80000>;
411 };
412 };
413
414 nor-alternate@1,0 {
415 #address-cells = <1>;
416 #size-cells = <1>;
417 compatible = "cfi-flash";
418 reg = <1 0x0 0x4000000>;
419 bank-width = <2>;
420
421 partition@0 {
422 label = "Filesystem";
423 reg = <0x00000000 0x3f80000>;
424 };
425 partition@3f80000 {
426 label = "Alternate boot firmware";
427 reg = <0x03f80000 0x80000>;
428 };
429 };
430
431 nand@2,0 {
432 #address-cells = <1>;
433 #size-cells = <1>;
434 compatible = "xes,address-ctl-nand";
435 reg = <2 0x0 0x10000>;
436 cle-line = <0x8>; /* CLE tied to A3 */
437 ale-line = <0x10>; /* ALE tied to A4 */
438
439 partition@0 {
440 label = "NAND Filesystem";
441 reg = <0 0x40000000>;
442 };
443 };
444 };
445
446 /* PMC interface */
447 pci0: pci@ef008000 {
448 #interrupt-cells = <1>;
449 #size-cells = <2>;
450 #address-cells = <3>;
451 compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
452 device_type = "pci";
453 reg = <0xef008000 0x1000>;
454 clock-frequency = <33333333>;
455 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
456 interrupt-map = <
457 /* IDSEL */
458 0xe000 0 0 1 &mpic 2 1
459 0xe000 0 0 2 &mpic 3 1>;
460
461 interrupt-parent = <&mpic>;
462 interrupts = <24 2>;
463 bus-range = <0 0>;
464 ranges = <0x02000000 0 0x80000000 0x80000000 0 0x20000000
465 0x01000000 0 0x00000000 0xd0000000 0 0x01000000>;
466 };
467
468 /* XMC PCIe */
469 pci1: pcie@ef00a000 {
470 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
471 interrupt-map = <
472 /* IDSEL 0x0 */
473 0x00000 0 0 1 &mpic 0 1
474 0x00000 0 0 2 &mpic 1 1
475 0x00000 0 0 3 &mpic 2 1
476 0x00000 0 0 4 &mpic 3 1>;
477
478 interrupt-parent = <&mpic>;
479 interrupts = <26 2>;
480 bus-range = <0 0xff>;
481 ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x20000000
482 0x01000000 0 0x00000000 0xd1000000 0 0x01000000>;
483 clock-frequency = <33333333>;
484 #interrupt-cells = <1>;
485 #size-cells = <2>;
486 #address-cells = <3>;
487 reg = <0xef00a000 0x1000>;
488 compatible = "fsl,mpc8548-pcie";
489 device_type = "pci";
490 pcie@0 {
491 reg = <0 0 0 0 0>;
492 #size-cells = <2>;
493 #address-cells = <3>;
494 device_type = "pci";
495 ranges = <0x02000000 0 0xc0000000 0x02000000 0
496 0xc0000000 0 0x20000000
497 0x01000000 0 0x00000000 0x01000000 0
498 0x00000000 0 0x08000000>;
499 };
500 };
501
502 /* Needed for dtbImage boot wrapper compatibility */
503 chosen {
504 linux,stdout-path = &serial0;
505 };
506};
diff --git a/arch/powerpc/boot/dts/xpedite5301.dts b/arch/powerpc/boot/dts/xpedite5301.dts
new file mode 100644
index 000000000000..db7faf5ebb39
--- /dev/null
+++ b/arch/powerpc/boot/dts/xpedite5301.dts
@@ -0,0 +1,640 @@
1/*
2 * Copyright (C) 2008 Extreme Engineering Solutions, Inc.
3 * Based on MPC8572DS device tree from Freescale Semiconductor, Inc.
4 *
5 * XPedite5301 PMC/XMC module based on MPC8572E
6 *
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13/ {
14 model = "xes,xpedite5301";
15 compatible = "xes,xpedite5301", "xes,MPC8572";
16 #address-cells = <2>;
17 #size-cells = <2>;
18 form-factor = "PMC/XMC";
19 boot-bank = <0x0>; /* 0: Primary flash, 1: Secondary flash */
20
21 aliases {
22 ethernet0 = &enet0;
23 ethernet1 = &enet1;
24 serial0 = &serial0;
25 serial1 = &serial1;
26 pci1 = &pci1;
27 pci2 = &pci2;
28 };
29
30 cpus {
31 #address-cells = <1>;
32 #size-cells = <0>;
33
34 PowerPC,8572@0 {
35 device_type = "cpu";
36 reg = <0x0>;
37 d-cache-line-size = <32>; // 32 bytes
38 i-cache-line-size = <32>; // 32 bytes
39 d-cache-size = <0x8000>; // L1, 32K
40 i-cache-size = <0x8000>; // L1, 32K
41 timebase-frequency = <0>;
42 bus-frequency = <0>;
43 clock-frequency = <0>;
44 next-level-cache = <&L2>;
45 };
46
47 PowerPC,8572@1 {
48 device_type = "cpu";
49 reg = <0x1>;
50 d-cache-line-size = <32>; // 32 bytes
51 i-cache-line-size = <32>; // 32 bytes
52 d-cache-size = <0x8000>; // L1, 32K
53 i-cache-size = <0x8000>; // L1, 32K
54 timebase-frequency = <0>;
55 bus-frequency = <0>;
56 clock-frequency = <0>;
57 next-level-cache = <&L2>;
58 };
59 };
60
61 memory {
62 device_type = "memory";
63 reg = <0x0 0x0 0x0 0x0>; // Filled in by U-Boot
64 };
65
66 localbus@ef005000 {
67 #address-cells = <2>;
68 #size-cells = <1>;
69 compatible = "fsl,mpc8572-elbc", "fsl,elbc", "simple-bus";
70 reg = <0 0xef005000 0 0x1000>;
71 interrupts = <19 2>;
72 interrupt-parent = <&mpic>;
73 /* Local bus region mappings */
74 ranges = <0 0 0 0xf8000000 0x8000000 /* CS0: Boot flash */
75 1 0 0 0xf0000000 0x8000000 /* CS1: Alternate flash */
76 2 0 0 0xef800000 0x40000 /* CS2: NAND CE1 */
77 3 0 0 0xef840000 0x40000>; /* CS3: NAND CE2 */
78
79 nor-boot@0,0 {
80 compatible = "amd,s29gl01gp", "cfi-flash";
81 bank-width = <2>;
82 reg = <0 0 0x8000000>; /* 128MB */
83 #address-cells = <1>;
84 #size-cells = <1>;
85 partition@0 {
86 label = "Primary user space";
87 reg = <0x00000000 0x6f00000>; /* 111 MB */
88 };
89 partition@6f00000 {
90 label = "Primary kernel";
91 reg = <0x6f00000 0x1000000>; /* 16 MB */
92 };
93 partition@7f00000 {
94 label = "Primary DTB";
95 reg = <0x7f00000 0x40000>; /* 256 KB */
96 };
97 partition@7f40000 {
98 label = "Primary U-Boot environment";
99 reg = <0x7f40000 0x40000>; /* 256 KB */
100 };
101 partition@7f80000 {
102 label = "Primary U-Boot";
103 reg = <0x7f80000 0x80000>; /* 512 KB */
104 read-only;
105 };
106 };
107
108 nor-alternate@1,0 {
109 compatible = "amd,s29gl01gp", "cfi-flash";
110 bank-width = <2>;
111 //reg = <0xf0000000 0x08000000>; /* 128MB */
112 reg = <1 0 0x8000000>; /* 128MB */
113 #address-cells = <1>;
114 #size-cells = <1>;
115 partition@0 {
116 label = "Secondary user space";
117 reg = <0x00000000 0x6f00000>; /* 111 MB */
118 };
119 partition@6f00000 {
120 label = "Secondary kernel";
121 reg = <0x6f00000 0x1000000>; /* 16 MB */
122 };
123 partition@7f00000 {
124 label = "Secondary DTB";
125 reg = <0x7f00000 0x40000>; /* 256 KB */
126 };
127 partition@7f40000 {
128 label = "Secondary U-Boot environment";
129 reg = <0x7f40000 0x40000>; /* 256 KB */
130 };
131 partition@7f80000 {
132 label = "Secondary U-Boot";
133 reg = <0x7f80000 0x80000>; /* 512 KB */
134 read-only;
135 };
136 };
137
138 nand@2,0 {
139 #address-cells = <1>;
140 #size-cells = <1>;
141 /*
142 * Actual part could be ST Micro NAND08GW3B2A (1 GB),
143 * Micron MT29F8G08DAA (2x 512 MB), or Micron
144 * MT29F16G08FAA (2x 1 GB), depending on the build
145 * configuration
146 */
147 compatible = "fsl,mpc8572-fcm-nand",
148 "fsl,elbc-fcm-nand";
149 reg = <2 0 0x40000>;
150 /* U-Boot should fix this up if chip size > 1 GB */
151 partition@0 {
152 label = "NAND Filesystem";
153 reg = <0 0x40000000>;
154 };
155 };
156
157 };
158
159 soc8572@ef000000 {
160 #address-cells = <1>;
161 #size-cells = <1>;
162 device_type = "soc";
163 compatible = "fsl,mpc8572-immr", "simple-bus";
164 ranges = <0x0 0 0xef000000 0x100000>;
165 bus-frequency = <0>; // Filled out by uboot.
166
167 ecm-law@0 {
168 compatible = "fsl,ecm-law";
169 reg = <0x0 0x1000>;
170 fsl,num-laws = <12>;
171 };
172
173 ecm@1000 {
174 compatible = "fsl,mpc8572-ecm", "fsl,ecm";
175 reg = <0x1000 0x1000>;
176 interrupts = <17 2>;
177 interrupt-parent = <&mpic>;
178 };
179
180 memory-controller@2000 {
181 compatible = "fsl,mpc8572-memory-controller";
182 reg = <0x2000 0x1000>;
183 interrupt-parent = <&mpic>;
184 interrupts = <18 2>;
185 };
186
187 memory-controller@6000 {
188 compatible = "fsl,mpc8572-memory-controller";
189 reg = <0x6000 0x1000>;
190 interrupt-parent = <&mpic>;
191 interrupts = <18 2>;
192 };
193
194 L2: l2-cache-controller@20000 {
195 compatible = "fsl,mpc8572-l2-cache-controller";
196 reg = <0x20000 0x1000>;
197 cache-line-size = <32>; // 32 bytes
198 cache-size = <0x100000>; // L2, 1M
199 interrupt-parent = <&mpic>;
200 interrupts = <16 2>;
201 };
202
203 i2c@3000 {
204 #address-cells = <1>;
205 #size-cells = <0>;
206 cell-index = <0>;
207 compatible = "fsl-i2c";
208 reg = <0x3000 0x100>;
209 interrupts = <43 2>;
210 interrupt-parent = <&mpic>;
211 dfsrr;
212
213 temp-sensor@48 {
214 compatible = "dallas,ds1631", "dallas,ds1621";
215 reg = <0x48>;
216 };
217
218 temp-sensor@4c {
219 compatible = "adi,adt7461";
220 reg = <0x4c>;
221 };
222
223 cpu-supervisor@51 {
224 compatible = "dallas,ds4510";
225 reg = <0x51>;
226 };
227
228 eeprom@54 {
229 compatible = "atmel,at24c128b";
230 reg = <0x54>;
231 };
232
233 rtc@68 {
234 compatible = "stm,m41t00",
235 "dallas,ds1338";
236 reg = <0x68>;
237 };
238
239 pcie-switch@70 {
240 compatible = "plx,pex8518";
241 reg = <0x70>;
242 };
243
244 gpio1: gpio@18 {
245 compatible = "nxp,pca9557";
246 reg = <0x18>;
247 #gpio-cells = <2>;
248 gpio-controller;
249 polarity = <0x00>;
250 };
251
252 gpio2: gpio@1c {
253 compatible = "nxp,pca9557";
254 reg = <0x1c>;
255 #gpio-cells = <2>;
256 gpio-controller;
257 polarity = <0x00>;
258 };
259
260 gpio3: gpio@1e {
261 compatible = "nxp,pca9557";
262 reg = <0x1e>;
263 #gpio-cells = <2>;
264 gpio-controller;
265 polarity = <0x00>;
266 };
267
268 gpio4: gpio@1f {
269 compatible = "nxp,pca9557";
270 reg = <0x1f>;
271 #gpio-cells = <2>;
272 gpio-controller;
273 polarity = <0x00>;
274 };
275 };
276
277 i2c@3100 {
278 #address-cells = <1>;
279 #size-cells = <0>;
280 cell-index = <1>;
281 compatible = "fsl-i2c";
282 reg = <0x3100 0x100>;
283 interrupts = <43 2>;
284 interrupt-parent = <&mpic>;
285 dfsrr;
286 };
287
288 dma@c300 {
289 #address-cells = <1>;
290 #size-cells = <1>;
291 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
292 reg = <0xc300 0x4>;
293 ranges = <0x0 0xc100 0x200>;
294 cell-index = <1>;
295 dma-channel@0 {
296 compatible = "fsl,mpc8572-dma-channel",
297 "fsl,eloplus-dma-channel";
298 reg = <0x0 0x80>;
299 cell-index = <0>;
300 interrupt-parent = <&mpic>;
301 interrupts = <76 2>;
302 };
303 dma-channel@80 {
304 compatible = "fsl,mpc8572-dma-channel",
305 "fsl,eloplus-dma-channel";
306 reg = <0x80 0x80>;
307 cell-index = <1>;
308 interrupt-parent = <&mpic>;
309 interrupts = <77 2>;
310 };
311 dma-channel@100 {
312 compatible = "fsl,mpc8572-dma-channel",
313 "fsl,eloplus-dma-channel";
314 reg = <0x100 0x80>;
315 cell-index = <2>;
316 interrupt-parent = <&mpic>;
317 interrupts = <78 2>;
318 };
319 dma-channel@180 {
320 compatible = "fsl,mpc8572-dma-channel",
321 "fsl,eloplus-dma-channel";
322 reg = <0x180 0x80>;
323 cell-index = <3>;
324 interrupt-parent = <&mpic>;
325 interrupts = <79 2>;
326 };
327 };
328
329 dma@21300 {
330 #address-cells = <1>;
331 #size-cells = <1>;
332 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
333 reg = <0x21300 0x4>;
334 ranges = <0x0 0x21100 0x200>;
335 cell-index = <0>;
336 dma-channel@0 {
337 compatible = "fsl,mpc8572-dma-channel",
338 "fsl,eloplus-dma-channel";
339 reg = <0x0 0x80>;
340 cell-index = <0>;
341 interrupt-parent = <&mpic>;
342 interrupts = <20 2>;
343 };
344 dma-channel@80 {
345 compatible = "fsl,mpc8572-dma-channel",
346 "fsl,eloplus-dma-channel";
347 reg = <0x80 0x80>;
348 cell-index = <1>;
349 interrupt-parent = <&mpic>;
350 interrupts = <21 2>;
351 };
352 dma-channel@100 {
353 compatible = "fsl,mpc8572-dma-channel",
354 "fsl,eloplus-dma-channel";
355 reg = <0x100 0x80>;
356 cell-index = <2>;
357 interrupt-parent = <&mpic>;
358 interrupts = <22 2>;
359 };
360 dma-channel@180 {
361 compatible = "fsl,mpc8572-dma-channel",
362 "fsl,eloplus-dma-channel";
363 reg = <0x180 0x80>;
364 cell-index = <3>;
365 interrupt-parent = <&mpic>;
366 interrupts = <23 2>;
367 };
368 };
369
370 /* eTSEC 1 */
371 enet0: ethernet@24000 {
372 #address-cells = <1>;
373 #size-cells = <1>;
374 cell-index = <0>;
375 device_type = "network";
376 model = "eTSEC";
377 compatible = "gianfar";
378 reg = <0x24000 0x1000>;
379 ranges = <0x0 0x24000 0x1000>;
380 local-mac-address = [ 00 00 00 00 00 00 ];
381 interrupts = <29 2 30 2 34 2>;
382 interrupt-parent = <&mpic>;
383 tbi-handle = <&tbi0>;
384 phy-handle = <&phy0>;
385 phy-connection-type = "sgmii";
386
387 mdio@520 {
388 #address-cells = <1>;
389 #size-cells = <0>;
390 compatible = "fsl,gianfar-mdio";
391 reg = <0x520 0x20>;
392
393 phy0: ethernet-phy@1 {
394 interrupt-parent = <&mpic>;
395 interrupts = <8 1>;
396 reg = <0x1>;
397 };
398 phy1: ethernet-phy@2 {
399 interrupt-parent = <&mpic>;
400 interrupts = <8 1>;
401 reg = <0x2>;
402 };
403 tbi0: tbi-phy@11 {
404 reg = <0x11>;
405 device_type = "tbi-phy";
406 };
407 };
408 };
409
410 /* eTSEC 2 */
411 enet1: ethernet@25000 {
412 #address-cells = <1>;
413 #size-cells = <1>;
414 cell-index = <1>;
415 device_type = "network";
416 model = "eTSEC";
417 compatible = "gianfar";
418 reg = <0x25000 0x1000>;
419 ranges = <0x0 0x25000 0x1000>;
420 local-mac-address = [ 00 00 00 00 00 00 ];
421 interrupts = <35 2 36 2 40 2>;
422 interrupt-parent = <&mpic>;
423 tbi-handle = <&tbi1>;
424 phy-handle = <&phy1>;
425 phy-connection-type = "sgmii";
426
427 mdio@520 {
428 #address-cells = <1>;
429 #size-cells = <0>;
430 compatible = "fsl,gianfar-tbi";
431 reg = <0x520 0x20>;
432
433 tbi1: tbi-phy@11 {
434 reg = <0x11>;
435 device_type = "tbi-phy";
436 };
437 };
438 };
439
440 /* UART0 */
441 serial0: serial@4500 {
442 cell-index = <0>;
443 device_type = "serial";
444 compatible = "ns16550";
445 reg = <0x4500 0x100>;
446 clock-frequency = <0>;
447 interrupts = <42 2>;
448 interrupt-parent = <&mpic>;
449 };
450
451 /* UART1 */
452 serial1: serial@4600 {
453 cell-index = <1>;
454 device_type = "serial";
455 compatible = "ns16550";
456 reg = <0x4600 0x100>;
457 clock-frequency = <0>;
458 interrupts = <42 2>;
459 interrupt-parent = <&mpic>;
460 };
461
462 global-utilities@e0000 { //global utilities block
463 compatible = "fsl,mpc8572-guts";
464 reg = <0xe0000 0x1000>;
465 fsl,has-rstcr;
466 };
467
468 msi@41600 {
469 compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
470 reg = <0x41600 0x80>;
471 msi-available-ranges = <0 0x100>;
472 interrupts = <
473 0xe0 0
474 0xe1 0
475 0xe2 0
476 0xe3 0
477 0xe4 0
478 0xe5 0
479 0xe6 0
480 0xe7 0>;
481 interrupt-parent = <&mpic>;
482 };
483
484 crypto@30000 {
485 compatible = "fsl,sec3.0", "fsl,sec2.4", "fsl,sec2.2",
486 "fsl,sec2.1", "fsl,sec2.0";
487 reg = <0x30000 0x10000>;
488 interrupts = <45 2 58 2>;
489 interrupt-parent = <&mpic>;
490 fsl,num-channels = <4>;
491 fsl,channel-fifo-len = <24>;
492 fsl,exec-units-mask = <0x9fe>;
493 fsl,descriptor-types-mask = <0x3ab0ebf>;
494 };
495
496 mpic: pic@40000 {
497 interrupt-controller;
498 #address-cells = <0>;
499 #interrupt-cells = <2>;
500 reg = <0x40000 0x40000>;
501 compatible = "chrp,open-pic";
502 device_type = "open-pic";
503 };
504
505 gpio0: gpio@f000 {
506 compatible = "fsl,mpc8572-gpio";
507 reg = <0xf000 0x1000>;
508 interrupts = <47 2>;
509 interrupt-parent = <&mpic>;
510 #gpio-cells = <2>;
511 gpio-controller;
512 };
513
514 gpio-leds {
515 compatible = "gpio-leds";
516
517 heartbeat {
518 label = "Heartbeat";
519 gpios = <&gpio0 4 1>;
520 linux,default-trigger = "heartbeat";
521 };
522
523 yellow {
524 label = "Yellow";
525 gpios = <&gpio0 5 1>;
526 };
527
528 red {
529 label = "Red";
530 gpios = <&gpio0 6 1>;
531 };
532
533 green {
534 label = "Green";
535 gpios = <&gpio0 7 1>;
536 };
537 };
538
539 /* PME (pattern-matcher) */
540 pme@10000 {
541 compatible = "fsl,mpc8572-pme", "pme8572";
542 reg = <0x10000 0x5000>;
543 interrupts = <57 2 64 2 65 2 66 2 67 2>;
544 interrupt-parent = <&mpic>;
545 };
546
547 tlu@2f000 {
548 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
549 reg = <0x2f000 0x1000>;
550 interupts = <61 2 >;
551 interrupt-parent = <&mpic>;
552 };
553
554 tlu@15000 {
555 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
556 reg = <0x15000 0x1000>;
557 interupts = <75 2>;
558 interrupt-parent = <&mpic>;
559 };
560 };
561
562 /*
563 * PCI Express controller 3 @ ef008000 is not used.
564 * This would have been pci0 on other mpc85xx platforms.
565 */
566
567 /* PCI Express controller 2, wired to XMC P15 connector */
568 pci1: pcie@ef009000 {
569 compatible = "fsl,mpc8548-pcie";
570 device_type = "pci";
571 #interrupt-cells = <1>;
572 #size-cells = <2>;
573 #address-cells = <3>;
574 reg = <0 0xef009000 0 0x1000>;
575 bus-range = <0 255>;
576 ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x10000000
577 0x1000000 0x0 0x00000000 0 0xe8800000 0x0 0x00010000>;
578 clock-frequency = <33333333>;
579 interrupt-parent = <&mpic>;
580 interrupts = <25 2>;
581 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
582 interrupt-map = <
583 /* IDSEL 0x0 */
584 0x0 0x0 0x0 0x1 &mpic 0x4 0x1
585 0x0 0x0 0x0 0x2 &mpic 0x5 0x1
586 0x0 0x0 0x0 0x3 &mpic 0x6 0x1
587 0x0 0x0 0x0 0x4 &mpic 0x7 0x1
588 >;
589 pcie@0 {
590 reg = <0x00000000 0x00000000 0x00000000 0x00000000 0x00000000>;
591 #size-cells = <2>;
592 #address-cells = <3>;
593 device_type = "pci";
594 ranges = <0x2000000 0x0 0xc0000000
595 0x2000000 0x0 0xc0000000
596 0x0 0x10000000
597
598 0x1000000 0x0 0x0
599 0x1000000 0x0 0x0
600 0x0 0x100000>;
601 };
602 };
603
604 /* PCI Express controller 1, wired to PEX8112 for PMC interface */
605 pci2: pcie@ef00a000 {
606 compatible = "fsl,mpc8548-pcie";
607 device_type = "pci";
608 #interrupt-cells = <1>;
609 #size-cells = <2>;
610 #address-cells = <3>;
611 reg = <0 0xef00a000 0 0x1000>;
612 bus-range = <0 255>;
613 ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x40000000
614 0x1000000 0x0 0x00000000 0 0xe8000000 0x0 0x10000>;
615 clock-frequency = <33333333>;
616 interrupt-parent = <&mpic>;
617 interrupts = <26 2>;
618 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
619 interrupt-map = <
620 /* IDSEL 0x0 */
621 0x0 0x0 0x0 0x1 &mpic 0x0 0x1
622 0x0 0x0 0x0 0x2 &mpic 0x1 0x1
623 0x0 0x0 0x0 0x3 &mpic 0x2 0x1
624 0x0 0x0 0x0 0x4 &mpic 0x3 0x1
625 >;
626 pcie@0 {
627 reg = <0x0 0x0 0x0 0x0 0x0>;
628 #size-cells = <2>;
629 #address-cells = <3>;
630 device_type = "pci";
631 ranges = <0x2000000 0x0 0x80000000
632 0x2000000 0x0 0x80000000
633 0x0 0x40000000
634
635 0x1000000 0x0 0x0
636 0x1000000 0x0 0x0
637 0x0 0x100000>;
638 };
639 };
640};
diff --git a/arch/powerpc/boot/dts/xpedite5330.dts b/arch/powerpc/boot/dts/xpedite5330.dts
new file mode 100644
index 000000000000..c364ca6ff7d0
--- /dev/null
+++ b/arch/powerpc/boot/dts/xpedite5330.dts
@@ -0,0 +1,707 @@
1/*
2 * Copyright (C) 2008 Extreme Engineering Solutions, Inc.
3 * Based on MPC8572DS device tree from Freescale Semiconductor, Inc.
4 *
5 * XPedite5330 3U CompactPCI module based on MPC8572E
6 *
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13/ {
14 model = "xes,xpedite5330";
15 compatible = "xes,xpedite5330", "xes,MPC8572";
16 #address-cells = <2>;
17 #size-cells = <2>;
18 form-factor = "3U CompactPCI";
19 boot-bank = <0x0>; /* 0: Primary flash, 1: Secondary flash */
20
21 aliases {
22 ethernet0 = &enet0;
23 ethernet1 = &enet1;
24 serial0 = &serial0;
25 serial1 = &serial1;
26 pci0 = &pci0;
27 pci1 = &pci1;
28 pci2 = &pci2;
29 };
30
31 pmcslots {
32 #address-cells = <1>;
33 #size-cells = <0>;
34
35 pmcslot@0 {
36 cell-index = <0>;
37 /*
38 * boolean properties (true if defined):
39 * monarch;
40 * module-present;
41 */
42 };
43 };
44
45 xmcslots {
46 #address-cells = <1>;
47 #size-cells = <0>;
48
49 xmcslot@0 {
50 cell-index = <0>;
51 /*
52 * boolean properties (true if defined):
53 * module-present;
54 */
55 };
56 };
57
58 cpci {
59 /*
60 * boolean properties (true if defined):
61 * system-controller;
62 */
63 system-controller;
64 };
65
66 cpus {
67 #address-cells = <1>;
68 #size-cells = <0>;
69
70 PowerPC,8572@0 {
71 device_type = "cpu";
72 reg = <0x0>;
73 d-cache-line-size = <32>; // 32 bytes
74 i-cache-line-size = <32>; // 32 bytes
75 d-cache-size = <0x8000>; // L1, 32K
76 i-cache-size = <0x8000>; // L1, 32K
77 timebase-frequency = <0>;
78 bus-frequency = <0>;
79 clock-frequency = <0>;
80 next-level-cache = <&L2>;
81 };
82
83 PowerPC,8572@1 {
84 device_type = "cpu";
85 reg = <0x1>;
86 d-cache-line-size = <32>; // 32 bytes
87 i-cache-line-size = <32>; // 32 bytes
88 d-cache-size = <0x8000>; // L1, 32K
89 i-cache-size = <0x8000>; // L1, 32K
90 timebase-frequency = <0>;
91 bus-frequency = <0>;
92 clock-frequency = <0>;
93 next-level-cache = <&L2>;
94 };
95 };
96
97 memory {
98 device_type = "memory";
99 reg = <0x0 0x0 0x0 0x0>; // Filled in by U-Boot
100 };
101
102 localbus@ef005000 {
103 #address-cells = <2>;
104 #size-cells = <1>;
105 compatible = "fsl,mpc8572-elbc", "fsl,elbc", "simple-bus";
106 reg = <0 0xef005000 0 0x1000>;
107 interrupts = <19 2>;
108 interrupt-parent = <&mpic>;
109 /* Local bus region mappings */
110 ranges = <0 0 0 0xf8000000 0x8000000 /* CS0: Boot flash */
111 1 0 0 0xf0000000 0x8000000 /* CS1: Alternate flash */
112 2 0 0 0xef800000 0x40000 /* CS2: NAND CE1 */
113 3 0 0 0xef840000 0x40000>; /* CS3: NAND CE2 */
114
115 nor-boot@0,0 {
116 compatible = "amd,s29gl01gp", "cfi-flash";
117 bank-width = <2>;
118 reg = <0 0 0x8000000>; /* 128MB */
119 #address-cells = <1>;
120 #size-cells = <1>;
121 partition@0 {
122 label = "Primary user space";
123 reg = <0x00000000 0x6f00000>; /* 111 MB */
124 };
125 partition@6f00000 {
126 label = "Primary kernel";
127 reg = <0x6f00000 0x1000000>; /* 16 MB */
128 };
129 partition@7f00000 {
130 label = "Primary DTB";
131 reg = <0x7f00000 0x40000>; /* 256 KB */
132 };
133 partition@7f40000 {
134 label = "Primary U-Boot environment";
135 reg = <0x7f40000 0x40000>; /* 256 KB */
136 };
137 partition@7f80000 {
138 label = "Primary U-Boot";
139 reg = <0x7f80000 0x80000>; /* 512 KB */
140 read-only;
141 };
142 };
143
144 nor-alternate@1,0 {
145 compatible = "amd,s29gl01gp", "cfi-flash";
146 bank-width = <2>;
147 //reg = <0xf0000000 0x08000000>; /* 128MB */
148 reg = <1 0 0x8000000>; /* 128MB */
149 #address-cells = <1>;
150 #size-cells = <1>;
151 partition@0 {
152 label = "Secondary user space";
153 reg = <0x00000000 0x6f00000>; /* 111 MB */
154 };
155 partition@6f00000 {
156 label = "Secondary kernel";
157 reg = <0x6f00000 0x1000000>; /* 16 MB */
158 };
159 partition@7f00000 {
160 label = "Secondary DTB";
161 reg = <0x7f00000 0x40000>; /* 256 KB */
162 };
163 partition@7f40000 {
164 label = "Secondary U-Boot environment";
165 reg = <0x7f40000 0x40000>; /* 256 KB */
166 };
167 partition@7f80000 {
168 label = "Secondary U-Boot";
169 reg = <0x7f80000 0x80000>; /* 512 KB */
170 read-only;
171 };
172 };
173
174 nand@2,0 {
175 #address-cells = <1>;
176 #size-cells = <1>;
177 /*
178 * Actual part could be ST Micro NAND08GW3B2A (1 GB),
179 * Micron MT29F8G08DAA (2x 512 MB), or Micron
180 * MT29F16G08FAA (2x 1 GB), depending on the build
181 * configuration
182 */
183 compatible = "fsl,mpc8572-fcm-nand",
184 "fsl,elbc-fcm-nand";
185 reg = <2 0 0x40000>;
186 /* U-Boot should fix this up if chip size > 1 GB */
187 partition@0 {
188 label = "NAND Filesystem";
189 reg = <0 0x40000000>;
190 };
191 };
192
193 };
194
195 soc8572@ef000000 {
196 #address-cells = <1>;
197 #size-cells = <1>;
198 device_type = "soc";
199 compatible = "fsl,mpc8572-immr", "simple-bus";
200 ranges = <0x0 0 0xef000000 0x100000>;
201 bus-frequency = <0>; // Filled out by uboot.
202
203 ecm-law@0 {
204 compatible = "fsl,ecm-law";
205 reg = <0x0 0x1000>;
206 fsl,num-laws = <12>;
207 };
208
209 ecm@1000 {
210 compatible = "fsl,mpc8572-ecm", "fsl,ecm";
211 reg = <0x1000 0x1000>;
212 interrupts = <17 2>;
213 interrupt-parent = <&mpic>;
214 };
215
216 memory-controller@2000 {
217 compatible = "fsl,mpc8572-memory-controller";
218 reg = <0x2000 0x1000>;
219 interrupt-parent = <&mpic>;
220 interrupts = <18 2>;
221 };
222
223 memory-controller@6000 {
224 compatible = "fsl,mpc8572-memory-controller";
225 reg = <0x6000 0x1000>;
226 interrupt-parent = <&mpic>;
227 interrupts = <18 2>;
228 };
229
230 L2: l2-cache-controller@20000 {
231 compatible = "fsl,mpc8572-l2-cache-controller";
232 reg = <0x20000 0x1000>;
233 cache-line-size = <32>; // 32 bytes
234 cache-size = <0x100000>; // L2, 1M
235 interrupt-parent = <&mpic>;
236 interrupts = <16 2>;
237 };
238
239 i2c@3000 {
240 #address-cells = <1>;
241 #size-cells = <0>;
242 cell-index = <0>;
243 compatible = "fsl-i2c";
244 reg = <0x3000 0x100>;
245 interrupts = <43 2>;
246 interrupt-parent = <&mpic>;
247 dfsrr;
248
249 temp-sensor@48 {
250 compatible = "dallas,ds1631", "dallas,ds1621";
251 reg = <0x48>;
252 };
253
254 temp-sensor@4c {
255 compatible = "adi,adt7461";
256 reg = <0x4c>;
257 };
258
259 cpu-supervisor@51 {
260 compatible = "dallas,ds4510";
261 reg = <0x51>;
262 };
263
264 eeprom@54 {
265 compatible = "atmel,at24c128b";
266 reg = <0x54>;
267 };
268
269 rtc@68 {
270 compatible = "stm,m41t00",
271 "dallas,ds1338";
272 reg = <0x68>;
273 };
274
275 pcie-switch@70 {
276 compatible = "plx,pex8518";
277 reg = <0x70>;
278 };
279
280 gpio1: gpio@18 {
281 compatible = "nxp,pca9557";
282 reg = <0x18>;
283 #gpio-cells = <2>;
284 gpio-controller;
285 polarity = <0x00>;
286 };
287
288 gpio2: gpio@1c {
289 compatible = "nxp,pca9557";
290 reg = <0x1c>;
291 #gpio-cells = <2>;
292 gpio-controller;
293 polarity = <0x00>;
294 };
295
296 gpio3: gpio@1e {
297 compatible = "nxp,pca9557";
298 reg = <0x1e>;
299 #gpio-cells = <2>;
300 gpio-controller;
301 polarity = <0x00>;
302 };
303
304 gpio4: gpio@1f {
305 compatible = "nxp,pca9557";
306 reg = <0x1f>;
307 #gpio-cells = <2>;
308 gpio-controller;
309 polarity = <0x00>;
310 };
311 };
312
313 i2c@3100 {
314 #address-cells = <1>;
315 #size-cells = <0>;
316 cell-index = <1>;
317 compatible = "fsl-i2c";
318 reg = <0x3100 0x100>;
319 interrupts = <43 2>;
320 interrupt-parent = <&mpic>;
321 dfsrr;
322 };
323
324 dma@c300 {
325 #address-cells = <1>;
326 #size-cells = <1>;
327 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
328 reg = <0xc300 0x4>;
329 ranges = <0x0 0xc100 0x200>;
330 cell-index = <1>;
331 dma-channel@0 {
332 compatible = "fsl,mpc8572-dma-channel",
333 "fsl,eloplus-dma-channel";
334 reg = <0x0 0x80>;
335 cell-index = <0>;
336 interrupt-parent = <&mpic>;
337 interrupts = <76 2>;
338 };
339 dma-channel@80 {
340 compatible = "fsl,mpc8572-dma-channel",
341 "fsl,eloplus-dma-channel";
342 reg = <0x80 0x80>;
343 cell-index = <1>;
344 interrupt-parent = <&mpic>;
345 interrupts = <77 2>;
346 };
347 dma-channel@100 {
348 compatible = "fsl,mpc8572-dma-channel",
349 "fsl,eloplus-dma-channel";
350 reg = <0x100 0x80>;
351 cell-index = <2>;
352 interrupt-parent = <&mpic>;
353 interrupts = <78 2>;
354 };
355 dma-channel@180 {
356 compatible = "fsl,mpc8572-dma-channel",
357 "fsl,eloplus-dma-channel";
358 reg = <0x180 0x80>;
359 cell-index = <3>;
360 interrupt-parent = <&mpic>;
361 interrupts = <79 2>;
362 };
363 };
364
365 dma@21300 {
366 #address-cells = <1>;
367 #size-cells = <1>;
368 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
369 reg = <0x21300 0x4>;
370 ranges = <0x0 0x21100 0x200>;
371 cell-index = <0>;
372 dma-channel@0 {
373 compatible = "fsl,mpc8572-dma-channel",
374 "fsl,eloplus-dma-channel";
375 reg = <0x0 0x80>;
376 cell-index = <0>;
377 interrupt-parent = <&mpic>;
378 interrupts = <20 2>;
379 };
380 dma-channel@80 {
381 compatible = "fsl,mpc8572-dma-channel",
382 "fsl,eloplus-dma-channel";
383 reg = <0x80 0x80>;
384 cell-index = <1>;
385 interrupt-parent = <&mpic>;
386 interrupts = <21 2>;
387 };
388 dma-channel@100 {
389 compatible = "fsl,mpc8572-dma-channel",
390 "fsl,eloplus-dma-channel";
391 reg = <0x100 0x80>;
392 cell-index = <2>;
393 interrupt-parent = <&mpic>;
394 interrupts = <22 2>;
395 };
396 dma-channel@180 {
397 compatible = "fsl,mpc8572-dma-channel",
398 "fsl,eloplus-dma-channel";
399 reg = <0x180 0x80>;
400 cell-index = <3>;
401 interrupt-parent = <&mpic>;
402 interrupts = <23 2>;
403 };
404 };
405
406 /* eTSEC 1 */
407 enet0: ethernet@24000 {
408 #address-cells = <1>;
409 #size-cells = <1>;
410 cell-index = <0>;
411 device_type = "network";
412 model = "eTSEC";
413 compatible = "gianfar";
414 reg = <0x24000 0x1000>;
415 ranges = <0x0 0x24000 0x1000>;
416 local-mac-address = [ 00 00 00 00 00 00 ];
417 interrupts = <29 2 30 2 34 2>;
418 interrupt-parent = <&mpic>;
419 tbi-handle = <&tbi0>;
420 phy-handle = <&phy0>;
421 phy-connection-type = "sgmii";
422
423 mdio@520 {
424 #address-cells = <1>;
425 #size-cells = <0>;
426 compatible = "fsl,gianfar-mdio";
427 reg = <0x520 0x20>;
428
429 phy0: ethernet-phy@1 {
430 interrupt-parent = <&mpic>;
431 interrupts = <8 1>;
432 reg = <0x1>;
433 };
434 phy1: ethernet-phy@2 {
435 interrupt-parent = <&mpic>;
436 interrupts = <8 1>;
437 reg = <0x2>;
438 };
439 tbi0: tbi-phy@11 {
440 reg = <0x11>;
441 device_type = "tbi-phy";
442 };
443 };
444 };
445
446 /* eTSEC 2 */
447 enet1: ethernet@25000 {
448 #address-cells = <1>;
449 #size-cells = <1>;
450 cell-index = <1>;
451 device_type = "network";
452 model = "eTSEC";
453 compatible = "gianfar";
454 reg = <0x25000 0x1000>;
455 ranges = <0x0 0x25000 0x1000>;
456 local-mac-address = [ 00 00 00 00 00 00 ];
457 interrupts = <35 2 36 2 40 2>;
458 interrupt-parent = <&mpic>;
459 tbi-handle = <&tbi1>;
460 phy-handle = <&phy1>;
461 phy-connection-type = "sgmii";
462
463 mdio@520 {
464 #address-cells = <1>;
465 #size-cells = <0>;
466 compatible = "fsl,gianfar-tbi";
467 reg = <0x520 0x20>;
468
469 tbi1: tbi-phy@11 {
470 reg = <0x11>;
471 device_type = "tbi-phy";
472 };
473 };
474 };
475
476 /* UART0 */
477 serial0: serial@4500 {
478 cell-index = <0>;
479 device_type = "serial";
480 compatible = "ns16550";
481 reg = <0x4500 0x100>;
482 clock-frequency = <0>;
483 interrupts = <42 2>;
484 interrupt-parent = <&mpic>;
485 };
486
487 /* UART1 */
488 serial1: serial@4600 {
489 cell-index = <1>;
490 device_type = "serial";
491 compatible = "ns16550";
492 reg = <0x4600 0x100>;
493 clock-frequency = <0>;
494 interrupts = <42 2>;
495 interrupt-parent = <&mpic>;
496 };
497
498 global-utilities@e0000 { //global utilities block
499 compatible = "fsl,mpc8572-guts";
500 reg = <0xe0000 0x1000>;
501 fsl,has-rstcr;
502 };
503
504 msi@41600 {
505 compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
506 reg = <0x41600 0x80>;
507 msi-available-ranges = <0 0x100>;
508 interrupts = <
509 0xe0 0
510 0xe1 0
511 0xe2 0
512 0xe3 0
513 0xe4 0
514 0xe5 0
515 0xe6 0
516 0xe7 0>;
517 interrupt-parent = <&mpic>;
518 };
519
520 crypto@30000 {
521 compatible = "fsl,sec3.0", "fsl,sec2.4", "fsl,sec2.2",
522 "fsl,sec2.1", "fsl,sec2.0";
523 reg = <0x30000 0x10000>;
524 interrupts = <45 2 58 2>;
525 interrupt-parent = <&mpic>;
526 fsl,num-channels = <4>;
527 fsl,channel-fifo-len = <24>;
528 fsl,exec-units-mask = <0x9fe>;
529 fsl,descriptor-types-mask = <0x3ab0ebf>;
530 };
531
532 mpic: pic@40000 {
533 interrupt-controller;
534 #address-cells = <0>;
535 #interrupt-cells = <2>;
536 reg = <0x40000 0x40000>;
537 compatible = "chrp,open-pic";
538 device_type = "open-pic";
539 };
540
541 gpio0: gpio@f000 {
542 compatible = "fsl,mpc8572-gpio";
543 reg = <0xf000 0x1000>;
544 interrupts = <47 2>;
545 interrupt-parent = <&mpic>;
546 #gpio-cells = <2>;
547 gpio-controller;
548 };
549
550 gpio-leds {
551 compatible = "gpio-leds";
552
553 heartbeat {
554 label = "Heartbeat";
555 gpios = <&gpio0 4 1>;
556 linux,default-trigger = "heartbeat";
557 };
558
559 yellow {
560 label = "Yellow";
561 gpios = <&gpio0 5 1>;
562 };
563
564 red {
565 label = "Red";
566 gpios = <&gpio0 6 1>;
567 };
568
569 green {
570 label = "Green";
571 gpios = <&gpio0 7 1>;
572 };
573 };
574
575 /* PME (pattern-matcher) */
576 pme@10000 {
577 compatible = "fsl,mpc8572-pme", "pme8572";
578 reg = <0x10000 0x5000>;
579 interrupts = <57 2 64 2 65 2 66 2 67 2>;
580 interrupt-parent = <&mpic>;
581 };
582
583 tlu@2f000 {
584 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
585 reg = <0x2f000 0x1000>;
586 interupts = <61 2 >;
587 interrupt-parent = <&mpic>;
588 };
589
590 tlu@15000 {
591 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
592 reg = <0x15000 0x1000>;
593 interupts = <75 2>;
594 interrupt-parent = <&mpic>;
595 };
596 };
597
598 /* PCI Express controller 3 - CompactPCI bus via PEX8112 bridge */
599 pci0: pcie@ef008000 {
600 compatible = "fsl,mpc8548-pcie";
601 device_type = "pci";
602 #interrupt-cells = <1>;
603 #size-cells = <2>;
604 #address-cells = <3>;
605 reg = <0 0xef008000 0 0x1000>;
606 bus-range = <0 255>;
607 ranges = <0x2000000 0x0 0xe0000000 0 0xe0000000 0x0 0x10000000
608 0x1000000 0x0 0x00000000 0 0xe9000000 0x0 0x10000>;
609 clock-frequency = <33333333>;
610 interrupt-parent = <&mpic>;
611 interrupts = <24 2>;
612 interrupt-map-mask = <0xff00 0x0 0x0 0x7>;
613 interrupt-map = <
614 0x0 0x0 0x0 0x1 &mpic 0x0 0x1
615 0x0 0x0 0x0 0x2 &mpic 0x1 0x1
616 0x0 0x0 0x0 0x3 &mpic 0x2 0x1
617 0x0 0x0 0x0 0x4 &mpic 0x3 0x1
618 >;
619 pcie@0 {
620 reg = <0x0 0x0 0x0 0x0 0x0>;
621 #size-cells = <2>;
622 #address-cells = <3>;
623 device_type = "pci";
624 ranges = <0x02000000 0x0 0xe0000000
625 0x02000000 0x0 0xe0000000
626 0x0 0x10000000
627
628 0x01000000 0x0 0x0
629 0x01000000 0x0 0x0
630 0x0 0x100000>;
631 };
632 };
633
634 /* PCI Express controller 2, PMC module via PEX8112 bridge */
635 pci1: pcie@ef009000 {
636 compatible = "fsl,mpc8548-pcie";
637 device_type = "pci";
638 #interrupt-cells = <1>;
639 #size-cells = <2>;
640 #address-cells = <3>;
641 reg = <0 0xef009000 0 0x1000>;
642 bus-range = <0 255>;
643 ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x10000000
644 0x1000000 0x0 0x00000000 0 0xe8800000 0x0 0x10000>;
645 clock-frequency = <33333333>;
646 interrupt-parent = <&mpic>;
647 interrupts = <25 2>;
648 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
649 interrupt-map = <
650 /* IDSEL 0x0 */
651 0x0 0x0 0x0 0x1 &mpic 0x4 0x1
652 0x0 0x0 0x0 0x2 &mpic 0x5 0x1
653 0x0 0x0 0x0 0x3 &mpic 0x6 0x1
654 0x0 0x0 0x0 0x4 &mpic 0x7 0x1
655 >;
656 pcie@0 {
657 reg = <0x0 0x0 0x0 0x0 0x0>;
658 #size-cells = <2>;
659 #address-cells = <3>;
660 device_type = "pci";
661 ranges = <0x2000000 0x0 0xc0000000
662 0x2000000 0x0 0xc0000000
663 0x0 0x10000000
664
665 0x1000000 0x0 0x0
666 0x1000000 0x0 0x0
667 0x0 0x100000>;
668 };
669 };
670
671 /* PCI Express controller 1, XMC P15 */
672 pci2: pcie@ef00a000 {
673 compatible = "fsl,mpc8548-pcie";
674 device_type = "pci";
675 #interrupt-cells = <1>;
676 #size-cells = <2>;
677 #address-cells = <3>;
678 reg = <0 0xef00a000 0 0x1000>;
679 bus-range = <0 255>;
680 ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x40000000
681 0x1000000 0x0 0x00000000 0 0xe8000000 0x0 0x10000>;
682 clock-frequency = <33333333>;
683 interrupt-parent = <&mpic>;
684 interrupts = <26 2>;
685 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
686 interrupt-map = <
687 /* IDSEL 0x0 */
688 0x0 0x0 0x0 0x1 &mpic 0x0 0x1
689 0x0 0x0 0x0 0x2 &mpic 0x1 0x1
690 0x0 0x0 0x0 0x3 &mpic 0x2 0x1
691 0x0 0x0 0x0 0x4 &mpic 0x3 0x1
692 >;
693 pcie@0 {
694 reg = <0x0 0x0 0x0 0x0 0x0>;
695 #size-cells = <2>;
696 #address-cells = <3>;
697 device_type = "pci";
698 ranges = <0x2000000 0x0 0x80000000
699 0x2000000 0x0 0x80000000
700 0x0 0x40000000
701
702 0x1000000 0x0 0x0
703 0x1000000 0x0 0x0
704 0x0 0x100000>;
705 };
706 };
707};
diff --git a/arch/powerpc/boot/dts/xpedite5370.dts b/arch/powerpc/boot/dts/xpedite5370.dts
new file mode 100644
index 000000000000..7a8a4afd56cf
--- /dev/null
+++ b/arch/powerpc/boot/dts/xpedite5370.dts
@@ -0,0 +1,638 @@
1/*
2 * Copyright (C) 2008 Extreme Engineering Solutions, Inc.
3 * Based on MPC8572DS device tree from Freescale Semiconductor, Inc.
4 *
5 * XPedite5370 3U VPX single-board computer based on MPC8572E
6 *
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13/ {
14 model = "xes,xpedite5370";
15 compatible = "xes,xpedite5370", "xes,MPC8572";
16 #address-cells = <2>;
17 #size-cells = <2>;
18
19 aliases {
20 ethernet0 = &enet0;
21 ethernet1 = &enet1;
22 serial0 = &serial0;
23 serial1 = &serial1;
24 pci1 = &pci1;
25 pci2 = &pci2;
26 };
27
28 cpus {
29 #address-cells = <1>;
30 #size-cells = <0>;
31
32 PowerPC,8572@0 {
33 device_type = "cpu";
34 reg = <0x0>;
35 d-cache-line-size = <32>; // 32 bytes
36 i-cache-line-size = <32>; // 32 bytes
37 d-cache-size = <0x8000>; // L1, 32K
38 i-cache-size = <0x8000>; // L1, 32K
39 timebase-frequency = <0>;
40 bus-frequency = <0>;
41 clock-frequency = <0>;
42 next-level-cache = <&L2>;
43 };
44
45 PowerPC,8572@1 {
46 device_type = "cpu";
47 reg = <0x1>;
48 d-cache-line-size = <32>; // 32 bytes
49 i-cache-line-size = <32>; // 32 bytes
50 d-cache-size = <0x8000>; // L1, 32K
51 i-cache-size = <0x8000>; // L1, 32K
52 timebase-frequency = <0>;
53 bus-frequency = <0>;
54 clock-frequency = <0>;
55 next-level-cache = <&L2>;
56 };
57 };
58
59 memory {
60 device_type = "memory";
61 reg = <0x0 0x0 0x0 0x0>; // Filled in by U-Boot
62 };
63
64 localbus@ef005000 {
65 #address-cells = <2>;
66 #size-cells = <1>;
67 compatible = "fsl,mpc8572-elbc", "fsl,elbc", "simple-bus";
68 reg = <0 0xef005000 0 0x1000>;
69 interrupts = <19 2>;
70 interrupt-parent = <&mpic>;
71 /* Local bus region mappings */
72 ranges = <0 0 0 0xf8000000 0x8000000 /* CS0: Boot flash */
73 1 0 0 0xf0000000 0x8000000 /* CS1: Alternate flash */
74 2 0 0 0xef800000 0x40000 /* CS2: NAND CE1 */
75 3 0 0 0xef840000 0x40000>; /* CS3: NAND CE2 */
76
77 nor-boot@0,0 {
78 compatible = "amd,s29gl01gp", "cfi-flash";
79 bank-width = <2>;
80 reg = <0 0 0x8000000>; /* 128MB */
81 #address-cells = <1>;
82 #size-cells = <1>;
83 partition@0 {
84 label = "Primary user space";
85 reg = <0x00000000 0x6f00000>; /* 111 MB */
86 };
87 partition@6f00000 {
88 label = "Primary kernel";
89 reg = <0x6f00000 0x1000000>; /* 16 MB */
90 };
91 partition@7f00000 {
92 label = "Primary DTB";
93 reg = <0x7f00000 0x40000>; /* 256 KB */
94 };
95 partition@7f40000 {
96 label = "Primary U-Boot environment";
97 reg = <0x7f40000 0x40000>; /* 256 KB */
98 };
99 partition@7f80000 {
100 label = "Primary U-Boot";
101 reg = <0x7f80000 0x80000>; /* 512 KB */
102 read-only;
103 };
104 };
105
106 nor-alternate@1,0 {
107 compatible = "amd,s29gl01gp", "cfi-flash";
108 bank-width = <2>;
109 //reg = <0xf0000000 0x08000000>; /* 128MB */
110 reg = <1 0 0x8000000>; /* 128MB */
111 #address-cells = <1>;
112 #size-cells = <1>;
113 partition@0 {
114 label = "Secondary user space";
115 reg = <0x00000000 0x6f00000>; /* 111 MB */
116 };
117 partition@6f00000 {
118 label = "Secondary kernel";
119 reg = <0x6f00000 0x1000000>; /* 16 MB */
120 };
121 partition@7f00000 {
122 label = "Secondary DTB";
123 reg = <0x7f00000 0x40000>; /* 256 KB */
124 };
125 partition@7f40000 {
126 label = "Secondary U-Boot environment";
127 reg = <0x7f40000 0x40000>; /* 256 KB */
128 };
129 partition@7f80000 {
130 label = "Secondary U-Boot";
131 reg = <0x7f80000 0x80000>; /* 512 KB */
132 read-only;
133 };
134 };
135
136 nand@2,0 {
137 #address-cells = <1>;
138 #size-cells = <1>;
139 /*
140 * Actual part could be ST Micro NAND08GW3B2A (1 GB),
141 * Micron MT29F8G08DAA (2x 512 MB), or Micron
142 * MT29F16G08FAA (2x 1 GB), depending on the build
143 * configuration
144 */
145 compatible = "fsl,mpc8572-fcm-nand",
146 "fsl,elbc-fcm-nand";
147 reg = <2 0 0x40000>;
148 /* U-Boot should fix this up if chip size > 1 GB */
149 partition@0 {
150 label = "NAND Filesystem";
151 reg = <0 0x40000000>;
152 };
153 };
154
155 };
156
157 soc8572@ef000000 {
158 #address-cells = <1>;
159 #size-cells = <1>;
160 device_type = "soc";
161 compatible = "fsl,mpc8572-immr", "simple-bus";
162 ranges = <0x0 0 0xef000000 0x100000>;
163 bus-frequency = <0>; // Filled out by uboot.
164
165 ecm-law@0 {
166 compatible = "fsl,ecm-law";
167 reg = <0x0 0x1000>;
168 fsl,num-laws = <12>;
169 };
170
171 ecm@1000 {
172 compatible = "fsl,mpc8572-ecm", "fsl,ecm";
173 reg = <0x1000 0x1000>;
174 interrupts = <17 2>;
175 interrupt-parent = <&mpic>;
176 };
177
178 memory-controller@2000 {
179 compatible = "fsl,mpc8572-memory-controller";
180 reg = <0x2000 0x1000>;
181 interrupt-parent = <&mpic>;
182 interrupts = <18 2>;
183 };
184
185 memory-controller@6000 {
186 compatible = "fsl,mpc8572-memory-controller";
187 reg = <0x6000 0x1000>;
188 interrupt-parent = <&mpic>;
189 interrupts = <18 2>;
190 };
191
192 L2: l2-cache-controller@20000 {
193 compatible = "fsl,mpc8572-l2-cache-controller";
194 reg = <0x20000 0x1000>;
195 cache-line-size = <32>; // 32 bytes
196 cache-size = <0x100000>; // L2, 1M
197 interrupt-parent = <&mpic>;
198 interrupts = <16 2>;
199 };
200
201 i2c@3000 {
202 #address-cells = <1>;
203 #size-cells = <0>;
204 cell-index = <0>;
205 compatible = "fsl-i2c";
206 reg = <0x3000 0x100>;
207 interrupts = <43 2>;
208 interrupt-parent = <&mpic>;
209 dfsrr;
210
211 temp-sensor@48 {
212 compatible = "dallas,ds1631", "dallas,ds1621";
213 reg = <0x48>;
214 };
215
216 temp-sensor@4c {
217 compatible = "adi,adt7461";
218 reg = <0x4c>;
219 };
220
221 cpu-supervisor@51 {
222 compatible = "dallas,ds4510";
223 reg = <0x51>;
224 };
225
226 eeprom@54 {
227 compatible = "atmel,at24c128b";
228 reg = <0x54>;
229 };
230
231 rtc@68 {
232 compatible = "stm,m41t00",
233 "dallas,ds1338";
234 reg = <0x68>;
235 };
236
237 pcie-switch@70 {
238 compatible = "plx,pex8518";
239 reg = <0x70>;
240 };
241
242 gpio1: gpio@18 {
243 compatible = "nxp,pca9557";
244 reg = <0x18>;
245 #gpio-cells = <2>;
246 gpio-controller;
247 polarity = <0x00>;
248 };
249
250 gpio2: gpio@1c {
251 compatible = "nxp,pca9557";
252 reg = <0x1c>;
253 #gpio-cells = <2>;
254 gpio-controller;
255 polarity = <0x00>;
256 };
257
258 gpio3: gpio@1e {
259 compatible = "nxp,pca9557";
260 reg = <0x1e>;
261 #gpio-cells = <2>;
262 gpio-controller;
263 polarity = <0x00>;
264 };
265
266 gpio4: gpio@1f {
267 compatible = "nxp,pca9557";
268 reg = <0x1f>;
269 #gpio-cells = <2>;
270 gpio-controller;
271 polarity = <0x00>;
272 };
273 };
274
275 i2c@3100 {
276 #address-cells = <1>;
277 #size-cells = <0>;
278 cell-index = <1>;
279 compatible = "fsl-i2c";
280 reg = <0x3100 0x100>;
281 interrupts = <43 2>;
282 interrupt-parent = <&mpic>;
283 dfsrr;
284 };
285
286 dma@c300 {
287 #address-cells = <1>;
288 #size-cells = <1>;
289 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
290 reg = <0xc300 0x4>;
291 ranges = <0x0 0xc100 0x200>;
292 cell-index = <1>;
293 dma-channel@0 {
294 compatible = "fsl,mpc8572-dma-channel",
295 "fsl,eloplus-dma-channel";
296 reg = <0x0 0x80>;
297 cell-index = <0>;
298 interrupt-parent = <&mpic>;
299 interrupts = <76 2>;
300 };
301 dma-channel@80 {
302 compatible = "fsl,mpc8572-dma-channel",
303 "fsl,eloplus-dma-channel";
304 reg = <0x80 0x80>;
305 cell-index = <1>;
306 interrupt-parent = <&mpic>;
307 interrupts = <77 2>;
308 };
309 dma-channel@100 {
310 compatible = "fsl,mpc8572-dma-channel",
311 "fsl,eloplus-dma-channel";
312 reg = <0x100 0x80>;
313 cell-index = <2>;
314 interrupt-parent = <&mpic>;
315 interrupts = <78 2>;
316 };
317 dma-channel@180 {
318 compatible = "fsl,mpc8572-dma-channel",
319 "fsl,eloplus-dma-channel";
320 reg = <0x180 0x80>;
321 cell-index = <3>;
322 interrupt-parent = <&mpic>;
323 interrupts = <79 2>;
324 };
325 };
326
327 dma@21300 {
328 #address-cells = <1>;
329 #size-cells = <1>;
330 compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
331 reg = <0x21300 0x4>;
332 ranges = <0x0 0x21100 0x200>;
333 cell-index = <0>;
334 dma-channel@0 {
335 compatible = "fsl,mpc8572-dma-channel",
336 "fsl,eloplus-dma-channel";
337 reg = <0x0 0x80>;
338 cell-index = <0>;
339 interrupt-parent = <&mpic>;
340 interrupts = <20 2>;
341 };
342 dma-channel@80 {
343 compatible = "fsl,mpc8572-dma-channel",
344 "fsl,eloplus-dma-channel";
345 reg = <0x80 0x80>;
346 cell-index = <1>;
347 interrupt-parent = <&mpic>;
348 interrupts = <21 2>;
349 };
350 dma-channel@100 {
351 compatible = "fsl,mpc8572-dma-channel",
352 "fsl,eloplus-dma-channel";
353 reg = <0x100 0x80>;
354 cell-index = <2>;
355 interrupt-parent = <&mpic>;
356 interrupts = <22 2>;
357 };
358 dma-channel@180 {
359 compatible = "fsl,mpc8572-dma-channel",
360 "fsl,eloplus-dma-channel";
361 reg = <0x180 0x80>;
362 cell-index = <3>;
363 interrupt-parent = <&mpic>;
364 interrupts = <23 2>;
365 };
366 };
367
368 /* eTSEC 1 */
369 enet0: ethernet@24000 {
370 #address-cells = <1>;
371 #size-cells = <1>;
372 cell-index = <0>;
373 device_type = "network";
374 model = "eTSEC";
375 compatible = "gianfar";
376 reg = <0x24000 0x1000>;
377 ranges = <0x0 0x24000 0x1000>;
378 local-mac-address = [ 00 00 00 00 00 00 ];
379 interrupts = <29 2 30 2 34 2>;
380 interrupt-parent = <&mpic>;
381 tbi-handle = <&tbi0>;
382 phy-handle = <&phy0>;
383 phy-connection-type = "sgmii";
384
385 mdio@520 {
386 #address-cells = <1>;
387 #size-cells = <0>;
388 compatible = "fsl,gianfar-mdio";
389 reg = <0x520 0x20>;
390
391 phy0: ethernet-phy@1 {
392 interrupt-parent = <&mpic>;
393 interrupts = <8 1>;
394 reg = <0x1>;
395 };
396 phy1: ethernet-phy@2 {
397 interrupt-parent = <&mpic>;
398 interrupts = <8 1>;
399 reg = <0x2>;
400 };
401 tbi0: tbi-phy@11 {
402 reg = <0x11>;
403 device_type = "tbi-phy";
404 };
405 };
406 };
407
408 /* eTSEC 2 */
409 enet1: ethernet@25000 {
410 #address-cells = <1>;
411 #size-cells = <1>;
412 cell-index = <1>;
413 device_type = "network";
414 model = "eTSEC";
415 compatible = "gianfar";
416 reg = <0x25000 0x1000>;
417 ranges = <0x0 0x25000 0x1000>;
418 local-mac-address = [ 00 00 00 00 00 00 ];
419 interrupts = <35 2 36 2 40 2>;
420 interrupt-parent = <&mpic>;
421 tbi-handle = <&tbi1>;
422 phy-handle = <&phy1>;
423 phy-connection-type = "sgmii";
424
425 mdio@520 {
426 #address-cells = <1>;
427 #size-cells = <0>;
428 compatible = "fsl,gianfar-tbi";
429 reg = <0x520 0x20>;
430
431 tbi1: tbi-phy@11 {
432 reg = <0x11>;
433 device_type = "tbi-phy";
434 };
435 };
436 };
437
438 /* UART0 */
439 serial0: serial@4500 {
440 cell-index = <0>;
441 device_type = "serial";
442 compatible = "ns16550";
443 reg = <0x4500 0x100>;
444 clock-frequency = <0>;
445 interrupts = <42 2>;
446 interrupt-parent = <&mpic>;
447 };
448
449 /* UART1 */
450 serial1: serial@4600 {
451 cell-index = <1>;
452 device_type = "serial";
453 compatible = "ns16550";
454 reg = <0x4600 0x100>;
455 clock-frequency = <0>;
456 interrupts = <42 2>;
457 interrupt-parent = <&mpic>;
458 };
459
460 global-utilities@e0000 { //global utilities block
461 compatible = "fsl,mpc8572-guts";
462 reg = <0xe0000 0x1000>;
463 fsl,has-rstcr;
464 };
465
466 msi@41600 {
467 compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
468 reg = <0x41600 0x80>;
469 msi-available-ranges = <0 0x100>;
470 interrupts = <
471 0xe0 0
472 0xe1 0
473 0xe2 0
474 0xe3 0
475 0xe4 0
476 0xe5 0
477 0xe6 0
478 0xe7 0>;
479 interrupt-parent = <&mpic>;
480 };
481
482 crypto@30000 {
483 compatible = "fsl,sec3.0", "fsl,sec2.4", "fsl,sec2.2",
484 "fsl,sec2.1", "fsl,sec2.0";
485 reg = <0x30000 0x10000>;
486 interrupts = <45 2 58 2>;
487 interrupt-parent = <&mpic>;
488 fsl,num-channels = <4>;
489 fsl,channel-fifo-len = <24>;
490 fsl,exec-units-mask = <0x9fe>;
491 fsl,descriptor-types-mask = <0x3ab0ebf>;
492 };
493
494 mpic: pic@40000 {
495 interrupt-controller;
496 #address-cells = <0>;
497 #interrupt-cells = <2>;
498 reg = <0x40000 0x40000>;
499 compatible = "chrp,open-pic";
500 device_type = "open-pic";
501 };
502
503 gpio0: gpio@f000 {
504 compatible = "fsl,mpc8572-gpio";
505 reg = <0xf000 0x1000>;
506 interrupts = <47 2>;
507 interrupt-parent = <&mpic>;
508 #gpio-cells = <2>;
509 gpio-controller;
510 };
511
512 gpio-leds {
513 compatible = "gpio-leds";
514
515 heartbeat {
516 label = "Heartbeat";
517 gpios = <&gpio0 4 1>;
518 linux,default-trigger = "heartbeat";
519 };
520
521 yellow {
522 label = "Yellow";
523 gpios = <&gpio0 5 1>;
524 };
525
526 red {
527 label = "Red";
528 gpios = <&gpio0 6 1>;
529 };
530
531 green {
532 label = "Green";
533 gpios = <&gpio0 7 1>;
534 };
535 };
536
537 /* PME (pattern-matcher) */
538 pme@10000 {
539 compatible = "fsl,mpc8572-pme", "pme8572";
540 reg = <0x10000 0x5000>;
541 interrupts = <57 2 64 2 65 2 66 2 67 2>;
542 interrupt-parent = <&mpic>;
543 };
544
545 tlu@2f000 {
546 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
547 reg = <0x2f000 0x1000>;
548 interupts = <61 2 >;
549 interrupt-parent = <&mpic>;
550 };
551
552 tlu@15000 {
553 compatible = "fsl,mpc8572-tlu", "fsl_tlu";
554 reg = <0x15000 0x1000>;
555 interupts = <75 2>;
556 interrupt-parent = <&mpic>;
557 };
558 };
559
560 /*
561 * PCI Express controller 3 @ ef008000 is not used.
562 * This would have been pci0 on other mpc85xx platforms.
563 */
564
565 /* PCI Express controller 2, wired to VPX P1,P2 backplane */
566 pci1: pcie@ef009000 {
567 compatible = "fsl,mpc8548-pcie";
568 device_type = "pci";
569 #interrupt-cells = <1>;
570 #size-cells = <2>;
571 #address-cells = <3>;
572 reg = <0 0xef009000 0 0x1000>;
573 bus-range = <0 255>;
574 ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x10000000
575 0x1000000 0x0 0x00000000 0 0xe8800000 0x0 0x00010000>;
576 clock-frequency = <33333333>;
577 interrupt-parent = <&mpic>;
578 interrupts = <25 2>;
579 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
580 interrupt-map = <
581 /* IDSEL 0x0 */
582 0x0 0x0 0x0 0x1 &mpic 0x4 0x1
583 0x0 0x0 0x0 0x2 &mpic 0x5 0x1
584 0x0 0x0 0x0 0x3 &mpic 0x6 0x1
585 0x0 0x0 0x0 0x4 &mpic 0x7 0x1
586 >;
587 pcie@0 {
588 reg = <0x00000000 0x00000000 0x00000000 0x00000000 0x00000000>;
589 #size-cells = <2>;
590 #address-cells = <3>;
591 device_type = "pci";
592 ranges = <0x2000000 0x0 0xc0000000
593 0x2000000 0x0 0xc0000000
594 0x0 0x10000000
595
596 0x1000000 0x0 0x0
597 0x1000000 0x0 0x0
598 0x0 0x100000>;
599 };
600 };
601
602 /* PCI Express controller 1, wired to PEX8518 PCIe switch */
603 pci2: pcie@ef00a000 {
604 compatible = "fsl,mpc8548-pcie";
605 device_type = "pci";
606 #interrupt-cells = <1>;
607 #size-cells = <2>;
608 #address-cells = <3>;
609 reg = <0 0xef00a000 0 0x1000>;
610 bus-range = <0 255>;
611 ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x40000000
612 0x1000000 0x0 0x00000000 0 0xe8000000 0x0 0x10000>;
613 clock-frequency = <33333333>;
614 interrupt-parent = <&mpic>;
615 interrupts = <26 2>;
616 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
617 interrupt-map = <
618 /* IDSEL 0x0 */
619 0x0 0x0 0x0 0x1 &mpic 0x0 0x1
620 0x0 0x0 0x0 0x2 &mpic 0x1 0x1
621 0x0 0x0 0x0 0x3 &mpic 0x2 0x1
622 0x0 0x0 0x0 0x4 &mpic 0x3 0x1
623 >;
624 pcie@0 {
625 reg = <0x0 0x0 0x0 0x0 0x0>;
626 #size-cells = <2>;
627 #address-cells = <3>;
628 device_type = "pci";
629 ranges = <0x2000000 0x0 0x80000000
630 0x2000000 0x0 0x80000000
631 0x0 0x40000000
632
633 0x1000000 0x0 0x0
634 0x1000000 0x0 0x0
635 0x0 0x100000>;
636 };
637 };
638};
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index 3ac75aecdb94..4db487d1d2a8 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -225,6 +225,10 @@ asp834x-redboot)
225 platformo="$object/fixed-head.o $object/redboot-83xx.o" 225 platformo="$object/fixed-head.o $object/redboot-83xx.o"
226 binary=y 226 binary=y
227 ;; 227 ;;
228xpedite52*)
229 link_address='0x1400000'
230 platformo=$object/cuboot-85xx.o
231 ;;
228esac 232esac
229 233
230vmz="$tmpdir/`basename \"$kernel\"`.$ext" 234vmz="$tmpdir/`basename \"$kernel\"`.$ext"
diff --git a/arch/powerpc/configs/83xx/kmeter1_defconfig b/arch/powerpc/configs/83xx/kmeter1_defconfig
new file mode 100644
index 000000000000..bf0853f29f31
--- /dev/null
+++ b/arch/powerpc/configs/83xx/kmeter1_defconfig
@@ -0,0 +1,908 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.28
4# Fri Apr 3 10:34:33 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11CONFIG_6xx=y
12# CONFIG_PPC_85xx is not set
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_PPC_FPU=y
18# CONFIG_FSL_EMB_PERFMON is not set
19# CONFIG_ALTIVEC is not set
20CONFIG_PPC_STD_MMU=y
21CONFIG_PPC_STD_MMU_32=y
22# CONFIG_PPC_MM_SLICES is not set
23# CONFIG_SMP is not set
24CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32
26# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
27CONFIG_MMU=y
28CONFIG_GENERIC_CMOS_UPDATE=y
29CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y
32CONFIG_GENERIC_HARDIRQS=y
33# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
34CONFIG_IRQ_PER_CPU=y
35CONFIG_STACKTRACE_SUPPORT=y
36CONFIG_HAVE_LATENCYTOP_SUPPORT=y
37CONFIG_LOCKDEP_SUPPORT=y
38CONFIG_RWSEM_XCHGADD_ALGORITHM=y
39CONFIG_ARCH_HAS_ILOG2_U32=y
40CONFIG_GENERIC_HWEIGHT=y
41CONFIG_GENERIC_CALIBRATE_DELAY=y
42CONFIG_GENERIC_FIND_NEXT_BIT=y
43# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
44CONFIG_PPC=y
45CONFIG_EARLY_PRINTK=y
46CONFIG_GENERIC_NVRAM=y
47CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
48CONFIG_ARCH_MAY_HAVE_PC_FDC=y
49CONFIG_PPC_OF=y
50CONFIG_OF=y
51CONFIG_PPC_UDBG_16550=y
52# CONFIG_GENERIC_TBSYNC is not set
53CONFIG_AUDIT_ARCH=y
54CONFIG_GENERIC_BUG=y
55CONFIG_DEFAULT_UIMAGE=y
56CONFIG_ARCH_SUSPEND_POSSIBLE=y
57# CONFIG_PPC_DCR_NATIVE is not set
58# CONFIG_PPC_DCR_MMIO is not set
59CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
60
61#
62# General setup
63#
64CONFIG_EXPERIMENTAL=y
65CONFIG_BROKEN_ON_SMP=y
66CONFIG_LOCK_KERNEL=y
67CONFIG_INIT_ENV_ARG_LIMIT=32
68CONFIG_LOCALVERSION=""
69CONFIG_LOCALVERSION_AUTO=y
70# CONFIG_SWAP is not set
71CONFIG_SYSVIPC=y
72CONFIG_SYSVIPC_SYSCTL=y
73CONFIG_POSIX_MQUEUE=y
74# CONFIG_BSD_PROCESS_ACCT is not set
75# CONFIG_TASKSTATS is not set
76# CONFIG_AUDIT is not set
77# CONFIG_IKCONFIG is not set
78CONFIG_LOG_BUF_SHIFT=14
79# CONFIG_CGROUPS is not set
80# CONFIG_GROUP_SCHED is not set
81# CONFIG_SYSFS_DEPRECATED_V2 is not set
82# CONFIG_RELAY is not set
83# CONFIG_NAMESPACES is not set
84# CONFIG_BLK_DEV_INITRD is not set
85CONFIG_CC_OPTIMIZE_FOR_SIZE=y
86CONFIG_SYSCTL=y
87CONFIG_EMBEDDED=y
88CONFIG_SYSCTL_SYSCALL=y
89CONFIG_KALLSYMS=y
90CONFIG_KALLSYMS_ALL=y
91# CONFIG_KALLSYMS_EXTRA_PASS is not set
92# CONFIG_HOTPLUG is not set
93CONFIG_PRINTK=y
94CONFIG_BUG=y
95CONFIG_ELF_CORE=y
96CONFIG_COMPAT_BRK=y
97CONFIG_BASE_FULL=y
98CONFIG_FUTEX=y
99CONFIG_ANON_INODES=y
100CONFIG_EPOLL=y
101CONFIG_SIGNALFD=y
102CONFIG_TIMERFD=y
103CONFIG_EVENTFD=y
104CONFIG_SHMEM=y
105CONFIG_AIO=y
106CONFIG_VM_EVENT_COUNTERS=y
107CONFIG_SLAB=y
108# CONFIG_SLUB is not set
109# CONFIG_SLOB is not set
110# CONFIG_PROFILING is not set
111# CONFIG_MARKERS is not set
112CONFIG_HAVE_OPROFILE=y
113# CONFIG_KPROBES is not set
114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
115CONFIG_HAVE_IOREMAP_PROT=y
116CONFIG_HAVE_KPROBES=y
117CONFIG_HAVE_KRETPROBES=y
118CONFIG_HAVE_ARCH_TRACEHOOK=y
119# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
120CONFIG_SLABINFO=y
121CONFIG_RT_MUTEXES=y
122# CONFIG_TINY_SHMEM is not set
123CONFIG_BASE_SMALL=0
124CONFIG_MODULES=y
125# CONFIG_MODULE_FORCE_LOAD is not set
126CONFIG_MODULE_UNLOAD=y
127# CONFIG_MODULE_FORCE_UNLOAD is not set
128# CONFIG_MODVERSIONS is not set
129# CONFIG_MODULE_SRCVERSION_ALL is not set
130CONFIG_KMOD=y
131CONFIG_BLOCK=y
132# CONFIG_LBD is not set
133# CONFIG_BLK_DEV_IO_TRACE is not set
134# CONFIG_LSF is not set
135# CONFIG_BLK_DEV_BSG is not set
136# CONFIG_BLK_DEV_INTEGRITY is not set
137
138#
139# IO Schedulers
140#
141CONFIG_IOSCHED_NOOP=y
142# CONFIG_IOSCHED_AS is not set
143# CONFIG_IOSCHED_DEADLINE is not set
144# CONFIG_IOSCHED_CFQ is not set
145# CONFIG_DEFAULT_AS is not set
146# CONFIG_DEFAULT_DEADLINE is not set
147# CONFIG_DEFAULT_CFQ is not set
148CONFIG_DEFAULT_NOOP=y
149CONFIG_DEFAULT_IOSCHED="noop"
150CONFIG_CLASSIC_RCU=y
151# CONFIG_FREEZER is not set
152
153#
154# Platform support
155#
156CONFIG_PPC_MULTIPLATFORM=y
157CONFIG_CLASSIC32=y
158# CONFIG_PPC_CHRP is not set
159# CONFIG_MPC5121_ADS is not set
160# CONFIG_MPC5121_GENERIC is not set
161# CONFIG_PPC_MPC52xx is not set
162# CONFIG_PPC_PMAC is not set
163# CONFIG_PPC_CELL is not set
164# CONFIG_PPC_CELL_NATIVE is not set
165# CONFIG_PPC_82xx is not set
166# CONFIG_PQ2ADS is not set
167CONFIG_PPC_83xx=y
168# CONFIG_MPC831x_RDB is not set
169# CONFIG_MPC832x_MDS is not set
170# CONFIG_MPC832x_RDB is not set
171# CONFIG_MPC834x_MDS is not set
172# CONFIG_MPC834x_ITX is not set
173# CONFIG_MPC836x_MDS is not set
174# CONFIG_MPC836x_RDK is not set
175# CONFIG_MPC837x_MDS is not set
176# CONFIG_MPC837x_RDB is not set
177# CONFIG_SBC834x is not set
178# CONFIG_ASP834x is not set
179CONFIG_KMETER1=y
180# CONFIG_PPC_86xx is not set
181# CONFIG_EMBEDDED6xx is not set
182CONFIG_IPIC=y
183# CONFIG_MPIC is not set
184# CONFIG_MPIC_WEIRD is not set
185# CONFIG_PPC_I8259 is not set
186# CONFIG_PPC_RTAS is not set
187# CONFIG_MMIO_NVRAM is not set
188# CONFIG_PPC_MPC106 is not set
189# CONFIG_PPC_970_NAP is not set
190# CONFIG_PPC_INDIRECT_IO is not set
191# CONFIG_GENERIC_IOMAP is not set
192# CONFIG_CPU_FREQ is not set
193# CONFIG_TAU is not set
194CONFIG_QUICC_ENGINE=y
195# CONFIG_QE_GPIO is not set
196# CONFIG_FSL_ULI1575 is not set
197
198#
199# Kernel options
200#
201# CONFIG_HIGHMEM is not set
202CONFIG_TICK_ONESHOT=y
203CONFIG_NO_HZ=y
204CONFIG_HIGH_RES_TIMERS=y
205CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
206# CONFIG_HZ_100 is not set
207CONFIG_HZ_250=y
208# CONFIG_HZ_300 is not set
209# CONFIG_HZ_1000 is not set
210CONFIG_HZ=250
211CONFIG_SCHED_HRTICK=y
212# CONFIG_PREEMPT_NONE is not set
213# CONFIG_PREEMPT_VOLUNTARY is not set
214CONFIG_PREEMPT=y
215# CONFIG_PREEMPT_RCU is not set
216CONFIG_BINFMT_ELF=y
217# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
218# CONFIG_HAVE_AOUT is not set
219# CONFIG_BINFMT_MISC is not set
220# CONFIG_IOMMU_HELPER is not set
221CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
222CONFIG_ARCH_HAS_WALK_MEMORY=y
223CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
224# CONFIG_KEXEC is not set
225CONFIG_ARCH_FLATMEM_ENABLE=y
226CONFIG_ARCH_POPULATES_NODE_MAP=y
227CONFIG_SELECT_MEMORY_MODEL=y
228CONFIG_FLATMEM_MANUAL=y
229# CONFIG_DISCONTIGMEM_MANUAL is not set
230# CONFIG_SPARSEMEM_MANUAL is not set
231CONFIG_FLATMEM=y
232CONFIG_FLAT_NODE_MEM_MAP=y
233CONFIG_PAGEFLAGS_EXTENDED=y
234CONFIG_SPLIT_PTLOCK_CPUS=4
235CONFIG_MIGRATION=y
236# CONFIG_RESOURCES_64BIT is not set
237# CONFIG_PHYS_ADDR_T_64BIT is not set
238CONFIG_ZONE_DMA_FLAG=1
239CONFIG_BOUNCE=y
240CONFIG_VIRT_TO_BUS=y
241CONFIG_UNEVICTABLE_LRU=y
242CONFIG_FORCE_MAX_ZONEORDER=11
243CONFIG_PROC_DEVICETREE=y
244# CONFIG_CMDLINE_BOOL is not set
245CONFIG_EXTRA_TARGETS=""
246# CONFIG_PM is not set
247# CONFIG_SECCOMP is not set
248CONFIG_ISA_DMA_API=y
249
250#
251# Bus options
252#
253CONFIG_ZONE_DMA=y
254CONFIG_GENERIC_ISA_DMA=y
255CONFIG_FSL_SOC=y
256CONFIG_PPC_PCI_CHOICE=y
257# CONFIG_PCI is not set
258# CONFIG_PCI_DOMAINS is not set
259# CONFIG_PCI_SYSCALL is not set
260# CONFIG_ARCH_SUPPORTS_MSI is not set
261# CONFIG_HAS_RAPIDIO is not set
262
263#
264# Advanced setup
265#
266# CONFIG_ADVANCED_OPTIONS is not set
267
268#
269# Default settings for advanced configuration options are used
270#
271CONFIG_LOWMEM_SIZE=0x30000000
272CONFIG_PAGE_OFFSET=0xc0000000
273CONFIG_KERNEL_START=0xc0000000
274CONFIG_PHYSICAL_START=0x00000000
275CONFIG_TASK_SIZE=0xc0000000
276CONFIG_NET=y
277
278#
279# Networking options
280#
281CONFIG_PACKET=y
282# CONFIG_PACKET_MMAP is not set
283CONFIG_UNIX=y
284# CONFIG_NET_KEY is not set
285CONFIG_INET=y
286CONFIG_IP_MULTICAST=y
287# CONFIG_IP_ADVANCED_ROUTER is not set
288CONFIG_IP_FIB_HASH=y
289CONFIG_IP_PNP=y
290# CONFIG_IP_PNP_DHCP is not set
291# CONFIG_IP_PNP_BOOTP is not set
292# CONFIG_IP_PNP_RARP is not set
293# CONFIG_NET_IPIP is not set
294# CONFIG_NET_IPGRE is not set
295# CONFIG_IP_MROUTE is not set
296# CONFIG_ARPD is not set
297# CONFIG_SYN_COOKIES is not set
298# CONFIG_INET_AH is not set
299# CONFIG_INET_ESP is not set
300# CONFIG_INET_IPCOMP is not set
301# CONFIG_INET_XFRM_TUNNEL is not set
302# CONFIG_INET_TUNNEL is not set
303# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
304# CONFIG_INET_XFRM_MODE_TUNNEL is not set
305# CONFIG_INET_XFRM_MODE_BEET is not set
306# CONFIG_INET_LRO is not set
307CONFIG_INET_DIAG=y
308CONFIG_INET_TCP_DIAG=y
309# CONFIG_TCP_CONG_ADVANCED is not set
310CONFIG_TCP_CONG_CUBIC=y
311CONFIG_DEFAULT_TCP_CONG="cubic"
312# CONFIG_TCP_MD5SIG is not set
313# CONFIG_IPV6 is not set
314# CONFIG_NETWORK_SECMARK is not set
315# CONFIG_NETFILTER is not set
316# CONFIG_IP_DCCP is not set
317# CONFIG_IP_SCTP is not set
318# CONFIG_TIPC is not set
319# CONFIG_ATM is not set
320CONFIG_STP=m
321CONFIG_BRIDGE=m
322# CONFIG_NET_DSA is not set
323CONFIG_VLAN_8021Q=y
324# CONFIG_VLAN_8021Q_GVRP is not set
325# CONFIG_DECNET is not set
326CONFIG_LLC=m
327# CONFIG_LLC2 is not set
328# CONFIG_IPX is not set
329# CONFIG_ATALK is not set
330# CONFIG_X25 is not set
331# CONFIG_LAPB is not set
332# CONFIG_ECONET is not set
333# CONFIG_WAN_ROUTER is not set
334# CONFIG_NET_SCHED is not set
335
336#
337# Network testing
338#
339# CONFIG_NET_PKTGEN is not set
340# CONFIG_HAMRADIO is not set
341# CONFIG_CAN is not set
342# CONFIG_IRDA is not set
343# CONFIG_BT is not set
344# CONFIG_AF_RXRPC is not set
345# CONFIG_PHONET is not set
346# CONFIG_WIRELESS 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#
357CONFIG_STANDALONE=y
358CONFIG_PREVENT_FIRMWARE_BUILD=y
359# CONFIG_SYS_HYPERVISOR is not set
360# CONFIG_CONNECTOR is not set
361CONFIG_MTD=y
362# CONFIG_MTD_DEBUG is not set
363CONFIG_MTD_CONCAT=y
364CONFIG_MTD_PARTITIONS=y
365# CONFIG_MTD_REDBOOT_PARTS is not set
366CONFIG_MTD_CMDLINE_PARTS=y
367CONFIG_MTD_OF_PARTS=y
368# CONFIG_MTD_AR7_PARTS is not set
369
370#
371# User Modules And Translation Layers
372#
373CONFIG_MTD_CHAR=y
374CONFIG_MTD_BLKDEVS=y
375CONFIG_MTD_BLOCK=y
376# CONFIG_FTL is not set
377# CONFIG_NFTL is not set
378# CONFIG_INFTL is not set
379# CONFIG_RFD_FTL is not set
380# CONFIG_SSFDC is not set
381# CONFIG_MTD_OOPS is not set
382
383#
384# RAM/ROM/Flash chip drivers
385#
386CONFIG_MTD_CFI=y
387# CONFIG_MTD_JEDECPROBE is not set
388CONFIG_MTD_GEN_PROBE=y
389# CONFIG_MTD_CFI_ADV_OPTIONS is not set
390CONFIG_MTD_MAP_BANK_WIDTH_1=y
391CONFIG_MTD_MAP_BANK_WIDTH_2=y
392CONFIG_MTD_MAP_BANK_WIDTH_4=y
393# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
394# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
395# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
396CONFIG_MTD_CFI_I1=y
397CONFIG_MTD_CFI_I2=y
398# CONFIG_MTD_CFI_I4 is not set
399# CONFIG_MTD_CFI_I8 is not set
400CONFIG_MTD_CFI_INTELEXT=y
401CONFIG_MTD_CFI_AMDSTD=y
402# CONFIG_MTD_CFI_STAA is not set
403CONFIG_MTD_CFI_UTIL=y
404# CONFIG_MTD_RAM is not set
405# CONFIG_MTD_ROM is not set
406# CONFIG_MTD_ABSENT is not set
407
408#
409# Mapping drivers for chip access
410#
411# CONFIG_MTD_COMPLEX_MAPPINGS is not set
412# CONFIG_MTD_PHYSMAP is not set
413CONFIG_MTD_PHYSMAP_OF=y
414# CONFIG_MTD_PLATRAM is not set
415
416#
417# Self-contained MTD device drivers
418#
419# CONFIG_MTD_SLRAM is not set
420CONFIG_MTD_PHRAM=y
421# CONFIG_MTD_MTDRAM is not set
422# CONFIG_MTD_BLOCK2MTD is not set
423
424#
425# Disk-On-Chip Device Drivers
426#
427# CONFIG_MTD_DOC2000 is not set
428# CONFIG_MTD_DOC2001 is not set
429# CONFIG_MTD_DOC2001PLUS is not set
430# CONFIG_MTD_NAND is not set
431# CONFIG_MTD_ONENAND is not set
432
433#
434# UBI - Unsorted block images
435#
436CONFIG_MTD_UBI=y
437CONFIG_MTD_UBI_WL_THRESHOLD=4096
438CONFIG_MTD_UBI_BEB_RESERVE=1
439CONFIG_MTD_UBI_GLUEBI=y
440
441#
442# UBI debugging options
443#
444CONFIG_MTD_UBI_DEBUG=y
445# CONFIG_MTD_UBI_DEBUG_MSG is not set
446# CONFIG_MTD_UBI_DEBUG_PARANOID is not set
447# CONFIG_MTD_UBI_DEBUG_DISABLE_BGT is not set
448# CONFIG_MTD_UBI_DEBUG_USERSPACE_IO is not set
449# CONFIG_MTD_UBI_DEBUG_EMULATE_BITFLIPS is not set
450# CONFIG_MTD_UBI_DEBUG_EMULATE_WRITE_FAILURES is not set
451# CONFIG_MTD_UBI_DEBUG_EMULATE_ERASE_FAILURES is not set
452
453#
454# Additional UBI debugging messages
455#
456# CONFIG_MTD_UBI_DEBUG_MSG_BLD is not set
457# CONFIG_MTD_UBI_DEBUG_MSG_EBA is not set
458# CONFIG_MTD_UBI_DEBUG_MSG_WL is not set
459# CONFIG_MTD_UBI_DEBUG_MSG_IO is not set
460CONFIG_OF_DEVICE=y
461CONFIG_OF_I2C=y
462# CONFIG_PARPORT is not set
463CONFIG_BLK_DEV=y
464# CONFIG_BLK_DEV_FD is not set
465# CONFIG_BLK_DEV_COW_COMMON is not set
466# CONFIG_BLK_DEV_LOOP is not set
467# CONFIG_BLK_DEV_NBD is not set
468# CONFIG_BLK_DEV_RAM is not set
469# CONFIG_CDROM_PKTCDVD is not set
470# CONFIG_ATA_OVER_ETH is not set
471# CONFIG_BLK_DEV_HD is not set
472# CONFIG_MISC_DEVICES is not set
473CONFIG_HAVE_IDE=y
474# CONFIG_IDE is not set
475
476#
477# SCSI device support
478#
479# CONFIG_RAID_ATTRS is not set
480# CONFIG_SCSI is not set
481# CONFIG_SCSI_DMA is not set
482# CONFIG_SCSI_NETLINK is not set
483# CONFIG_ATA is not set
484# CONFIG_MD is not set
485# CONFIG_MACINTOSH_DRIVERS is not set
486CONFIG_NETDEVICES=y
487CONFIG_DUMMY=y
488# CONFIG_BONDING is not set
489# CONFIG_MACVLAN is not set
490# CONFIG_EQUALIZER is not set
491CONFIG_TUN=y
492# CONFIG_VETH is not set
493CONFIG_PHYLIB=y
494
495#
496# MII PHY device drivers
497#
498CONFIG_MARVELL_PHY=y
499# CONFIG_DAVICOM_PHY is not set
500# CONFIG_QSEMI_PHY is not set
501# CONFIG_LXT_PHY is not set
502# CONFIG_CICADA_PHY is not set
503# CONFIG_VITESSE_PHY is not set
504# CONFIG_SMSC_PHY is not set
505# CONFIG_BROADCOM_PHY is not set
506# CONFIG_ICPLUS_PHY is not set
507# CONFIG_REALTEK_PHY is not set
508# CONFIG_FIXED_PHY is not set
509# CONFIG_MDIO_BITBANG is not set
510CONFIG_NET_ETHERNET=y
511CONFIG_MII=y
512# CONFIG_IBM_NEW_EMAC_ZMII is not set
513# CONFIG_IBM_NEW_EMAC_RGMII is not set
514# CONFIG_IBM_NEW_EMAC_TAH is not set
515# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
516# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
517# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
518# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
519# CONFIG_B44 is not set
520CONFIG_NETDEV_1000=y
521# CONFIG_GIANFAR is not set
522CONFIG_UCC_GETH=y
523# CONFIG_UGETH_MAGIC_PACKET is not set
524# CONFIG_UGETH_FILTERING is not set
525# CONFIG_UGETH_TX_ON_DEMAND is not set
526# CONFIG_MV643XX_ETH is not set
527# CONFIG_NETDEV_10000 is not set
528
529#
530# Wireless LAN
531#
532# CONFIG_WLAN_PRE80211 is not set
533# CONFIG_WLAN_80211 is not set
534# CONFIG_IWLWIFI_LEDS is not set
535CONFIG_WAN=y
536CONFIG_HDLC=y
537# CONFIG_HDLC_RAW is not set
538# CONFIG_HDLC_RAW_ETH is not set
539# CONFIG_HDLC_CISCO is not set
540# CONFIG_HDLC_FR is not set
541# CONFIG_HDLC_PPP is not set
542
543#
544# X.25/LAPB support is disabled
545#
546CONFIG_HDLC_KM=y
547CONFIG_FS_UCC_HDLC=y
548# CONFIG_DLCI is not set
549CONFIG_PPP=y
550CONFIG_PPP_MULTILINK=y
551# CONFIG_PPP_FILTER is not set
552# CONFIG_PPP_ASYNC is not set
553# CONFIG_PPP_SYNC_TTY is not set
554# CONFIG_PPP_DEFLATE is not set
555# CONFIG_PPP_BSDCOMP is not set
556# CONFIG_PPP_MPPE is not set
557CONFIG_PPPOE=y
558# CONFIG_PPPOL2TP is not set
559# CONFIG_SLIP is not set
560CONFIG_SLHC=y
561# CONFIG_NETCONSOLE is not set
562# CONFIG_NETPOLL is not set
563# CONFIG_NET_POLL_CONTROLLER is not set
564# CONFIG_ISDN is not set
565# CONFIG_PHONE is not set
566
567#
568# Input device support
569#
570# CONFIG_INPUT is not set
571
572#
573# Hardware I/O ports
574#
575# CONFIG_SERIO is not set
576# CONFIG_GAMEPORT is not set
577
578#
579# Character devices
580#
581# CONFIG_VT is not set
582# CONFIG_DEVKMEM is not set
583# CONFIG_SERIAL_NONSTANDARD is not set
584
585#
586# Serial drivers
587#
588CONFIG_SERIAL_8250=y
589CONFIG_SERIAL_8250_CONSOLE=y
590CONFIG_SERIAL_8250_NR_UARTS=4
591CONFIG_SERIAL_8250_RUNTIME_UARTS=4
592# CONFIG_SERIAL_8250_EXTENDED is not set
593
594#
595# Non-8250 serial port support
596#
597# CONFIG_SERIAL_UARTLITE is not set
598CONFIG_SERIAL_CORE=y
599CONFIG_SERIAL_CORE_CONSOLE=y
600# CONFIG_SERIAL_OF_PLATFORM is not set
601# CONFIG_SERIAL_QE is not set
602CONFIG_UNIX98_PTYS=y
603CONFIG_LEGACY_PTYS=y
604CONFIG_LEGACY_PTY_COUNT=256
605# CONFIG_IPMI_HANDLER is not set
606CONFIG_HW_RANDOM=y
607# CONFIG_NVRAM is not set
608# CONFIG_GEN_RTC is not set
609# CONFIG_R3964 is not set
610# CONFIG_RAW_DRIVER is not set
611# CONFIG_TCG_TPM is not set
612CONFIG_BOOTCOUNT=y
613CONFIG_I2C=y
614CONFIG_I2C_BOARDINFO=y
615CONFIG_I2C_CHARDEV=y
616CONFIG_I2C_HELPER_AUTO=y
617
618#
619# I2C Hardware Bus support
620#
621
622#
623# I2C system bus drivers (mostly embedded / system-on-chip)
624#
625CONFIG_I2C_MPC=y
626# CONFIG_I2C_OCORES is not set
627# CONFIG_I2C_SIMTEC is not set
628
629#
630# External I2C/SMBus adapter drivers
631#
632# CONFIG_I2C_PARPORT_LIGHT is not set
633# CONFIG_I2C_TAOS_EVM is not set
634
635#
636# Other I2C/SMBus bus drivers
637#
638# CONFIG_I2C_PCA_PLATFORM is not set
639# CONFIG_I2C_STUB is not set
640
641#
642# Miscellaneous I2C Chip support
643#
644# CONFIG_DS1682 is not set
645# CONFIG_AT24 is not set
646# CONFIG_SENSORS_EEPROM is not set
647# CONFIG_SENSORS_PCF8574 is not set
648# CONFIG_PCF8575 is not set
649# CONFIG_SENSORS_PCA9539 is not set
650# CONFIG_SENSORS_PCF8591 is not set
651# CONFIG_SENSORS_MAX6875 is not set
652# CONFIG_SENSORS_TSL2550 is not set
653# CONFIG_MCU_MPC8349EMITX is not set
654# CONFIG_I2C_DEBUG_CORE is not set
655# CONFIG_I2C_DEBUG_ALGO is not set
656# CONFIG_I2C_DEBUG_BUS is not set
657# CONFIG_I2C_DEBUG_CHIP is not set
658# CONFIG_SPI is not set
659CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
660# CONFIG_GPIOLIB is not set
661# CONFIG_W1 is not set
662# CONFIG_POWER_SUPPLY is not set
663# CONFIG_HWMON is not set
664# CONFIG_THERMAL is not set
665# CONFIG_THERMAL_HWMON is not set
666# CONFIG_WATCHDOG is not set
667CONFIG_SSB_POSSIBLE=y
668
669#
670# Sonics Silicon Backplane
671#
672# CONFIG_SSB is not set
673
674#
675# Multifunction device drivers
676#
677# CONFIG_MFD_CORE is not set
678# CONFIG_MFD_SM501 is not set
679# CONFIG_HTC_PASIC3 is not set
680# CONFIG_MFD_TMIO is not set
681# CONFIG_PMIC_DA903X is not set
682# CONFIG_MFD_WM8400 is not set
683# CONFIG_MFD_WM8350_I2C is not set
684# CONFIG_REGULATOR is not set
685
686#
687# Multimedia devices
688#
689
690#
691# Multimedia core support
692#
693# CONFIG_VIDEO_DEV is not set
694# CONFIG_DVB_CORE is not set
695# CONFIG_VIDEO_MEDIA is not set
696
697#
698# Multimedia drivers
699#
700# CONFIG_DAB is not set
701
702#
703# Graphics support
704#
705# CONFIG_VGASTATE is not set
706# CONFIG_VIDEO_OUTPUT_CONTROL is not set
707# CONFIG_FB is not set
708# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
709
710#
711# Display device support
712#
713# CONFIG_DISPLAY_SUPPORT is not set
714# CONFIG_SOUND is not set
715# CONFIG_USB_SUPPORT is not set
716# CONFIG_MMC is not set
717# CONFIG_MEMSTICK is not set
718# CONFIG_NEW_LEDS is not set
719# CONFIG_ACCESSIBILITY is not set
720# CONFIG_EDAC is not set
721# CONFIG_RTC_CLASS is not set
722# CONFIG_DMADEVICES is not set
723CONFIG_UIO=y
724# CONFIG_UIO_PDRV is not set
725# CONFIG_UIO_PDRV_GENIRQ is not set
726# CONFIG_UIO_SMX is not set
727# CONFIG_UIO_SERCOS3 is not set
728# CONFIG_STAGING is not set
729
730#
731# File systems
732#
733# CONFIG_EXT2_FS is not set
734# CONFIG_EXT3_FS is not set
735# CONFIG_EXT4_FS is not set
736# CONFIG_REISERFS_FS is not set
737# CONFIG_JFS_FS is not set
738# CONFIG_FS_POSIX_ACL is not set
739CONFIG_FILE_LOCKING=y
740# CONFIG_XFS_FS is not set
741# CONFIG_OCFS2_FS is not set
742# CONFIG_DNOTIFY is not set
743CONFIG_INOTIFY=y
744CONFIG_INOTIFY_USER=y
745# CONFIG_QUOTA is not set
746# CONFIG_AUTOFS_FS is not set
747# CONFIG_AUTOFS4_FS is not set
748# CONFIG_FUSE_FS is not set
749
750#
751# CD-ROM/DVD Filesystems
752#
753# CONFIG_ISO9660_FS is not set
754# CONFIG_UDF_FS is not set
755
756#
757# DOS/FAT/NT Filesystems
758#
759# CONFIG_MSDOS_FS is not set
760# CONFIG_VFAT_FS is not set
761# CONFIG_NTFS_FS is not set
762
763#
764# Pseudo filesystems
765#
766CONFIG_PROC_FS=y
767# CONFIG_PROC_KCORE is not set
768CONFIG_PROC_SYSCTL=y
769CONFIG_PROC_PAGE_MONITOR=y
770CONFIG_SYSFS=y
771CONFIG_TMPFS=y
772# CONFIG_TMPFS_POSIX_ACL is not set
773# CONFIG_HUGETLB_PAGE is not set
774# CONFIG_CONFIGFS_FS is not set
775
776#
777# Miscellaneous filesystems
778#
779# CONFIG_ADFS_FS is not set
780# CONFIG_AFFS_FS is not set
781# CONFIG_HFS_FS is not set
782# CONFIG_HFSPLUS_FS is not set
783# CONFIG_BEFS_FS is not set
784# CONFIG_BFS_FS is not set
785# CONFIG_EFS_FS is not set
786CONFIG_JFFS2_FS=y
787CONFIG_JFFS2_FS_DEBUG=0
788CONFIG_JFFS2_FS_WRITEBUFFER=y
789# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
790# CONFIG_JFFS2_SUMMARY is not set
791# CONFIG_JFFS2_FS_XATTR is not set
792# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
793CONFIG_JFFS2_ZLIB=y
794# CONFIG_JFFS2_LZO is not set
795CONFIG_JFFS2_RTIME=y
796# CONFIG_JFFS2_RUBIN is not set
797# CONFIG_UBIFS_FS is not set
798# CONFIG_CRAMFS is not set
799# CONFIG_VXFS_FS is not set
800# CONFIG_MINIX_FS is not set
801# CONFIG_OMFS_FS is not set
802# CONFIG_HPFS_FS is not set
803# CONFIG_QNX4FS_FS is not set
804# CONFIG_ROMFS_FS is not set
805# CONFIG_SYSV_FS is not set
806# CONFIG_UFS_FS is not set
807CONFIG_NETWORK_FILESYSTEMS=y
808CONFIG_NFS_FS=y
809CONFIG_NFS_V3=y
810# CONFIG_NFS_V3_ACL is not set
811# CONFIG_NFS_V4 is not set
812CONFIG_ROOT_NFS=y
813# CONFIG_NFSD is not set
814CONFIG_LOCKD=y
815CONFIG_LOCKD_V4=y
816CONFIG_NFS_COMMON=y
817CONFIG_SUNRPC=y
818# CONFIG_SUNRPC_REGISTER_V4 is not set
819# CONFIG_RPCSEC_GSS_KRB5 is not set
820# CONFIG_RPCSEC_GSS_SPKM3 is not set
821# CONFIG_SMB_FS is not set
822# CONFIG_CIFS is not set
823# CONFIG_NCP_FS is not set
824# CONFIG_CODA_FS is not set
825# CONFIG_AFS_FS is not set
826
827#
828# Partition Types
829#
830CONFIG_PARTITION_ADVANCED=y
831# CONFIG_ACORN_PARTITION is not set
832# CONFIG_OSF_PARTITION is not set
833# CONFIG_AMIGA_PARTITION is not set
834# CONFIG_ATARI_PARTITION is not set
835# CONFIG_MAC_PARTITION is not set
836# CONFIG_MSDOS_PARTITION is not set
837# CONFIG_LDM_PARTITION is not set
838# CONFIG_SGI_PARTITION is not set
839# CONFIG_ULTRIX_PARTITION is not set
840# CONFIG_SUN_PARTITION is not set
841# CONFIG_KARMA_PARTITION is not set
842# CONFIG_EFI_PARTITION is not set
843# CONFIG_SYSV68_PARTITION is not set
844# CONFIG_NLS is not set
845# CONFIG_DLM is not set
846CONFIG_UCC_FAST=y
847CONFIG_UCC=y
848
849#
850# Library routines
851#
852CONFIG_BITREVERSE=y
853# CONFIG_CRC_CCITT is not set
854# CONFIG_CRC16 is not set
855# CONFIG_CRC_T10DIF is not set
856# CONFIG_CRC_ITU_T is not set
857CONFIG_CRC32=y
858# CONFIG_CRC7 is not set
859# CONFIG_LIBCRC32C is not set
860CONFIG_ZLIB_INFLATE=y
861CONFIG_ZLIB_DEFLATE=y
862CONFIG_PLIST=y
863CONFIG_HAS_IOMEM=y
864CONFIG_HAS_IOPORT=y
865CONFIG_HAS_DMA=y
866CONFIG_HAVE_LMB=y
867
868#
869# Kernel hacking
870#
871# CONFIG_PRINTK_TIME is not set
872CONFIG_ENABLE_WARN_DEPRECATED=y
873CONFIG_ENABLE_MUST_CHECK=y
874CONFIG_FRAME_WARN=1024
875# CONFIG_MAGIC_SYSRQ is not set
876# CONFIG_UNUSED_SYMBOLS is not set
877CONFIG_DEBUG_FS=y
878# CONFIG_HEADERS_CHECK is not set
879# CONFIG_DEBUG_KERNEL is not set
880# CONFIG_DEBUG_BUGVERBOSE is not set
881# CONFIG_DEBUG_MEMORY_INIT is not set
882# CONFIG_RCU_CPU_STALL_DETECTOR is not set
883# CONFIG_LATENCYTOP is not set
884CONFIG_SYSCTL_SYSCALL_CHECK=y
885CONFIG_HAVE_FUNCTION_TRACER=y
886
887#
888# Tracers
889#
890# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
891# CONFIG_SAMPLES is not set
892CONFIG_HAVE_ARCH_KGDB=y
893# CONFIG_IRQSTACKS is not set
894# CONFIG_VIRQ_DEBUG is not set
895# CONFIG_BOOTX_TEXT is not set
896# CONFIG_PPC_EARLY_DEBUG is not set
897
898#
899# Security options
900#
901# CONFIG_KEYS is not set
902# CONFIG_SECURITY is not set
903# CONFIG_SECURITYFS is not set
904# CONFIG_SECURITY_FILE_CAPABILITIES is not set
905# CONFIG_CRYPTO is not set
906# CONFIG_PPC_CLOCK is not set
907CONFIG_PPC_LIB_RHEAP=y
908# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig b/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig
new file mode 100644
index 000000000000..2552cbefba6b
--- /dev/null
+++ b/arch/powerpc/configs/85xx/xes_mpc85xx_defconfig
@@ -0,0 +1,1821 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.30-rc6
4# Thu Jun 11 11:25:17 2009
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12CONFIG_PPC_85xx=y
13# CONFIG_PPC_8xx is not set
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_E500=y
18# CONFIG_PPC_E500MC is not set
19CONFIG_BOOKE=y
20CONFIG_FSL_BOOKE=y
21CONFIG_FSL_EMB_PERFMON=y
22# CONFIG_PHYS_64BIT is not set
23CONFIG_SPE=y
24CONFIG_PPC_MMU_NOHASH=y
25CONFIG_PPC_BOOK3E_MMU=y
26# CONFIG_PPC_MM_SLICES is not set
27CONFIG_SMP=y
28CONFIG_NR_CPUS=2
29CONFIG_PPC32=y
30CONFIG_WORD_SIZE=32
31# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
32CONFIG_MMU=y
33CONFIG_GENERIC_CMOS_UPDATE=y
34CONFIG_GENERIC_TIME=y
35CONFIG_GENERIC_TIME_VSYSCALL=y
36CONFIG_GENERIC_CLOCKEVENTS=y
37CONFIG_GENERIC_HARDIRQS=y
38# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
39CONFIG_IRQ_PER_CPU=y
40CONFIG_STACKTRACE_SUPPORT=y
41CONFIG_HAVE_LATENCYTOP_SUPPORT=y
42CONFIG_LOCKDEP_SUPPORT=y
43CONFIG_RWSEM_XCHGADD_ALGORITHM=y
44CONFIG_ARCH_HAS_ILOG2_U32=y
45CONFIG_GENERIC_HWEIGHT=y
46CONFIG_GENERIC_CALIBRATE_DELAY=y
47CONFIG_GENERIC_FIND_NEXT_BIT=y
48CONFIG_GENERIC_GPIO=y
49# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
50CONFIG_PPC=y
51CONFIG_EARLY_PRINTK=y
52CONFIG_GENERIC_NVRAM=y
53CONFIG_SCHED_OMIT_FRAME_POINTER=y
54CONFIG_ARCH_MAY_HAVE_PC_FDC=y
55CONFIG_PPC_OF=y
56CONFIG_OF=y
57CONFIG_PPC_UDBG_16550=y
58CONFIG_GENERIC_TBSYNC=y
59CONFIG_AUDIT_ARCH=y
60CONFIG_GENERIC_BUG=y
61CONFIG_DTC=y
62CONFIG_DEFAULT_UIMAGE=y
63# CONFIG_PPC_DCR_NATIVE is not set
64# CONFIG_PPC_DCR_MMIO is not set
65CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
66CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
67
68#
69# General setup
70#
71CONFIG_EXPERIMENTAL=y
72CONFIG_LOCK_KERNEL=y
73CONFIG_INIT_ENV_ARG_LIMIT=32
74CONFIG_LOCALVERSION=""
75CONFIG_LOCALVERSION_AUTO=y
76CONFIG_SWAP=y
77CONFIG_SYSVIPC=y
78CONFIG_SYSVIPC_SYSCTL=y
79CONFIG_POSIX_MQUEUE=y
80CONFIG_POSIX_MQUEUE_SYSCTL=y
81CONFIG_BSD_PROCESS_ACCT=y
82# CONFIG_BSD_PROCESS_ACCT_V3 is not set
83# CONFIG_TASKSTATS is not set
84CONFIG_AUDIT=y
85# CONFIG_AUDITSYSCALL is not set
86
87#
88# RCU Subsystem
89#
90CONFIG_CLASSIC_RCU=y
91# CONFIG_TREE_RCU is not set
92# CONFIG_PREEMPT_RCU is not set
93# CONFIG_TREE_RCU_TRACE is not set
94# CONFIG_PREEMPT_RCU_TRACE is not set
95CONFIG_IKCONFIG=y
96CONFIG_IKCONFIG_PROC=y
97CONFIG_LOG_BUF_SHIFT=14
98# CONFIG_GROUP_SCHED is not set
99# CONFIG_CGROUPS is not set
100CONFIG_SYSFS_DEPRECATED=y
101CONFIG_SYSFS_DEPRECATED_V2=y
102# CONFIG_RELAY is not set
103# CONFIG_NAMESPACES is not set
104CONFIG_BLK_DEV_INITRD=y
105CONFIG_INITRAMFS_SOURCE=""
106CONFIG_RD_GZIP=y
107# CONFIG_RD_BZIP2 is not set
108# CONFIG_RD_LZMA is not set
109# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
110CONFIG_SYSCTL=y
111CONFIG_ANON_INODES=y
112CONFIG_EMBEDDED=y
113CONFIG_SYSCTL_SYSCALL=y
114CONFIG_KALLSYMS=y
115CONFIG_KALLSYMS_ALL=y
116CONFIG_KALLSYMS_EXTRA_PASS=y
117# CONFIG_STRIP_ASM_SYMS is not set
118CONFIG_HOTPLUG=y
119CONFIG_PRINTK=y
120CONFIG_BUG=y
121CONFIG_ELF_CORE=y
122CONFIG_BASE_FULL=y
123CONFIG_FUTEX=y
124CONFIG_EPOLL=y
125CONFIG_SIGNALFD=y
126CONFIG_TIMERFD=y
127CONFIG_EVENTFD=y
128CONFIG_SHMEM=y
129CONFIG_AIO=y
130CONFIG_VM_EVENT_COUNTERS=y
131CONFIG_PCI_QUIRKS=y
132CONFIG_SLUB_DEBUG=y
133CONFIG_COMPAT_BRK=y
134# CONFIG_SLAB is not set
135CONFIG_SLUB=y
136# CONFIG_SLOB is not set
137# CONFIG_PROFILING is not set
138# CONFIG_MARKERS is not set
139CONFIG_HAVE_OPROFILE=y
140# CONFIG_KPROBES is not set
141CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
142CONFIG_HAVE_IOREMAP_PROT=y
143CONFIG_HAVE_KPROBES=y
144CONFIG_HAVE_KRETPROBES=y
145CONFIG_HAVE_ARCH_TRACEHOOK=y
146CONFIG_USE_GENERIC_SMP_HELPERS=y
147# CONFIG_SLOW_WORK is not set
148# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
149CONFIG_SLABINFO=y
150CONFIG_RT_MUTEXES=y
151CONFIG_BASE_SMALL=0
152CONFIG_MODULES=y
153# CONFIG_MODULE_FORCE_LOAD is not set
154CONFIG_MODULE_UNLOAD=y
155CONFIG_MODULE_FORCE_UNLOAD=y
156CONFIG_MODVERSIONS=y
157# CONFIG_MODULE_SRCVERSION_ALL is not set
158CONFIG_STOP_MACHINE=y
159CONFIG_BLOCK=y
160CONFIG_LBD=y
161# CONFIG_BLK_DEV_BSG is not set
162# CONFIG_BLK_DEV_INTEGRITY is not set
163
164#
165# IO Schedulers
166#
167CONFIG_IOSCHED_NOOP=y
168CONFIG_IOSCHED_AS=y
169CONFIG_IOSCHED_DEADLINE=y
170CONFIG_IOSCHED_CFQ=y
171# CONFIG_DEFAULT_AS is not set
172# CONFIG_DEFAULT_DEADLINE is not set
173CONFIG_DEFAULT_CFQ=y
174# CONFIG_DEFAULT_NOOP is not set
175CONFIG_DEFAULT_IOSCHED="cfq"
176# CONFIG_FREEZER is not set
177CONFIG_PPC_MSI_BITMAP=y
178
179#
180# Platform support
181#
182# CONFIG_PPC_CELL is not set
183# CONFIG_PPC_CELL_NATIVE is not set
184# CONFIG_PQ2ADS is not set
185CONFIG_MPC85xx=y
186# CONFIG_MPC8540_ADS is not set
187# CONFIG_MPC8560_ADS is not set
188# CONFIG_MPC85xx_CDS is not set
189# CONFIG_MPC85xx_MDS is not set
190# CONFIG_MPC8536_DS is not set
191# CONFIG_MPC85xx_DS is not set
192# CONFIG_SOCRATES is not set
193# CONFIG_KSI8560 is not set
194CONFIG_XES_MPC85xx=y
195# CONFIG_STX_GP3 is not set
196# CONFIG_TQM8540 is not set
197# CONFIG_TQM8541 is not set
198# CONFIG_TQM8548 is not set
199# CONFIG_TQM8555 is not set
200# CONFIG_TQM8560 is not set
201# CONFIG_SBC8548 is not set
202# CONFIG_SBC8560 is not set
203# CONFIG_IPIC is not set
204CONFIG_MPIC=y
205# CONFIG_MPIC_WEIRD is not set
206# CONFIG_PPC_I8259 is not set
207# CONFIG_PPC_RTAS is not set
208# CONFIG_MMIO_NVRAM is not set
209# CONFIG_PPC_MPC106 is not set
210# CONFIG_PPC_970_NAP is not set
211# CONFIG_PPC_INDIRECT_IO is not set
212# CONFIG_GENERIC_IOMAP is not set
213# CONFIG_CPU_FREQ is not set
214# CONFIG_QUICC_ENGINE is not set
215# CONFIG_CPM2 is not set
216# CONFIG_FSL_ULI1575 is not set
217CONFIG_MPC8xxx_GPIO=y
218# CONFIG_SIMPLE_GPIO is not set
219
220#
221# Kernel options
222#
223CONFIG_HIGHMEM=y
224# CONFIG_NO_HZ is not set
225# CONFIG_HIGH_RES_TIMERS is not set
226CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
227# CONFIG_HZ_100 is not set
228CONFIG_HZ_250=y
229# CONFIG_HZ_300 is not set
230# CONFIG_HZ_1000 is not set
231CONFIG_HZ=250
232# CONFIG_SCHED_HRTICK is not set
233CONFIG_PREEMPT_NONE=y
234# CONFIG_PREEMPT_VOLUNTARY is not set
235# CONFIG_PREEMPT is not set
236CONFIG_BINFMT_ELF=y
237# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
238# CONFIG_HAVE_AOUT is not set
239# CONFIG_BINFMT_MISC is not set
240CONFIG_MATH_EMULATION=y
241# CONFIG_IOMMU_HELPER is not set
242CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
243CONFIG_ARCH_HAS_WALK_MEMORY=y
244CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
245# CONFIG_IRQ_ALL_CPUS is not set
246CONFIG_ARCH_FLATMEM_ENABLE=y
247CONFIG_ARCH_POPULATES_NODE_MAP=y
248CONFIG_SELECT_MEMORY_MODEL=y
249CONFIG_FLATMEM_MANUAL=y
250# CONFIG_DISCONTIGMEM_MANUAL is not set
251# CONFIG_SPARSEMEM_MANUAL is not set
252CONFIG_FLATMEM=y
253CONFIG_FLAT_NODE_MEM_MAP=y
254CONFIG_PAGEFLAGS_EXTENDED=y
255CONFIG_SPLIT_PTLOCK_CPUS=4
256CONFIG_MIGRATION=y
257# CONFIG_PHYS_ADDR_T_64BIT is not set
258CONFIG_ZONE_DMA_FLAG=1
259CONFIG_BOUNCE=y
260CONFIG_VIRT_TO_BUS=y
261CONFIG_UNEVICTABLE_LRU=y
262CONFIG_HAVE_MLOCK=y
263CONFIG_HAVE_MLOCKED_PAGE_BIT=y
264CONFIG_PPC_4K_PAGES=y
265# CONFIG_PPC_16K_PAGES is not set
266# CONFIG_PPC_64K_PAGES is not set
267# CONFIG_PPC_256K_PAGES is not set
268CONFIG_FORCE_MAX_ZONEORDER=11
269CONFIG_PROC_DEVICETREE=y
270# CONFIG_CMDLINE_BOOL is not set
271CONFIG_EXTRA_TARGETS=""
272# CONFIG_PM is not set
273CONFIG_SECCOMP=y
274CONFIG_ISA_DMA_API=y
275
276#
277# Bus options
278#
279CONFIG_ZONE_DMA=y
280CONFIG_PPC_INDIRECT_PCI=y
281CONFIG_FSL_SOC=y
282CONFIG_FSL_PCI=y
283CONFIG_FSL_LBC=y
284CONFIG_PPC_PCI_CHOICE=y
285CONFIG_PCI=y
286CONFIG_PCI_DOMAINS=y
287CONFIG_PCI_SYSCALL=y
288CONFIG_PCIEPORTBUS=y
289CONFIG_PCIEAER=y
290# CONFIG_PCIEASPM is not set
291CONFIG_ARCH_SUPPORTS_MSI=y
292CONFIG_PCI_MSI=y
293CONFIG_PCI_LEGACY=y
294# CONFIG_PCI_DEBUG is not set
295# CONFIG_PCI_STUB is not set
296# CONFIG_PCI_IOV is not set
297# CONFIG_PCCARD is not set
298# CONFIG_HOTPLUG_PCI is not set
299# CONFIG_HAS_RAPIDIO is not set
300
301#
302# Advanced setup
303#
304CONFIG_ADVANCED_OPTIONS=y
305CONFIG_LOWMEM_SIZE_BOOL=y
306CONFIG_LOWMEM_SIZE=0x40000000
307# CONFIG_LOWMEM_CAM_NUM_BOOL is not set
308CONFIG_LOWMEM_CAM_NUM=3
309# CONFIG_RELOCATABLE is not set
310CONFIG_PAGE_OFFSET_BOOL=y
311CONFIG_PAGE_OFFSET=0x80000000
312CONFIG_KERNEL_START_BOOL=y
313CONFIG_KERNEL_START=0x80000000
314# CONFIG_PHYSICAL_START_BOOL is not set
315CONFIG_PHYSICAL_START=0x00000000
316CONFIG_PHYSICAL_ALIGN=0x04000000
317CONFIG_TASK_SIZE_BOOL=y
318CONFIG_TASK_SIZE=0x80000000
319CONFIG_NET=y
320
321#
322# Networking options
323#
324CONFIG_PACKET=y
325# CONFIG_PACKET_MMAP is not set
326CONFIG_UNIX=y
327CONFIG_XFRM=y
328CONFIG_XFRM_USER=y
329# CONFIG_XFRM_SUB_POLICY is not set
330# CONFIG_XFRM_MIGRATE is not set
331# CONFIG_XFRM_STATISTICS is not set
332CONFIG_NET_KEY=y
333# CONFIG_NET_KEY_MIGRATE is not set
334CONFIG_INET=y
335CONFIG_IP_MULTICAST=y
336CONFIG_IP_ADVANCED_ROUTER=y
337CONFIG_ASK_IP_FIB_HASH=y
338# CONFIG_IP_FIB_TRIE is not set
339CONFIG_IP_FIB_HASH=y
340CONFIG_IP_MULTIPLE_TABLES=y
341CONFIG_IP_ROUTE_MULTIPATH=y
342CONFIG_IP_ROUTE_VERBOSE=y
343CONFIG_IP_PNP=y
344CONFIG_IP_PNP_DHCP=y
345CONFIG_IP_PNP_BOOTP=y
346CONFIG_IP_PNP_RARP=y
347CONFIG_NET_IPIP=y
348CONFIG_NET_IPGRE=y
349CONFIG_NET_IPGRE_BROADCAST=y
350CONFIG_IP_MROUTE=y
351CONFIG_IP_PIMSM_V1=y
352CONFIG_IP_PIMSM_V2=y
353CONFIG_ARPD=y
354# CONFIG_SYN_COOKIES is not set
355# CONFIG_INET_AH is not set
356# CONFIG_INET_ESP is not set
357# CONFIG_INET_IPCOMP is not set
358# CONFIG_INET_XFRM_TUNNEL is not set
359CONFIG_INET_TUNNEL=y
360# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
361# CONFIG_INET_XFRM_MODE_TUNNEL is not set
362# CONFIG_INET_XFRM_MODE_BEET is not set
363# CONFIG_INET_LRO is not set
364CONFIG_INET_DIAG=y
365CONFIG_INET_TCP_DIAG=y
366# CONFIG_TCP_CONG_ADVANCED is not set
367CONFIG_TCP_CONG_CUBIC=y
368CONFIG_DEFAULT_TCP_CONG="cubic"
369# CONFIG_TCP_MD5SIG is not set
370CONFIG_IPV6=y
371# CONFIG_IPV6_PRIVACY is not set
372# CONFIG_IPV6_ROUTER_PREF is not set
373# CONFIG_IPV6_OPTIMISTIC_DAD is not set
374# CONFIG_INET6_AH is not set
375# CONFIG_INET6_ESP is not set
376# CONFIG_INET6_IPCOMP is not set
377# CONFIG_IPV6_MIP6 is not set
378# CONFIG_INET6_XFRM_TUNNEL is not set
379# CONFIG_INET6_TUNNEL is not set
380CONFIG_INET6_XFRM_MODE_TRANSPORT=y
381CONFIG_INET6_XFRM_MODE_TUNNEL=y
382CONFIG_INET6_XFRM_MODE_BEET=y
383# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
384CONFIG_IPV6_SIT=y
385CONFIG_IPV6_NDISC_NODETYPE=y
386# CONFIG_IPV6_TUNNEL is not set
387# CONFIG_IPV6_MULTIPLE_TABLES is not set
388# CONFIG_IPV6_MROUTE is not set
389# CONFIG_NETWORK_SECMARK is not set
390# CONFIG_NETFILTER is not set
391# CONFIG_IP_DCCP is not set
392# CONFIG_IP_SCTP is not set
393# CONFIG_TIPC is not set
394# CONFIG_ATM is not set
395# CONFIG_BRIDGE is not set
396# CONFIG_NET_DSA is not set
397# CONFIG_VLAN_8021Q is not set
398# CONFIG_DECNET is not set
399# CONFIG_LLC2 is not set
400# CONFIG_IPX is not set
401# CONFIG_ATALK is not set
402# CONFIG_X25 is not set
403# CONFIG_LAPB is not set
404# CONFIG_ECONET is not set
405# CONFIG_WAN_ROUTER is not set
406# CONFIG_PHONET is not set
407# CONFIG_NET_SCHED is not set
408# CONFIG_DCB is not set
409
410#
411# Network testing
412#
413# CONFIG_NET_PKTGEN is not set
414# CONFIG_HAMRADIO is not set
415# CONFIG_CAN is not set
416# CONFIG_IRDA is not set
417# CONFIG_BT is not set
418# CONFIG_AF_RXRPC is not set
419CONFIG_FIB_RULES=y
420# CONFIG_WIRELESS is not set
421# CONFIG_WIMAX is not set
422# CONFIG_RFKILL is not set
423# CONFIG_NET_9P is not set
424
425#
426# Device Drivers
427#
428
429#
430# Generic Driver Options
431#
432CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
433CONFIG_STANDALONE=y
434CONFIG_PREVENT_FIRMWARE_BUILD=y
435CONFIG_FW_LOADER=y
436CONFIG_FIRMWARE_IN_KERNEL=y
437CONFIG_EXTRA_FIRMWARE=""
438# CONFIG_DEBUG_DRIVER is not set
439# CONFIG_DEBUG_DEVRES is not set
440# CONFIG_SYS_HYPERVISOR is not set
441# CONFIG_CONNECTOR is not set
442CONFIG_MTD=y
443# CONFIG_MTD_DEBUG is not set
444# CONFIG_MTD_CONCAT is not set
445CONFIG_MTD_PARTITIONS=y
446# CONFIG_MTD_TESTS is not set
447CONFIG_MTD_REDBOOT_PARTS=y
448CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
449# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
450# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
451CONFIG_MTD_CMDLINE_PARTS=y
452CONFIG_MTD_OF_PARTS=y
453# CONFIG_MTD_AR7_PARTS is not set
454
455#
456# User Modules And Translation Layers
457#
458CONFIG_MTD_CHAR=y
459CONFIG_MTD_BLKDEVS=y
460CONFIG_MTD_BLOCK=y
461# CONFIG_FTL is not set
462# CONFIG_NFTL is not set
463# CONFIG_INFTL is not set
464# CONFIG_RFD_FTL is not set
465# CONFIG_SSFDC is not set
466# CONFIG_MTD_OOPS is not set
467
468#
469# RAM/ROM/Flash chip drivers
470#
471CONFIG_MTD_CFI=y
472CONFIG_MTD_JEDECPROBE=y
473CONFIG_MTD_GEN_PROBE=y
474# CONFIG_MTD_CFI_ADV_OPTIONS is not set
475CONFIG_MTD_MAP_BANK_WIDTH_1=y
476CONFIG_MTD_MAP_BANK_WIDTH_2=y
477CONFIG_MTD_MAP_BANK_WIDTH_4=y
478# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
479# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
480# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
481CONFIG_MTD_CFI_I1=y
482CONFIG_MTD_CFI_I2=y
483# CONFIG_MTD_CFI_I4 is not set
484# CONFIG_MTD_CFI_I8 is not set
485CONFIG_MTD_CFI_INTELEXT=y
486CONFIG_MTD_CFI_AMDSTD=y
487CONFIG_MTD_CFI_STAA=y
488CONFIG_MTD_CFI_UTIL=y
489# CONFIG_MTD_RAM is not set
490# CONFIG_MTD_ROM is not set
491# CONFIG_MTD_ABSENT is not set
492
493#
494# Mapping drivers for chip access
495#
496# CONFIG_MTD_COMPLEX_MAPPINGS is not set
497# CONFIG_MTD_PHYSMAP is not set
498CONFIG_MTD_PHYSMAP_OF=y
499# CONFIG_MTD_INTEL_VR_NOR is not set
500# CONFIG_MTD_PLATRAM is not set
501
502#
503# Self-contained MTD device drivers
504#
505# CONFIG_MTD_PMC551 is not set
506# CONFIG_MTD_SLRAM is not set
507# CONFIG_MTD_PHRAM is not set
508# CONFIG_MTD_MTDRAM is not set
509# CONFIG_MTD_BLOCK2MTD is not set
510
511#
512# Disk-On-Chip Device Drivers
513#
514# CONFIG_MTD_DOC2000 is not set
515# CONFIG_MTD_DOC2001 is not set
516# CONFIG_MTD_DOC2001PLUS is not set
517CONFIG_MTD_NAND=y
518# CONFIG_MTD_NAND_VERIFY_WRITE is not set
519# CONFIG_MTD_NAND_ECC_SMC is not set
520# CONFIG_MTD_NAND_MUSEUM_IDS is not set
521CONFIG_MTD_NAND_IDS=y
522# CONFIG_MTD_NAND_DISKONCHIP is not set
523# CONFIG_MTD_NAND_CAFE is not set
524# CONFIG_MTD_NAND_NANDSIM is not set
525# CONFIG_MTD_NAND_PLATFORM is not set
526# CONFIG_MTD_ALAUDA is not set
527CONFIG_MTD_NAND_FSL_ELBC=y
528CONFIG_MTD_NAND_FSL_UPM=y
529# CONFIG_MTD_ONENAND is not set
530
531#
532# LPDDR flash memory drivers
533#
534# CONFIG_MTD_LPDDR is not set
535
536#
537# UBI - Unsorted block images
538#
539# CONFIG_MTD_UBI is not set
540CONFIG_OF_DEVICE=y
541CONFIG_OF_GPIO=y
542CONFIG_OF_I2C=y
543# CONFIG_PARPORT is not set
544CONFIG_BLK_DEV=y
545# CONFIG_BLK_DEV_FD is not set
546# CONFIG_BLK_CPQ_DA is not set
547# CONFIG_BLK_CPQ_CISS_DA is not set
548# CONFIG_BLK_DEV_DAC960 is not set
549# CONFIG_BLK_DEV_UMEM is not set
550# CONFIG_BLK_DEV_COW_COMMON is not set
551CONFIG_BLK_DEV_LOOP=y
552# CONFIG_BLK_DEV_CRYPTOLOOP is not set
553CONFIG_BLK_DEV_NBD=y
554# CONFIG_BLK_DEV_SX8 is not set
555# CONFIG_BLK_DEV_UB is not set
556CONFIG_BLK_DEV_RAM=y
557CONFIG_BLK_DEV_RAM_COUNT=16
558CONFIG_BLK_DEV_RAM_SIZE=131072
559# CONFIG_BLK_DEV_XIP is not set
560# CONFIG_CDROM_PKTCDVD is not set
561# CONFIG_ATA_OVER_ETH is not set
562# CONFIG_BLK_DEV_HD is not set
563CONFIG_MISC_DEVICES=y
564# CONFIG_PHANTOM is not set
565# CONFIG_SGI_IOC4 is not set
566# CONFIG_TIFM_CORE is not set
567# CONFIG_ICS932S401 is not set
568# CONFIG_ENCLOSURE_SERVICES is not set
569# CONFIG_HP_ILO is not set
570# CONFIG_ISL29003 is not set
571# CONFIG_C2PORT is not set
572
573#
574# EEPROM support
575#
576# CONFIG_EEPROM_AT24 is not set
577# CONFIG_EEPROM_LEGACY is not set
578# CONFIG_EEPROM_93CX6 is not set
579CONFIG_HAVE_IDE=y
580# CONFIG_IDE is not set
581
582#
583# SCSI device support
584#
585# CONFIG_RAID_ATTRS is not set
586CONFIG_SCSI=y
587CONFIG_SCSI_DMA=y
588# CONFIG_SCSI_TGT is not set
589# CONFIG_SCSI_NETLINK is not set
590CONFIG_SCSI_PROC_FS=y
591
592#
593# SCSI support type (disk, tape, CD-ROM)
594#
595CONFIG_BLK_DEV_SD=y
596CONFIG_CHR_DEV_ST=y
597# CONFIG_CHR_DEV_OSST is not set
598CONFIG_BLK_DEV_SR=y
599# CONFIG_BLK_DEV_SR_VENDOR is not set
600CONFIG_CHR_DEV_SG=y
601# CONFIG_CHR_DEV_SCH is not set
602
603#
604# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
605#
606CONFIG_SCSI_MULTI_LUN=y
607# CONFIG_SCSI_CONSTANTS is not set
608CONFIG_SCSI_LOGGING=y
609# CONFIG_SCSI_SCAN_ASYNC is not set
610CONFIG_SCSI_WAIT_SCAN=m
611
612#
613# SCSI Transports
614#
615# CONFIG_SCSI_SPI_ATTRS is not set
616# CONFIG_SCSI_FC_ATTRS is not set
617# CONFIG_SCSI_ISCSI_ATTRS is not set
618# CONFIG_SCSI_SAS_LIBSAS is not set
619# CONFIG_SCSI_SRP_ATTRS is not set
620CONFIG_SCSI_LOWLEVEL=y
621# CONFIG_ISCSI_TCP is not set
622# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
623# CONFIG_SCSI_3W_9XXX is not set
624# CONFIG_SCSI_ACARD is not set
625# CONFIG_SCSI_AACRAID is not set
626# CONFIG_SCSI_AIC7XXX is not set
627# CONFIG_SCSI_AIC7XXX_OLD is not set
628# CONFIG_SCSI_AIC79XX is not set
629# CONFIG_SCSI_AIC94XX is not set
630# CONFIG_SCSI_DPT_I2O is not set
631# CONFIG_SCSI_ADVANSYS is not set
632# CONFIG_SCSI_ARCMSR is not set
633# CONFIG_MEGARAID_NEWGEN is not set
634# CONFIG_MEGARAID_LEGACY is not set
635# CONFIG_MEGARAID_SAS is not set
636# CONFIG_SCSI_MPT2SAS is not set
637# CONFIG_SCSI_HPTIOP is not set
638# CONFIG_SCSI_BUSLOGIC is not set
639# CONFIG_LIBFC is not set
640# CONFIG_LIBFCOE is not set
641# CONFIG_FCOE is not set
642# CONFIG_SCSI_DMX3191D is not set
643# CONFIG_SCSI_EATA is not set
644# CONFIG_SCSI_FUTURE_DOMAIN is not set
645# CONFIG_SCSI_GDTH is not set
646# CONFIG_SCSI_IPS is not set
647# CONFIG_SCSI_INITIO is not set
648# CONFIG_SCSI_INIA100 is not set
649# CONFIG_SCSI_MVSAS is not set
650# CONFIG_SCSI_STEX is not set
651# CONFIG_SCSI_SYM53C8XX_2 is not set
652# CONFIG_SCSI_IPR is not set
653# CONFIG_SCSI_QLOGIC_1280 is not set
654# CONFIG_SCSI_QLA_FC is not set
655# CONFIG_SCSI_QLA_ISCSI is not set
656# CONFIG_SCSI_LPFC is not set
657# CONFIG_SCSI_DC395x is not set
658# CONFIG_SCSI_DC390T is not set
659# CONFIG_SCSI_NSP32 is not set
660# CONFIG_SCSI_DEBUG is not set
661# CONFIG_SCSI_SRP is not set
662# CONFIG_SCSI_DH is not set
663# CONFIG_SCSI_OSD_INITIATOR is not set
664CONFIG_ATA=y
665# CONFIG_ATA_NONSTANDARD is not set
666CONFIG_SATA_PMP=y
667CONFIG_SATA_AHCI=y
668# CONFIG_SATA_SIL24 is not set
669# CONFIG_SATA_FSL is not set
670CONFIG_ATA_SFF=y
671# CONFIG_SATA_SVW is not set
672# CONFIG_ATA_PIIX is not set
673# CONFIG_SATA_MV is not set
674# CONFIG_SATA_NV is not set
675# CONFIG_PDC_ADMA is not set
676# CONFIG_SATA_QSTOR is not set
677# CONFIG_SATA_PROMISE is not set
678# CONFIG_SATA_SX4 is not set
679# CONFIG_SATA_SIL is not set
680# CONFIG_SATA_SIS is not set
681# CONFIG_SATA_ULI is not set
682# CONFIG_SATA_VIA is not set
683# CONFIG_SATA_VITESSE is not set
684# CONFIG_SATA_INIC162X is not set
685CONFIG_PATA_ALI=y
686# CONFIG_PATA_AMD is not set
687# CONFIG_PATA_ARTOP is not set
688# CONFIG_PATA_ATIIXP is not set
689# CONFIG_PATA_CMD640_PCI is not set
690# CONFIG_PATA_CMD64X is not set
691# CONFIG_PATA_CS5520 is not set
692# CONFIG_PATA_CS5530 is not set
693# CONFIG_PATA_CYPRESS is not set
694# CONFIG_PATA_EFAR is not set
695# CONFIG_ATA_GENERIC is not set
696# CONFIG_PATA_HPT366 is not set
697# CONFIG_PATA_HPT37X is not set
698# CONFIG_PATA_HPT3X2N is not set
699# CONFIG_PATA_HPT3X3 is not set
700# CONFIG_PATA_IT821X is not set
701# CONFIG_PATA_IT8213 is not set
702# CONFIG_PATA_JMICRON is not set
703# CONFIG_PATA_TRIFLEX is not set
704# CONFIG_PATA_MARVELL is not set
705# CONFIG_PATA_MPIIX is not set
706# CONFIG_PATA_OLDPIIX is not set
707# CONFIG_PATA_NETCELL is not set
708# CONFIG_PATA_NINJA32 is not set
709# CONFIG_PATA_NS87410 is not set
710# CONFIG_PATA_NS87415 is not set
711# CONFIG_PATA_OPTI is not set
712# CONFIG_PATA_OPTIDMA is not set
713# CONFIG_PATA_PDC_OLD is not set
714# CONFIG_PATA_RADISYS is not set
715# CONFIG_PATA_RZ1000 is not set
716# CONFIG_PATA_SC1200 is not set
717# CONFIG_PATA_SERVERWORKS is not set
718# CONFIG_PATA_PDC2027X is not set
719# CONFIG_PATA_SIL680 is not set
720# CONFIG_PATA_SIS is not set
721# CONFIG_PATA_VIA is not set
722# CONFIG_PATA_WINBOND is not set
723# CONFIG_PATA_PLATFORM is not set
724# CONFIG_PATA_SCH is not set
725# CONFIG_MD is not set
726# CONFIG_FUSION is not set
727
728#
729# IEEE 1394 (FireWire) support
730#
731
732#
733# Enable only one of the two stacks, unless you know what you are doing
734#
735# CONFIG_FIREWIRE is not set
736# CONFIG_IEEE1394 is not set
737# CONFIG_I2O is not set
738# CONFIG_MACINTOSH_DRIVERS is not set
739CONFIG_NETDEVICES=y
740CONFIG_COMPAT_NET_DEV_OPS=y
741CONFIG_DUMMY=y
742# CONFIG_BONDING is not set
743# CONFIG_MACVLAN is not set
744# CONFIG_EQUALIZER is not set
745# CONFIG_TUN is not set
746# CONFIG_VETH is not set
747# CONFIG_ARCNET is not set
748CONFIG_PHYLIB=y
749
750#
751# MII PHY device drivers
752#
753# CONFIG_MARVELL_PHY is not set
754# CONFIG_DAVICOM_PHY is not set
755# CONFIG_QSEMI_PHY is not set
756# CONFIG_LXT_PHY is not set
757# CONFIG_CICADA_PHY is not set
758# CONFIG_VITESSE_PHY is not set
759# CONFIG_SMSC_PHY is not set
760CONFIG_BROADCOM_PHY=y
761# CONFIG_ICPLUS_PHY is not set
762# CONFIG_REALTEK_PHY is not set
763# CONFIG_NATIONAL_PHY is not set
764# CONFIG_STE10XP is not set
765# CONFIG_LSI_ET1011C_PHY is not set
766# CONFIG_FIXED_PHY is not set
767# CONFIG_MDIO_BITBANG is not set
768CONFIG_NET_ETHERNET=y
769CONFIG_MII=y
770# CONFIG_HAPPYMEAL is not set
771# CONFIG_SUNGEM is not set
772# CONFIG_CASSINI is not set
773# CONFIG_NET_VENDOR_3COM is not set
774# CONFIG_ETHOC is not set
775# CONFIG_DNET is not set
776# CONFIG_NET_TULIP is not set
777# CONFIG_HP100 is not set
778# CONFIG_IBM_NEW_EMAC_ZMII is not set
779# CONFIG_IBM_NEW_EMAC_RGMII is not set
780# CONFIG_IBM_NEW_EMAC_TAH is not set
781# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
782# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
783# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
784# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
785# CONFIG_NET_PCI is not set
786# CONFIG_B44 is not set
787# CONFIG_ATL2 is not set
788CONFIG_NETDEV_1000=y
789# CONFIG_ACENIC is not set
790# CONFIG_DL2K is not set
791CONFIG_E1000=y
792# CONFIG_E1000E is not set
793# CONFIG_IP1000 is not set
794# CONFIG_IGB is not set
795# CONFIG_IGBVF is not set
796# CONFIG_NS83820 is not set
797# CONFIG_HAMACHI is not set
798# CONFIG_YELLOWFIN is not set
799# CONFIG_R8169 is not set
800# CONFIG_SIS190 is not set
801# CONFIG_SKGE is not set
802# CONFIG_SKY2 is not set
803# CONFIG_VIA_VELOCITY is not set
804# CONFIG_TIGON3 is not set
805# CONFIG_BNX2 is not set
806CONFIG_FSL_PQ_MDIO=y
807CONFIG_GIANFAR=y
808# CONFIG_QLA3XXX is not set
809# CONFIG_ATL1 is not set
810# CONFIG_ATL1E is not set
811# CONFIG_ATL1C is not set
812# CONFIG_JME is not set
813# CONFIG_NETDEV_10000 is not set
814# CONFIG_TR is not set
815
816#
817# Wireless LAN
818#
819# CONFIG_WLAN_PRE80211 is not set
820# CONFIG_WLAN_80211 is not set
821
822#
823# Enable WiMAX (Networking options) to see the WiMAX drivers
824#
825
826#
827# USB Network Adapters
828#
829# CONFIG_USB_CATC is not set
830# CONFIG_USB_KAWETH is not set
831# CONFIG_USB_PEGASUS is not set
832# CONFIG_USB_RTL8150 is not set
833# CONFIG_USB_USBNET is not set
834# CONFIG_WAN is not set
835# CONFIG_FDDI is not set
836# CONFIG_HIPPI is not set
837# CONFIG_PPP is not set
838# CONFIG_SLIP is not set
839# CONFIG_NET_FC is not set
840# CONFIG_NETCONSOLE is not set
841# CONFIG_NETPOLL is not set
842# CONFIG_NET_POLL_CONTROLLER is not set
843# CONFIG_ISDN is not set
844# CONFIG_PHONE is not set
845
846#
847# Input device support
848#
849CONFIG_INPUT=y
850# CONFIG_INPUT_FF_MEMLESS is not set
851# CONFIG_INPUT_POLLDEV is not set
852
853#
854# Userland interfaces
855#
856# CONFIG_INPUT_MOUSEDEV is not set
857# CONFIG_INPUT_JOYDEV is not set
858# CONFIG_INPUT_EVDEV is not set
859# CONFIG_INPUT_EVBUG is not set
860
861#
862# Input Device Drivers
863#
864# CONFIG_INPUT_KEYBOARD is not set
865# CONFIG_INPUT_MOUSE is not set
866# CONFIG_INPUT_JOYSTICK is not set
867# CONFIG_INPUT_TABLET is not set
868# CONFIG_INPUT_TOUCHSCREEN is not set
869# CONFIG_INPUT_MISC is not set
870
871#
872# Hardware I/O ports
873#
874CONFIG_SERIO=y
875CONFIG_SERIO_I8042=y
876CONFIG_SERIO_SERPORT=y
877# CONFIG_SERIO_PCIPS2 is not set
878CONFIG_SERIO_LIBPS2=y
879# CONFIG_SERIO_RAW is not set
880# CONFIG_SERIO_XILINX_XPS_PS2 is not set
881# CONFIG_GAMEPORT is not set
882
883#
884# Character devices
885#
886CONFIG_VT=y
887CONFIG_CONSOLE_TRANSLATIONS=y
888CONFIG_VT_CONSOLE=y
889CONFIG_HW_CONSOLE=y
890# CONFIG_VT_HW_CONSOLE_BINDING is not set
891CONFIG_DEVKMEM=y
892# CONFIG_SERIAL_NONSTANDARD is not set
893# CONFIG_NOZOMI is not set
894
895#
896# Serial drivers
897#
898CONFIG_SERIAL_8250=y
899CONFIG_SERIAL_8250_CONSOLE=y
900CONFIG_SERIAL_8250_PCI=y
901CONFIG_SERIAL_8250_NR_UARTS=2
902CONFIG_SERIAL_8250_RUNTIME_UARTS=2
903CONFIG_SERIAL_8250_EXTENDED=y
904CONFIG_SERIAL_8250_MANY_PORTS=y
905CONFIG_SERIAL_8250_SHARE_IRQ=y
906CONFIG_SERIAL_8250_DETECT_IRQ=y
907CONFIG_SERIAL_8250_RSA=y
908
909#
910# Non-8250 serial port support
911#
912# CONFIG_SERIAL_UARTLITE is not set
913CONFIG_SERIAL_CORE=y
914CONFIG_SERIAL_CORE_CONSOLE=y
915# CONFIG_SERIAL_JSM is not set
916# CONFIG_SERIAL_OF_PLATFORM is not set
917CONFIG_UNIX98_PTYS=y
918# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
919CONFIG_LEGACY_PTYS=y
920CONFIG_LEGACY_PTY_COUNT=256
921# CONFIG_HVC_UDBG is not set
922# CONFIG_IPMI_HANDLER is not set
923# CONFIG_HW_RANDOM is not set
924CONFIG_NVRAM=y
925# CONFIG_R3964 is not set
926# CONFIG_APPLICOM is not set
927# CONFIG_RAW_DRIVER is not set
928# CONFIG_TCG_TPM is not set
929CONFIG_DEVPORT=y
930CONFIG_I2C=y
931CONFIG_I2C_BOARDINFO=y
932CONFIG_I2C_CHARDEV=y
933CONFIG_I2C_HELPER_AUTO=y
934
935#
936# I2C Hardware Bus support
937#
938
939#
940# PC SMBus host controller drivers
941#
942# CONFIG_I2C_ALI1535 is not set
943# CONFIG_I2C_ALI1563 is not set
944# CONFIG_I2C_ALI15X3 is not set
945# CONFIG_I2C_AMD756 is not set
946# CONFIG_I2C_AMD8111 is not set
947# CONFIG_I2C_I801 is not set
948# CONFIG_I2C_ISCH is not set
949# CONFIG_I2C_PIIX4 is not set
950# CONFIG_I2C_NFORCE2 is not set
951# CONFIG_I2C_SIS5595 is not set
952# CONFIG_I2C_SIS630 is not set
953# CONFIG_I2C_SIS96X is not set
954# CONFIG_I2C_VIA is not set
955# CONFIG_I2C_VIAPRO is not set
956
957#
958# I2C system bus drivers (mostly embedded / system-on-chip)
959#
960# CONFIG_I2C_GPIO is not set
961CONFIG_I2C_MPC=y
962# CONFIG_I2C_OCORES is not set
963# CONFIG_I2C_SIMTEC is not set
964
965#
966# External I2C/SMBus adapter drivers
967#
968# CONFIG_I2C_PARPORT_LIGHT is not set
969# CONFIG_I2C_TAOS_EVM is not set
970# CONFIG_I2C_TINY_USB is not set
971
972#
973# Graphics adapter I2C/DDC channel drivers
974#
975# CONFIG_I2C_VOODOO3 is not set
976
977#
978# Other I2C/SMBus bus drivers
979#
980# CONFIG_I2C_PCA_PLATFORM is not set
981# CONFIG_I2C_STUB is not set
982
983#
984# Miscellaneous I2C Chip support
985#
986# CONFIG_DS1682 is not set
987# CONFIG_SENSORS_PCF8574 is not set
988# CONFIG_PCF8575 is not set
989# CONFIG_SENSORS_MAX6875 is not set
990# CONFIG_SENSORS_TSL2550 is not set
991# CONFIG_I2C_DEBUG_CORE is not set
992# CONFIG_I2C_DEBUG_ALGO is not set
993# CONFIG_I2C_DEBUG_BUS is not set
994# CONFIG_I2C_DEBUG_CHIP is not set
995# CONFIG_SPI is not set
996CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
997CONFIG_ARCH_REQUIRE_GPIOLIB=y
998CONFIG_GPIOLIB=y
999# CONFIG_DEBUG_GPIO is not set
1000CONFIG_GPIO_SYSFS=y
1001
1002#
1003# Memory mapped GPIO expanders:
1004#
1005# CONFIG_GPIO_XILINX is not set
1006
1007#
1008# I2C GPIO expanders:
1009#
1010# CONFIG_GPIO_MAX732X is not set
1011CONFIG_GPIO_PCA953X=y
1012# CONFIG_GPIO_PCF857X is not set
1013
1014#
1015# PCI GPIO expanders:
1016#
1017# CONFIG_GPIO_BT8XX is not set
1018
1019#
1020# SPI GPIO expanders:
1021#
1022# CONFIG_W1 is not set
1023# CONFIG_POWER_SUPPLY is not set
1024CONFIG_HWMON=y
1025# CONFIG_HWMON_VID is not set
1026# CONFIG_SENSORS_AD7414 is not set
1027# CONFIG_SENSORS_AD7418 is not set
1028# CONFIG_SENSORS_ADM1021 is not set
1029# CONFIG_SENSORS_ADM1025 is not set
1030# CONFIG_SENSORS_ADM1026 is not set
1031# CONFIG_SENSORS_ADM1029 is not set
1032# CONFIG_SENSORS_ADM1031 is not set
1033# CONFIG_SENSORS_ADM9240 is not set
1034# CONFIG_SENSORS_ADT7462 is not set
1035# CONFIG_SENSORS_ADT7470 is not set
1036# CONFIG_SENSORS_ADT7473 is not set
1037# CONFIG_SENSORS_ADT7475 is not set
1038# CONFIG_SENSORS_ATXP1 is not set
1039CONFIG_SENSORS_DS1621=y
1040# CONFIG_SENSORS_I5K_AMB is not set
1041# CONFIG_SENSORS_F71805F is not set
1042# CONFIG_SENSORS_F71882FG is not set
1043# CONFIG_SENSORS_F75375S is not set
1044# CONFIG_SENSORS_G760A is not set
1045# CONFIG_SENSORS_GL518SM is not set
1046# CONFIG_SENSORS_GL520SM is not set
1047# CONFIG_SENSORS_IT87 is not set
1048# CONFIG_SENSORS_LM63 is not set
1049# CONFIG_SENSORS_LM75 is not set
1050# CONFIG_SENSORS_LM77 is not set
1051# CONFIG_SENSORS_LM78 is not set
1052# CONFIG_SENSORS_LM80 is not set
1053# CONFIG_SENSORS_LM83 is not set
1054# CONFIG_SENSORS_LM85 is not set
1055# CONFIG_SENSORS_LM87 is not set
1056CONFIG_SENSORS_LM90=y
1057# CONFIG_SENSORS_LM92 is not set
1058# CONFIG_SENSORS_LM93 is not set
1059# CONFIG_SENSORS_LTC4215 is not set
1060# CONFIG_SENSORS_LTC4245 is not set
1061# CONFIG_SENSORS_LM95241 is not set
1062# CONFIG_SENSORS_MAX1619 is not set
1063# CONFIG_SENSORS_MAX6650 is not set
1064# CONFIG_SENSORS_PC87360 is not set
1065# CONFIG_SENSORS_PC87427 is not set
1066# CONFIG_SENSORS_PCF8591 is not set
1067# CONFIG_SENSORS_SHT15 is not set
1068# CONFIG_SENSORS_SIS5595 is not set
1069# CONFIG_SENSORS_DME1737 is not set
1070# CONFIG_SENSORS_SMSC47M1 is not set
1071# CONFIG_SENSORS_SMSC47M192 is not set
1072# CONFIG_SENSORS_SMSC47B397 is not set
1073# CONFIG_SENSORS_ADS7828 is not set
1074# CONFIG_SENSORS_THMC50 is not set
1075# CONFIG_SENSORS_VIA686A is not set
1076# CONFIG_SENSORS_VT1211 is not set
1077# CONFIG_SENSORS_VT8231 is not set
1078# CONFIG_SENSORS_W83781D is not set
1079# CONFIG_SENSORS_W83791D is not set
1080# CONFIG_SENSORS_W83792D is not set
1081# CONFIG_SENSORS_W83793 is not set
1082# CONFIG_SENSORS_W83L785TS is not set
1083# CONFIG_SENSORS_W83L786NG is not set
1084# CONFIG_SENSORS_W83627HF is not set
1085# CONFIG_SENSORS_W83627EHF is not set
1086# CONFIG_HWMON_DEBUG_CHIP is not set
1087# CONFIG_THERMAL is not set
1088# CONFIG_THERMAL_HWMON is not set
1089CONFIG_WATCHDOG=y
1090# CONFIG_WATCHDOG_NOWAYOUT is not set
1091
1092#
1093# Watchdog Device Drivers
1094#
1095# CONFIG_SOFT_WATCHDOG is not set
1096# CONFIG_ALIM7101_WDT is not set
1097# CONFIG_BOOKE_WDT is not set
1098
1099#
1100# PCI-based Watchdog Cards
1101#
1102# CONFIG_PCIPCWATCHDOG is not set
1103# CONFIG_WDTPCI is not set
1104
1105#
1106# USB-based Watchdog Cards
1107#
1108# CONFIG_USBPCWATCHDOG is not set
1109CONFIG_SSB_POSSIBLE=y
1110
1111#
1112# Sonics Silicon Backplane
1113#
1114# CONFIG_SSB is not set
1115
1116#
1117# Multifunction device drivers
1118#
1119# CONFIG_MFD_CORE is not set
1120# CONFIG_MFD_SM501 is not set
1121# CONFIG_HTC_PASIC3 is not set
1122# CONFIG_TPS65010 is not set
1123# CONFIG_TWL4030_CORE is not set
1124# CONFIG_MFD_TMIO is not set
1125# CONFIG_PMIC_DA903X is not set
1126# CONFIG_MFD_WM8400 is not set
1127# CONFIG_MFD_WM8350_I2C is not set
1128# CONFIG_MFD_PCF50633 is not set
1129# CONFIG_REGULATOR is not set
1130
1131#
1132# Multimedia devices
1133#
1134
1135#
1136# Multimedia core support
1137#
1138# CONFIG_VIDEO_DEV is not set
1139# CONFIG_DVB_CORE is not set
1140# CONFIG_VIDEO_MEDIA is not set
1141
1142#
1143# Multimedia drivers
1144#
1145# CONFIG_DAB is not set
1146
1147#
1148# Graphics support
1149#
1150# CONFIG_AGP is not set
1151# CONFIG_DRM is not set
1152# CONFIG_VGASTATE is not set
1153CONFIG_VIDEO_OUTPUT_CONTROL=y
1154# CONFIG_FB is not set
1155# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1156
1157#
1158# Display device support
1159#
1160# CONFIG_DISPLAY_SUPPORT is not set
1161
1162#
1163# Console display driver support
1164#
1165CONFIG_VGA_CONSOLE=y
1166# CONFIG_VGACON_SOFT_SCROLLBACK is not set
1167CONFIG_DUMMY_CONSOLE=y
1168# CONFIG_SOUND is not set
1169CONFIG_HID_SUPPORT=y
1170CONFIG_HID=y
1171# CONFIG_HID_DEBUG is not set
1172# CONFIG_HIDRAW is not set
1173
1174#
1175# USB Input Devices
1176#
1177CONFIG_USB_HID=y
1178# CONFIG_HID_PID is not set
1179# CONFIG_USB_HIDDEV is not set
1180
1181#
1182# Special HID drivers
1183#
1184# CONFIG_HID_A4TECH is not set
1185# CONFIG_HID_APPLE is not set
1186# CONFIG_HID_BELKIN is not set
1187# CONFIG_HID_CHERRY is not set
1188# CONFIG_HID_CHICONY is not set
1189# CONFIG_HID_CYPRESS is not set
1190# CONFIG_DRAGONRISE_FF is not set
1191# CONFIG_HID_EZKEY is not set
1192# CONFIG_HID_KYE is not set
1193# CONFIG_HID_GYRATION is not set
1194# CONFIG_HID_KENSINGTON is not set
1195# CONFIG_HID_LOGITECH is not set
1196# CONFIG_HID_MICROSOFT is not set
1197# CONFIG_HID_MONTEREY is not set
1198# CONFIG_HID_NTRIG is not set
1199# CONFIG_HID_PANTHERLORD is not set
1200# CONFIG_HID_PETALYNX is not set
1201# CONFIG_HID_SAMSUNG is not set
1202# CONFIG_HID_SONY is not set
1203# CONFIG_HID_SUNPLUS is not set
1204# CONFIG_GREENASIA_FF is not set
1205# CONFIG_HID_TOPSEED is not set
1206# CONFIG_THRUSTMASTER_FF is not set
1207# CONFIG_ZEROPLUS_FF is not set
1208CONFIG_USB_SUPPORT=y
1209CONFIG_USB_ARCH_HAS_HCD=y
1210CONFIG_USB_ARCH_HAS_OHCI=y
1211CONFIG_USB_ARCH_HAS_EHCI=y
1212CONFIG_USB=y
1213# CONFIG_USB_DEBUG is not set
1214# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
1215
1216#
1217# Miscellaneous USB options
1218#
1219CONFIG_USB_DEVICEFS=y
1220# CONFIG_USB_DEVICE_CLASS is not set
1221# CONFIG_USB_DYNAMIC_MINORS is not set
1222# CONFIG_USB_OTG is not set
1223# CONFIG_USB_OTG_WHITELIST is not set
1224# CONFIG_USB_OTG_BLACKLIST_HUB is not set
1225CONFIG_USB_MON=y
1226# CONFIG_USB_WUSB is not set
1227# CONFIG_USB_WUSB_CBAF is not set
1228
1229#
1230# USB Host Controller Drivers
1231#
1232# CONFIG_USB_C67X00_HCD is not set
1233# CONFIG_USB_EHCI_HCD is not set
1234# CONFIG_USB_OXU210HP_HCD is not set
1235# CONFIG_USB_ISP116X_HCD is not set
1236CONFIG_USB_ISP1760_HCD=y
1237# CONFIG_USB_OHCI_HCD is not set
1238# CONFIG_USB_UHCI_HCD is not set
1239# CONFIG_USB_SL811_HCD is not set
1240# CONFIG_USB_R8A66597_HCD is not set
1241# CONFIG_USB_WHCI_HCD is not set
1242# CONFIG_USB_HWA_HCD is not set
1243
1244#
1245# USB Device Class drivers
1246#
1247# CONFIG_USB_ACM is not set
1248# CONFIG_USB_PRINTER is not set
1249# CONFIG_USB_WDM is not set
1250# CONFIG_USB_TMC is not set
1251
1252#
1253# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
1254#
1255
1256#
1257# also be needed; see USB_STORAGE Help for more info
1258#
1259CONFIG_USB_STORAGE=y
1260# CONFIG_USB_STORAGE_DEBUG is not set
1261# CONFIG_USB_STORAGE_DATAFAB is not set
1262# CONFIG_USB_STORAGE_FREECOM is not set
1263# CONFIG_USB_STORAGE_ISD200 is not set
1264# CONFIG_USB_STORAGE_USBAT is not set
1265# CONFIG_USB_STORAGE_SDDR09 is not set
1266# CONFIG_USB_STORAGE_SDDR55 is not set
1267# CONFIG_USB_STORAGE_JUMPSHOT is not set
1268# CONFIG_USB_STORAGE_ALAUDA is not set
1269# CONFIG_USB_STORAGE_ONETOUCH is not set
1270# CONFIG_USB_STORAGE_KARMA is not set
1271# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
1272# CONFIG_USB_LIBUSUAL is not set
1273
1274#
1275# USB Imaging devices
1276#
1277# CONFIG_USB_MDC800 is not set
1278# CONFIG_USB_MICROTEK is not set
1279
1280#
1281# USB port drivers
1282#
1283# CONFIG_USB_SERIAL is not set
1284
1285#
1286# USB Miscellaneous drivers
1287#
1288# CONFIG_USB_EMI62 is not set
1289# CONFIG_USB_EMI26 is not set
1290# CONFIG_USB_ADUTUX is not set
1291# CONFIG_USB_SEVSEG is not set
1292# CONFIG_USB_RIO500 is not set
1293# CONFIG_USB_LEGOTOWER is not set
1294# CONFIG_USB_LCD is not set
1295# CONFIG_USB_BERRY_CHARGE is not set
1296# CONFIG_USB_LED is not set
1297# CONFIG_USB_CYPRESS_CY7C63 is not set
1298# CONFIG_USB_CYTHERM is not set
1299# CONFIG_USB_IDMOUSE is not set
1300# CONFIG_USB_FTDI_ELAN is not set
1301# CONFIG_USB_APPLEDISPLAY is not set
1302# CONFIG_USB_LD is not set
1303# CONFIG_USB_TRANCEVIBRATOR is not set
1304# CONFIG_USB_IOWARRIOR is not set
1305# CONFIG_USB_TEST is not set
1306# CONFIG_USB_ISIGHTFW is not set
1307# CONFIG_USB_VST is not set
1308# CONFIG_USB_GADGET is not set
1309
1310#
1311# OTG and related infrastructure
1312#
1313# CONFIG_USB_GPIO_VBUS is not set
1314# CONFIG_NOP_USB_XCEIV is not set
1315# CONFIG_UWB is not set
1316# CONFIG_MMC is not set
1317# CONFIG_MEMSTICK is not set
1318CONFIG_NEW_LEDS=y
1319CONFIG_LEDS_CLASS=y
1320
1321#
1322# LED drivers
1323#
1324# CONFIG_LEDS_PCA9532 is not set
1325CONFIG_LEDS_GPIO=y
1326CONFIG_LEDS_GPIO_PLATFORM=y
1327CONFIG_LEDS_GPIO_OF=y
1328# CONFIG_LEDS_LP5521 is not set
1329CONFIG_LEDS_PCA955X=y
1330# CONFIG_LEDS_BD2802 is not set
1331
1332#
1333# LED Triggers
1334#
1335CONFIG_LEDS_TRIGGERS=y
1336CONFIG_LEDS_TRIGGER_TIMER=y
1337CONFIG_LEDS_TRIGGER_HEARTBEAT=y
1338# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
1339CONFIG_LEDS_TRIGGER_GPIO=y
1340# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
1341
1342#
1343# iptables trigger is under Netfilter config (LED target)
1344#
1345# CONFIG_ACCESSIBILITY is not set
1346# CONFIG_INFINIBAND is not set
1347CONFIG_EDAC=y
1348
1349#
1350# Reporting subsystems
1351#
1352# CONFIG_EDAC_DEBUG is not set
1353CONFIG_EDAC_MM_EDAC=y
1354CONFIG_EDAC_MPC85XX=y
1355# CONFIG_EDAC_AMD8131 is not set
1356# CONFIG_EDAC_AMD8111 is not set
1357CONFIG_RTC_LIB=y
1358CONFIG_RTC_CLASS=y
1359CONFIG_RTC_HCTOSYS=y
1360CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1361# CONFIG_RTC_DEBUG is not set
1362
1363#
1364# RTC interfaces
1365#
1366CONFIG_RTC_INTF_SYSFS=y
1367CONFIG_RTC_INTF_PROC=y
1368CONFIG_RTC_INTF_DEV=y
1369# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1370# CONFIG_RTC_DRV_TEST is not set
1371
1372#
1373# I2C RTC drivers
1374#
1375CONFIG_RTC_DRV_DS1307=y
1376# CONFIG_RTC_DRV_DS1374 is not set
1377# CONFIG_RTC_DRV_DS1672 is not set
1378# CONFIG_RTC_DRV_MAX6900 is not set
1379# CONFIG_RTC_DRV_RS5C372 is not set
1380# CONFIG_RTC_DRV_ISL1208 is not set
1381# CONFIG_RTC_DRV_X1205 is not set
1382# CONFIG_RTC_DRV_PCF8563 is not set
1383# CONFIG_RTC_DRV_PCF8583 is not set
1384# CONFIG_RTC_DRV_M41T80 is not set
1385# CONFIG_RTC_DRV_S35390A is not set
1386# CONFIG_RTC_DRV_FM3130 is not set
1387# CONFIG_RTC_DRV_RX8581 is not set
1388
1389#
1390# SPI RTC drivers
1391#
1392
1393#
1394# Platform RTC drivers
1395#
1396CONFIG_RTC_DRV_CMOS=y
1397# CONFIG_RTC_DRV_DS1286 is not set
1398# CONFIG_RTC_DRV_DS1511 is not set
1399# CONFIG_RTC_DRV_DS1553 is not set
1400# CONFIG_RTC_DRV_DS1742 is not set
1401# CONFIG_RTC_DRV_STK17TA8 is not set
1402# CONFIG_RTC_DRV_M48T86 is not set
1403# CONFIG_RTC_DRV_M48T35 is not set
1404# CONFIG_RTC_DRV_M48T59 is not set
1405# CONFIG_RTC_DRV_BQ4802 is not set
1406# CONFIG_RTC_DRV_V3020 is not set
1407
1408#
1409# on-CPU RTC drivers
1410#
1411# CONFIG_RTC_DRV_GENERIC is not set
1412CONFIG_DMADEVICES=y
1413
1414#
1415# DMA Devices
1416#
1417CONFIG_FSL_DMA=y
1418CONFIG_DMA_ENGINE=y
1419
1420#
1421# DMA Clients
1422#
1423CONFIG_NET_DMA=y
1424# CONFIG_ASYNC_TX_DMA is not set
1425# CONFIG_DMATEST is not set
1426# CONFIG_AUXDISPLAY is not set
1427# CONFIG_UIO is not set
1428# CONFIG_STAGING is not set
1429
1430#
1431# File systems
1432#
1433CONFIG_EXT2_FS=y
1434# CONFIG_EXT2_FS_XATTR is not set
1435# CONFIG_EXT2_FS_XIP is not set
1436CONFIG_EXT3_FS=y
1437# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
1438CONFIG_EXT3_FS_XATTR=y
1439# CONFIG_EXT3_FS_POSIX_ACL is not set
1440# CONFIG_EXT3_FS_SECURITY is not set
1441# CONFIG_EXT4_FS is not set
1442CONFIG_JBD=y
1443CONFIG_FS_MBCACHE=y
1444# CONFIG_REISERFS_FS is not set
1445# CONFIG_JFS_FS is not set
1446# CONFIG_FS_POSIX_ACL is not set
1447CONFIG_FILE_LOCKING=y
1448# CONFIG_XFS_FS is not set
1449# CONFIG_GFS2_FS is not set
1450# CONFIG_OCFS2_FS is not set
1451# CONFIG_BTRFS_FS is not set
1452CONFIG_DNOTIFY=y
1453CONFIG_INOTIFY=y
1454CONFIG_INOTIFY_USER=y
1455# CONFIG_QUOTA is not set
1456# CONFIG_AUTOFS_FS is not set
1457# CONFIG_AUTOFS4_FS is not set
1458# CONFIG_FUSE_FS is not set
1459
1460#
1461# Caches
1462#
1463# CONFIG_FSCACHE is not set
1464
1465#
1466# CD-ROM/DVD Filesystems
1467#
1468CONFIG_ISO9660_FS=y
1469CONFIG_JOLIET=y
1470CONFIG_ZISOFS=y
1471CONFIG_UDF_FS=y
1472CONFIG_UDF_NLS=y
1473
1474#
1475# DOS/FAT/NT Filesystems
1476#
1477CONFIG_FAT_FS=y
1478CONFIG_MSDOS_FS=y
1479CONFIG_VFAT_FS=y
1480CONFIG_FAT_DEFAULT_CODEPAGE=437
1481CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1482# CONFIG_NTFS_FS is not set
1483
1484#
1485# Pseudo filesystems
1486#
1487CONFIG_PROC_FS=y
1488CONFIG_PROC_KCORE=y
1489CONFIG_PROC_SYSCTL=y
1490CONFIG_PROC_PAGE_MONITOR=y
1491CONFIG_SYSFS=y
1492CONFIG_TMPFS=y
1493# CONFIG_TMPFS_POSIX_ACL is not set
1494# CONFIG_HUGETLB_PAGE is not set
1495# CONFIG_CONFIGFS_FS is not set
1496CONFIG_MISC_FILESYSTEMS=y
1497# CONFIG_ADFS_FS is not set
1498# CONFIG_AFFS_FS is not set
1499# CONFIG_HFS_FS is not set
1500# CONFIG_HFSPLUS_FS is not set
1501# CONFIG_BEFS_FS is not set
1502# CONFIG_BFS_FS is not set
1503# CONFIG_EFS_FS is not set
1504CONFIG_JFFS2_FS=y
1505CONFIG_JFFS2_FS_DEBUG=0
1506CONFIG_JFFS2_FS_WRITEBUFFER=y
1507# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
1508CONFIG_JFFS2_SUMMARY=y
1509# CONFIG_JFFS2_FS_XATTR is not set
1510# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1511CONFIG_JFFS2_ZLIB=y
1512# CONFIG_JFFS2_LZO is not set
1513CONFIG_JFFS2_RTIME=y
1514# CONFIG_JFFS2_RUBIN is not set
1515# CONFIG_CRAMFS is not set
1516# CONFIG_SQUASHFS is not set
1517# CONFIG_VXFS_FS is not set
1518# CONFIG_MINIX_FS is not set
1519# CONFIG_OMFS_FS is not set
1520# CONFIG_HPFS_FS is not set
1521# CONFIG_QNX4FS_FS is not set
1522# CONFIG_ROMFS_FS is not set
1523# CONFIG_SYSV_FS is not set
1524# CONFIG_UFS_FS is not set
1525# CONFIG_NILFS2_FS is not set
1526CONFIG_NETWORK_FILESYSTEMS=y
1527CONFIG_NFS_FS=y
1528CONFIG_NFS_V3=y
1529# CONFIG_NFS_V3_ACL is not set
1530# CONFIG_NFS_V4 is not set
1531CONFIG_ROOT_NFS=y
1532CONFIG_NFSD=y
1533# CONFIG_NFSD_V3 is not set
1534# CONFIG_NFSD_V4 is not set
1535CONFIG_LOCKD=y
1536CONFIG_LOCKD_V4=y
1537CONFIG_EXPORTFS=y
1538CONFIG_NFS_COMMON=y
1539CONFIG_SUNRPC=y
1540# CONFIG_RPCSEC_GSS_KRB5 is not set
1541# CONFIG_RPCSEC_GSS_SPKM3 is not set
1542# CONFIG_SMB_FS is not set
1543# CONFIG_CIFS is not set
1544# CONFIG_NCP_FS is not set
1545# CONFIG_CODA_FS is not set
1546# CONFIG_AFS_FS is not set
1547
1548#
1549# Partition Types
1550#
1551CONFIG_PARTITION_ADVANCED=y
1552# CONFIG_ACORN_PARTITION is not set
1553# CONFIG_OSF_PARTITION is not set
1554# CONFIG_AMIGA_PARTITION is not set
1555# CONFIG_ATARI_PARTITION is not set
1556# CONFIG_MAC_PARTITION is not set
1557CONFIG_MSDOS_PARTITION=y
1558# CONFIG_BSD_DISKLABEL is not set
1559# CONFIG_MINIX_SUBPARTITION is not set
1560# CONFIG_SOLARIS_X86_PARTITION is not set
1561# CONFIG_UNIXWARE_DISKLABEL is not set
1562# CONFIG_LDM_PARTITION is not set
1563# CONFIG_SGI_PARTITION is not set
1564# CONFIG_ULTRIX_PARTITION is not set
1565# CONFIG_SUN_PARTITION is not set
1566# CONFIG_KARMA_PARTITION is not set
1567# CONFIG_EFI_PARTITION is not set
1568# CONFIG_SYSV68_PARTITION is not set
1569CONFIG_NLS=y
1570CONFIG_NLS_DEFAULT="iso8859-1"
1571CONFIG_NLS_CODEPAGE_437=y
1572# CONFIG_NLS_CODEPAGE_737 is not set
1573# CONFIG_NLS_CODEPAGE_775 is not set
1574# CONFIG_NLS_CODEPAGE_850 is not set
1575# CONFIG_NLS_CODEPAGE_852 is not set
1576# CONFIG_NLS_CODEPAGE_855 is not set
1577# CONFIG_NLS_CODEPAGE_857 is not set
1578# CONFIG_NLS_CODEPAGE_860 is not set
1579# CONFIG_NLS_CODEPAGE_861 is not set
1580# CONFIG_NLS_CODEPAGE_862 is not set
1581# CONFIG_NLS_CODEPAGE_863 is not set
1582# CONFIG_NLS_CODEPAGE_864 is not set
1583# CONFIG_NLS_CODEPAGE_865 is not set
1584# CONFIG_NLS_CODEPAGE_866 is not set
1585# CONFIG_NLS_CODEPAGE_869 is not set
1586# CONFIG_NLS_CODEPAGE_936 is not set
1587# CONFIG_NLS_CODEPAGE_950 is not set
1588# CONFIG_NLS_CODEPAGE_932 is not set
1589# CONFIG_NLS_CODEPAGE_949 is not set
1590# CONFIG_NLS_CODEPAGE_874 is not set
1591# CONFIG_NLS_ISO8859_8 is not set
1592# CONFIG_NLS_CODEPAGE_1250 is not set
1593# CONFIG_NLS_CODEPAGE_1251 is not set
1594# CONFIG_NLS_ASCII is not set
1595CONFIG_NLS_ISO8859_1=y
1596# CONFIG_NLS_ISO8859_2 is not set
1597# CONFIG_NLS_ISO8859_3 is not set
1598# CONFIG_NLS_ISO8859_4 is not set
1599# CONFIG_NLS_ISO8859_5 is not set
1600# CONFIG_NLS_ISO8859_6 is not set
1601# CONFIG_NLS_ISO8859_7 is not set
1602# CONFIG_NLS_ISO8859_9 is not set
1603# CONFIG_NLS_ISO8859_13 is not set
1604# CONFIG_NLS_ISO8859_14 is not set
1605# CONFIG_NLS_ISO8859_15 is not set
1606# CONFIG_NLS_KOI8_R is not set
1607# CONFIG_NLS_KOI8_U is not set
1608# CONFIG_NLS_UTF8 is not set
1609# CONFIG_DLM is not set
1610# CONFIG_BINARY_PRINTF is not set
1611
1612#
1613# Library routines
1614#
1615CONFIG_BITREVERSE=y
1616CONFIG_GENERIC_FIND_LAST_BIT=y
1617# CONFIG_CRC_CCITT is not set
1618# CONFIG_CRC16 is not set
1619CONFIG_CRC_T10DIF=y
1620CONFIG_CRC_ITU_T=y
1621CONFIG_CRC32=y
1622# CONFIG_CRC7 is not set
1623# CONFIG_LIBCRC32C is not set
1624CONFIG_ZLIB_INFLATE=y
1625CONFIG_ZLIB_DEFLATE=y
1626CONFIG_DECOMPRESS_GZIP=y
1627CONFIG_HAS_IOMEM=y
1628CONFIG_HAS_IOPORT=y
1629CONFIG_HAS_DMA=y
1630CONFIG_HAVE_LMB=y
1631CONFIG_NLATTR=y
1632
1633#
1634# Kernel hacking
1635#
1636# CONFIG_PRINTK_TIME is not set
1637CONFIG_ENABLE_WARN_DEPRECATED=y
1638CONFIG_ENABLE_MUST_CHECK=y
1639CONFIG_FRAME_WARN=1024
1640# CONFIG_MAGIC_SYSRQ is not set
1641# CONFIG_UNUSED_SYMBOLS is not set
1642# CONFIG_DEBUG_FS is not set
1643# CONFIG_HEADERS_CHECK is not set
1644CONFIG_DEBUG_KERNEL=y
1645# CONFIG_DEBUG_SHIRQ is not set
1646CONFIG_DETECT_SOFTLOCKUP=y
1647# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
1648CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
1649CONFIG_DETECT_HUNG_TASK=y
1650# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
1651CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
1652CONFIG_SCHED_DEBUG=y
1653# CONFIG_SCHEDSTATS is not set
1654# CONFIG_TIMER_STATS is not set
1655# CONFIG_DEBUG_OBJECTS is not set
1656# CONFIG_SLUB_DEBUG_ON is not set
1657# CONFIG_SLUB_STATS is not set
1658# CONFIG_DEBUG_RT_MUTEXES is not set
1659# CONFIG_RT_MUTEX_TESTER is not set
1660# CONFIG_DEBUG_SPINLOCK is not set
1661# CONFIG_DEBUG_MUTEXES is not set
1662# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1663# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1664# CONFIG_DEBUG_KOBJECT is not set
1665# CONFIG_DEBUG_HIGHMEM is not set
1666# CONFIG_DEBUG_BUGVERBOSE is not set
1667# CONFIG_DEBUG_INFO is not set
1668# CONFIG_DEBUG_VM is not set
1669# CONFIG_DEBUG_WRITECOUNT is not set
1670# CONFIG_DEBUG_MEMORY_INIT is not set
1671# CONFIG_DEBUG_LIST is not set
1672# CONFIG_DEBUG_SG is not set
1673# CONFIG_DEBUG_NOTIFIERS is not set
1674# CONFIG_BOOT_PRINTK_DELAY is not set
1675# CONFIG_RCU_TORTURE_TEST is not set
1676# CONFIG_RCU_CPU_STALL_DETECTOR is not set
1677# CONFIG_BACKTRACE_SELF_TEST is not set
1678# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
1679# CONFIG_FAULT_INJECTION is not set
1680# CONFIG_LATENCYTOP is not set
1681# CONFIG_SYSCTL_SYSCALL_CHECK is not set
1682# CONFIG_DEBUG_PAGEALLOC is not set
1683CONFIG_HAVE_FUNCTION_TRACER=y
1684CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
1685CONFIG_HAVE_DYNAMIC_FTRACE=y
1686CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
1687CONFIG_TRACING_SUPPORT=y
1688
1689#
1690# Tracers
1691#
1692# CONFIG_FUNCTION_TRACER is not set
1693# CONFIG_SCHED_TRACER is not set
1694# CONFIG_CONTEXT_SWITCH_TRACER is not set
1695# CONFIG_EVENT_TRACER is not set
1696# CONFIG_BOOT_TRACER is not set
1697# CONFIG_TRACE_BRANCH_PROFILING is not set
1698# CONFIG_STACK_TRACER is not set
1699# CONFIG_KMEMTRACE is not set
1700# CONFIG_WORKQUEUE_TRACER is not set
1701# CONFIG_BLK_DEV_IO_TRACE is not set
1702# CONFIG_SAMPLES is not set
1703CONFIG_HAVE_ARCH_KGDB=y
1704# CONFIG_KGDB is not set
1705CONFIG_PRINT_STACK_DEPTH=64
1706# CONFIG_DEBUG_STACKOVERFLOW is not set
1707# CONFIG_DEBUG_STACK_USAGE is not set
1708# CONFIG_CODE_PATCHING_SELFTEST is not set
1709# CONFIG_FTR_FIXUP_SELFTEST is not set
1710# CONFIG_MSI_BITMAP_SELFTEST is not set
1711# CONFIG_XMON is not set
1712# CONFIG_IRQSTACKS is not set
1713# CONFIG_BDI_SWITCH is not set
1714# CONFIG_PPC_EARLY_DEBUG is not set
1715
1716#
1717# Security options
1718#
1719# CONFIG_KEYS is not set
1720# CONFIG_SECURITY is not set
1721# CONFIG_SECURITYFS is not set
1722# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1723CONFIG_CRYPTO=y
1724
1725#
1726# Crypto core or helper
1727#
1728# CONFIG_CRYPTO_FIPS is not set
1729CONFIG_CRYPTO_ALGAPI=y
1730CONFIG_CRYPTO_ALGAPI2=y
1731CONFIG_CRYPTO_AEAD2=y
1732CONFIG_CRYPTO_BLKCIPHER2=y
1733CONFIG_CRYPTO_HASH=y
1734CONFIG_CRYPTO_HASH2=y
1735CONFIG_CRYPTO_RNG2=y
1736CONFIG_CRYPTO_PCOMP=y
1737CONFIG_CRYPTO_MANAGER=y
1738CONFIG_CRYPTO_MANAGER2=y
1739# CONFIG_CRYPTO_GF128MUL is not set
1740# CONFIG_CRYPTO_NULL is not set
1741CONFIG_CRYPTO_WORKQUEUE=y
1742# CONFIG_CRYPTO_CRYPTD is not set
1743# CONFIG_CRYPTO_AUTHENC is not set
1744# CONFIG_CRYPTO_TEST is not set
1745
1746#
1747# Authenticated Encryption with Associated Data
1748#
1749# CONFIG_CRYPTO_CCM is not set
1750# CONFIG_CRYPTO_GCM is not set
1751# CONFIG_CRYPTO_SEQIV is not set
1752
1753#
1754# Block modes
1755#
1756# CONFIG_CRYPTO_CBC is not set
1757# CONFIG_CRYPTO_CTR is not set
1758# CONFIG_CRYPTO_CTS is not set
1759# CONFIG_CRYPTO_ECB is not set
1760# CONFIG_CRYPTO_LRW is not set
1761# CONFIG_CRYPTO_PCBC is not set
1762# CONFIG_CRYPTO_XTS is not set
1763
1764#
1765# Hash modes
1766#
1767CONFIG_CRYPTO_HMAC=y
1768# CONFIG_CRYPTO_XCBC is not set
1769
1770#
1771# Digest
1772#
1773# CONFIG_CRYPTO_CRC32C is not set
1774# CONFIG_CRYPTO_MD4 is not set
1775CONFIG_CRYPTO_MD5=y
1776# CONFIG_CRYPTO_MICHAEL_MIC is not set
1777# CONFIG_CRYPTO_RMD128 is not set
1778# CONFIG_CRYPTO_RMD160 is not set
1779# CONFIG_CRYPTO_RMD256 is not set
1780# CONFIG_CRYPTO_RMD320 is not set
1781# CONFIG_CRYPTO_SHA1 is not set
1782# CONFIG_CRYPTO_SHA256 is not set
1783# CONFIG_CRYPTO_SHA512 is not set
1784# CONFIG_CRYPTO_TGR192 is not set
1785# CONFIG_CRYPTO_WP512 is not set
1786
1787#
1788# Ciphers
1789#
1790# CONFIG_CRYPTO_AES is not set
1791# CONFIG_CRYPTO_ANUBIS is not set
1792# CONFIG_CRYPTO_ARC4 is not set
1793# CONFIG_CRYPTO_BLOWFISH is not set
1794# CONFIG_CRYPTO_CAMELLIA is not set
1795# CONFIG_CRYPTO_CAST5 is not set
1796# CONFIG_CRYPTO_CAST6 is not set
1797# CONFIG_CRYPTO_DES is not set
1798# CONFIG_CRYPTO_FCRYPT is not set
1799# CONFIG_CRYPTO_KHAZAD is not set
1800# CONFIG_CRYPTO_SALSA20 is not set
1801# CONFIG_CRYPTO_SEED is not set
1802# CONFIG_CRYPTO_SERPENT is not set
1803# CONFIG_CRYPTO_TEA is not set
1804# CONFIG_CRYPTO_TWOFISH is not set
1805
1806#
1807# Compression
1808#
1809# CONFIG_CRYPTO_DEFLATE is not set
1810# CONFIG_CRYPTO_ZLIB is not set
1811# CONFIG_CRYPTO_LZO is not set
1812
1813#
1814# Random Number Generation
1815#
1816# CONFIG_CRYPTO_ANSI_CPRNG is not set
1817CONFIG_CRYPTO_HW=y
1818# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1819# CONFIG_CRYPTO_DEV_TALITOS is not set
1820# CONFIG_PPC_CLOCK is not set
1821# CONFIG_VIRTUALIZATION is not set
diff --git a/arch/powerpc/include/asm/delay.h b/arch/powerpc/include/asm/delay.h
index f9200a65c632..1e2eb41fa057 100644
--- a/arch/powerpc/include/asm/delay.h
+++ b/arch/powerpc/include/asm/delay.h
@@ -2,8 +2,11 @@
2#define _ASM_POWERPC_DELAY_H 2#define _ASM_POWERPC_DELAY_H
3#ifdef __KERNEL__ 3#ifdef __KERNEL__
4 4
5#include <asm/time.h>
6
5/* 7/*
6 * Copyright 1996, Paul Mackerras. 8 * Copyright 1996, Paul Mackerras.
9 * Copyright (C) 2009 Freescale Semiconductor, Inc. All rights reserved.
7 * 10 *
8 * This program is free software; you can redistribute it and/or 11 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License 12 * modify it under the terms of the GNU General Public License
@@ -30,5 +33,38 @@ extern void udelay(unsigned long usecs);
30#define mdelay(n) udelay((n) * 1000) 33#define mdelay(n) udelay((n) * 1000)
31#endif 34#endif
32 35
36/**
37 * spin_event_timeout - spin until a condition gets true or a timeout elapses
38 * @condition: a C expression to evalate
39 * @timeout: timeout, in microseconds
40 * @delay: the number of microseconds to delay between each evaluation of
41 * @condition
42 *
43 * The process spins until the condition evaluates to true (non-zero) or the
44 * timeout elapses. The return value of this macro is the value of
45 * @condition when the loop terminates. This allows you to determine the cause
46 * of the loop terminates. If the return value is zero, then you know a
47 * timeout has occurred.
48 *
49 * This primary purpose of this macro is to poll on a hardware register
50 * until a status bit changes. The timeout ensures that the loop still
51 * terminates even if the bit never changes. The delay is for devices that
52 * need a delay in between successive reads.
53 *
54 * gcc will optimize out the if-statement if @delay is a constant.
55 */
56#define spin_event_timeout(condition, timeout, delay) \
57({ \
58 typeof(condition) __ret; \
59 unsigned long __loops = tb_ticks_per_usec * timeout; \
60 unsigned long __start = get_tbl(); \
61 while (!(__ret = (condition)) && (tb_ticks_since(__start) <= __loops)) \
62 if (delay) \
63 udelay(delay); \
64 else \
65 cpu_relax(); \
66 __ret; \
67})
68
33#endif /* __KERNEL__ */ 69#endif /* __KERNEL__ */
34#endif /* _ASM_POWERPC_DELAY_H */ 70#endif /* _ASM_POWERPC_DELAY_H */
diff --git a/arch/powerpc/include/asm/fsl_lbc.h b/arch/powerpc/include/asm/fsl_lbc.h
index 63a4f779f531..1b5a21041f9b 100644
--- a/arch/powerpc/include/asm/fsl_lbc.h
+++ b/arch/powerpc/include/asm/fsl_lbc.h
@@ -95,8 +95,8 @@ struct fsl_lbc_bank {
95}; 95};
96 96
97struct fsl_lbc_regs { 97struct fsl_lbc_regs {
98 struct fsl_lbc_bank bank[8]; 98 struct fsl_lbc_bank bank[12];
99 u8 res0[0x28]; 99 u8 res0[0x8];
100 __be32 mar; /**< UPM Address Register */ 100 __be32 mar; /**< UPM Address Register */
101 u8 res1[0x4]; 101 u8 res1[0x4];
102 __be32 mamr; /**< UPMA Mode Register */ 102 __be32 mamr; /**< UPMA Mode Register */
diff --git a/arch/powerpc/include/asm/mpc52xx.h b/arch/powerpc/include/asm/mpc52xx.h
index 52e049cd9e68..1b4f697abbdd 100644
--- a/arch/powerpc/include/asm/mpc52xx.h
+++ b/arch/powerpc/include/asm/mpc52xx.h
@@ -16,6 +16,7 @@
16#ifndef __ASSEMBLY__ 16#ifndef __ASSEMBLY__
17#include <asm/types.h> 17#include <asm/types.h>
18#include <asm/prom.h> 18#include <asm/prom.h>
19#include <asm/mpc5xxx.h>
19#endif /* __ASSEMBLY__ */ 20#endif /* __ASSEMBLY__ */
20 21
21#include <linux/suspend.h> 22#include <linux/suspend.h>
@@ -268,7 +269,6 @@ struct mpc52xx_intr {
268#ifndef __ASSEMBLY__ 269#ifndef __ASSEMBLY__
269 270
270/* mpc52xx_common.c */ 271/* mpc52xx_common.c */
271extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
272extern void mpc5200_setup_xlb_arbiter(void); 272extern void mpc5200_setup_xlb_arbiter(void);
273extern void mpc52xx_declare_of_platform_devices(void); 273extern void mpc52xx_declare_of_platform_devices(void);
274extern void mpc52xx_map_common_devices(void); 274extern void mpc52xx_map_common_devices(void);
diff --git a/arch/powerpc/include/asm/mpc512x.h b/arch/powerpc/include/asm/mpc5xxx.h
index c48a1658eeac..5ce9c5fa434a 100644
--- a/arch/powerpc/include/asm/mpc512x.h
+++ b/arch/powerpc/include/asm/mpc5xxx.h
@@ -4,7 +4,7 @@
4 * Author: John Rigby, <jrigby@freescale.com>, Friday Apr 13 2007 4 * Author: John Rigby, <jrigby@freescale.com>, Friday Apr 13 2007
5 * 5 *
6 * Description: 6 * Description:
7 * MPC5121 Prototypes and definitions 7 * MPC5xxx Prototypes and definitions
8 * 8 *
9 * This is free software; you can redistribute it and/or modify it 9 * This is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by 10 * under the terms of the GNU General Public License as published by
@@ -13,10 +13,10 @@
13 * 13 *
14 */ 14 */
15 15
16#ifndef __ASM_POWERPC_MPC512x_H__ 16#ifndef __ASM_POWERPC_MPC5xxx_H__
17#define __ASM_POWERPC_MPC512x_H__ 17#define __ASM_POWERPC_MPC5xxx_H__
18 18
19extern unsigned long mpc512x_find_ips_freq(struct device_node *node); 19extern unsigned long mpc5xxx_get_bus_frequency(struct device_node *node);
20 20
21#endif /* __ASM_POWERPC_MPC512x_H__ */ 21#endif /* __ASM_POWERPC_MPC5xxx_H__ */
22 22
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index a3c28e46947c..1170267736d3 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -755,7 +755,8 @@
755#define mfspr(rn) ({unsigned long rval; \ 755#define mfspr(rn) ({unsigned long rval; \
756 asm volatile("mfspr %0," __stringify(rn) \ 756 asm volatile("mfspr %0," __stringify(rn) \
757 : "=r" (rval)); rval;}) 757 : "=r" (rval)); rval;})
758#define mtspr(rn, v) asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v)) 758#define mtspr(rn, v) asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v)\
759 : "memory")
759 760
760#ifdef __powerpc64__ 761#ifdef __powerpc64__
761#ifdef CONFIG_PPC_CELL 762#ifdef CONFIG_PPC_CELL
diff --git a/arch/powerpc/include/asm/reg_booke.h b/arch/powerpc/include/asm/reg_booke.h
index 601ddbc46002..6bcf364cbb2f 100644
--- a/arch/powerpc/include/asm/reg_booke.h
+++ b/arch/powerpc/include/asm/reg_booke.h
@@ -389,12 +389,14 @@
389#define ICCR_CACHE 1 /* Cacheable */ 389#define ICCR_CACHE 1 /* Cacheable */
390 390
391/* Bit definitions for L1CSR0. */ 391/* Bit definitions for L1CSR0. */
392#define L1CSR0_CPE 0x00010000 /* Data Cache Parity Enable */
392#define L1CSR0_CLFC 0x00000100 /* Cache Lock Bits Flash Clear */ 393#define L1CSR0_CLFC 0x00000100 /* Cache Lock Bits Flash Clear */
393#define L1CSR0_DCFI 0x00000002 /* Data Cache Flash Invalidate */ 394#define L1CSR0_DCFI 0x00000002 /* Data Cache Flash Invalidate */
394#define L1CSR0_CFI 0x00000002 /* Cache Flash Invalidate */ 395#define L1CSR0_CFI 0x00000002 /* Cache Flash Invalidate */
395#define L1CSR0_DCE 0x00000001 /* Data Cache Enable */ 396#define L1CSR0_DCE 0x00000001 /* Data Cache Enable */
396 397
397/* Bit definitions for L1CSR1. */ 398/* Bit definitions for L1CSR1. */
399#define L1CSR1_CPE 0x00010000 /* Instruction Cache Parity Enable */
398#define L1CSR1_ICLFR 0x00000100 /* Instr Cache Lock Bits Flash Reset */ 400#define L1CSR1_ICLFR 0x00000100 /* Instr Cache Lock Bits Flash Reset */
399#define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */ 401#define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */
400#define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */ 402#define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 612b0c4dc26d..6a4fb29a0618 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -4,6 +4,8 @@
4 4
5CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"' 5CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"'
6 6
7subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
8
7ifeq ($(CONFIG_PPC64),y) 9ifeq ($(CONFIG_PPC64),y)
8CFLAGS_prom_init.o += -mno-minimal-toc 10CFLAGS_prom_init.o += -mno-minimal-toc
9endif 11endif
diff --git a/arch/powerpc/kernel/cpu_setup_6xx.S b/arch/powerpc/kernel/cpu_setup_6xx.S
index 54f767e31a1a..1e9949e68856 100644
--- a/arch/powerpc/kernel/cpu_setup_6xx.S
+++ b/arch/powerpc/kernel/cpu_setup_6xx.S
@@ -239,6 +239,9 @@ END_FTR_SECTION_IFSET(CPU_FTR_L3CR)
239 ori r11,r11,HID0_SGE | HID0_FOLD | HID0_BHTE 239 ori r11,r11,HID0_SGE | HID0_FOLD | HID0_BHTE
240 ori r11,r11,HID0_LRSTK | HID0_BTIC 240 ori r11,r11,HID0_LRSTK | HID0_BTIC
241 oris r11,r11,HID0_DPM@h 241 oris r11,r11,HID0_DPM@h
242BEGIN_MMU_FTR_SECTION
243 oris r11,r11,HID0_HIGH_BAT@h
244END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
242BEGIN_FTR_SECTION 245BEGIN_FTR_SECTION
243 xori r11,r11,HID0_BTIC 246 xori r11,r11,HID0_BTIC
244END_FTR_SECTION_IFSET(CPU_FTR_NO_BTIC) 247END_FTR_SECTION_IFSET(CPU_FTR_NO_BTIC)
diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
index eb4b9adcedb4..0adb50ad8031 100644
--- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S
+++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
@@ -17,6 +17,40 @@
17#include <asm/cputable.h> 17#include <asm/cputable.h>
18#include <asm/ppc_asm.h> 18#include <asm/ppc_asm.h>
19 19
20_GLOBAL(__e500_icache_setup)
21 mfspr r0, SPRN_L1CSR1
22 andi. r3, r0, L1CSR1_ICE
23 bnelr /* Already enabled */
24 oris r0, r0, L1CSR1_CPE@h
25 ori r0, r0, (L1CSR1_ICFI | L1CSR1_ICLFR | L1CSR1_ICE)
26 mtspr SPRN_L1CSR1, r0 /* Enable I-Cache */
27 isync
28 blr
29
30_GLOBAL(__e500_dcache_setup)
31 mfspr r0, SPRN_L1CSR0
32 andi. r3, r0, L1CSR0_DCE
33 bnelr /* Already enabled */
34 msync
35 isync
36 li r0, 0
37 mtspr SPRN_L1CSR0, r0 /* Disable */
38 msync
39 isync
40 li r0, (L1CSR0_DCFI | L1CSR0_CLFC)
41 mtspr SPRN_L1CSR0, r0 /* Invalidate */
42 isync
431: mfspr r0, SPRN_L1CSR0
44 andi. r3, r0, L1CSR0_CLFC
45 bne+ 1b /* Wait for lock bits reset */
46 oris r0, r0, L1CSR0_CPE@h
47 ori r0, r0, L1CSR0_DCE
48 msync
49 isync
50 mtspr SPRN_L1CSR0, r0 /* Enable */
51 isync
52 blr
53
20_GLOBAL(__setup_cpu_e200) 54_GLOBAL(__setup_cpu_e200)
21 /* enable dedicated debug exception handling resources (Debug APU) */ 55 /* enable dedicated debug exception handling resources (Debug APU) */
22 mfspr r3,SPRN_HID0 56 mfspr r3,SPRN_HID0
@@ -25,7 +59,16 @@ _GLOBAL(__setup_cpu_e200)
25 b __setup_e200_ivors 59 b __setup_e200_ivors
26_GLOBAL(__setup_cpu_e500v1) 60_GLOBAL(__setup_cpu_e500v1)
27_GLOBAL(__setup_cpu_e500v2) 61_GLOBAL(__setup_cpu_e500v2)
28 b __setup_e500_ivors 62 mflr r4
63 bl __e500_icache_setup
64 bl __e500_dcache_setup
65 bl __setup_e500_ivors
66 mtlr r4
67 blr
29_GLOBAL(__setup_cpu_e500mc) 68_GLOBAL(__setup_cpu_e500mc)
30 b __setup_e500mc_ivors 69 mflr r4
31 70 bl __e500_icache_setup
71 bl __e500_dcache_setup
72 bl __setup_e500mc_ivors
73 mtlr r4
74 blr
diff --git a/arch/powerpc/kvm/Makefile b/arch/powerpc/kvm/Makefile
index 4b2df66c79d8..459c7ee580f7 100644
--- a/arch/powerpc/kvm/Makefile
+++ b/arch/powerpc/kvm/Makefile
@@ -2,6 +2,8 @@
2# Makefile for Kernel-based Virtual Machine module 2# Makefile for Kernel-based Virtual Machine module
3# 3#
4 4
5subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
6
5EXTRA_CFLAGS += -Ivirt/kvm -Iarch/powerpc/kvm 7EXTRA_CFLAGS += -Ivirt/kvm -Iarch/powerpc/kvm
6 8
7common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o) 9common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)
diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
index 29b742b90f1f..3040dac18a37 100644
--- a/arch/powerpc/lib/Makefile
+++ b/arch/powerpc/lib/Makefile
@@ -2,6 +2,8 @@
2# Makefile for ppc-specific library files.. 2# Makefile for ppc-specific library files..
3# 3#
4 4
5subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
6
5ifeq ($(CONFIG_PPC64),y) 7ifeq ($(CONFIG_PPC64),y)
6EXTRA_CFLAGS += -mno-minimal-toc 8EXTRA_CFLAGS += -mno-minimal-toc
7endif 9endif
diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile
index c4bcf072cb3c..2d2192e48de7 100644
--- a/arch/powerpc/mm/Makefile
+++ b/arch/powerpc/mm/Makefile
@@ -2,6 +2,8 @@
2# Makefile for the linux ppc-specific parts of the memory manager. 2# Makefile for the linux ppc-specific parts of the memory manager.
3# 3#
4 4
5subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
6
5ifeq ($(CONFIG_PPC64),y) 7ifeq ($(CONFIG_PPC64),y)
6EXTRA_CFLAGS += -mno-minimal-toc 8EXTRA_CFLAGS += -mno-minimal-toc
7endif 9endif
diff --git a/arch/powerpc/oprofile/Makefile b/arch/powerpc/oprofile/Makefile
index 2ef6b0dddd8c..73e1c2ca0552 100644
--- a/arch/powerpc/oprofile/Makefile
+++ b/arch/powerpc/oprofile/Makefile
@@ -1,3 +1,5 @@
1subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
2
1ifeq ($(CONFIG_PPC64),y) 3ifeq ($(CONFIG_PPC64),y)
2EXTRA_CFLAGS += -mno-minimal-toc 4EXTRA_CFLAGS += -mno-minimal-toc
3endif 5endif
diff --git a/arch/powerpc/platforms/44x/warp.c b/arch/powerpc/platforms/44x/warp.c
index c5118802a281..42e09a9f77e2 100644
--- a/arch/powerpc/platforms/44x/warp.c
+++ b/arch/powerpc/platforms/44x/warp.c
@@ -43,7 +43,13 @@ static int __init warp_probe(void)
43{ 43{
44 unsigned long root = of_get_flat_dt_root(); 44 unsigned long root = of_get_flat_dt_root();
45 45
46 return of_flat_dt_is_compatible(root, "pika,warp"); 46 if (!of_flat_dt_is_compatible(root, "pika,warp"))
47 return 0;
48
49 /* For __dma_alloc_coherent */
50 ISA_DMA_THRESHOLD = ~0L;
51
52 return 1;
47} 53}
48 54
49define_machine(warp) { 55define_machine(warp) {
diff --git a/arch/powerpc/platforms/512x/clock.c b/arch/powerpc/platforms/512x/clock.c
index 1bcff94eb924..84544d072043 100644
--- a/arch/powerpc/platforms/512x/clock.c
+++ b/arch/powerpc/platforms/512x/clock.c
@@ -24,7 +24,7 @@
24#include <linux/io.h> 24#include <linux/io.h>
25 25
26#include <linux/of_platform.h> 26#include <linux/of_platform.h>
27#include <asm/mpc512x.h> 27#include <asm/mpc5xxx.h>
28#include <asm/clk_interface.h> 28#include <asm/clk_interface.h>
29 29
30#undef CLK_DEBUG 30#undef CLK_DEBUG
@@ -83,13 +83,13 @@ static void dump_clocks(void)
83 mutex_lock(&clocks_mutex); 83 mutex_lock(&clocks_mutex);
84 printk(KERN_INFO "CLOCKS:\n"); 84 printk(KERN_INFO "CLOCKS:\n");
85 list_for_each_entry(p, &clocks, node) { 85 list_for_each_entry(p, &clocks, node) {
86 printk(KERN_INFO " %s %ld", p->name, p->rate); 86 pr_info(" %s=%ld", p->name, p->rate);
87 if (p->parent) 87 if (p->parent)
88 printk(KERN_INFO " %s %ld", p->parent->name, 88 pr_cont(" %s=%ld", p->parent->name,
89 p->parent->rate); 89 p->parent->rate);
90 if (p->flags & CLK_HAS_CTRL) 90 if (p->flags & CLK_HAS_CTRL)
91 printk(KERN_INFO " reg/bit %d/%d", p->reg, p->bit); 91 pr_cont(" reg/bit=%d/%d", p->reg, p->bit);
92 printk("\n"); 92 pr_cont("\n");
93 } 93 }
94 mutex_unlock(&clocks_mutex); 94 mutex_unlock(&clocks_mutex);
95} 95}
diff --git a/arch/powerpc/platforms/512x/mpc512x.h b/arch/powerpc/platforms/512x/mpc512x.h
index 9c03693cb009..22a5352407e0 100644
--- a/arch/powerpc/platforms/512x/mpc512x.h
+++ b/arch/powerpc/platforms/512x/mpc512x.h
@@ -11,7 +11,6 @@
11 11
12#ifndef __MPC512X_H__ 12#ifndef __MPC512X_H__
13#define __MPC512X_H__ 13#define __MPC512X_H__
14extern unsigned long mpc512x_find_ips_freq(struct device_node *node);
15extern void __init mpc512x_init_IRQ(void); 14extern void __init mpc512x_init_IRQ(void);
16void __init mpc512x_declare_of_platform_devices(void); 15void __init mpc512x_declare_of_platform_devices(void);
17#endif /* __MPC512X_H__ */ 16#endif /* __MPC512X_H__ */
diff --git a/arch/powerpc/platforms/512x/mpc512x_shared.c b/arch/powerpc/platforms/512x/mpc512x_shared.c
index d8cd579f3191..434d683df5a0 100644
--- a/arch/powerpc/platforms/512x/mpc512x_shared.c
+++ b/arch/powerpc/platforms/512x/mpc512x_shared.c
@@ -24,29 +24,6 @@
24 24
25#include "mpc512x.h" 25#include "mpc512x.h"
26 26
27unsigned long
28mpc512x_find_ips_freq(struct device_node *node)
29{
30 struct device_node *np;
31 const unsigned int *p_ips_freq = NULL;
32
33 of_node_get(node);
34 while (node) {
35 p_ips_freq = of_get_property(node, "bus-frequency", NULL);
36 if (p_ips_freq)
37 break;
38
39 np = of_get_parent(node);
40 of_node_put(node);
41 node = np;
42 }
43 if (node)
44 of_node_put(node);
45
46 return p_ips_freq ? *p_ips_freq : 0;
47}
48EXPORT_SYMBOL(mpc512x_find_ips_freq);
49
50void __init mpc512x_init_IRQ(void) 27void __init mpc512x_init_IRQ(void)
51{ 28{
52 struct device_node *np; 29 struct device_node *np;
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index 8e3dd5a0f228..a46bad0c2339 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -47,36 +47,6 @@ static DEFINE_SPINLOCK(mpc52xx_lock);
47static struct mpc52xx_gpt __iomem *mpc52xx_wdt; 47static struct mpc52xx_gpt __iomem *mpc52xx_wdt;
48static struct mpc52xx_cdm __iomem *mpc52xx_cdm; 48static struct mpc52xx_cdm __iomem *mpc52xx_cdm;
49 49
50/**
51 * mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
52 * @node: device node
53 *
54 * Returns IPB bus frequency, or 0 if the bus frequency cannot be found.
55 */
56unsigned int
57mpc52xx_find_ipb_freq(struct device_node *node)
58{
59 struct device_node *np;
60 const unsigned int *p_ipb_freq = NULL;
61
62 of_node_get(node);
63 while (node) {
64 p_ipb_freq = of_get_property(node, "bus-frequency", NULL);
65 if (p_ipb_freq)
66 break;
67
68 np = of_get_parent(node);
69 of_node_put(node);
70 node = np;
71 }
72 if (node)
73 of_node_put(node);
74
75 return p_ipb_freq ? *p_ipb_freq : 0;
76}
77EXPORT_SYMBOL(mpc52xx_find_ipb_freq);
78
79
80/* 50/*
81 * Configure the XLB arbiter settings to match what Linux expects. 51 * Configure the XLB arbiter settings to match what Linux expects.
82 */ 52 */
@@ -221,7 +191,7 @@ unsigned int mpc52xx_get_xtal_freq(struct device_node *node)
221 if (!mpc52xx_cdm) 191 if (!mpc52xx_cdm)
222 return 0; 192 return 0;
223 193
224 freq = mpc52xx_find_ipb_freq(node); 194 freq = mpc5xxx_get_bus_frequency(node);
225 if (!freq) 195 if (!freq)
226 return 0; 196 return 0;
227 197
diff --git a/arch/powerpc/platforms/83xx/Kconfig b/arch/powerpc/platforms/83xx/Kconfig
index 437d29a59d72..083ebee9a16d 100644
--- a/arch/powerpc/platforms/83xx/Kconfig
+++ b/arch/powerpc/platforms/83xx/Kconfig
@@ -96,6 +96,13 @@ config ASP834x
96 This enables support for the Analogue & Micro ASP 83xx 96 This enables support for the Analogue & Micro ASP 83xx
97 board. 97 board.
98 98
99config KMETER1
100 bool "Keymile KMETER1"
101 select DEFAULT_UIMAGE
102 select QUICC_ENGINE
103 help
104 This enables support for the Keymile KMETER1 board.
105
99 106
100endif 107endif
101 108
diff --git a/arch/powerpc/platforms/83xx/Makefile b/arch/powerpc/platforms/83xx/Makefile
index 051777c542c7..e139c36572ec 100644
--- a/arch/powerpc/platforms/83xx/Makefile
+++ b/arch/powerpc/platforms/83xx/Makefile
@@ -15,3 +15,4 @@ obj-$(CONFIG_MPC837x_MDS) += mpc837x_mds.o
15obj-$(CONFIG_SBC834x) += sbc834x.o 15obj-$(CONFIG_SBC834x) += sbc834x.o
16obj-$(CONFIG_MPC837x_RDB) += mpc837x_rdb.o 16obj-$(CONFIG_MPC837x_RDB) += mpc837x_rdb.o
17obj-$(CONFIG_ASP834x) += asp834x.o 17obj-$(CONFIG_ASP834x) += asp834x.o
18obj-$(CONFIG_KMETER1) += kmeter1.o
diff --git a/arch/powerpc/platforms/83xx/kmeter1.c b/arch/powerpc/platforms/83xx/kmeter1.c
new file mode 100644
index 000000000000..903acfd851ac
--- /dev/null
+++ b/arch/powerpc/platforms/83xx/kmeter1.c
@@ -0,0 +1,191 @@
1/*
2 * Copyright 2008 DENX Software Engineering GmbH
3 * Author: Heiko Schocher <hs@denx.de>
4 *
5 * Description:
6 * Keymile KMETER1 board specific routines.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
14#include <linux/stddef.h>
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/errno.h>
18#include <linux/reboot.h>
19#include <linux/pci.h>
20#include <linux/kdev_t.h>
21#include <linux/major.h>
22#include <linux/console.h>
23#include <linux/delay.h>
24#include <linux/seq_file.h>
25#include <linux/root_dev.h>
26#include <linux/initrd.h>
27#include <linux/of_platform.h>
28#include <linux/of_device.h>
29
30#include <asm/system.h>
31#include <asm/atomic.h>
32#include <asm/time.h>
33#include <asm/io.h>
34#include <asm/machdep.h>
35#include <asm/ipic.h>
36#include <asm/irq.h>
37#include <asm/prom.h>
38#include <asm/udbg.h>
39#include <sysdev/fsl_soc.h>
40#include <sysdev/fsl_pci.h>
41#include <asm/qe.h>
42#include <asm/qe_ic.h>
43
44#include "mpc83xx.h"
45
46#define SVR_REV(svr) (((svr) >> 0) & 0xFFFF) /* Revision field */
47/* ************************************************************************
48 *
49 * Setup the architecture
50 *
51 */
52static void __init kmeter1_setup_arch(void)
53{
54 struct device_node *np;
55
56 if (ppc_md.progress)
57 ppc_md.progress("kmeter1_setup_arch()", 0);
58
59#ifdef CONFIG_PCI
60 for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
61 mpc83xx_add_bridge(np);
62#endif
63
64#ifdef CONFIG_QUICC_ENGINE
65 qe_reset();
66
67 np = of_find_node_by_name(NULL, "par_io");
68 if (np != NULL) {
69 par_io_init(np);
70 of_node_put(np);
71
72 for (np = NULL; (np = of_find_node_by_name(np, "ucc")) != NULL;)
73 par_io_of_config(np);
74 }
75
76 np = of_find_compatible_node(NULL, "network", "ucc_geth");
77 if (np != NULL) {
78 uint svid;
79
80 /* handle mpc8360ea rev.2.1 erratum 2: RGMII Timing */
81 svid = mfspr(SPRN_SVR);
82 if (SVR_REV(svid) == 0x0021) {
83 struct device_node *np_par;
84 struct resource res;
85 void __iomem *base;
86 int ret;
87
88 np_par = of_find_node_by_name(NULL, "par_io");
89 if (np_par == NULL) {
90 printk(KERN_WARNING "%s couldn;t find par_io node\n",
91 __func__);
92 return;
93 }
94 /* Map Parallel I/O ports registers */
95 ret = of_address_to_resource(np_par, 0, &res);
96 if (ret) {
97 printk(KERN_WARNING "%s couldn;t map par_io registers\n",
98 __func__);
99 return;
100 }
101 base = ioremap(res.start, res.end - res.start + 1);
102
103 /*
104 * IMMR + 0x14A8[4:5] = 11 (clk delay for UCC 2)
105 * IMMR + 0x14A8[18:19] = 11 (clk delay for UCC 1)
106 */
107 setbits32((base + 0xa8), 0x0c003000);
108
109 /*
110 * IMMR + 0x14AC[20:27] = 10101010
111 * (data delay for both UCC's)
112 */
113 clrsetbits_be32((base + 0xac), 0xff0, 0xaa0);
114 iounmap(base);
115 of_node_put(np_par);
116 }
117 of_node_put(np);
118 }
119#endif /* CONFIG_QUICC_ENGINE */
120}
121
122static struct of_device_id kmeter_ids[] = {
123 { .type = "soc", },
124 { .compatible = "soc", },
125 { .compatible = "simple-bus", },
126 { .type = "qe", },
127 { .compatible = "fsl,qe", },
128 {},
129};
130
131static int __init kmeter_declare_of_platform_devices(void)
132{
133 /* Publish the QE devices */
134 of_platform_bus_probe(NULL, kmeter_ids, NULL);
135
136 return 0;
137}
138machine_device_initcall(kmeter1, kmeter_declare_of_platform_devices);
139
140static void __init kmeter1_init_IRQ(void)
141{
142 struct device_node *np;
143
144 np = of_find_compatible_node(NULL, NULL, "fsl,pq2pro-pic");
145 if (!np) {
146 np = of_find_node_by_type(NULL, "ipic");
147 if (!np)
148 return;
149 }
150
151 ipic_init(np, 0);
152
153 /* Initialize the default interrupt mapping priorities,
154 * in case the boot rom changed something on us.
155 */
156 ipic_set_default_priority();
157 of_node_put(np);
158
159#ifdef CONFIG_QUICC_ENGINE
160 np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic");
161 if (!np) {
162 np = of_find_node_by_type(NULL, "qeic");
163 if (!np)
164 return;
165 }
166 qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic);
167 of_node_put(np);
168#endif /* CONFIG_QUICC_ENGINE */
169}
170
171/*
172 * Called very early, MMU is off, device-tree isn't unflattened
173 */
174static int __init kmeter1_probe(void)
175{
176 unsigned long root = of_get_flat_dt_root();
177
178 return of_flat_dt_is_compatible(root, "keymile,KMETER1");
179}
180
181define_machine(kmeter1) {
182 .name = "KMETER1",
183 .probe = kmeter1_probe,
184 .setup_arch = kmeter1_setup_arch,
185 .init_IRQ = kmeter1_init_IRQ,
186 .get_irq = ipic_get_irq,
187 .restart = mpc83xx_restart,
188 .time_init = mpc83xx_time_init,
189 .calibrate_decr = generic_calibrate_decr,
190 .progress = udbg_progress,
191};
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h
index 83cfe51526ec..d1dc5b0b4fbf 100644
--- a/arch/powerpc/platforms/83xx/mpc83xx.h
+++ b/arch/powerpc/platforms/83xx/mpc83xx.h
@@ -22,8 +22,8 @@
22/* system i/o configuration register low */ 22/* system i/o configuration register low */
23#define MPC83XX_SICRL_OFFS 0x114 23#define MPC83XX_SICRL_OFFS 0x114
24#define MPC834X_SICRL_USB_MASK 0x60000000 24#define MPC834X_SICRL_USB_MASK 0x60000000
25#define MPC834X_SICRL_USB0 0x40000000 25#define MPC834X_SICRL_USB0 0x20000000
26#define MPC834X_SICRL_USB1 0x20000000 26#define MPC834X_SICRL_USB1 0x40000000
27#define MPC831X_SICRL_USB_MASK 0x00000c00 27#define MPC831X_SICRL_USB_MASK 0x00000c00
28#define MPC831X_SICRL_USB_ULPI 0x00000800 28#define MPC831X_SICRL_USB_ULPI 0x00000800
29#define MPC8315_SICRL_USB_MASK 0x000000fc 29#define MPC8315_SICRL_USB_MASK 0x000000fc
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c
index 11e1fac17c7f..3ba4bb7d41bb 100644
--- a/arch/powerpc/platforms/83xx/usb.c
+++ b/arch/powerpc/platforms/83xx/usb.c
@@ -47,25 +47,25 @@ int mpc834x_usb_cfg(void)
47 sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */ 47 sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */
48 48
49 prop = of_get_property(np, "phy_type", NULL); 49 prop = of_get_property(np, "phy_type", NULL);
50 port1_is_dr = 1;
50 if (prop && (!strcmp(prop, "utmi") || 51 if (prop && (!strcmp(prop, "utmi") ||
51 !strcmp(prop, "utmi_wide"))) { 52 !strcmp(prop, "utmi_wide"))) {
52 sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; 53 sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1;
53 sicrh |= MPC834X_SICRH_USB_UTMI; 54 sicrh |= MPC834X_SICRH_USB_UTMI;
54 port1_is_dr = 1; 55 port0_is_dr = 1;
55 } else if (prop && !strcmp(prop, "serial")) { 56 } else if (prop && !strcmp(prop, "serial")) {
56 dr_mode = of_get_property(np, "dr_mode", NULL); 57 dr_mode = of_get_property(np, "dr_mode", NULL);
57 if (dr_mode && !strcmp(dr_mode, "otg")) { 58 if (dr_mode && !strcmp(dr_mode, "otg")) {
58 sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1; 59 sicrl |= MPC834X_SICRL_USB0 | MPC834X_SICRL_USB1;
59 port1_is_dr = 1; 60 port0_is_dr = 1;
60 } else { 61 } else {
61 sicrl |= MPC834X_SICRL_USB0; 62 sicrl |= MPC834X_SICRL_USB1;
62 } 63 }
63 } else if (prop && !strcmp(prop, "ulpi")) { 64 } else if (prop && !strcmp(prop, "ulpi")) {
64 sicrl |= MPC834X_SICRL_USB0; 65 sicrl |= MPC834X_SICRL_USB1;
65 } else { 66 } else {
66 printk(KERN_WARNING "834x USB PHY type not supported\n"); 67 printk(KERN_WARNING "834x USB PHY type not supported\n");
67 } 68 }
68 port0_is_dr = 1;
69 of_node_put(np); 69 of_node_put(np);
70 } 70 }
71 np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph"); 71 np = of_find_compatible_node(NULL, NULL, "fsl-usb2-mph");
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index 43d385cedcd7..a9b416688975 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -35,12 +35,14 @@ config MPC85xx_MDS
35 select DEFAULT_UIMAGE 35 select DEFAULT_UIMAGE
36 select PHYLIB 36 select PHYLIB
37 select HAS_RAPIDIO 37 select HAS_RAPIDIO
38 select SWIOTLB
38 help 39 help
39 This option enables support for the MPC85xx MDS board 40 This option enables support for the MPC85xx MDS board
40 41
41config MPC8536_DS 42config MPC8536_DS
42 bool "Freescale MPC8536 DS" 43 bool "Freescale MPC8536 DS"
43 select DEFAULT_UIMAGE 44 select DEFAULT_UIMAGE
45 select SWIOTLB
44 help 46 help
45 This option enables support for the MPC8536 DS board 47 This option enables support for the MPC8536 DS board
46 48
@@ -49,6 +51,7 @@ config MPC85xx_DS
49 select PPC_I8259 51 select PPC_I8259
50 select DEFAULT_UIMAGE 52 select DEFAULT_UIMAGE
51 select FSL_ULI1575 53 select FSL_ULI1575
54 select SWIOTLB
52 help 55 help
53 This option enables support for the MPC85xx DS (MPC8544 DS) board 56 This option enables support for the MPC85xx DS (MPC8544 DS) board
54 57
@@ -64,6 +67,16 @@ config KSI8560
64 help 67 help
65 This option enables support for the Emerson KSI8560 board 68 This option enables support for the Emerson KSI8560 board
66 69
70config XES_MPC85xx
71 bool "X-ES single-board computer"
72 select DEFAULT_UIMAGE
73 help
74 This option enables support for the various single-board
75 computers from Extreme Engineering Solutions (X-ES) based on
76 Freescale MPC85xx processors.
77 Manufacturer: Extreme Engineering Solutions, Inc.
78 URL: <http://www.xes-inc.com/>
79
67config STX_GP3 80config STX_GP3
68 bool "Silicon Turnkey Express GP3" 81 bool "Silicon Turnkey Express GP3"
69 help 82 help
diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile
index a857b35b9828..835733f2b12c 100644
--- a/arch/powerpc/platforms/85xx/Makefile
+++ b/arch/powerpc/platforms/85xx/Makefile
@@ -15,3 +15,4 @@ obj-$(CONFIG_SBC8560) += sbc8560.o
15obj-$(CONFIG_SBC8548) += sbc8548.o 15obj-$(CONFIG_SBC8548) += sbc8548.o
16obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o 16obj-$(CONFIG_SOCRATES) += socrates.o socrates_fpga_pic.o
17obj-$(CONFIG_KSI8560) += ksi8560.o 17obj-$(CONFIG_KSI8560) += ksi8560.o
18obj-$(CONFIG_XES_MPC85xx) += xes_mpc85xx.o \ No newline at end of file
diff --git a/arch/powerpc/platforms/85xx/mpc8536_ds.c b/arch/powerpc/platforms/85xx/mpc8536_ds.c
index 63efca20d7bd..055ff417bae9 100644
--- a/arch/powerpc/platforms/85xx/mpc8536_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc8536_ds.c
@@ -17,6 +17,7 @@
17#include <linux/seq_file.h> 17#include <linux/seq_file.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/of_platform.h> 19#include <linux/of_platform.h>
20#include <linux/lmb.h>
20 21
21#include <asm/system.h> 22#include <asm/system.h>
22#include <asm/time.h> 23#include <asm/time.h>
@@ -26,6 +27,7 @@
26#include <asm/prom.h> 27#include <asm/prom.h>
27#include <asm/udbg.h> 28#include <asm/udbg.h>
28#include <asm/mpic.h> 29#include <asm/mpic.h>
30#include <asm/swiotlb.h>
29 31
30#include <sysdev/fsl_soc.h> 32#include <sysdev/fsl_soc.h>
31#include <sysdev/fsl_pci.h> 33#include <sysdev/fsl_pci.h>
@@ -65,7 +67,9 @@ static void __init mpc8536_ds_setup_arch(void)
65{ 67{
66#ifdef CONFIG_PCI 68#ifdef CONFIG_PCI
67 struct device_node *np; 69 struct device_node *np;
70 struct pci_controller *hose;
68#endif 71#endif
72 dma_addr_t max = 0xffffffff;
69 73
70 if (ppc_md.progress) 74 if (ppc_md.progress)
71 ppc_md.progress("mpc8536_ds_setup_arch()", 0); 75 ppc_md.progress("mpc8536_ds_setup_arch()", 0);
@@ -80,11 +84,22 @@ static void __init mpc8536_ds_setup_arch(void)
80 fsl_add_bridge(np, 1); 84 fsl_add_bridge(np, 1);
81 else 85 else
82 fsl_add_bridge(np, 0); 86 fsl_add_bridge(np, 0);
87
88 hose = pci_find_hose_for_OF_device(np);
89 max = min(max, hose->dma_window_base_cur +
90 hose->dma_window_size);
83 } 91 }
84 } 92 }
85 93
86#endif 94#endif
87 95
96#ifdef CONFIG_SWIOTLB
97 if (lmb_end_of_DRAM() > max) {
98 ppc_swiotlb_enable = 1;
99 set_pci_dma_ops(&swiotlb_pci_dma_ops);
100 }
101#endif
102
88 printk("MPC8536 DS board from Freescale Semiconductor\n"); 103 printk("MPC8536 DS board from Freescale Semiconductor\n");
89} 104}
90 105
@@ -102,6 +117,8 @@ static int __init mpc8536_ds_publish_devices(void)
102} 117}
103machine_device_initcall(mpc8536_ds, mpc8536_ds_publish_devices); 118machine_device_initcall(mpc8536_ds, mpc8536_ds_publish_devices);
104 119
120machine_arch_initcall(mpc8536_ds, swiotlb_setup_bus_notifier);
121
105/* 122/*
106 * Called very early, device-tree isn't unflattened 123 * Called very early, device-tree isn't unflattened
107 */ 124 */
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index 53d5851a6c97..849c0ac0025f 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -20,6 +20,7 @@
20#include <linux/seq_file.h> 20#include <linux/seq_file.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/of_platform.h> 22#include <linux/of_platform.h>
23#include <linux/lmb.h>
23 24
24#include <asm/system.h> 25#include <asm/system.h>
25#include <asm/time.h> 26#include <asm/time.h>
@@ -30,6 +31,7 @@
30#include <asm/udbg.h> 31#include <asm/udbg.h>
31#include <asm/mpic.h> 32#include <asm/mpic.h>
32#include <asm/i8259.h> 33#include <asm/i8259.h>
34#include <asm/swiotlb.h>
33 35
34#include <sysdev/fsl_soc.h> 36#include <sysdev/fsl_soc.h>
35#include <sysdev/fsl_pci.h> 37#include <sysdev/fsl_pci.h>
@@ -155,7 +157,9 @@ static void __init mpc85xx_ds_setup_arch(void)
155{ 157{
156#ifdef CONFIG_PCI 158#ifdef CONFIG_PCI
157 struct device_node *np; 159 struct device_node *np;
160 struct pci_controller *hose;
158#endif 161#endif
162 dma_addr_t max = 0xffffffff;
159 163
160 if (ppc_md.progress) 164 if (ppc_md.progress)
161 ppc_md.progress("mpc85xx_ds_setup_arch()", 0); 165 ppc_md.progress("mpc85xx_ds_setup_arch()", 0);
@@ -171,6 +175,10 @@ static void __init mpc85xx_ds_setup_arch(void)
171 fsl_add_bridge(np, 1); 175 fsl_add_bridge(np, 1);
172 else 176 else
173 fsl_add_bridge(np, 0); 177 fsl_add_bridge(np, 0);
178
179 hose = pci_find_hose_for_OF_device(np);
180 max = min(max, hose->dma_window_base_cur +
181 hose->dma_window_size);
174 } 182 }
175 } 183 }
176 184
@@ -181,6 +189,13 @@ static void __init mpc85xx_ds_setup_arch(void)
181 mpc85xx_smp_init(); 189 mpc85xx_smp_init();
182#endif 190#endif
183 191
192#ifdef CONFIG_SWIOTLB
193 if (lmb_end_of_DRAM() > max) {
194 ppc_swiotlb_enable = 1;
195 set_pci_dma_ops(&swiotlb_pci_dma_ops);
196 }
197#endif
198
184 printk("MPC85xx DS board from Freescale Semiconductor\n"); 199 printk("MPC85xx DS board from Freescale Semiconductor\n");
185} 200}
186 201
@@ -217,6 +232,10 @@ machine_device_initcall(mpc8544_ds, mpc85xxds_publish_devices);
217machine_device_initcall(mpc8572_ds, mpc85xxds_publish_devices); 232machine_device_initcall(mpc8572_ds, mpc85xxds_publish_devices);
218machine_device_initcall(p2020_ds, mpc85xxds_publish_devices); 233machine_device_initcall(p2020_ds, mpc85xxds_publish_devices);
219 234
235machine_arch_initcall(mpc8544_ds, swiotlb_setup_bus_notifier);
236machine_arch_initcall(mpc8572_ds, swiotlb_setup_bus_notifier);
237machine_arch_initcall(p2020_ds, swiotlb_setup_bus_notifier);
238
220/* 239/*
221 * Called very early, device-tree isn't unflattened 240 * Called very early, device-tree isn't unflattened
222 */ 241 */
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index b2c0a4319973..77f90b356356 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -33,6 +33,7 @@
33#include <linux/of_platform.h> 33#include <linux/of_platform.h>
34#include <linux/of_device.h> 34#include <linux/of_device.h>
35#include <linux/phy.h> 35#include <linux/phy.h>
36#include <linux/lmb.h>
36 37
37#include <asm/system.h> 38#include <asm/system.h>
38#include <asm/atomic.h> 39#include <asm/atomic.h>
@@ -49,6 +50,7 @@
49#include <asm/qe.h> 50#include <asm/qe.h>
50#include <asm/qe_ic.h> 51#include <asm/qe_ic.h>
51#include <asm/mpic.h> 52#include <asm/mpic.h>
53#include <asm/swiotlb.h>
52 54
53#undef DEBUG 55#undef DEBUG
54#ifdef DEBUG 56#ifdef DEBUG
@@ -155,6 +157,10 @@ static void __init mpc85xx_mds_setup_arch(void)
155{ 157{
156 struct device_node *np; 158 struct device_node *np;
157 static u8 __iomem *bcsr_regs = NULL; 159 static u8 __iomem *bcsr_regs = NULL;
160#ifdef CONFIG_PCI
161 struct pci_controller *hose;
162#endif
163 dma_addr_t max = 0xffffffff;
158 164
159 if (ppc_md.progress) 165 if (ppc_md.progress)
160 ppc_md.progress("mpc85xx_mds_setup_arch()", 0); 166 ppc_md.progress("mpc85xx_mds_setup_arch()", 0);
@@ -179,6 +185,10 @@ static void __init mpc85xx_mds_setup_arch(void)
179 fsl_add_bridge(np, 1); 185 fsl_add_bridge(np, 1);
180 else 186 else
181 fsl_add_bridge(np, 0); 187 fsl_add_bridge(np, 0);
188
189 hose = pci_find_hose_for_OF_device(np);
190 max = min(max, hose->dma_window_base_cur +
191 hose->dma_window_size);
182 } 192 }
183 } 193 }
184#endif 194#endif
@@ -227,6 +237,13 @@ static void __init mpc85xx_mds_setup_arch(void)
227 iounmap(bcsr_regs); 237 iounmap(bcsr_regs);
228 } 238 }
229#endif /* CONFIG_QUICC_ENGINE */ 239#endif /* CONFIG_QUICC_ENGINE */
240
241#ifdef CONFIG_SWIOTLB
242 if (lmb_end_of_DRAM() > max) {
243 ppc_swiotlb_enable = 1;
244 set_pci_dma_ops(&swiotlb_pci_dma_ops);
245 }
246#endif
230} 247}
231 248
232 249
@@ -281,6 +298,9 @@ static int __init mpc85xx_publish_devices(void)
281machine_device_initcall(mpc8568_mds, mpc85xx_publish_devices); 298machine_device_initcall(mpc8568_mds, mpc85xx_publish_devices);
282machine_device_initcall(mpc8569_mds, mpc85xx_publish_devices); 299machine_device_initcall(mpc8569_mds, mpc85xx_publish_devices);
283 300
301machine_arch_initcall(mpc8568_mds, swiotlb_setup_bus_notifier);
302machine_arch_initcall(mpc8569_mds, swiotlb_setup_bus_notifier);
303
284static void __init mpc85xx_mds_pic_init(void) 304static void __init mpc85xx_mds_pic_init(void)
285{ 305{
286 struct mpic *mpic; 306 struct mpic *mpic;
diff --git a/arch/powerpc/platforms/85xx/xes_mpc85xx.c b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
new file mode 100644
index 000000000000..ee01532786e4
--- /dev/null
+++ b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
@@ -0,0 +1,282 @@
1/*
2 * Copyright (C) 2009 Extreme Engineering Solutions, Inc.
3 *
4 * X-ES board-specific functionality
5 *
6 * Based on mpc85xx_ds code from Freescale Semiconductor, Inc.
7 *
8 * Author: Nate Case <ncase@xes-inc.com>
9 *
10 * This is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 */
14
15#include <linux/stddef.h>
16#include <linux/kernel.h>
17#include <linux/pci.h>
18#include <linux/kdev_t.h>
19#include <linux/delay.h>
20#include <linux/seq_file.h>
21#include <linux/interrupt.h>
22#include <linux/of_platform.h>
23
24#include <asm/system.h>
25#include <asm/time.h>
26#include <asm/machdep.h>
27#include <asm/pci-bridge.h>
28#include <mm/mmu_decl.h>
29#include <asm/prom.h>
30#include <asm/udbg.h>
31#include <asm/mpic.h>
32
33#include <sysdev/fsl_soc.h>
34#include <sysdev/fsl_pci.h>
35#include <linux/of_platform.h>
36
37/* A few bit definitions needed for fixups on some boards */
38#define MPC85xx_L2CTL_L2E 0x80000000 /* L2 enable */
39#define MPC85xx_L2CTL_L2I 0x40000000 /* L2 flash invalidate */
40#define MPC85xx_L2CTL_L2SIZ_MASK 0x30000000 /* L2 SRAM size (R/O) */
41
42void __init xes_mpc85xx_pic_init(void)
43{
44 struct mpic *mpic;
45 struct resource r;
46 struct device_node *np;
47
48 np = of_find_node_by_type(NULL, "open-pic");
49 if (np == NULL) {
50 printk(KERN_ERR "Could not find open-pic node\n");
51 return;
52 }
53
54 if (of_address_to_resource(np, 0, &r)) {
55 printk(KERN_ERR "Failed to map mpic register space\n");
56 of_node_put(np);
57 return;
58 }
59
60 mpic = mpic_alloc(np, r.start,
61 MPIC_PRIMARY | MPIC_WANTS_RESET |
62 MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
63 0, 256, " OpenPIC ");
64 BUG_ON(mpic == NULL);
65 of_node_put(np);
66
67 mpic_init(mpic);
68}
69
70static void xes_mpc85xx_configure_l2(void __iomem *l2_base)
71{
72 volatile uint32_t ctl, tmp;
73
74 asm volatile("msync; isync");
75 tmp = in_be32(l2_base);
76
77 /*
78 * xMon may have enabled part of L2 as SRAM, so we need to set it
79 * up for all cache mode just to be safe.
80 */
81 printk(KERN_INFO "xes_mpc85xx: Enabling L2 as cache\n");
82
83 ctl = MPC85xx_L2CTL_L2E | MPC85xx_L2CTL_L2I;
84 if (machine_is_compatible("MPC8540") ||
85 machine_is_compatible("MPC8560"))
86 /*
87 * Assume L2 SRAM is used fully for cache, so set
88 * L2BLKSZ (bits 4:5) to match L2SIZ (bits 2:3).
89 */
90 ctl |= (tmp & MPC85xx_L2CTL_L2SIZ_MASK) >> 2;
91
92 asm volatile("msync; isync");
93 out_be32(l2_base, ctl);
94 asm volatile("msync; isync");
95}
96
97static void xes_mpc85xx_fixups(void)
98{
99 struct device_node *np;
100 int err;
101
102 /*
103 * Legacy xMon firmware on some X-ES boards does not enable L2
104 * as cache. We must ensure that they get enabled here.
105 */
106 for_each_node_by_name(np, "l2-cache-controller") {
107 struct resource r[2];
108 void __iomem *l2_base;
109
110 /* Only MPC8548, MPC8540, and MPC8560 boards are affected */
111 if (!of_device_is_compatible(np,
112 "fsl,mpc8548-l2-cache-controller") &&
113 !of_device_is_compatible(np,
114 "fsl,mpc8540-l2-cache-controller") &&
115 !of_device_is_compatible(np,
116 "fsl,mpc8560-l2-cache-controller"))
117 continue;
118
119 err = of_address_to_resource(np, 0, &r[0]);
120 if (err) {
121 printk(KERN_WARNING "xes_mpc85xx: Could not get "
122 "resource for device tree node '%s'",
123 np->full_name);
124 continue;
125 }
126
127 l2_base = ioremap(r[0].start, r[0].end - r[0].start + 1);
128
129 xes_mpc85xx_configure_l2(l2_base);
130 }
131}
132
133#ifdef CONFIG_PCI
134static int primary_phb_addr;
135#endif
136
137/*
138 * Setup the architecture
139 */
140#ifdef CONFIG_SMP
141extern void __init mpc85xx_smp_init(void);
142#endif
143static void __init xes_mpc85xx_setup_arch(void)
144{
145#ifdef CONFIG_PCI
146 struct device_node *np;
147#endif
148 struct device_node *root;
149 const char *model = "Unknown";
150
151 root = of_find_node_by_path("/");
152 if (root == NULL)
153 return;
154
155 model = of_get_property(root, "model", NULL);
156
157 printk(KERN_INFO "X-ES MPC85xx-based single-board computer: %s\n",
158 model + strlen("xes,"));
159
160 xes_mpc85xx_fixups();
161
162#ifdef CONFIG_PCI
163 for_each_node_by_type(np, "pci") {
164 if (of_device_is_compatible(np, "fsl,mpc8540-pci") ||
165 of_device_is_compatible(np, "fsl,mpc8548-pcie")) {
166 struct resource rsrc;
167 of_address_to_resource(np, 0, &rsrc);
168 if ((rsrc.start & 0xfffff) == primary_phb_addr)
169 fsl_add_bridge(np, 1);
170 else
171 fsl_add_bridge(np, 0);
172 }
173 }
174#endif
175
176#ifdef CONFIG_SMP
177 mpc85xx_smp_init();
178#endif
179}
180
181static struct of_device_id __initdata xes_mpc85xx_ids[] = {
182 { .type = "soc", },
183 { .compatible = "soc", },
184 { .compatible = "simple-bus", },
185 { .compatible = "gianfar", },
186 {},
187};
188
189static int __init xes_mpc85xx_publish_devices(void)
190{
191 return of_platform_bus_probe(NULL, xes_mpc85xx_ids, NULL);
192}
193machine_device_initcall(xes_mpc8572, xes_mpc85xx_publish_devices);
194machine_device_initcall(xes_mpc8548, xes_mpc85xx_publish_devices);
195machine_device_initcall(xes_mpc8540, xes_mpc85xx_publish_devices);
196
197/*
198 * Called very early, device-tree isn't unflattened
199 */
200static int __init xes_mpc8572_probe(void)
201{
202 unsigned long root = of_get_flat_dt_root();
203
204 if (of_flat_dt_is_compatible(root, "xes,MPC8572")) {
205#ifdef CONFIG_PCI
206 primary_phb_addr = 0x8000;
207#endif
208 return 1;
209 } else {
210 return 0;
211 }
212}
213
214static int __init xes_mpc8548_probe(void)
215{
216 unsigned long root = of_get_flat_dt_root();
217
218 if (of_flat_dt_is_compatible(root, "xes,MPC8548")) {
219#ifdef CONFIG_PCI
220 primary_phb_addr = 0xb000;
221#endif
222 return 1;
223 } else {
224 return 0;
225 }
226}
227
228static int __init xes_mpc8540_probe(void)
229{
230 unsigned long root = of_get_flat_dt_root();
231
232 if (of_flat_dt_is_compatible(root, "xes,MPC8540")) {
233#ifdef CONFIG_PCI
234 primary_phb_addr = 0xb000;
235#endif
236 return 1;
237 } else {
238 return 0;
239 }
240}
241
242define_machine(xes_mpc8572) {
243 .name = "X-ES MPC8572",
244 .probe = xes_mpc8572_probe,
245 .setup_arch = xes_mpc85xx_setup_arch,
246 .init_IRQ = xes_mpc85xx_pic_init,
247#ifdef CONFIG_PCI
248 .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
249#endif
250 .get_irq = mpic_get_irq,
251 .restart = fsl_rstcr_restart,
252 .calibrate_decr = generic_calibrate_decr,
253 .progress = udbg_progress,
254};
255
256define_machine(xes_mpc8548) {
257 .name = "X-ES MPC8548",
258 .probe = xes_mpc8548_probe,
259 .setup_arch = xes_mpc85xx_setup_arch,
260 .init_IRQ = xes_mpc85xx_pic_init,
261#ifdef CONFIG_PCI
262 .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
263#endif
264 .get_irq = mpic_get_irq,
265 .restart = fsl_rstcr_restart,
266 .calibrate_decr = generic_calibrate_decr,
267 .progress = udbg_progress,
268};
269
270define_machine(xes_mpc8540) {
271 .name = "X-ES MPC8540",
272 .probe = xes_mpc8540_probe,
273 .setup_arch = xes_mpc85xx_setup_arch,
274 .init_IRQ = xes_mpc85xx_pic_init,
275#ifdef CONFIG_PCI
276 .pcibios_fixup_bus = fsl_pcibios_fixup_bus,
277#endif
278 .get_irq = mpic_get_irq,
279 .restart = fsl_rstcr_restart,
280 .calibrate_decr = generic_calibrate_decr,
281 .progress = udbg_progress,
282};
diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig
index fdaf4ddaa955..9c7b64a3402b 100644
--- a/arch/powerpc/platforms/86xx/Kconfig
+++ b/arch/powerpc/platforms/86xx/Kconfig
@@ -15,6 +15,7 @@ config MPC8641_HPCN
15 select DEFAULT_UIMAGE 15 select DEFAULT_UIMAGE
16 select FSL_ULI1575 16 select FSL_ULI1575
17 select HAS_RAPIDIO 17 select HAS_RAPIDIO
18 select SWIOTLB
18 help 19 help
19 This option enables support for the MPC8641 HPCN board. 20 This option enables support for the MPC8641 HPCN board.
20 21
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
index 51eec0cd5519..627908a4cd77 100644
--- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
+++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c
@@ -37,6 +37,7 @@
37#include <linux/of_platform.h> 37#include <linux/of_platform.h>
38#include <sysdev/fsl_pci.h> 38#include <sysdev/fsl_pci.h>
39#include <sysdev/fsl_soc.h> 39#include <sysdev/fsl_soc.h>
40#include <sysdev/simple_gpio.h>
40 41
41#include "mpc86xx.h" 42#include "mpc86xx.h"
42 43
@@ -51,6 +52,9 @@ static struct of_device_id __initdata mpc8610_ids[] = {
51 52
52static int __init mpc8610_declare_of_platform_devices(void) 53static int __init mpc8610_declare_of_platform_devices(void)
53{ 54{
55 /* Firstly, register PIXIS GPIOs. */
56 simple_gpiochip_init("fsl,fpga-pixis-gpio-bank");
57
54 /* Without this call, the SSI device driver won't get probed. */ 58 /* Without this call, the SSI device driver won't get probed. */
55 of_platform_bus_probe(NULL, mpc8610_ids, NULL); 59 of_platform_bus_probe(NULL, mpc8610_ids, NULL);
56 60
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
index 7e9e83c04a8a..66327024a6a6 100644
--- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
+++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
@@ -19,6 +19,7 @@
19#include <linux/delay.h> 19#include <linux/delay.h>
20#include <linux/seq_file.h> 20#include <linux/seq_file.h>
21#include <linux/of_platform.h> 21#include <linux/of_platform.h>
22#include <linux/lmb.h>
22 23
23#include <asm/system.h> 24#include <asm/system.h>
24#include <asm/time.h> 25#include <asm/time.h>
@@ -27,6 +28,7 @@
27#include <asm/prom.h> 28#include <asm/prom.h>
28#include <mm/mmu_decl.h> 29#include <mm/mmu_decl.h>
29#include <asm/udbg.h> 30#include <asm/udbg.h>
31#include <asm/swiotlb.h>
30 32
31#include <asm/mpic.h> 33#include <asm/mpic.h>
32 34
@@ -70,7 +72,9 @@ mpc86xx_hpcn_setup_arch(void)
70{ 72{
71#ifdef CONFIG_PCI 73#ifdef CONFIG_PCI
72 struct device_node *np; 74 struct device_node *np;
75 struct pci_controller *hose;
73#endif 76#endif
77 dma_addr_t max = 0xffffffff;
74 78
75 if (ppc_md.progress) 79 if (ppc_md.progress)
76 ppc_md.progress("mpc86xx_hpcn_setup_arch()", 0); 80 ppc_md.progress("mpc86xx_hpcn_setup_arch()", 0);
@@ -83,6 +87,9 @@ mpc86xx_hpcn_setup_arch(void)
83 fsl_add_bridge(np, 1); 87 fsl_add_bridge(np, 1);
84 else 88 else
85 fsl_add_bridge(np, 0); 89 fsl_add_bridge(np, 0);
90 hose = pci_find_hose_for_OF_device(np);
91 max = min(max, hose->dma_window_base_cur +
92 hose->dma_window_size);
86 } 93 }
87 94
88 ppc_md.pci_exclude_device = mpc86xx_exclude_device; 95 ppc_md.pci_exclude_device = mpc86xx_exclude_device;
@@ -94,6 +101,13 @@ mpc86xx_hpcn_setup_arch(void)
94#ifdef CONFIG_SMP 101#ifdef CONFIG_SMP
95 mpc86xx_smp_init(); 102 mpc86xx_smp_init();
96#endif 103#endif
104
105#ifdef CONFIG_SWIOTLB
106 if (lmb_end_of_DRAM() > max) {
107 ppc_swiotlb_enable = 1;
108 set_pci_dma_ops(&swiotlb_pci_dma_ops);
109 }
110#endif
97} 111}
98 112
99 113
@@ -158,6 +172,7 @@ static int __init declare_of_platform_devices(void)
158 return 0; 172 return 0;
159} 173}
160machine_device_initcall(mpc86xx_hpcn, declare_of_platform_devices); 174machine_device_initcall(mpc86xx_hpcn, declare_of_platform_devices);
175machine_arch_initcall(mpc86xx_hpcn, swiotlb_setup_bus_notifier);
161 176
162define_machine(mpc86xx_hpcn) { 177define_machine(mpc86xx_hpcn) {
163 .name = "MPC86xx HPCN", 178 .name = "MPC86xx HPCN",
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index cca6b4fc719a..c4192542b809 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -21,7 +21,7 @@ choice
21 21
22 If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx. 22 If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
23 23
24config PPC_BOOK3S 24config PPC_BOOK3S_32
25 bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx" 25 bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
26 select PPC_FPU 26 select PPC_FPU
27 27
@@ -57,11 +57,14 @@ config E200
57 57
58endchoice 58endchoice
59 59
60config PPC_BOOK3S 60config PPC_BOOK3S_64
61 default y 61 def_bool y
62 depends on PPC64 62 depends on PPC64
63 select PPC_FPU 63 select PPC_FPU
64 64
65config PPC_BOOK3S
66 def_bool y
67 depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
65 68
66config POWER4_ONLY 69config POWER4_ONLY
67 bool "Optimize for POWER4" 70 bool "Optimize for POWER4"
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile
index f7419198e635..a6812ee00100 100644
--- a/arch/powerpc/platforms/Makefile
+++ b/arch/powerpc/platforms/Makefile
@@ -1,4 +1,6 @@
1 1
2subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
3
2obj-$(CONFIG_FSL_ULI1575) += fsl_uli1575.o 4obj-$(CONFIG_FSL_ULI1575) += fsl_uli1575.o
3 5
4obj-$(CONFIG_PPC_PMAC) += powermac/ 6obj-$(CONFIG_PPC_PMAC) += powermac/
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index 2d1c87dd5d14..9d4b17462f13 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -1,3 +1,5 @@
1subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
2
1ifeq ($(CONFIG_PPC64),y) 3ifeq ($(CONFIG_PPC64),y)
2EXTRA_CFLAGS += -mno-minimal-toc 4EXTRA_CFLAGS += -mno-minimal-toc
3endif 5endif
@@ -48,6 +50,9 @@ obj-$(CONFIG_PPC_DCR) += dcr.o
48obj-$(CONFIG_8xx) += mpc8xx_pic.o cpm1.o 50obj-$(CONFIG_8xx) += mpc8xx_pic.o cpm1.o
49obj-$(CONFIG_UCODE_PATCH) += micropatch.o 51obj-$(CONFIG_UCODE_PATCH) += micropatch.o
50 52
53obj-$(CONFIG_PPC_MPC512x) += mpc5xxx_clocks.o
54obj-$(CONFIG_PPC_MPC52xx) += mpc5xxx_clocks.o
55
51ifeq ($(CONFIG_SUSPEND),y) 56ifeq ($(CONFIG_SUSPEND),y)
52obj-$(CONFIG_6xx) += 6xx-suspend.o 57obj-$(CONFIG_6xx) += 6xx-suspend.o
53endif 58endif
diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
new file mode 100644
index 000000000000..34e12f9995fe
--- /dev/null
+++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
@@ -0,0 +1,33 @@
1/**
2 * mpc5xxx_get_bus_frequency - Find the bus frequency for a device
3 * @node: device node
4 *
5 * Returns bus frequency (IPS on MPC512x, IPB on MPC52xx),
6 * or 0 if the bus frequency cannot be found.
7 */
8
9#include <linux/kernel.h>
10#include <linux/of_platform.h>
11
12unsigned int
13mpc5xxx_get_bus_frequency(struct device_node *node)
14{
15 struct device_node *np;
16 const unsigned int *p_bus_freq = NULL;
17
18 of_node_get(node);
19 while (node) {
20 p_bus_freq = of_get_property(node, "bus-frequency", NULL);
21 if (p_bus_freq)
22 break;
23
24 np = of_get_parent(node);
25 of_node_put(node);
26 node = np;
27 }
28 if (node)
29 of_node_put(node);
30
31 return p_bus_freq ? *p_bus_freq : 0;
32}
33EXPORT_SYMBOL(mpc5xxx_get_bus_frequency);
diff --git a/arch/powerpc/xmon/Makefile b/arch/powerpc/xmon/Makefile
index 9cb03b71b9d6..85ab97ab840a 100644
--- a/arch/powerpc/xmon/Makefile
+++ b/arch/powerpc/xmon/Makefile
@@ -1,5 +1,7 @@
1# Makefile for xmon 1# Makefile for xmon
2 2
3subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
4
3ifdef CONFIG_PPC64 5ifdef CONFIG_PPC64
4EXTRA_CFLAGS += -mno-minimal-toc 6EXTRA_CFLAGS += -mno-minimal-toc
5endif 7endif
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index ca92e2f54e4d..ed6be6ba2f4e 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -1796,10 +1796,16 @@ void __init paging_init(void)
1796 1796
1797 prom_build_devicetree(); 1797 prom_build_devicetree();
1798 of_populate_present_mask(); 1798 of_populate_present_mask();
1799#ifndef CONFIG_SMP
1800 of_fill_in_cpu_data();
1801#endif
1799 1802
1800 if (tlb_type == hypervisor) { 1803 if (tlb_type == hypervisor) {
1801 sun4v_mdesc_init(); 1804 sun4v_mdesc_init();
1802 mdesc_populate_present_mask(cpu_all_mask); 1805 mdesc_populate_present_mask(cpu_all_mask);
1806#ifndef CONFIG_SMP
1807 mdesc_fill_in_cpu_data(cpu_all_mask);
1808#endif
1803 } 1809 }
1804 1810
1805 /* Once the OF device tree and MDESC have been setup, we know 1811 /* Once the OF device tree and MDESC have been setup, we know
diff --git a/block/Kconfig b/block/Kconfig
index 2c39527aa7db..95a86adc33a1 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -23,8 +23,8 @@ menuconfig BLOCK
23 23
24if BLOCK 24if BLOCK
25 25
26config LBD 26config LBDAF
27 bool "Support for large block devices and files" 27 bool "Support for large (2TB+) block devices and files"
28 depends on !64BIT 28 depends on !64BIT
29 default y 29 default y
30 help 30 help
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 7541ea4bf9fe..bd582a7f5310 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -97,7 +97,7 @@ EXPORT_SYMBOL_GPL(blk_queue_lld_busy);
97 97
98/** 98/**
99 * blk_set_default_limits - reset limits to default values 99 * blk_set_default_limits - reset limits to default values
100 * @limits: the queue_limits structure to reset 100 * @lim: the queue_limits structure to reset
101 * 101 *
102 * Description: 102 * Description:
103 * Returns a queue_limit struct to its default state. Can be used by 103 * Returns a queue_limit struct to its default state. Can be used by
@@ -112,7 +112,7 @@ void blk_set_default_limits(struct queue_limits *lim)
112 lim->max_segment_size = MAX_SEGMENT_SIZE; 112 lim->max_segment_size = MAX_SEGMENT_SIZE;
113 lim->max_sectors = lim->max_hw_sectors = SAFE_MAX_SECTORS; 113 lim->max_sectors = lim->max_hw_sectors = SAFE_MAX_SECTORS;
114 lim->logical_block_size = lim->physical_block_size = lim->io_min = 512; 114 lim->logical_block_size = lim->physical_block_size = lim->io_min = 512;
115 lim->bounce_pfn = BLK_BOUNCE_ANY; 115 lim->bounce_pfn = (unsigned long)(BLK_BOUNCE_ANY >> PAGE_SHIFT);
116 lim->alignment_offset = 0; 116 lim->alignment_offset = 0;
117 lim->io_opt = 0; 117 lim->io_opt = 0;
118 lim->misaligned = 0; 118 lim->misaligned = 0;
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c
index 68d27bc70d06..2bc2dbe30e8f 100644
--- a/drivers/ata/pata_mpc52xx.c
+++ b/drivers/ata/pata_mpc52xx.c
@@ -694,7 +694,7 @@ mpc52xx_ata_probe(struct of_device *op, const struct of_device_id *match)
694 struct bcom_task *dmatsk = NULL; 694 struct bcom_task *dmatsk = NULL;
695 695
696 /* Get ipb frequency */ 696 /* Get ipb frequency */
697 ipb_freq = mpc52xx_find_ipb_freq(op->node); 697 ipb_freq = mpc5xxx_get_bus_frequency(op->node);
698 if (!ipb_freq) { 698 if (!ipb_freq) {
699 dev_err(&op->dev, "could not determine IPB bus frequency\n"); 699 dev_err(&op->dev, "could not determine IPB bus frequency\n");
700 return -ENODEV; 700 return -ENODEV;
diff --git a/drivers/block/hd.c b/drivers/block/hd.c
index f65b3f369eb0..f9d01608cbe2 100644
--- a/drivers/block/hd.c
+++ b/drivers/block/hd.c
@@ -100,8 +100,6 @@ static DEFINE_SPINLOCK(hd_lock);
100static struct request_queue *hd_queue; 100static struct request_queue *hd_queue;
101static struct request *hd_req; 101static struct request *hd_req;
102 102
103#define MAJOR_NR HD_MAJOR
104
105#define TIMEOUT_VALUE (6*HZ) 103#define TIMEOUT_VALUE (6*HZ)
106#define HD_DELAY 0 104#define HD_DELAY 0
107 105
@@ -712,12 +710,12 @@ static int __init hd_init(void)
712{ 710{
713 int drive; 711 int drive;
714 712
715 if (register_blkdev(MAJOR_NR, "hd")) 713 if (register_blkdev(HD_MAJOR, "hd"))
716 return -1; 714 return -1;
717 715
718 hd_queue = blk_init_queue(do_hd_request, &hd_lock); 716 hd_queue = blk_init_queue(do_hd_request, &hd_lock);
719 if (!hd_queue) { 717 if (!hd_queue) {
720 unregister_blkdev(MAJOR_NR, "hd"); 718 unregister_blkdev(HD_MAJOR, "hd");
721 return -ENOMEM; 719 return -ENOMEM;
722 } 720 }
723 721
@@ -751,7 +749,7 @@ static int __init hd_init(void)
751 struct hd_i_struct *p = &hd_info[drive]; 749 struct hd_i_struct *p = &hd_info[drive];
752 if (!disk) 750 if (!disk)
753 goto Enomem; 751 goto Enomem;
754 disk->major = MAJOR_NR; 752 disk->major = HD_MAJOR;
755 disk->first_minor = drive << 6; 753 disk->first_minor = drive << 6;
756 disk->fops = &hd_fops; 754 disk->fops = &hd_fops;
757 sprintf(disk->disk_name, "hd%c", 'a'+drive); 755 sprintf(disk->disk_name, "hd%c", 'a'+drive);
@@ -795,7 +793,7 @@ out1:
795 NR_HD = 0; 793 NR_HD = 0;
796out: 794out:
797 del_timer(&device_timer); 795 del_timer(&device_timer);
798 unregister_blkdev(MAJOR_NR, "hd"); 796 unregister_blkdev(HD_MAJOR, "hd");
799 blk_cleanup_queue(hd_queue); 797 blk_cleanup_queue(hd_queue);
800 return -1; 798 return -1;
801Enomem: 799Enomem:
diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c
index 6b900b297cc6..52e06589821d 100644
--- a/drivers/char/dtlk.c
+++ b/drivers/char/dtlk.c
@@ -571,7 +571,7 @@ static char dtlk_read_tts(void)
571 portval = inb_p(dtlk_port_tts); 571 portval = inb_p(dtlk_port_tts);
572 } while ((portval & TTS_READABLE) == 0 && 572 } while ((portval & TTS_READABLE) == 0 &&
573 retries++ < DTLK_MAX_RETRIES); 573 retries++ < DTLK_MAX_RETRIES);
574 if (retries == DTLK_MAX_RETRIES) 574 if (retries > DTLK_MAX_RETRIES)
575 printk(KERN_ERR "dtlk_read_tts() timeout\n"); 575 printk(KERN_ERR "dtlk_read_tts() timeout\n");
576 576
577 ch = inb_p(dtlk_port_tts); /* input from TTS port */ 577 ch = inb_p(dtlk_port_tts); /* input from TTS port */
@@ -583,7 +583,7 @@ static char dtlk_read_tts(void)
583 portval = inb_p(dtlk_port_tts); 583 portval = inb_p(dtlk_port_tts);
584 } while ((portval & TTS_READABLE) != 0 && 584 } while ((portval & TTS_READABLE) != 0 &&
585 retries++ < DTLK_MAX_RETRIES); 585 retries++ < DTLK_MAX_RETRIES);
586 if (retries == DTLK_MAX_RETRIES) 586 if (retries > DTLK_MAX_RETRIES)
587 printk(KERN_ERR "dtlk_read_tts() timeout\n"); 587 printk(KERN_ERR "dtlk_read_tts() timeout\n");
588 588
589 TRACE_RET; 589 TRACE_RET;
@@ -640,7 +640,7 @@ static char dtlk_write_tts(char ch)
640 while ((inb_p(dtlk_port_tts) & TTS_WRITABLE) == 0 && 640 while ((inb_p(dtlk_port_tts) & TTS_WRITABLE) == 0 &&
641 retries++ < DTLK_MAX_RETRIES) /* DT ready? */ 641 retries++ < DTLK_MAX_RETRIES) /* DT ready? */
642 ; 642 ;
643 if (retries == DTLK_MAX_RETRIES) 643 if (retries > DTLK_MAX_RETRIES)
644 printk(KERN_ERR "dtlk_write_tts() timeout\n"); 644 printk(KERN_ERR "dtlk_write_tts() timeout\n");
645 645
646 outb_p(ch, dtlk_port_tts); /* output to TTS port */ 646 outb_p(ch, dtlk_port_tts); /* output to TTS port */
diff --git a/drivers/char/hvc_iseries.c b/drivers/char/hvc_iseries.c
index 449727b6166d..936d05bf37fa 100644
--- a/drivers/char/hvc_iseries.c
+++ b/drivers/char/hvc_iseries.c
@@ -241,7 +241,7 @@ static int __devexit hvc_vio_remove(struct vio_dev *vdev)
241static struct vio_driver hvc_vio_driver = { 241static struct vio_driver hvc_vio_driver = {
242 .id_table = hvc_driver_table, 242 .id_table = hvc_driver_table,
243 .probe = hvc_vio_probe, 243 .probe = hvc_vio_probe,
244 .remove = hvc_vio_remove, 244 .remove = __devexit_p(hvc_vio_remove),
245 .driver = { 245 .driver = {
246 .name = hvc_driver_name, 246 .name = hvc_driver_name,
247 .owner = THIS_MODULE, 247 .owner = THIS_MODULE,
diff --git a/drivers/char/hvc_vio.c b/drivers/char/hvc_vio.c
index bd62dc86b47d..c72b994652ac 100644
--- a/drivers/char/hvc_vio.c
+++ b/drivers/char/hvc_vio.c
@@ -113,7 +113,7 @@ static int __devexit hvc_vio_remove(struct vio_dev *vdev)
113static struct vio_driver hvc_vio_driver = { 113static struct vio_driver hvc_vio_driver = {
114 .id_table = hvc_driver_table, 114 .id_table = hvc_driver_table,
115 .probe = hvc_vio_probe, 115 .probe = hvc_vio_probe,
116 .remove = hvc_vio_remove, 116 .remove = __devexit_p(hvc_vio_remove),
117 .driver = { 117 .driver = {
118 .name = hvc_driver_name, 118 .name = hvc_driver_name,
119 .owner = THIS_MODULE, 119 .owner = THIS_MODULE,
diff --git a/drivers/char/hvcs.c b/drivers/char/hvcs.c
index 7d64e4230e66..266b858b8f85 100644
--- a/drivers/char/hvcs.c
+++ b/drivers/char/hvcs.c
@@ -868,7 +868,7 @@ static int __devexit hvcs_remove(struct vio_dev *dev)
868static struct vio_driver hvcs_vio_driver = { 868static struct vio_driver hvcs_vio_driver = {
869 .id_table = hvcs_driver_table, 869 .id_table = hvcs_driver_table,
870 .probe = hvcs_probe, 870 .probe = hvcs_probe,
871 .remove = hvcs_remove, 871 .remove = __devexit_p(hvcs_remove),
872 .driver = { 872 .driver = {
873 .name = hvcs_driver_name, 873 .name = hvcs_driver_name,
874 .owner = THIS_MODULE, 874 .owner = THIS_MODULE,
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c
index e18800c400b1..0c999f5bb3db 100644
--- a/drivers/char/istallion.c
+++ b/drivers/char/istallion.c
@@ -3785,7 +3785,7 @@ err:
3785 return retval; 3785 return retval;
3786} 3786}
3787 3787
3788static void stli_pciremove(struct pci_dev *pdev) 3788static void __devexit stli_pciremove(struct pci_dev *pdev)
3789{ 3789{
3790 struct stlibrd *brdp = pci_get_drvdata(pdev); 3790 struct stlibrd *brdp = pci_get_drvdata(pdev);
3791 3791
diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
index 65b6ff2442c6..6799588b0099 100644
--- a/drivers/char/moxa.c
+++ b/drivers/char/moxa.c
@@ -1189,6 +1189,11 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
1189 return -ENODEV; 1189 return -ENODEV;
1190 } 1190 }
1191 1191
1192 if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) {
1193 retval = -ENODEV;
1194 goto out_unlock;
1195 }
1196
1192 ch = &brd->ports[port % MAX_PORTS_PER_BOARD]; 1197 ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
1193 ch->port.count++; 1198 ch->port.count++;
1194 tty->driver_data = ch; 1199 tty->driver_data = ch;
@@ -1213,8 +1218,8 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
1213 moxa_close_port(tty); 1218 moxa_close_port(tty);
1214 } else 1219 } else
1215 ch->port.flags |= ASYNC_NORMAL_ACTIVE; 1220 ch->port.flags |= ASYNC_NORMAL_ACTIVE;
1221out_unlock:
1216 mutex_unlock(&moxa_openlock); 1222 mutex_unlock(&moxa_openlock);
1217
1218 return retval; 1223 return retval;
1219} 1224}
1220 1225
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 11f373971fa5..3582c39f9725 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -67,6 +67,12 @@ config GPIO_SYSFS
67 67
68comment "Memory mapped GPIO expanders:" 68comment "Memory mapped GPIO expanders:"
69 69
70config GPIO_PL061
71 bool "PrimeCell PL061 GPIO support"
72 depends on ARM_AMBA
73 help
74 Say yes here to support the PrimeCell PL061 GPIO device
75
70config GPIO_XILINX 76config GPIO_XILINX
71 bool "Xilinx GPIO support" 77 bool "Xilinx GPIO support"
72 depends on PPC_OF || MICROBLAZE 78 depends on PPC_OF || MICROBLAZE
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 49ac64e515e6..ef90203e8f3c 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_GPIO_MAX732X) += max732x.o
9obj-$(CONFIG_GPIO_MCP23S08) += mcp23s08.o 9obj-$(CONFIG_GPIO_MCP23S08) += mcp23s08.o
10obj-$(CONFIG_GPIO_PCA953X) += pca953x.o 10obj-$(CONFIG_GPIO_PCA953X) += pca953x.o
11obj-$(CONFIG_GPIO_PCF857X) += pcf857x.o 11obj-$(CONFIG_GPIO_PCF857X) += pcf857x.o
12obj-$(CONFIG_GPIO_PL061) += pl061.o
12obj-$(CONFIG_GPIO_TWL4030) += twl4030-gpio.o 13obj-$(CONFIG_GPIO_TWL4030) += twl4030-gpio.o
13obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio.o 14obj-$(CONFIG_GPIO_XILINX) += xilinx_gpio.o
14obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o 15obj-$(CONFIG_GPIO_BT8XX) += bt8xxgpio.o
diff --git a/drivers/gpio/pl061.c b/drivers/gpio/pl061.c
new file mode 100644
index 000000000000..aa8e7cb020d9
--- /dev/null
+++ b/drivers/gpio/pl061.c
@@ -0,0 +1,341 @@
1/*
2 * linux/drivers/gpio/pl061.c
3 *
4 * Copyright (C) 2008, 2009 Provigent Ltd.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * Driver for the ARM PrimeCell(tm) General Purpose Input/Output (PL061)
11 *
12 * Data sheet: ARM DDI 0190B, September 2000
13 */
14#include <linux/spinlock.h>
15#include <linux/errno.h>
16#include <linux/module.h>
17#include <linux/list.h>
18#include <linux/io.h>
19#include <linux/ioport.h>
20#include <linux/irq.h>
21#include <linux/bitops.h>
22#include <linux/workqueue.h>
23#include <linux/gpio.h>
24#include <linux/device.h>
25#include <linux/amba/bus.h>
26#include <linux/amba/pl061.h>
27
28#define GPIODIR 0x400
29#define GPIOIS 0x404
30#define GPIOIBE 0x408
31#define GPIOIEV 0x40C
32#define GPIOIE 0x410
33#define GPIORIS 0x414
34#define GPIOMIS 0x418
35#define GPIOIC 0x41C
36
37#define PL061_GPIO_NR 8
38
39struct pl061_gpio {
40 /* We use a list of pl061_gpio structs for each trigger IRQ in the main
41 * interrupts controller of the system. We need this to support systems
42 * in which more that one PL061s are connected to the same IRQ. The ISR
43 * interates through this list to find the source of the interrupt.
44 */
45 struct list_head list;
46
47 /* Each of the two spinlocks protects a different set of hardware
48 * regiters and data structurs. This decouples the code of the IRQ from
49 * the GPIO code. This also makes the case of a GPIO routine call from
50 * the IRQ code simpler.
51 */
52 spinlock_t lock; /* GPIO registers */
53 spinlock_t irq_lock; /* IRQ registers */
54
55 void __iomem *base;
56 unsigned irq_base;
57 struct gpio_chip gc;
58};
59
60static int pl061_direction_input(struct gpio_chip *gc, unsigned offset)
61{
62 struct pl061_gpio *chip = container_of(gc, struct pl061_gpio, gc);
63 unsigned long flags;
64 unsigned char gpiodir;
65
66 if (offset >= gc->ngpio)
67 return -EINVAL;
68
69 spin_lock_irqsave(&chip->lock, flags);
70 gpiodir = readb(chip->base + GPIODIR);
71 gpiodir &= ~(1 << offset);
72 writeb(gpiodir, chip->base + GPIODIR);
73 spin_unlock_irqrestore(&chip->lock, flags);
74
75 return 0;
76}
77
78static int pl061_direction_output(struct gpio_chip *gc, unsigned offset,
79 int value)
80{
81 struct pl061_gpio *chip = container_of(gc, struct pl061_gpio, gc);
82 unsigned long flags;
83 unsigned char gpiodir;
84
85 if (offset >= gc->ngpio)
86 return -EINVAL;
87
88 spin_lock_irqsave(&chip->lock, flags);
89 writeb(!!value << offset, chip->base + (1 << (offset + 2)));
90 gpiodir = readb(chip->base + GPIODIR);
91 gpiodir |= 1 << offset;
92 writeb(gpiodir, chip->base + GPIODIR);
93 spin_unlock_irqrestore(&chip->lock, flags);
94
95 return 0;
96}
97
98static int pl061_get_value(struct gpio_chip *gc, unsigned offset)
99{
100 struct pl061_gpio *chip = container_of(gc, struct pl061_gpio, gc);
101
102 return !!readb(chip->base + (1 << (offset + 2)));
103}
104
105static void pl061_set_value(struct gpio_chip *gc, unsigned offset, int value)
106{
107 struct pl061_gpio *chip = container_of(gc, struct pl061_gpio, gc);
108
109 writeb(!!value << offset, chip->base + (1 << (offset + 2)));
110}
111
112/*
113 * PL061 GPIO IRQ
114 */
115static void pl061_irq_disable(unsigned irq)
116{
117 struct pl061_gpio *chip = get_irq_chip_data(irq);
118 int offset = irq - chip->irq_base;
119 unsigned long flags;
120 u8 gpioie;
121
122 spin_lock_irqsave(&chip->irq_lock, flags);
123 gpioie = readb(chip->base + GPIOIE);
124 gpioie &= ~(1 << offset);
125 writeb(gpioie, chip->base + GPIOIE);
126 spin_unlock_irqrestore(&chip->irq_lock, flags);
127}
128
129static void pl061_irq_enable(unsigned irq)
130{
131 struct pl061_gpio *chip = get_irq_chip_data(irq);
132 int offset = irq - chip->irq_base;
133 unsigned long flags;
134 u8 gpioie;
135
136 spin_lock_irqsave(&chip->irq_lock, flags);
137 gpioie = readb(chip->base + GPIOIE);
138 gpioie |= 1 << offset;
139 writeb(gpioie, chip->base + GPIOIE);
140 spin_unlock_irqrestore(&chip->irq_lock, flags);
141}
142
143static int pl061_irq_type(unsigned irq, unsigned trigger)
144{
145 struct pl061_gpio *chip = get_irq_chip_data(irq);
146 int offset = irq - chip->irq_base;
147 unsigned long flags;
148 u8 gpiois, gpioibe, gpioiev;
149
150 if (offset < 0 || offset > PL061_GPIO_NR)
151 return -EINVAL;
152
153 spin_lock_irqsave(&chip->irq_lock, flags);
154
155 gpioiev = readb(chip->base + GPIOIEV);
156
157 gpiois = readb(chip->base + GPIOIS);
158 if (trigger & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
159 gpiois |= 1 << offset;
160 if (trigger & IRQ_TYPE_LEVEL_HIGH)
161 gpioiev |= 1 << offset;
162 else
163 gpioiev &= ~(1 << offset);
164 } else
165 gpiois &= ~(1 << offset);
166 writeb(gpiois, chip->base + GPIOIS);
167
168 gpioibe = readb(chip->base + GPIOIBE);
169 if ((trigger & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH)
170 gpioibe |= 1 << offset;
171 else {
172 gpioibe &= ~(1 << offset);
173 if (trigger & IRQ_TYPE_EDGE_RISING)
174 gpioiev |= 1 << offset;
175 else
176 gpioiev &= ~(1 << offset);
177 }
178 writeb(gpioibe, chip->base + GPIOIBE);
179
180 writeb(gpioiev, chip->base + GPIOIEV);
181
182 spin_unlock_irqrestore(&chip->irq_lock, flags);
183
184 return 0;
185}
186
187static struct irq_chip pl061_irqchip = {
188 .name = "GPIO",
189 .enable = pl061_irq_enable,
190 .disable = pl061_irq_disable,
191 .set_type = pl061_irq_type,
192};
193
194static void pl061_irq_handler(unsigned irq, struct irq_desc *desc)
195{
196 struct list_head *chip_list = get_irq_chip_data(irq);
197 struct list_head *ptr;
198 struct pl061_gpio *chip;
199
200 desc->chip->ack(irq);
201 list_for_each(ptr, chip_list) {
202 unsigned long pending;
203 int gpio;
204
205 chip = list_entry(ptr, struct pl061_gpio, list);
206 pending = readb(chip->base + GPIOMIS);
207 writeb(pending, chip->base + GPIOIC);
208
209 if (pending == 0)
210 continue;
211
212 for_each_bit(gpio, &pending, PL061_GPIO_NR)
213 generic_handle_irq(gpio_to_irq(gpio));
214 }
215 desc->chip->unmask(irq);
216}
217
218static int __init pl061_probe(struct amba_device *dev, struct amba_id *id)
219{
220 struct pl061_platform_data *pdata;
221 struct pl061_gpio *chip;
222 struct list_head *chip_list;
223 int ret, irq, i;
224 static unsigned long init_irq[BITS_TO_LONGS(NR_IRQS)];
225
226 pdata = dev->dev.platform_data;
227 if (pdata == NULL)
228 return -ENODEV;
229
230 chip = kzalloc(sizeof(*chip), GFP_KERNEL);
231 if (chip == NULL)
232 return -ENOMEM;
233
234 if (!request_mem_region(dev->res.start,
235 resource_size(&dev->res), "pl061")) {
236 ret = -EBUSY;
237 goto free_mem;
238 }
239
240 chip->base = ioremap(dev->res.start, resource_size(&dev->res));
241 if (chip->base == NULL) {
242 ret = -ENOMEM;
243 goto release_region;
244 }
245
246 spin_lock_init(&chip->lock);
247 spin_lock_init(&chip->irq_lock);
248 INIT_LIST_HEAD(&chip->list);
249
250 chip->gc.direction_input = pl061_direction_input;
251 chip->gc.direction_output = pl061_direction_output;
252 chip->gc.get = pl061_get_value;
253 chip->gc.set = pl061_set_value;
254 chip->gc.base = pdata->gpio_base;
255 chip->gc.ngpio = PL061_GPIO_NR;
256 chip->gc.label = dev_name(&dev->dev);
257 chip->gc.dev = &dev->dev;
258 chip->gc.owner = THIS_MODULE;
259
260 chip->irq_base = pdata->irq_base;
261
262 ret = gpiochip_add(&chip->gc);
263 if (ret)
264 goto iounmap;
265
266 /*
267 * irq_chip support
268 */
269
270 if (chip->irq_base == (unsigned) -1)
271 return 0;
272
273 writeb(0, chip->base + GPIOIE); /* disable irqs */
274 irq = dev->irq[0];
275 if (irq < 0) {
276 ret = -ENODEV;
277 goto iounmap;
278 }
279 set_irq_chained_handler(irq, pl061_irq_handler);
280 if (!test_and_set_bit(irq, init_irq)) { /* list initialized? */
281 chip_list = kmalloc(sizeof(*chip_list), GFP_KERNEL);
282 if (chip_list == NULL) {
283 ret = -ENOMEM;
284 goto iounmap;
285 }
286 INIT_LIST_HEAD(chip_list);
287 set_irq_chip_data(irq, chip_list);
288 } else
289 chip_list = get_irq_chip_data(irq);
290 list_add(&chip->list, chip_list);
291
292 for (i = 0; i < PL061_GPIO_NR; i++) {
293 if (pdata->directions & (1 << i))
294 pl061_direction_output(&chip->gc, i,
295 pdata->values & (1 << i));
296 else
297 pl061_direction_input(&chip->gc, i);
298
299 set_irq_chip(i+chip->irq_base, &pl061_irqchip);
300 set_irq_handler(i+chip->irq_base, handle_simple_irq);
301 set_irq_flags(i+chip->irq_base, IRQF_VALID);
302 set_irq_chip_data(i+chip->irq_base, chip);
303 }
304
305 return 0;
306
307iounmap:
308 iounmap(chip->base);
309release_region:
310 release_mem_region(dev->res.start, resource_size(&dev->res));
311free_mem:
312 kfree(chip);
313
314 return ret;
315}
316
317static struct amba_id pl061_ids[] __initdata = {
318 {
319 .id = 0x00041061,
320 .mask = 0x000fffff,
321 },
322 { 0, 0 },
323};
324
325static struct amba_driver pl061_gpio_driver = {
326 .drv = {
327 .name = "pl061_gpio",
328 },
329 .id_table = pl061_ids,
330 .probe = pl061_probe,
331};
332
333static int __init pl061_gpio_init(void)
334{
335 return amba_driver_register(&pl061_gpio_driver);
336}
337subsys_initcall(pl061_gpio_init);
338
339MODULE_AUTHOR("Baruch Siach <baruch@tkos.co.il>");
340MODULE_DESCRIPTION("PL061 GPIO driver");
341MODULE_LICENSE("GPL");
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index dd778d7ae047..d325e86e3103 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -197,7 +197,7 @@ int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
197 return -EINVAL; 197 return -EINVAL;
198 198
199 /* Determine divider value */ 199 /* Determine divider value */
200 divider = mpc52xx_find_ipb_freq(node) / clock; 200 divider = mpc5xxx_get_bus_frequency(node) / clock;
201 201
202 /* 202 /*
203 * We want to choose an FDR/DFSR that generates an I2C bus speed that 203 * We want to choose an FDR/DFSR that generates an I2C bus speed that
diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
index 0a2e6e7f67b3..c92701dc5001 100644
--- a/drivers/md/dm-exception-store.h
+++ b/drivers/md/dm-exception-store.h
@@ -111,7 +111,7 @@ struct dm_exception_store {
111/* 111/*
112 * Funtions to manipulate consecutive chunks 112 * Funtions to manipulate consecutive chunks
113 */ 113 */
114# if defined(CONFIG_LBD) || (BITS_PER_LONG == 64) 114# if defined(CONFIG_LBDAF) || (BITS_PER_LONG == 64)
115# define DM_CHUNK_CONSECUTIVE_BITS 8 115# define DM_CHUNK_CONSECUTIVE_BITS 8
116# define DM_CHUNK_NUMBER_BITS 56 116# define DM_CHUNK_NUMBER_BITS 56
117 117
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 0df065275cd3..5d0ba4f5924c 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -4414,11 +4414,11 @@ PrimeIocFifos(MPT_ADAPTER *ioc)
4414 * 1078 errata workaround for the 36GB limitation 4414 * 1078 errata workaround for the 36GB limitation
4415 */ 4415 */
4416 if (ioc->pcidev->device == MPI_MANUFACTPAGE_DEVID_SAS1078 && 4416 if (ioc->pcidev->device == MPI_MANUFACTPAGE_DEVID_SAS1078 &&
4417 ioc->dma_mask > DMA_35BIT_MASK) { 4417 ioc->dma_mask > DMA_BIT_MASK(35)) {
4418 if (!pci_set_dma_mask(ioc->pcidev, DMA_BIT_MASK(32)) 4418 if (!pci_set_dma_mask(ioc->pcidev, DMA_BIT_MASK(32))
4419 && !pci_set_consistent_dma_mask(ioc->pcidev, 4419 && !pci_set_consistent_dma_mask(ioc->pcidev,
4420 DMA_BIT_MASK(32))) { 4420 DMA_BIT_MASK(32))) {
4421 dma_mask = DMA_35BIT_MASK; 4421 dma_mask = DMA_BIT_MASK(35);
4422 d36memprintk(ioc, printk(MYIOC_s_DEBUG_FMT 4422 d36memprintk(ioc, printk(MYIOC_s_DEBUG_FMT
4423 "setting 35 bit addressing for " 4423 "setting 35 bit addressing for "
4424 "Request/Reply/Chain and Sense Buffers\n", 4424 "Request/Reply/Chain and Sense Buffers\n",
@@ -4575,7 +4575,7 @@ PrimeIocFifos(MPT_ADAPTER *ioc)
4575 alloc_dma += ioc->reply_sz; 4575 alloc_dma += ioc->reply_sz;
4576 } 4576 }
4577 4577
4578 if (dma_mask == DMA_35BIT_MASK && !pci_set_dma_mask(ioc->pcidev, 4578 if (dma_mask == DMA_BIT_MASK(35) && !pci_set_dma_mask(ioc->pcidev,
4579 ioc->dma_mask) && !pci_set_consistent_dma_mask(ioc->pcidev, 4579 ioc->dma_mask) && !pci_set_consistent_dma_mask(ioc->pcidev,
4580 ioc->dma_mask)) 4580 ioc->dma_mask))
4581 d36memprintk(ioc, printk(MYIOC_s_DEBUG_FMT 4581 d36memprintk(ioc, printk(MYIOC_s_DEBUG_FMT
@@ -4602,7 +4602,7 @@ out_fail:
4602 ioc->sense_buf_pool = NULL; 4602 ioc->sense_buf_pool = NULL;
4603 } 4603 }
4604 4604
4605 if (dma_mask == DMA_35BIT_MASK && !pci_set_dma_mask(ioc->pcidev, 4605 if (dma_mask == DMA_BIT_MASK(35) && !pci_set_dma_mask(ioc->pcidev,
4606 DMA_BIT_MASK(64)) && !pci_set_consistent_dma_mask(ioc->pcidev, 4606 DMA_BIT_MASK(64)) && !pci_set_consistent_dma_mask(ioc->pcidev,
4607 DMA_BIT_MASK(64))) 4607 DMA_BIT_MASK(64)))
4608 d36memprintk(ioc, printk(MYIOC_s_DEBUG_FMT 4608 d36memprintk(ioc, printk(MYIOC_s_DEBUG_FMT
diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
index 7d443405bbe2..cc786333d95c 100644
--- a/drivers/net/fec_mpc52xx.c
+++ b/drivers/net/fec_mpc52xx.c
@@ -948,7 +948,7 @@ mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match)
948 /* Start with safe defaults for link connection */ 948 /* Start with safe defaults for link connection */
949 priv->speed = 100; 949 priv->speed = 100;
950 priv->duplex = DUPLEX_HALF; 950 priv->duplex = DUPLEX_HALF;
951 priv->mdio_speed = ((mpc52xx_find_ipb_freq(op->node) >> 20) / 5) << 1; 951 priv->mdio_speed = ((mpc5xxx_get_bus_frequency(op->node) >> 20) / 5) << 1;
952 952
953 /* The current speed preconfigures the speed of the MII link */ 953 /* The current speed preconfigures the speed of the MII link */
954 prop = of_get_property(op->node, "current-speed", &prop_size); 954 prop = of_get_property(op->node, "current-speed", &prop_size);
diff --git a/drivers/net/fec_mpc52xx_phy.c b/drivers/net/fec_mpc52xx_phy.c
index fec9f245116b..31e6d62b785d 100644
--- a/drivers/net/fec_mpc52xx_phy.c
+++ b/drivers/net/fec_mpc52xx_phy.c
@@ -106,7 +106,7 @@ static int mpc52xx_fec_mdio_probe(struct of_device *of,
106 106
107 /* set MII speed */ 107 /* set MII speed */
108 out_be32(&priv->regs->mii_speed, 108 out_be32(&priv->regs->mii_speed,
109 ((mpc52xx_find_ipb_freq(of->node) >> 20) / 5) << 1); 109 ((mpc5xxx_get_bus_frequency(of->node) >> 20) / 5) << 1);
110 110
111 err = of_mdiobus_register(bus, np); 111 err = of_mdiobus_register(bus, np);
112 if (err) 112 if (err)
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/igbvf/netdev.c
index 22aadb7884fa..2bc9d63027db 100644
--- a/drivers/net/igbvf/netdev.c
+++ b/drivers/net/igbvf/netdev.c
@@ -1281,7 +1281,7 @@ static void igbvf_configure_tx(struct igbvf_adapter *adapter)
1281 /* Setup the HW Tx Head and Tail descriptor pointers */ 1281 /* Setup the HW Tx Head and Tail descriptor pointers */
1282 ew32(TDLEN(0), tx_ring->count * sizeof(union e1000_adv_tx_desc)); 1282 ew32(TDLEN(0), tx_ring->count * sizeof(union e1000_adv_tx_desc));
1283 tdba = tx_ring->dma; 1283 tdba = tx_ring->dma;
1284 ew32(TDBAL(0), (tdba & DMA_32BIT_MASK)); 1284 ew32(TDBAL(0), (tdba & DMA_BIT_MASK(32)));
1285 ew32(TDBAH(0), (tdba >> 32)); 1285 ew32(TDBAH(0), (tdba >> 32));
1286 ew32(TDH(0), 0); 1286 ew32(TDH(0), 0);
1287 ew32(TDT(0), 0); 1287 ew32(TDT(0), 0);
@@ -1367,7 +1367,7 @@ static void igbvf_configure_rx(struct igbvf_adapter *adapter)
1367 * the Base and Length of the Rx Descriptor Ring 1367 * the Base and Length of the Rx Descriptor Ring
1368 */ 1368 */
1369 rdba = rx_ring->dma; 1369 rdba = rx_ring->dma;
1370 ew32(RDBAL(0), (rdba & DMA_32BIT_MASK)); 1370 ew32(RDBAL(0), (rdba & DMA_BIT_MASK(32)));
1371 ew32(RDBAH(0), (rdba >> 32)); 1371 ew32(RDBAH(0), (rdba >> 32));
1372 ew32(RDLEN(0), rx_ring->count * sizeof(union e1000_adv_rx_desc)); 1372 ew32(RDLEN(0), rx_ring->count * sizeof(union e1000_adv_rx_desc));
1373 rx_ring->head = E1000_RDH(0); 1373 rx_ring->head = E1000_RDH(0);
@@ -2628,15 +2628,16 @@ static int __devinit igbvf_probe(struct pci_dev *pdev,
2628 return err; 2628 return err;
2629 2629
2630 pci_using_dac = 0; 2630 pci_using_dac = 0;
2631 err = pci_set_dma_mask(pdev, DMA_64BIT_MASK); 2631 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
2632 if (!err) { 2632 if (!err) {
2633 err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); 2633 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
2634 if (!err) 2634 if (!err)
2635 pci_using_dac = 1; 2635 pci_using_dac = 1;
2636 } else { 2636 } else {
2637 err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); 2637 err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
2638 if (err) { 2638 if (err) {
2639 err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); 2639 err = pci_set_consistent_dma_mask(pdev,
2640 DMA_BIT_MASK(32));
2640 if (err) { 2641 if (err) {
2641 dev_err(&pdev->dev, "No usable DMA " 2642 dev_err(&pdev->dev, "No usable DMA "
2642 "configuration, aborting\n"); 2643 "configuration, aborting\n");
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/ixgbe/ixgbe_fcoe.c
index 3c3bf1f07b81..fa9f24e23683 100644
--- a/drivers/net/ixgbe/ixgbe_fcoe.c
+++ b/drivers/net/ixgbe/ixgbe_fcoe.c
@@ -251,7 +251,7 @@ int ixgbe_fcoe_ddp_get(struct net_device *netdev, u16 xid,
251 /* program DMA context */ 251 /* program DMA context */
252 hw = &adapter->hw; 252 hw = &adapter->hw;
253 spin_lock_bh(&fcoe->lock); 253 spin_lock_bh(&fcoe->lock);
254 IXGBE_WRITE_REG(hw, IXGBE_FCPTRL, ddp->udp & DMA_32BIT_MASK); 254 IXGBE_WRITE_REG(hw, IXGBE_FCPTRL, ddp->udp & DMA_BIT_MASK(32));
255 IXGBE_WRITE_REG(hw, IXGBE_FCPTRH, (u64)ddp->udp >> 32); 255 IXGBE_WRITE_REG(hw, IXGBE_FCPTRH, (u64)ddp->udp >> 32);
256 IXGBE_WRITE_REG(hw, IXGBE_FCBUFF, fcbuff); 256 IXGBE_WRITE_REG(hw, IXGBE_FCBUFF, fcbuff);
257 IXGBE_WRITE_REG(hw, IXGBE_FCDMARW, fcdmarw); 257 IXGBE_WRITE_REG(hw, IXGBE_FCDMARW, fcdmarw);
diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c
index 2b38f39924a6..d1a5fb4d6acb 100644
--- a/drivers/net/ps3_gelic_net.c
+++ b/drivers/net/ps3_gelic_net.c
@@ -214,9 +214,10 @@ static void gelic_card_free_chain(struct gelic_card *card,
214 * 214 *
215 * returns 0 on success, <0 on failure 215 * returns 0 on success, <0 on failure
216 */ 216 */
217static int gelic_card_init_chain(struct gelic_card *card, 217static int __devinit gelic_card_init_chain(struct gelic_card *card,
218 struct gelic_descr_chain *chain, 218 struct gelic_descr_chain *chain,
219 struct gelic_descr *start_descr, int no) 219 struct gelic_descr *start_descr,
220 int no)
220{ 221{
221 int i; 222 int i;
222 struct gelic_descr *descr; 223 struct gelic_descr *descr;
@@ -407,7 +408,7 @@ rewind:
407 * 408 *
408 * returns 0 on success, < 0 on failure 409 * returns 0 on success, < 0 on failure
409 */ 410 */
410static int gelic_card_alloc_rx_skbs(struct gelic_card *card) 411static int __devinit gelic_card_alloc_rx_skbs(struct gelic_card *card)
411{ 412{
412 struct gelic_descr_chain *chain; 413 struct gelic_descr_chain *chain;
413 int ret; 414 int ret;
@@ -1422,8 +1423,8 @@ static const struct net_device_ops gelic_netdevice_ops = {
1422 * 1423 *
1423 * fills out function pointers in the net_device structure 1424 * fills out function pointers in the net_device structure
1424 */ 1425 */
1425static void gelic_ether_setup_netdev_ops(struct net_device *netdev, 1426static void __devinit gelic_ether_setup_netdev_ops(struct net_device *netdev,
1426 struct napi_struct *napi) 1427 struct napi_struct *napi)
1427{ 1428{
1428 netdev->watchdog_timeo = GELIC_NET_WATCHDOG_TIMEOUT; 1429 netdev->watchdog_timeo = GELIC_NET_WATCHDOG_TIMEOUT;
1429 /* NAPI */ 1430 /* NAPI */
@@ -1443,7 +1444,8 @@ static void gelic_ether_setup_netdev_ops(struct net_device *netdev,
1443 * gelic_ether_setup_netdev initializes the net_device structure 1444 * gelic_ether_setup_netdev initializes the net_device structure
1444 * and register it. 1445 * and register it.
1445 **/ 1446 **/
1446int gelic_net_setup_netdev(struct net_device *netdev, struct gelic_card *card) 1447int __devinit gelic_net_setup_netdev(struct net_device *netdev,
1448 struct gelic_card *card)
1447{ 1449{
1448 int status; 1450 int status;
1449 u64 v1, v2; 1451 u64 v1, v2;
@@ -1491,7 +1493,7 @@ int gelic_net_setup_netdev(struct net_device *netdev, struct gelic_card *card)
1491 * the card and net_device structures are linked to each other 1493 * the card and net_device structures are linked to each other
1492 */ 1494 */
1493#define GELIC_ALIGN (32) 1495#define GELIC_ALIGN (32)
1494static struct gelic_card *gelic_alloc_card_net(struct net_device **netdev) 1496static struct gelic_card * __devinit gelic_alloc_card_net(struct net_device **netdev)
1495{ 1497{
1496 struct gelic_card *card; 1498 struct gelic_card *card;
1497 struct gelic_port *port; 1499 struct gelic_port *port;
@@ -1542,7 +1544,7 @@ static struct gelic_card *gelic_alloc_card_net(struct net_device **netdev)
1542 return card; 1544 return card;
1543} 1545}
1544 1546
1545static void gelic_card_get_vlan_info(struct gelic_card *card) 1547static void __devinit gelic_card_get_vlan_info(struct gelic_card *card)
1546{ 1548{
1547 u64 v1, v2; 1549 u64 v1, v2;
1548 int status; 1550 int status;
@@ -1616,7 +1618,7 @@ static void gelic_card_get_vlan_info(struct gelic_card *card)
1616/** 1618/**
1617 * ps3_gelic_driver_probe - add a device to the control of this driver 1619 * ps3_gelic_driver_probe - add a device to the control of this driver
1618 */ 1620 */
1619static int ps3_gelic_driver_probe(struct ps3_system_bus_device *dev) 1621static int __devinit ps3_gelic_driver_probe(struct ps3_system_bus_device *dev)
1620{ 1622{
1621 struct gelic_card *card; 1623 struct gelic_card *card;
1622 struct net_device *netdev; 1624 struct net_device *netdev;
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c
index 4f3ada622f9b..b6b3ca9bdb21 100644
--- a/drivers/net/ps3_gelic_wireless.c
+++ b/drivers/net/ps3_gelic_wireless.c
@@ -2442,7 +2442,7 @@ static const struct iw_handler_def gelic_wl_wext_handler_def = {
2442#endif 2442#endif
2443}; 2443};
2444 2444
2445static struct net_device *gelic_wl_alloc(struct gelic_card *card) 2445static struct net_device * __devinit gelic_wl_alloc(struct gelic_card *card)
2446{ 2446{
2447 struct net_device *netdev; 2447 struct net_device *netdev;
2448 struct gelic_port *port; 2448 struct gelic_port *port;
@@ -2722,7 +2722,7 @@ static struct ethtool_ops gelic_wl_ethtool_ops = {
2722 .set_rx_csum = gelic_net_set_rx_csum, 2722 .set_rx_csum = gelic_net_set_rx_csum,
2723}; 2723};
2724 2724
2725static void gelic_wl_setup_netdev_ops(struct net_device *netdev) 2725static void __devinit gelic_wl_setup_netdev_ops(struct net_device *netdev)
2726{ 2726{
2727 struct gelic_wl_info *wl; 2727 struct gelic_wl_info *wl;
2728 wl = port_wl(netdev_priv(netdev)); 2728 wl = port_wl(netdev_priv(netdev));
@@ -2738,7 +2738,7 @@ static void gelic_wl_setup_netdev_ops(struct net_device *netdev)
2738/* 2738/*
2739 * driver probe/remove 2739 * driver probe/remove
2740 */ 2740 */
2741int gelic_wl_driver_probe(struct gelic_card *card) 2741int __devinit gelic_wl_driver_probe(struct gelic_card *card)
2742{ 2742{
2743 int ret; 2743 int ret;
2744 struct net_device *netdev; 2744 struct net_device *netdev;
diff --git a/drivers/rapidio/rio-scan.c b/drivers/rapidio/rio-scan.c
index 3b78540288c7..45415096c294 100644
--- a/drivers/rapidio/rio-scan.c
+++ b/drivers/rapidio/rio-scan.c
@@ -263,15 +263,21 @@ static void rio_route_set_ops(struct rio_dev *rdev)
263 * device to the RIO device list. Creates the generic sysfs nodes 263 * device to the RIO device list. Creates the generic sysfs nodes
264 * for an RIO device. 264 * for an RIO device.
265 */ 265 */
266static void __devinit rio_add_device(struct rio_dev *rdev) 266static int __devinit rio_add_device(struct rio_dev *rdev)
267{ 267{
268 device_add(&rdev->dev); 268 int err;
269
270 err = device_add(&rdev->dev);
271 if (err)
272 return err;
269 273
270 spin_lock(&rio_global_list_lock); 274 spin_lock(&rio_global_list_lock);
271 list_add_tail(&rdev->global_list, &rio_devices); 275 list_add_tail(&rdev->global_list, &rio_devices);
272 spin_unlock(&rio_global_list_lock); 276 spin_unlock(&rio_global_list_lock);
273 277
274 rio_create_sysfs_dev_files(rdev); 278 rio_create_sysfs_dev_files(rdev);
279
280 return 0;
275} 281}
276 282
277/** 283/**
@@ -294,13 +300,14 @@ static struct rio_dev __devinit *rio_setup_device(struct rio_net *net,
294 struct rio_mport *port, u16 destid, 300 struct rio_mport *port, u16 destid,
295 u8 hopcount, int do_enum) 301 u8 hopcount, int do_enum)
296{ 302{
303 int ret = 0;
297 struct rio_dev *rdev; 304 struct rio_dev *rdev;
298 struct rio_switch *rswitch; 305 struct rio_switch *rswitch = NULL;
299 int result, rdid; 306 int result, rdid;
300 307
301 rdev = kzalloc(sizeof(struct rio_dev), GFP_KERNEL); 308 rdev = kzalloc(sizeof(struct rio_dev), GFP_KERNEL);
302 if (!rdev) 309 if (!rdev)
303 goto out; 310 return NULL;
304 311
305 rdev->net = net; 312 rdev->net = net;
306 rio_mport_read_config_32(port, destid, hopcount, RIO_DEV_ID_CAR, 313 rio_mport_read_config_32(port, destid, hopcount, RIO_DEV_ID_CAR,
@@ -343,23 +350,16 @@ static struct rio_dev __devinit *rio_setup_device(struct rio_net *net,
343 rio_mport_read_config_32(port, destid, hopcount, 350 rio_mport_read_config_32(port, destid, hopcount,
344 RIO_SWP_INFO_CAR, &rdev->swpinfo); 351 RIO_SWP_INFO_CAR, &rdev->swpinfo);
345 rswitch = kmalloc(sizeof(struct rio_switch), GFP_KERNEL); 352 rswitch = kmalloc(sizeof(struct rio_switch), GFP_KERNEL);
346 if (!rswitch) { 353 if (!rswitch)
347 kfree(rdev); 354 goto cleanup;
348 rdev = NULL;
349 goto out;
350 }
351 rswitch->switchid = next_switchid; 355 rswitch->switchid = next_switchid;
352 rswitch->hopcount = hopcount; 356 rswitch->hopcount = hopcount;
353 rswitch->destid = destid; 357 rswitch->destid = destid;
354 rswitch->route_table = kzalloc(sizeof(u8)* 358 rswitch->route_table = kzalloc(sizeof(u8)*
355 RIO_MAX_ROUTE_ENTRIES(port->sys_size), 359 RIO_MAX_ROUTE_ENTRIES(port->sys_size),
356 GFP_KERNEL); 360 GFP_KERNEL);
357 if (!rswitch->route_table) { 361 if (!rswitch->route_table)
358 kfree(rdev); 362 goto cleanup;
359 rdev = NULL;
360 kfree(rswitch);
361 goto out;
362 }
363 /* Initialize switch route table */ 363 /* Initialize switch route table */
364 for (rdid = 0; rdid < RIO_MAX_ROUTE_ENTRIES(port->sys_size); 364 for (rdid = 0; rdid < RIO_MAX_ROUTE_ENTRIES(port->sys_size);
365 rdid++) 365 rdid++)
@@ -390,10 +390,19 @@ static struct rio_dev __devinit *rio_setup_device(struct rio_net *net,
390 rio_init_dbell_res(&rdev->riores[RIO_DOORBELL_RESOURCE], 390 rio_init_dbell_res(&rdev->riores[RIO_DOORBELL_RESOURCE],
391 0, 0xffff); 391 0, 0xffff);
392 392
393 rio_add_device(rdev); 393 ret = rio_add_device(rdev);
394 if (ret)
395 goto cleanup;
394 396
395 out:
396 return rdev; 397 return rdev;
398
399cleanup:
400 if (rswitch) {
401 kfree(rswitch->route_table);
402 kfree(rswitch);
403 }
404 kfree(rdev);
405 return NULL;
397} 406}
398 407
399/** 408/**
diff --git a/drivers/rapidio/rio-sysfs.c b/drivers/rapidio/rio-sysfs.c
index 97a147f050d6..ba742e82c57d 100644
--- a/drivers/rapidio/rio-sysfs.c
+++ b/drivers/rapidio/rio-sysfs.c
@@ -214,9 +214,11 @@ static struct bin_attribute rio_config_attr = {
214 */ 214 */
215int rio_create_sysfs_dev_files(struct rio_dev *rdev) 215int rio_create_sysfs_dev_files(struct rio_dev *rdev)
216{ 216{
217 sysfs_create_bin_file(&rdev->dev.kobj, &rio_config_attr); 217 int err = 0;
218 218
219 return 0; 219 err = sysfs_create_bin_file(&rdev->dev.kobj, &rio_config_attr);
220
221 return err;
220} 222}
221 223
222/** 224/**
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
index 4348c4b0d453..4cdb31a362ca 100644
--- a/drivers/rtc/interface.c
+++ b/drivers/rtc/interface.c
@@ -371,19 +371,21 @@ EXPORT_SYMBOL_GPL(rtc_update_irq_enable);
371 * @rtc: the rtc device 371 * @rtc: the rtc device
372 * @num: how many irqs are being reported (usually one) 372 * @num: how many irqs are being reported (usually one)
373 * @events: mask of RTC_IRQF with one or more of RTC_PF, RTC_AF, RTC_UF 373 * @events: mask of RTC_IRQF with one or more of RTC_PF, RTC_AF, RTC_UF
374 * Context: in_interrupt(), irqs blocked 374 * Context: any
375 */ 375 */
376void rtc_update_irq(struct rtc_device *rtc, 376void rtc_update_irq(struct rtc_device *rtc,
377 unsigned long num, unsigned long events) 377 unsigned long num, unsigned long events)
378{ 378{
379 spin_lock(&rtc->irq_lock); 379 unsigned long flags;
380
381 spin_lock_irqsave(&rtc->irq_lock, flags);
380 rtc->irq_data = (rtc->irq_data + (num << 8)) | events; 382 rtc->irq_data = (rtc->irq_data + (num << 8)) | events;
381 spin_unlock(&rtc->irq_lock); 383 spin_unlock_irqrestore(&rtc->irq_lock, flags);
382 384
383 spin_lock(&rtc->irq_task_lock); 385 spin_lock_irqsave(&rtc->irq_task_lock, flags);
384 if (rtc->irq_task) 386 if (rtc->irq_task)
385 rtc->irq_task->func(rtc->irq_task->private_data); 387 rtc->irq_task->func(rtc->irq_task->private_data);
386 spin_unlock(&rtc->irq_task_lock); 388 spin_unlock_irqrestore(&rtc->irq_task_lock, flags);
387 389
388 wake_up_interruptible(&rtc->irq_queue); 390 wake_up_interruptible(&rtc->irq_queue);
389 kill_fasync(&rtc->async_queue, SIGIO, POLL_IN); 391 kill_fasync(&rtc->async_queue, SIGIO, POLL_IN);
diff --git a/drivers/rtc/rtc-dev.c b/drivers/rtc/rtc-dev.c
index 45152f4952d6..8a11de9552cd 100644
--- a/drivers/rtc/rtc-dev.c
+++ b/drivers/rtc/rtc-dev.c
@@ -60,8 +60,7 @@ static void rtc_uie_task(struct work_struct *work)
60 60
61 err = rtc_read_time(rtc, &tm); 61 err = rtc_read_time(rtc, &tm);
62 62
63 local_irq_disable(); 63 spin_lock_irq(&rtc->irq_lock);
64 spin_lock(&rtc->irq_lock);
65 if (rtc->stop_uie_polling || err) { 64 if (rtc->stop_uie_polling || err) {
66 rtc->uie_task_active = 0; 65 rtc->uie_task_active = 0;
67 } else if (rtc->oldsecs != tm.tm_sec) { 66 } else if (rtc->oldsecs != tm.tm_sec) {
@@ -74,10 +73,9 @@ static void rtc_uie_task(struct work_struct *work)
74 } else if (schedule_work(&rtc->uie_task) == 0) { 73 } else if (schedule_work(&rtc->uie_task) == 0) {
75 rtc->uie_task_active = 0; 74 rtc->uie_task_active = 0;
76 } 75 }
77 spin_unlock(&rtc->irq_lock); 76 spin_unlock_irq(&rtc->irq_lock);
78 if (num) 77 if (num)
79 rtc_update_irq(rtc, num, RTC_UF | RTC_IRQF); 78 rtc_update_irq(rtc, num, RTC_UF | RTC_IRQF);
80 local_irq_enable();
81} 79}
82static void rtc_uie_timer(unsigned long data) 80static void rtc_uie_timer(unsigned long data)
83{ 81{
diff --git a/drivers/rtc/rtc-ds1305.c b/drivers/rtc/rtc-ds1305.c
index fc372df6534b..8f410e59d9f5 100644
--- a/drivers/rtc/rtc-ds1305.c
+++ b/drivers/rtc/rtc-ds1305.c
@@ -499,10 +499,7 @@ static void ds1305_work(struct work_struct *work)
499 if (!test_bit(FLAG_EXITING, &ds1305->flags)) 499 if (!test_bit(FLAG_EXITING, &ds1305->flags))
500 enable_irq(spi->irq); 500 enable_irq(spi->irq);
501 501
502 /* rtc_update_irq() requires an IRQ-disabled context */
503 local_irq_disable();
504 rtc_update_irq(ds1305->rtc, 1, RTC_AF | RTC_IRQF); 502 rtc_update_irq(ds1305->rtc, 1, RTC_AF | RTC_IRQF);
505 local_irq_enable();
506} 503}
507 504
508/* 505/*
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index 8a6f9a9f9cb8..47a93c022d91 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -267,12 +267,7 @@ static void ds1307_work(struct work_struct *work)
267 control &= ~DS1337_BIT_A1IE; 267 control &= ~DS1337_BIT_A1IE;
268 i2c_smbus_write_byte_data(client, DS1337_REG_CONTROL, control); 268 i2c_smbus_write_byte_data(client, DS1337_REG_CONTROL, control);
269 269
270 /* rtc_update_irq() assumes that it is called
271 * from IRQ-disabled context.
272 */
273 local_irq_disable();
274 rtc_update_irq(ds1307->rtc, 1, RTC_AF | RTC_IRQF); 270 rtc_update_irq(ds1307->rtc, 1, RTC_AF | RTC_IRQF);
275 local_irq_enable();
276 } 271 }
277 272
278out: 273out:
diff --git a/drivers/rtc/rtc-ds1374.c b/drivers/rtc/rtc-ds1374.c
index 4d32e328f6cd..32b27739ec2a 100644
--- a/drivers/rtc/rtc-ds1374.c
+++ b/drivers/rtc/rtc-ds1374.c
@@ -296,12 +296,7 @@ static void ds1374_work(struct work_struct *work)
296 control &= ~(DS1374_REG_CR_WACE | DS1374_REG_CR_AIE); 296 control &= ~(DS1374_REG_CR_WACE | DS1374_REG_CR_AIE);
297 i2c_smbus_write_byte_data(client, DS1374_REG_CR, control); 297 i2c_smbus_write_byte_data(client, DS1374_REG_CR, control);
298 298
299 /* rtc_update_irq() assumes that it is called
300 * from IRQ-disabled context.
301 */
302 local_irq_disable();
303 rtc_update_irq(ds1374->rtc, 1, RTC_AF | RTC_IRQF); 299 rtc_update_irq(ds1374->rtc, 1, RTC_AF | RTC_IRQF);
304 local_irq_enable();
305 } 300 }
306 301
307out: 302out:
diff --git a/drivers/rtc/rtc-test.c b/drivers/rtc/rtc-test.c
index e478280ff628..51725f7755b0 100644
--- a/drivers/rtc/rtc-test.c
+++ b/drivers/rtc/rtc-test.c
@@ -93,7 +93,6 @@ static ssize_t test_irq_store(struct device *dev,
93 struct rtc_device *rtc = platform_get_drvdata(plat_dev); 93 struct rtc_device *rtc = platform_get_drvdata(plat_dev);
94 94
95 retval = count; 95 retval = count;
96 local_irq_disable();
97 if (strncmp(buf, "tick", 4) == 0) 96 if (strncmp(buf, "tick", 4) == 0)
98 rtc_update_irq(rtc, 1, RTC_PF | RTC_IRQF); 97 rtc_update_irq(rtc, 1, RTC_PF | RTC_IRQF);
99 else if (strncmp(buf, "alarm", 5) == 0) 98 else if (strncmp(buf, "alarm", 5) == 0)
@@ -102,7 +101,6 @@ static ssize_t test_irq_store(struct device *dev,
102 rtc_update_irq(rtc, 1, RTC_UF | RTC_IRQF); 101 rtc_update_irq(rtc, 1, RTC_UF | RTC_IRQF);
103 else 102 else
104 retval = -EINVAL; 103 retval = -EINVAL;
105 local_irq_enable();
106 104
107 return retval; 105 return retval;
108} 106}
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c
index ca0dd33497ec..db90caf43f42 100644
--- a/drivers/scsi/ps3rom.c
+++ b/drivers/scsi/ps3rom.c
@@ -299,7 +299,7 @@ static irqreturn_t ps3rom_interrupt(int irq, void *data)
299 return IRQ_HANDLED; 299 return IRQ_HANDLED;
300 } 300 }
301 301
302 host = dev->sbd.core.driver_data; 302 host = ps3_system_bus_get_drvdata(&dev->sbd);
303 priv = shost_priv(host); 303 priv = shost_priv(host);
304 cmd = priv->curr_cmd; 304 cmd = priv->curr_cmd;
305 305
@@ -387,7 +387,7 @@ static int __devinit ps3rom_probe(struct ps3_system_bus_device *_dev)
387 } 387 }
388 388
389 priv = shost_priv(host); 389 priv = shost_priv(host);
390 dev->sbd.core.driver_data = host; 390 ps3_system_bus_set_drvdata(&dev->sbd, host);
391 priv->dev = dev; 391 priv->dev = dev;
392 392
393 /* One device/LUN per SCSI bus */ 393 /* One device/LUN per SCSI bus */
@@ -407,7 +407,7 @@ static int __devinit ps3rom_probe(struct ps3_system_bus_device *_dev)
407 407
408fail_host_put: 408fail_host_put:
409 scsi_host_put(host); 409 scsi_host_put(host);
410 dev->sbd.core.driver_data = NULL; 410 ps3_system_bus_set_drvdata(&dev->sbd, NULL);
411fail_teardown: 411fail_teardown:
412 ps3stor_teardown(dev); 412 ps3stor_teardown(dev);
413fail_free_bounce: 413fail_free_bounce:
@@ -418,12 +418,12 @@ fail_free_bounce:
418static int ps3rom_remove(struct ps3_system_bus_device *_dev) 418static int ps3rom_remove(struct ps3_system_bus_device *_dev)
419{ 419{
420 struct ps3_storage_device *dev = to_ps3_storage_device(&_dev->core); 420 struct ps3_storage_device *dev = to_ps3_storage_device(&_dev->core);
421 struct Scsi_Host *host = dev->sbd.core.driver_data; 421 struct Scsi_Host *host = ps3_system_bus_get_drvdata(&dev->sbd);
422 422
423 scsi_remove_host(host); 423 scsi_remove_host(host);
424 ps3stor_teardown(dev); 424 ps3stor_teardown(dev);
425 scsi_host_put(host); 425 scsi_host_put(host);
426 dev->sbd.core.driver_data = NULL; 426 ps3_system_bus_set_drvdata(&dev->sbd, NULL);
427 kfree(dev->bounce_buf); 427 kfree(dev->bounce_buf);
428 return 0; 428 return 0;
429} 429}
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index b3feb6198d57..abbd146c50d9 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -76,7 +76,6 @@
76#include <linux/of_platform.h> 76#include <linux/of_platform.h>
77 77
78#include <asm/mpc52xx.h> 78#include <asm/mpc52xx.h>
79#include <asm/mpc512x.h>
80#include <asm/mpc52xx_psc.h> 79#include <asm/mpc52xx_psc.h>
81 80
82#if defined(CONFIG_SERIAL_MPC52xx_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) 81#if defined(CONFIG_SERIAL_MPC52xx_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
@@ -254,7 +253,7 @@ static unsigned long mpc52xx_getuartclk(void *p)
254 * but the generic serial code assumes 16 253 * but the generic serial code assumes 16
255 * so return ipb freq / 2 254 * so return ipb freq / 2
256 */ 255 */
257 return mpc52xx_find_ipb_freq(p) / 2; 256 return mpc5xxx_get_bus_frequency(p) / 2;
258} 257}
259 258
260static struct psc_ops mpc52xx_psc_ops = { 259static struct psc_ops mpc52xx_psc_ops = {
@@ -391,7 +390,7 @@ static void mpc512x_psc_cw_restore_ints(struct uart_port *port)
391 390
392static unsigned long mpc512x_getuartclk(void *p) 391static unsigned long mpc512x_getuartclk(void *p)
393{ 392{
394 return mpc512x_find_ips_freq(p); 393 return mpc5xxx_get_bus_frequency(p);
395} 394}
396 395
397static struct psc_ops mpc512x_psc_ops = { 396static struct psc_ops mpc512x_psc_ops = {
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index 54483cd3529e..02406ba6da1c 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -67,7 +67,7 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev,
67 port->type = type; 67 port->type = type;
68 port->uartclk = *clk; 68 port->uartclk = *clk;
69 port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP 69 port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP
70 | UPF_FIXED_PORT; 70 | UPF_FIXED_PORT | UPF_FIXED_TYPE;
71 port->dev = &ofdev->dev; 71 port->dev = &ofdev->dev;
72 /* If current-speed was set, then try not to change it. */ 72 /* If current-speed was set, then try not to change it. */
73 if (spd) 73 if (spd)
diff --git a/drivers/serial/ucc_uart.c b/drivers/serial/ucc_uart.c
index 7de66c06b05d..e945e780b5c9 100644
--- a/drivers/serial/ucc_uart.c
+++ b/drivers/serial/ucc_uart.c
@@ -681,22 +681,27 @@ static void qe_uart_init_ucc(struct uart_qe_port *qe_port)
681 out_be16(&uccup->rccm, 0xc0ff); 681 out_be16(&uccup->rccm, 0xc0ff);
682 682
683 /* Configure the GUMR registers for UART */ 683 /* Configure the GUMR registers for UART */
684 if (soft_uart) 684 if (soft_uart) {
685 /* Soft-UART requires a 1X multiplier for TX */ 685 /* Soft-UART requires a 1X multiplier for TX */
686 clrsetbits_be32(&uccp->gumr_l, 686 clrsetbits_be32(&uccp->gumr_l,
687 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | 687 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK |
688 UCC_SLOW_GUMR_L_RDCR_MASK, 688 UCC_SLOW_GUMR_L_RDCR_MASK,
689 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_1 | 689 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_1 |
690 UCC_SLOW_GUMR_L_RDCR_16); 690 UCC_SLOW_GUMR_L_RDCR_16);
691 else 691
692 clrsetbits_be32(&uccp->gumr_h, UCC_SLOW_GUMR_H_RFW,
693 UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX);
694 } else {
692 clrsetbits_be32(&uccp->gumr_l, 695 clrsetbits_be32(&uccp->gumr_l,
693 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | 696 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK |
694 UCC_SLOW_GUMR_L_RDCR_MASK, 697 UCC_SLOW_GUMR_L_RDCR_MASK,
695 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_16 | 698 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_16 |
696 UCC_SLOW_GUMR_L_RDCR_16); 699 UCC_SLOW_GUMR_L_RDCR_16);
697 700
698 clrsetbits_be32(&uccp->gumr_h, UCC_SLOW_GUMR_H_RFW, 701 clrsetbits_be32(&uccp->gumr_h,
699 UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX); 702 UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX,
703 UCC_SLOW_GUMR_H_RFW);
704 }
700 705
701#ifdef LOOPBACK 706#ifdef LOOPBACK
702 clrsetbits_be32(&uccp->gumr_l, UCC_SLOW_GUMR_L_DIAG_MASK, 707 clrsetbits_be32(&uccp->gumr_l, UCC_SLOW_GUMR_L_DIAG_MASK,
@@ -706,7 +711,7 @@ static void qe_uart_init_ucc(struct uart_qe_port *qe_port)
706 UCC_SLOW_GUMR_H_CDS); 711 UCC_SLOW_GUMR_H_CDS);
707#endif 712#endif
708 713
709 /* Enable rx interrupts and clear all pending events. */ 714 /* Disable rx interrupts and clear all pending events. */
710 out_be16(&uccp->uccm, 0); 715 out_be16(&uccp->uccm, 0);
711 out_be16(&uccp->ucce, 0xffff); 716 out_be16(&uccp->ucce, 0xffff);
712 out_be16(&uccp->udsr, 0x7e7e); 717 out_be16(&uccp->udsr, 0x7e7e);
@@ -765,6 +770,10 @@ static void qe_uart_init_ucc(struct uart_qe_port *qe_port)
765 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num); 770 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num);
766 qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock, 771 qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock,
767 QE_CR_PROTOCOL_UNSPECIFIED, 0); 772 QE_CR_PROTOCOL_UNSPECIFIED, 0);
773 } else {
774 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num);
775 qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock,
776 QE_CR_PROTOCOL_UART, 0);
768 } 777 }
769} 778}
770 779
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index e8aae227b5e0..2c733c27db2f 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -139,17 +139,15 @@ config SPI_MPC52xx_PSC
139 This enables using the Freescale MPC52xx Programmable Serial 139 This enables using the Freescale MPC52xx Programmable Serial
140 Controller in master SPI mode. 140 Controller in master SPI mode.
141 141
142config SPI_MPC83xx 142config SPI_MPC8xxx
143 tristate "Freescale MPC83xx/QUICC Engine SPI controller" 143 tristate "Freescale MPC8xxx SPI controller"
144 depends on (PPC_83xx || QUICC_ENGINE) && EXPERIMENTAL 144 depends on FSL_SOC
145 help 145 help
146 This enables using the Freescale MPC83xx and QUICC Engine SPI 146 This enables using the Freescale MPC8xxx SPI controllers in master
147 controllers in master mode. 147 mode.
148 148
149 Note, this driver uniquely supports the SPI controller on the MPC83xx 149 This driver uses a simple set of shift registers for data (opposed
150 family of PowerPC processors, plus processors with QUICC Engine 150 to the CPM based descriptor model).
151 technology. This driver uses a simple set of shift registers for data
152 (opposed to the CPM based descriptor model).
153 151
154config SPI_OMAP_UWIRE 152config SPI_OMAP_UWIRE
155 tristate "OMAP1 MicroWire" 153 tristate "OMAP1 MicroWire"
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index ecfadb180482..3de408d294ba 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -25,7 +25,7 @@ obj-$(CONFIG_SPI_OMAP24XX) += omap2_mcspi.o
25obj-$(CONFIG_SPI_ORION) += orion_spi.o 25obj-$(CONFIG_SPI_ORION) += orion_spi.o
26obj-$(CONFIG_SPI_PL022) += amba-pl022.o 26obj-$(CONFIG_SPI_PL022) += amba-pl022.o
27obj-$(CONFIG_SPI_MPC52xx_PSC) += mpc52xx_psc_spi.o 27obj-$(CONFIG_SPI_MPC52xx_PSC) += mpc52xx_psc_spi.o
28obj-$(CONFIG_SPI_MPC83xx) += spi_mpc83xx.o 28obj-$(CONFIG_SPI_MPC8xxx) += spi_mpc8xxx.o
29obj-$(CONFIG_SPI_S3C24XX_GPIO) += spi_s3c24xx_gpio.o 29obj-$(CONFIG_SPI_S3C24XX_GPIO) += spi_s3c24xx_gpio.o
30obj-$(CONFIG_SPI_S3C24XX) += spi_s3c24xx.o 30obj-$(CONFIG_SPI_S3C24XX) += spi_s3c24xx.o
31obj-$(CONFIG_SPI_TXX9) += spi_txx9.o 31obj-$(CONFIG_SPI_TXX9) += spi_txx9.o
diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc8xxx.c
index ce61be98e06d..0fd0ec4d3a7d 100644
--- a/drivers/spi/spi_mpc83xx.c
+++ b/drivers/spi/spi_mpc8xxx.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * MPC83xx SPI controller driver. 2 * MPC8xxx SPI controller driver.
3 * 3 *
4 * Maintainer: Kumar Gala 4 * Maintainer: Kumar Gala
5 * 5 *
@@ -14,8 +14,10 @@
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/bug.h>
17#include <linux/errno.h> 18#include <linux/errno.h>
18#include <linux/err.h> 19#include <linux/err.h>
20#include <linux/io.h>
19#include <linux/completion.h> 21#include <linux/completion.h>
20#include <linux/interrupt.h> 22#include <linux/interrupt.h>
21#include <linux/delay.h> 23#include <linux/delay.h>
@@ -33,10 +35,9 @@
33 35
34#include <sysdev/fsl_soc.h> 36#include <sysdev/fsl_soc.h>
35#include <asm/irq.h> 37#include <asm/irq.h>
36#include <asm/io.h>
37 38
38/* SPI Controller registers */ 39/* SPI Controller registers */
39struct mpc83xx_spi_reg { 40struct mpc8xxx_spi_reg {
40 u8 res1[0x20]; 41 u8 res1[0x20];
41 __be32 mode; 42 __be32 mode;
42 __be32 event; 43 __be32 event;
@@ -75,16 +76,16 @@ struct mpc83xx_spi_reg {
75#define SPIM_NF 0x00000100 /* Not full */ 76#define SPIM_NF 0x00000100 /* Not full */
76 77
77/* SPI Controller driver's private data. */ 78/* SPI Controller driver's private data. */
78struct mpc83xx_spi { 79struct mpc8xxx_spi {
79 struct mpc83xx_spi_reg __iomem *base; 80 struct mpc8xxx_spi_reg __iomem *base;
80 81
81 /* rx & tx bufs from the spi_transfer */ 82 /* rx & tx bufs from the spi_transfer */
82 const void *tx; 83 const void *tx;
83 void *rx; 84 void *rx;
84 85
85 /* functions to deal with different sized buffers */ 86 /* functions to deal with different sized buffers */
86 void (*get_rx) (u32 rx_data, struct mpc83xx_spi *); 87 void (*get_rx) (u32 rx_data, struct mpc8xxx_spi *);
87 u32(*get_tx) (struct mpc83xx_spi *); 88 u32(*get_tx) (struct mpc8xxx_spi *);
88 89
89 unsigned int count; 90 unsigned int count;
90 unsigned int irq; 91 unsigned int irq;
@@ -97,8 +98,6 @@ struct mpc83xx_spi {
97 98
98 bool qe_mode; 99 bool qe_mode;
99 100
100 u8 busy;
101
102 struct workqueue_struct *workqueue; 101 struct workqueue_struct *workqueue;
103 struct work_struct work; 102 struct work_struct work;
104 103
@@ -108,44 +107,44 @@ struct mpc83xx_spi {
108 struct completion done; 107 struct completion done;
109}; 108};
110 109
111struct spi_mpc83xx_cs { 110struct spi_mpc8xxx_cs {
112 /* functions to deal with different sized buffers */ 111 /* functions to deal with different sized buffers */
113 void (*get_rx) (u32 rx_data, struct mpc83xx_spi *); 112 void (*get_rx) (u32 rx_data, struct mpc8xxx_spi *);
114 u32 (*get_tx) (struct mpc83xx_spi *); 113 u32 (*get_tx) (struct mpc8xxx_spi *);
115 u32 rx_shift; /* RX data reg shift when in qe mode */ 114 u32 rx_shift; /* RX data reg shift when in qe mode */
116 u32 tx_shift; /* TX data reg shift when in qe mode */ 115 u32 tx_shift; /* TX data reg shift when in qe mode */
117 u32 hw_mode; /* Holds HW mode register settings */ 116 u32 hw_mode; /* Holds HW mode register settings */
118}; 117};
119 118
120static inline void mpc83xx_spi_write_reg(__be32 __iomem * reg, u32 val) 119static inline void mpc8xxx_spi_write_reg(__be32 __iomem *reg, u32 val)
121{ 120{
122 out_be32(reg, val); 121 out_be32(reg, val);
123} 122}
124 123
125static inline u32 mpc83xx_spi_read_reg(__be32 __iomem * reg) 124static inline u32 mpc8xxx_spi_read_reg(__be32 __iomem *reg)
126{ 125{
127 return in_be32(reg); 126 return in_be32(reg);
128} 127}
129 128
130#define MPC83XX_SPI_RX_BUF(type) \ 129#define MPC83XX_SPI_RX_BUF(type) \
131static \ 130static \
132void mpc83xx_spi_rx_buf_##type(u32 data, struct mpc83xx_spi *mpc83xx_spi) \ 131void mpc8xxx_spi_rx_buf_##type(u32 data, struct mpc8xxx_spi *mpc8xxx_spi) \
133{ \ 132{ \
134 type * rx = mpc83xx_spi->rx; \ 133 type *rx = mpc8xxx_spi->rx; \
135 *rx++ = (type)(data >> mpc83xx_spi->rx_shift); \ 134 *rx++ = (type)(data >> mpc8xxx_spi->rx_shift); \
136 mpc83xx_spi->rx = rx; \ 135 mpc8xxx_spi->rx = rx; \
137} 136}
138 137
139#define MPC83XX_SPI_TX_BUF(type) \ 138#define MPC83XX_SPI_TX_BUF(type) \
140static \ 139static \
141u32 mpc83xx_spi_tx_buf_##type(struct mpc83xx_spi *mpc83xx_spi) \ 140u32 mpc8xxx_spi_tx_buf_##type(struct mpc8xxx_spi *mpc8xxx_spi) \
142{ \ 141{ \
143 u32 data; \ 142 u32 data; \
144 const type * tx = mpc83xx_spi->tx; \ 143 const type *tx = mpc8xxx_spi->tx; \
145 if (!tx) \ 144 if (!tx) \
146 return 0; \ 145 return 0; \
147 data = *tx++ << mpc83xx_spi->tx_shift; \ 146 data = *tx++ << mpc8xxx_spi->tx_shift; \
148 mpc83xx_spi->tx = tx; \ 147 mpc8xxx_spi->tx = tx; \
149 return data; \ 148 return data; \
150} 149}
151 150
@@ -156,12 +155,12 @@ MPC83XX_SPI_TX_BUF(u8)
156MPC83XX_SPI_TX_BUF(u16) 155MPC83XX_SPI_TX_BUF(u16)
157MPC83XX_SPI_TX_BUF(u32) 156MPC83XX_SPI_TX_BUF(u32)
158 157
159static void mpc83xx_spi_chipselect(struct spi_device *spi, int value) 158static void mpc8xxx_spi_chipselect(struct spi_device *spi, int value)
160{ 159{
161 struct mpc83xx_spi *mpc83xx_spi = spi_master_get_devdata(spi->master); 160 struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master);
162 struct fsl_spi_platform_data *pdata = spi->dev.parent->platform_data; 161 struct fsl_spi_platform_data *pdata = spi->dev.parent->platform_data;
163 bool pol = spi->mode & SPI_CS_HIGH; 162 bool pol = spi->mode & SPI_CS_HIGH;
164 struct spi_mpc83xx_cs *cs = spi->controller_state; 163 struct spi_mpc8xxx_cs *cs = spi->controller_state;
165 164
166 if (value == BITBANG_CS_INACTIVE) { 165 if (value == BITBANG_CS_INACTIVE) {
167 if (pdata->cs_control) 166 if (pdata->cs_control)
@@ -169,16 +168,16 @@ static void mpc83xx_spi_chipselect(struct spi_device *spi, int value)
169 } 168 }
170 169
171 if (value == BITBANG_CS_ACTIVE) { 170 if (value == BITBANG_CS_ACTIVE) {
172 u32 regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); 171 u32 regval = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode);
173 172
174 mpc83xx_spi->rx_shift = cs->rx_shift; 173 mpc8xxx_spi->rx_shift = cs->rx_shift;
175 mpc83xx_spi->tx_shift = cs->tx_shift; 174 mpc8xxx_spi->tx_shift = cs->tx_shift;
176 mpc83xx_spi->get_rx = cs->get_rx; 175 mpc8xxx_spi->get_rx = cs->get_rx;
177 mpc83xx_spi->get_tx = cs->get_tx; 176 mpc8xxx_spi->get_tx = cs->get_tx;
178 177
179 if (cs->hw_mode != regval) { 178 if (cs->hw_mode != regval) {
180 unsigned long flags; 179 unsigned long flags;
181 __be32 __iomem *mode = &mpc83xx_spi->base->mode; 180 __be32 __iomem *mode = &mpc8xxx_spi->base->mode;
182 181
183 regval = cs->hw_mode; 182 regval = cs->hw_mode;
184 /* Turn off IRQs locally to minimize time that 183 /* Turn off IRQs locally to minimize time that
@@ -186,8 +185,8 @@ static void mpc83xx_spi_chipselect(struct spi_device *spi, int value)
186 */ 185 */
187 local_irq_save(flags); 186 local_irq_save(flags);
188 /* Turn off SPI unit prior changing mode */ 187 /* Turn off SPI unit prior changing mode */
189 mpc83xx_spi_write_reg(mode, regval & ~SPMODE_ENABLE); 188 mpc8xxx_spi_write_reg(mode, regval & ~SPMODE_ENABLE);
190 mpc83xx_spi_write_reg(mode, regval); 189 mpc8xxx_spi_write_reg(mode, regval);
191 local_irq_restore(flags); 190 local_irq_restore(flags);
192 } 191 }
193 if (pdata->cs_control) 192 if (pdata->cs_control)
@@ -196,15 +195,15 @@ static void mpc83xx_spi_chipselect(struct spi_device *spi, int value)
196} 195}
197 196
198static 197static
199int mpc83xx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t) 198int mpc8xxx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
200{ 199{
201 struct mpc83xx_spi *mpc83xx_spi; 200 struct mpc8xxx_spi *mpc8xxx_spi;
202 u32 regval; 201 u32 regval;
203 u8 bits_per_word, pm; 202 u8 bits_per_word, pm;
204 u32 hz; 203 u32 hz;
205 struct spi_mpc83xx_cs *cs = spi->controller_state; 204 struct spi_mpc8xxx_cs *cs = spi->controller_state;
206 205
207 mpc83xx_spi = spi_master_get_devdata(spi->master); 206 mpc8xxx_spi = spi_master_get_devdata(spi->master);
208 207
209 if (t) { 208 if (t) {
210 bits_per_word = t->bits_per_word; 209 bits_per_word = t->bits_per_word;
@@ -229,26 +228,26 @@ int mpc83xx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
229 cs->rx_shift = 0; 228 cs->rx_shift = 0;
230 cs->tx_shift = 0; 229 cs->tx_shift = 0;
231 if (bits_per_word <= 8) { 230 if (bits_per_word <= 8) {
232 cs->get_rx = mpc83xx_spi_rx_buf_u8; 231 cs->get_rx = mpc8xxx_spi_rx_buf_u8;
233 cs->get_tx = mpc83xx_spi_tx_buf_u8; 232 cs->get_tx = mpc8xxx_spi_tx_buf_u8;
234 if (mpc83xx_spi->qe_mode) { 233 if (mpc8xxx_spi->qe_mode) {
235 cs->rx_shift = 16; 234 cs->rx_shift = 16;
236 cs->tx_shift = 24; 235 cs->tx_shift = 24;
237 } 236 }
238 } else if (bits_per_word <= 16) { 237 } else if (bits_per_word <= 16) {
239 cs->get_rx = mpc83xx_spi_rx_buf_u16; 238 cs->get_rx = mpc8xxx_spi_rx_buf_u16;
240 cs->get_tx = mpc83xx_spi_tx_buf_u16; 239 cs->get_tx = mpc8xxx_spi_tx_buf_u16;
241 if (mpc83xx_spi->qe_mode) { 240 if (mpc8xxx_spi->qe_mode) {
242 cs->rx_shift = 16; 241 cs->rx_shift = 16;
243 cs->tx_shift = 16; 242 cs->tx_shift = 16;
244 } 243 }
245 } else if (bits_per_word <= 32) { 244 } else if (bits_per_word <= 32) {
246 cs->get_rx = mpc83xx_spi_rx_buf_u32; 245 cs->get_rx = mpc8xxx_spi_rx_buf_u32;
247 cs->get_tx = mpc83xx_spi_tx_buf_u32; 246 cs->get_tx = mpc8xxx_spi_tx_buf_u32;
248 } else 247 } else
249 return -EINVAL; 248 return -EINVAL;
250 249
251 if (mpc83xx_spi->qe_mode && spi->mode & SPI_LSB_FIRST) { 250 if (mpc8xxx_spi->qe_mode && spi->mode & SPI_LSB_FIRST) {
252 cs->tx_shift = 0; 251 cs->tx_shift = 0;
253 if (bits_per_word <= 8) 252 if (bits_per_word <= 8)
254 cs->rx_shift = 8; 253 cs->rx_shift = 8;
@@ -256,10 +255,10 @@ int mpc83xx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
256 cs->rx_shift = 0; 255 cs->rx_shift = 0;
257 } 256 }
258 257
259 mpc83xx_spi->rx_shift = cs->rx_shift; 258 mpc8xxx_spi->rx_shift = cs->rx_shift;
260 mpc83xx_spi->tx_shift = cs->tx_shift; 259 mpc8xxx_spi->tx_shift = cs->tx_shift;
261 mpc83xx_spi->get_rx = cs->get_rx; 260 mpc8xxx_spi->get_rx = cs->get_rx;
262 mpc83xx_spi->get_tx = cs->get_tx; 261 mpc8xxx_spi->get_tx = cs->get_tx;
263 262
264 if (bits_per_word == 32) 263 if (bits_per_word == 32)
265 bits_per_word = 0; 264 bits_per_word = 0;
@@ -272,25 +271,25 @@ int mpc83xx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
272 271
273 cs->hw_mode |= SPMODE_LEN(bits_per_word); 272 cs->hw_mode |= SPMODE_LEN(bits_per_word);
274 273
275 if ((mpc83xx_spi->spibrg / hz) > 64) { 274 if ((mpc8xxx_spi->spibrg / hz) > 64) {
276 cs->hw_mode |= SPMODE_DIV16; 275 cs->hw_mode |= SPMODE_DIV16;
277 pm = mpc83xx_spi->spibrg / (hz * 64); 276 pm = mpc8xxx_spi->spibrg / (hz * 64);
278 if (pm > 16) { 277
279 dev_err(&spi->dev, "Requested speed is too " 278 WARN_ONCE(pm > 16, "%s: Requested speed is too low: %d Hz. "
280 "low: %d Hz. Will use %d Hz instead.\n", 279 "Will use %d Hz instead.\n", dev_name(&spi->dev),
281 hz, mpc83xx_spi->spibrg / 1024); 280 hz, mpc8xxx_spi->spibrg / 1024);
281 if (pm > 16)
282 pm = 16; 282 pm = 16;
283 }
284 } else 283 } else
285 pm = mpc83xx_spi->spibrg / (hz * 4); 284 pm = mpc8xxx_spi->spibrg / (hz * 4);
286 if (pm) 285 if (pm)
287 pm--; 286 pm--;
288 287
289 cs->hw_mode |= SPMODE_PM(pm); 288 cs->hw_mode |= SPMODE_PM(pm);
290 regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); 289 regval = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode);
291 if (cs->hw_mode != regval) { 290 if (cs->hw_mode != regval) {
292 unsigned long flags; 291 unsigned long flags;
293 __be32 __iomem *mode = &mpc83xx_spi->base->mode; 292 __be32 __iomem *mode = &mpc8xxx_spi->base->mode;
294 293
295 regval = cs->hw_mode; 294 regval = cs->hw_mode;
296 /* Turn off IRQs locally to minimize time 295 /* Turn off IRQs locally to minimize time
@@ -298,22 +297,22 @@ int mpc83xx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
298 */ 297 */
299 local_irq_save(flags); 298 local_irq_save(flags);
300 /* Turn off SPI unit prior changing mode */ 299 /* Turn off SPI unit prior changing mode */
301 mpc83xx_spi_write_reg(mode, regval & ~SPMODE_ENABLE); 300 mpc8xxx_spi_write_reg(mode, regval & ~SPMODE_ENABLE);
302 mpc83xx_spi_write_reg(mode, regval); 301 mpc8xxx_spi_write_reg(mode, regval);
303 local_irq_restore(flags); 302 local_irq_restore(flags);
304 } 303 }
305 return 0; 304 return 0;
306} 305}
307 306
308static int mpc83xx_spi_bufs(struct spi_device *spi, struct spi_transfer *t) 307static int mpc8xxx_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
309{ 308{
310 struct mpc83xx_spi *mpc83xx_spi; 309 struct mpc8xxx_spi *mpc8xxx_spi;
311 u32 word, len, bits_per_word; 310 u32 word, len, bits_per_word;
312 311
313 mpc83xx_spi = spi_master_get_devdata(spi->master); 312 mpc8xxx_spi = spi_master_get_devdata(spi->master);
314 313
315 mpc83xx_spi->tx = t->tx_buf; 314 mpc8xxx_spi->tx = t->tx_buf;
316 mpc83xx_spi->rx = t->rx_buf; 315 mpc8xxx_spi->rx = t->rx_buf;
317 bits_per_word = spi->bits_per_word; 316 bits_per_word = spi->bits_per_word;
318 if (t->bits_per_word) 317 if (t->bits_per_word)
319 bits_per_word = t->bits_per_word; 318 bits_per_word = t->bits_per_word;
@@ -330,101 +329,106 @@ static int mpc83xx_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
330 return -EINVAL; 329 return -EINVAL;
331 len /= 2; 330 len /= 2;
332 } 331 }
333 mpc83xx_spi->count = len; 332 mpc8xxx_spi->count = len;
334 333
335 INIT_COMPLETION(mpc83xx_spi->done); 334 INIT_COMPLETION(mpc8xxx_spi->done);
336 335
337 /* enable rx ints */ 336 /* enable rx ints */
338 mpc83xx_spi_write_reg(&mpc83xx_spi->base->mask, SPIM_NE); 337 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mask, SPIM_NE);
339 338
340 /* transmit word */ 339 /* transmit word */
341 word = mpc83xx_spi->get_tx(mpc83xx_spi); 340 word = mpc8xxx_spi->get_tx(mpc8xxx_spi);
342 mpc83xx_spi_write_reg(&mpc83xx_spi->base->transmit, word); 341 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->transmit, word);
343 342
344 wait_for_completion(&mpc83xx_spi->done); 343 wait_for_completion(&mpc8xxx_spi->done);
345 344
346 /* disable rx ints */ 345 /* disable rx ints */
347 mpc83xx_spi_write_reg(&mpc83xx_spi->base->mask, 0); 346 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mask, 0);
348 347
349 return mpc83xx_spi->count; 348 return mpc8xxx_spi->count;
350} 349}
351 350
352static void mpc83xx_spi_work(struct work_struct *work) 351static void mpc8xxx_spi_do_one_msg(struct spi_message *m)
353{ 352{
354 struct mpc83xx_spi *mpc83xx_spi = 353 struct spi_device *spi = m->spi;
355 container_of(work, struct mpc83xx_spi, work); 354 struct spi_transfer *t;
356 355 unsigned int cs_change;
357 spin_lock_irq(&mpc83xx_spi->lock); 356 const int nsecs = 50;
358 mpc83xx_spi->busy = 1; 357 int status;
359 while (!list_empty(&mpc83xx_spi->queue)) { 358
360 struct spi_message *m; 359 cs_change = 1;
361 struct spi_device *spi; 360 status = 0;
362 struct spi_transfer *t = NULL; 361 list_for_each_entry(t, &m->transfers, transfer_list) {
363 unsigned cs_change; 362 if (t->bits_per_word || t->speed_hz) {
364 int status, nsecs = 50; 363 /* Don't allow changes if CS is active */
365 364 status = -EINVAL;
366 m = container_of(mpc83xx_spi->queue.next,
367 struct spi_message, queue);
368 list_del_init(&m->queue);
369 spin_unlock_irq(&mpc83xx_spi->lock);
370
371 spi = m->spi;
372 cs_change = 1;
373 status = 0;
374 list_for_each_entry(t, &m->transfers, transfer_list) {
375 if (t->bits_per_word || t->speed_hz) {
376 /* Don't allow changes if CS is active */
377 status = -EINVAL;
378
379 if (cs_change)
380 status = mpc83xx_spi_setup_transfer(spi, t);
381 if (status < 0)
382 break;
383 }
384 365
385 if (cs_change) 366 if (cs_change)
386 mpc83xx_spi_chipselect(spi, BITBANG_CS_ACTIVE); 367 status = mpc8xxx_spi_setup_transfer(spi, t);
387 cs_change = t->cs_change; 368 if (status < 0)
388 if (t->len)
389 status = mpc83xx_spi_bufs(spi, t);
390 if (status) {
391 status = -EMSGSIZE;
392 break; 369 break;
393 } 370 }
394 m->actual_length += t->len;
395
396 if (t->delay_usecs)
397 udelay(t->delay_usecs);
398 371
399 if (cs_change) { 372 if (cs_change) {
400 ndelay(nsecs); 373 mpc8xxx_spi_chipselect(spi, BITBANG_CS_ACTIVE);
401 mpc83xx_spi_chipselect(spi, BITBANG_CS_INACTIVE); 374 ndelay(nsecs);
402 ndelay(nsecs); 375 }
403 } 376 cs_change = t->cs_change;
377 if (t->len)
378 status = mpc8xxx_spi_bufs(spi, t);
379 if (status) {
380 status = -EMSGSIZE;
381 break;
404 } 382 }
383 m->actual_length += t->len;
405 384
406 m->status = status; 385 if (t->delay_usecs)
407 m->complete(m->context); 386 udelay(t->delay_usecs);
408 387
409 if (status || !cs_change) { 388 if (cs_change) {
389 ndelay(nsecs);
390 mpc8xxx_spi_chipselect(spi, BITBANG_CS_INACTIVE);
410 ndelay(nsecs); 391 ndelay(nsecs);
411 mpc83xx_spi_chipselect(spi, BITBANG_CS_INACTIVE);
412 } 392 }
393 }
413 394
414 mpc83xx_spi_setup_transfer(spi, NULL); 395 m->status = status;
396 m->complete(m->context);
415 397
416 spin_lock_irq(&mpc83xx_spi->lock); 398 if (status || !cs_change) {
399 ndelay(nsecs);
400 mpc8xxx_spi_chipselect(spi, BITBANG_CS_INACTIVE);
417 } 401 }
418 mpc83xx_spi->busy = 0; 402
419 spin_unlock_irq(&mpc83xx_spi->lock); 403 mpc8xxx_spi_setup_transfer(spi, NULL);
420} 404}
421 405
422static int mpc83xx_spi_setup(struct spi_device *spi) 406static void mpc8xxx_spi_work(struct work_struct *work)
423{ 407{
424 struct mpc83xx_spi *mpc83xx_spi; 408 struct mpc8xxx_spi *mpc8xxx_spi = container_of(work, struct mpc8xxx_spi,
409 work);
410
411 spin_lock_irq(&mpc8xxx_spi->lock);
412 while (!list_empty(&mpc8xxx_spi->queue)) {
413 struct spi_message *m = container_of(mpc8xxx_spi->queue.next,
414 struct spi_message, queue);
415
416 list_del_init(&m->queue);
417 spin_unlock_irq(&mpc8xxx_spi->lock);
418
419 mpc8xxx_spi_do_one_msg(m);
420
421 spin_lock_irq(&mpc8xxx_spi->lock);
422 }
423 spin_unlock_irq(&mpc8xxx_spi->lock);
424}
425
426static int mpc8xxx_spi_setup(struct spi_device *spi)
427{
428 struct mpc8xxx_spi *mpc8xxx_spi;
425 int retval; 429 int retval;
426 u32 hw_mode; 430 u32 hw_mode;
427 struct spi_mpc83xx_cs *cs = spi->controller_state; 431 struct spi_mpc8xxx_cs *cs = spi->controller_state;
428 432
429 if (!spi->max_speed_hz) 433 if (!spi->max_speed_hz)
430 return -EINVAL; 434 return -EINVAL;
@@ -435,10 +439,10 @@ static int mpc83xx_spi_setup(struct spi_device *spi)
435 return -ENOMEM; 439 return -ENOMEM;
436 spi->controller_state = cs; 440 spi->controller_state = cs;
437 } 441 }
438 mpc83xx_spi = spi_master_get_devdata(spi->master); 442 mpc8xxx_spi = spi_master_get_devdata(spi->master);
439 443
440 hw_mode = cs->hw_mode; /* Save orginal settings */ 444 hw_mode = cs->hw_mode; /* Save orginal settings */
441 cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); 445 cs->hw_mode = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode);
442 /* mask out bits we are going to set */ 446 /* mask out bits we are going to set */
443 cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH 447 cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH
444 | SPMODE_REV | SPMODE_LOOP); 448 | SPMODE_REV | SPMODE_LOOP);
@@ -452,42 +456,29 @@ static int mpc83xx_spi_setup(struct spi_device *spi)
452 if (spi->mode & SPI_LOOP) 456 if (spi->mode & SPI_LOOP)
453 cs->hw_mode |= SPMODE_LOOP; 457 cs->hw_mode |= SPMODE_LOOP;
454 458
455 retval = mpc83xx_spi_setup_transfer(spi, NULL); 459 retval = mpc8xxx_spi_setup_transfer(spi, NULL);
456 if (retval < 0) { 460 if (retval < 0) {
457 cs->hw_mode = hw_mode; /* Restore settings */ 461 cs->hw_mode = hw_mode; /* Restore settings */
458 return retval; 462 return retval;
459 } 463 }
460
461#if 0 /* Don't think this is needed */
462 /* NOTE we _need_ to call chipselect() early, ideally with adapter
463 * setup, unless the hardware defaults cooperate to avoid confusion
464 * between normal (active low) and inverted chipselects.
465 */
466
467 /* deselect chip (low or high) */
468 spin_lock(&mpc83xx_spi->lock);
469 if (!mpc83xx_spi->busy)
470 mpc83xx_spi_chipselect(spi, BITBANG_CS_INACTIVE);
471 spin_unlock(&mpc83xx_spi->lock);
472#endif
473 return 0; 464 return 0;
474} 465}
475 466
476static irqreturn_t mpc83xx_spi_irq(s32 irq, void *context_data) 467static irqreturn_t mpc8xxx_spi_irq(s32 irq, void *context_data)
477{ 468{
478 struct mpc83xx_spi *mpc83xx_spi = context_data; 469 struct mpc8xxx_spi *mpc8xxx_spi = context_data;
479 u32 event; 470 u32 event;
480 irqreturn_t ret = IRQ_NONE; 471 irqreturn_t ret = IRQ_NONE;
481 472
482 /* Get interrupt events(tx/rx) */ 473 /* Get interrupt events(tx/rx) */
483 event = mpc83xx_spi_read_reg(&mpc83xx_spi->base->event); 474 event = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->event);
484 475
485 /* We need handle RX first */ 476 /* We need handle RX first */
486 if (event & SPIE_NE) { 477 if (event & SPIE_NE) {
487 u32 rx_data = mpc83xx_spi_read_reg(&mpc83xx_spi->base->receive); 478 u32 rx_data = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->receive);
488 479
489 if (mpc83xx_spi->rx) 480 if (mpc8xxx_spi->rx)
490 mpc83xx_spi->get_rx(rx_data, mpc83xx_spi); 481 mpc8xxx_spi->get_rx(rx_data, mpc8xxx_spi);
491 482
492 ret = IRQ_HANDLED; 483 ret = IRQ_HANDLED;
493 } 484 }
@@ -495,56 +486,56 @@ static irqreturn_t mpc83xx_spi_irq(s32 irq, void *context_data)
495 if ((event & SPIE_NF) == 0) 486 if ((event & SPIE_NF) == 0)
496 /* spin until TX is done */ 487 /* spin until TX is done */
497 while (((event = 488 while (((event =
498 mpc83xx_spi_read_reg(&mpc83xx_spi->base->event)) & 489 mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->event)) &
499 SPIE_NF) == 0) 490 SPIE_NF) == 0)
500 cpu_relax(); 491 cpu_relax();
501 492
502 mpc83xx_spi->count -= 1; 493 mpc8xxx_spi->count -= 1;
503 if (mpc83xx_spi->count) { 494 if (mpc8xxx_spi->count) {
504 u32 word = mpc83xx_spi->get_tx(mpc83xx_spi); 495 u32 word = mpc8xxx_spi->get_tx(mpc8xxx_spi);
505 mpc83xx_spi_write_reg(&mpc83xx_spi->base->transmit, word); 496 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->transmit, word);
506 } else { 497 } else {
507 complete(&mpc83xx_spi->done); 498 complete(&mpc8xxx_spi->done);
508 } 499 }
509 500
510 /* Clear the events */ 501 /* Clear the events */
511 mpc83xx_spi_write_reg(&mpc83xx_spi->base->event, event); 502 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->event, event);
512 503
513 return ret; 504 return ret;
514} 505}
515static int mpc83xx_spi_transfer(struct spi_device *spi, 506static int mpc8xxx_spi_transfer(struct spi_device *spi,
516 struct spi_message *m) 507 struct spi_message *m)
517{ 508{
518 struct mpc83xx_spi *mpc83xx_spi = spi_master_get_devdata(spi->master); 509 struct mpc8xxx_spi *mpc8xxx_spi = spi_master_get_devdata(spi->master);
519 unsigned long flags; 510 unsigned long flags;
520 511
521 m->actual_length = 0; 512 m->actual_length = 0;
522 m->status = -EINPROGRESS; 513 m->status = -EINPROGRESS;
523 514
524 spin_lock_irqsave(&mpc83xx_spi->lock, flags); 515 spin_lock_irqsave(&mpc8xxx_spi->lock, flags);
525 list_add_tail(&m->queue, &mpc83xx_spi->queue); 516 list_add_tail(&m->queue, &mpc8xxx_spi->queue);
526 queue_work(mpc83xx_spi->workqueue, &mpc83xx_spi->work); 517 queue_work(mpc8xxx_spi->workqueue, &mpc8xxx_spi->work);
527 spin_unlock_irqrestore(&mpc83xx_spi->lock, flags); 518 spin_unlock_irqrestore(&mpc8xxx_spi->lock, flags);
528 519
529 return 0; 520 return 0;
530} 521}
531 522
532 523
533static void mpc83xx_spi_cleanup(struct spi_device *spi) 524static void mpc8xxx_spi_cleanup(struct spi_device *spi)
534{ 525{
535 kfree(spi->controller_state); 526 kfree(spi->controller_state);
536} 527}
537 528
538static struct spi_master * __devinit 529static struct spi_master * __devinit
539mpc83xx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq) 530mpc8xxx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
540{ 531{
541 struct fsl_spi_platform_data *pdata = dev->platform_data; 532 struct fsl_spi_platform_data *pdata = dev->platform_data;
542 struct spi_master *master; 533 struct spi_master *master;
543 struct mpc83xx_spi *mpc83xx_spi; 534 struct mpc8xxx_spi *mpc8xxx_spi;
544 u32 regval; 535 u32 regval;
545 int ret = 0; 536 int ret = 0;
546 537
547 master = spi_alloc_master(dev, sizeof(struct mpc83xx_spi)); 538 master = spi_alloc_master(dev, sizeof(struct mpc8xxx_spi));
548 if (master == NULL) { 539 if (master == NULL) {
549 ret = -ENOMEM; 540 ret = -ENOMEM;
550 goto err; 541 goto err;
@@ -556,36 +547,36 @@ mpc83xx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
556 master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH 547 master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH
557 | SPI_LSB_FIRST | SPI_LOOP; 548 | SPI_LSB_FIRST | SPI_LOOP;
558 549
559 master->setup = mpc83xx_spi_setup; 550 master->setup = mpc8xxx_spi_setup;
560 master->transfer = mpc83xx_spi_transfer; 551 master->transfer = mpc8xxx_spi_transfer;
561 master->cleanup = mpc83xx_spi_cleanup; 552 master->cleanup = mpc8xxx_spi_cleanup;
562 553
563 mpc83xx_spi = spi_master_get_devdata(master); 554 mpc8xxx_spi = spi_master_get_devdata(master);
564 mpc83xx_spi->qe_mode = pdata->qe_mode; 555 mpc8xxx_spi->qe_mode = pdata->qe_mode;
565 mpc83xx_spi->get_rx = mpc83xx_spi_rx_buf_u8; 556 mpc8xxx_spi->get_rx = mpc8xxx_spi_rx_buf_u8;
566 mpc83xx_spi->get_tx = mpc83xx_spi_tx_buf_u8; 557 mpc8xxx_spi->get_tx = mpc8xxx_spi_tx_buf_u8;
567 mpc83xx_spi->spibrg = pdata->sysclk; 558 mpc8xxx_spi->spibrg = pdata->sysclk;
568 559
569 mpc83xx_spi->rx_shift = 0; 560 mpc8xxx_spi->rx_shift = 0;
570 mpc83xx_spi->tx_shift = 0; 561 mpc8xxx_spi->tx_shift = 0;
571 if (mpc83xx_spi->qe_mode) { 562 if (mpc8xxx_spi->qe_mode) {
572 mpc83xx_spi->rx_shift = 16; 563 mpc8xxx_spi->rx_shift = 16;
573 mpc83xx_spi->tx_shift = 24; 564 mpc8xxx_spi->tx_shift = 24;
574 } 565 }
575 566
576 init_completion(&mpc83xx_spi->done); 567 init_completion(&mpc8xxx_spi->done);
577 568
578 mpc83xx_spi->base = ioremap(mem->start, mem->end - mem->start + 1); 569 mpc8xxx_spi->base = ioremap(mem->start, mem->end - mem->start + 1);
579 if (mpc83xx_spi->base == NULL) { 570 if (mpc8xxx_spi->base == NULL) {
580 ret = -ENOMEM; 571 ret = -ENOMEM;
581 goto put_master; 572 goto put_master;
582 } 573 }
583 574
584 mpc83xx_spi->irq = irq; 575 mpc8xxx_spi->irq = irq;
585 576
586 /* Register for SPI Interrupt */ 577 /* Register for SPI Interrupt */
587 ret = request_irq(mpc83xx_spi->irq, mpc83xx_spi_irq, 578 ret = request_irq(mpc8xxx_spi->irq, mpc8xxx_spi_irq,
588 0, "mpc83xx_spi", mpc83xx_spi); 579 0, "mpc8xxx_spi", mpc8xxx_spi);
589 580
590 if (ret != 0) 581 if (ret != 0)
591 goto unmap_io; 582 goto unmap_io;
@@ -594,25 +585,25 @@ mpc83xx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
594 master->num_chipselect = pdata->max_chipselect; 585 master->num_chipselect = pdata->max_chipselect;
595 586
596 /* SPI controller initializations */ 587 /* SPI controller initializations */
597 mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode, 0); 588 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mode, 0);
598 mpc83xx_spi_write_reg(&mpc83xx_spi->base->mask, 0); 589 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mask, 0);
599 mpc83xx_spi_write_reg(&mpc83xx_spi->base->command, 0); 590 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->command, 0);
600 mpc83xx_spi_write_reg(&mpc83xx_spi->base->event, 0xffffffff); 591 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->event, 0xffffffff);
601 592
602 /* Enable SPI interface */ 593 /* Enable SPI interface */
603 regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE; 594 regval = pdata->initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE;
604 if (pdata->qe_mode) 595 if (pdata->qe_mode)
605 regval |= SPMODE_OP; 596 regval |= SPMODE_OP;
606 597
607 mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode, regval); 598 mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mode, regval);
608 spin_lock_init(&mpc83xx_spi->lock); 599 spin_lock_init(&mpc8xxx_spi->lock);
609 init_completion(&mpc83xx_spi->done); 600 init_completion(&mpc8xxx_spi->done);
610 INIT_WORK(&mpc83xx_spi->work, mpc83xx_spi_work); 601 INIT_WORK(&mpc8xxx_spi->work, mpc8xxx_spi_work);
611 INIT_LIST_HEAD(&mpc83xx_spi->queue); 602 INIT_LIST_HEAD(&mpc8xxx_spi->queue);
612 603
613 mpc83xx_spi->workqueue = create_singlethread_workqueue( 604 mpc8xxx_spi->workqueue = create_singlethread_workqueue(
614 dev_name(master->dev.parent)); 605 dev_name(master->dev.parent));
615 if (mpc83xx_spi->workqueue == NULL) { 606 if (mpc8xxx_spi->workqueue == NULL) {
616 ret = -EBUSY; 607 ret = -EBUSY;
617 goto free_irq; 608 goto free_irq;
618 } 609 }
@@ -622,57 +613,57 @@ mpc83xx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
622 goto unreg_master; 613 goto unreg_master;
623 614
624 printk(KERN_INFO 615 printk(KERN_INFO
625 "%s: MPC83xx SPI Controller driver at 0x%p (irq = %d)\n", 616 "%s: MPC8xxx SPI Controller driver at 0x%p (irq = %d)\n",
626 dev_name(dev), mpc83xx_spi->base, mpc83xx_spi->irq); 617 dev_name(dev), mpc8xxx_spi->base, mpc8xxx_spi->irq);
627 618
628 return master; 619 return master;
629 620
630unreg_master: 621unreg_master:
631 destroy_workqueue(mpc83xx_spi->workqueue); 622 destroy_workqueue(mpc8xxx_spi->workqueue);
632free_irq: 623free_irq:
633 free_irq(mpc83xx_spi->irq, mpc83xx_spi); 624 free_irq(mpc8xxx_spi->irq, mpc8xxx_spi);
634unmap_io: 625unmap_io:
635 iounmap(mpc83xx_spi->base); 626 iounmap(mpc8xxx_spi->base);
636put_master: 627put_master:
637 spi_master_put(master); 628 spi_master_put(master);
638err: 629err:
639 return ERR_PTR(ret); 630 return ERR_PTR(ret);
640} 631}
641 632
642static int __devexit mpc83xx_spi_remove(struct device *dev) 633static int __devexit mpc8xxx_spi_remove(struct device *dev)
643{ 634{
644 struct mpc83xx_spi *mpc83xx_spi; 635 struct mpc8xxx_spi *mpc8xxx_spi;
645 struct spi_master *master; 636 struct spi_master *master;
646 637
647 master = dev_get_drvdata(dev); 638 master = dev_get_drvdata(dev);
648 mpc83xx_spi = spi_master_get_devdata(master); 639 mpc8xxx_spi = spi_master_get_devdata(master);
649 640
650 flush_workqueue(mpc83xx_spi->workqueue); 641 flush_workqueue(mpc8xxx_spi->workqueue);
651 destroy_workqueue(mpc83xx_spi->workqueue); 642 destroy_workqueue(mpc8xxx_spi->workqueue);
652 spi_unregister_master(master); 643 spi_unregister_master(master);
653 644
654 free_irq(mpc83xx_spi->irq, mpc83xx_spi); 645 free_irq(mpc8xxx_spi->irq, mpc8xxx_spi);
655 iounmap(mpc83xx_spi->base); 646 iounmap(mpc8xxx_spi->base);
656 647
657 return 0; 648 return 0;
658} 649}
659 650
660struct mpc83xx_spi_probe_info { 651struct mpc8xxx_spi_probe_info {
661 struct fsl_spi_platform_data pdata; 652 struct fsl_spi_platform_data pdata;
662 int *gpios; 653 int *gpios;
663 bool *alow_flags; 654 bool *alow_flags;
664}; 655};
665 656
666static struct mpc83xx_spi_probe_info * 657static struct mpc8xxx_spi_probe_info *
667to_of_pinfo(struct fsl_spi_platform_data *pdata) 658to_of_pinfo(struct fsl_spi_platform_data *pdata)
668{ 659{
669 return container_of(pdata, struct mpc83xx_spi_probe_info, pdata); 660 return container_of(pdata, struct mpc8xxx_spi_probe_info, pdata);
670} 661}
671 662
672static void mpc83xx_spi_cs_control(struct spi_device *spi, bool on) 663static void mpc8xxx_spi_cs_control(struct spi_device *spi, bool on)
673{ 664{
674 struct device *dev = spi->dev.parent; 665 struct device *dev = spi->dev.parent;
675 struct mpc83xx_spi_probe_info *pinfo = to_of_pinfo(dev->platform_data); 666 struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(dev->platform_data);
676 u16 cs = spi->chip_select; 667 u16 cs = spi->chip_select;
677 int gpio = pinfo->gpios[cs]; 668 int gpio = pinfo->gpios[cs];
678 bool alow = pinfo->alow_flags[cs]; 669 bool alow = pinfo->alow_flags[cs];
@@ -680,11 +671,11 @@ static void mpc83xx_spi_cs_control(struct spi_device *spi, bool on)
680 gpio_set_value(gpio, on ^ alow); 671 gpio_set_value(gpio, on ^ alow);
681} 672}
682 673
683static int of_mpc83xx_spi_get_chipselects(struct device *dev) 674static int of_mpc8xxx_spi_get_chipselects(struct device *dev)
684{ 675{
685 struct device_node *np = dev_archdata_get_node(&dev->archdata); 676 struct device_node *np = dev_archdata_get_node(&dev->archdata);
686 struct fsl_spi_platform_data *pdata = dev->platform_data; 677 struct fsl_spi_platform_data *pdata = dev->platform_data;
687 struct mpc83xx_spi_probe_info *pinfo = to_of_pinfo(pdata); 678 struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(pdata);
688 unsigned int ngpios; 679 unsigned int ngpios;
689 int i = 0; 680 int i = 0;
690 int ret; 681 int ret;
@@ -740,7 +731,7 @@ static int of_mpc83xx_spi_get_chipselects(struct device *dev)
740 } 731 }
741 732
742 pdata->max_chipselect = ngpios; 733 pdata->max_chipselect = ngpios;
743 pdata->cs_control = mpc83xx_spi_cs_control; 734 pdata->cs_control = mpc8xxx_spi_cs_control;
744 735
745 return 0; 736 return 0;
746 737
@@ -759,10 +750,10 @@ err_alloc_flags:
759 return ret; 750 return ret;
760} 751}
761 752
762static int of_mpc83xx_spi_free_chipselects(struct device *dev) 753static int of_mpc8xxx_spi_free_chipselects(struct device *dev)
763{ 754{
764 struct fsl_spi_platform_data *pdata = dev->platform_data; 755 struct fsl_spi_platform_data *pdata = dev->platform_data;
765 struct mpc83xx_spi_probe_info *pinfo = to_of_pinfo(pdata); 756 struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(pdata);
766 int i; 757 int i;
767 758
768 if (!pinfo->gpios) 759 if (!pinfo->gpios)
@@ -778,12 +769,12 @@ static int of_mpc83xx_spi_free_chipselects(struct device *dev)
778 return 0; 769 return 0;
779} 770}
780 771
781static int __devinit of_mpc83xx_spi_probe(struct of_device *ofdev, 772static int __devinit of_mpc8xxx_spi_probe(struct of_device *ofdev,
782 const struct of_device_id *ofid) 773 const struct of_device_id *ofid)
783{ 774{
784 struct device *dev = &ofdev->dev; 775 struct device *dev = &ofdev->dev;
785 struct device_node *np = ofdev->node; 776 struct device_node *np = ofdev->node;
786 struct mpc83xx_spi_probe_info *pinfo; 777 struct mpc8xxx_spi_probe_info *pinfo;
787 struct fsl_spi_platform_data *pdata; 778 struct fsl_spi_platform_data *pdata;
788 struct spi_master *master; 779 struct spi_master *master;
789 struct resource mem; 780 struct resource mem;
@@ -815,7 +806,7 @@ static int __devinit of_mpc83xx_spi_probe(struct of_device *ofdev,
815 if (prop && !strcmp(prop, "cpu-qe")) 806 if (prop && !strcmp(prop, "cpu-qe"))
816 pdata->qe_mode = 1; 807 pdata->qe_mode = 1;
817 808
818 ret = of_mpc83xx_spi_get_chipselects(dev); 809 ret = of_mpc8xxx_spi_get_chipselects(dev);
819 if (ret) 810 if (ret)
820 goto err; 811 goto err;
821 812
@@ -829,7 +820,7 @@ static int __devinit of_mpc83xx_spi_probe(struct of_device *ofdev,
829 goto err; 820 goto err;
830 } 821 }
831 822
832 master = mpc83xx_spi_probe(dev, &mem, irq.start); 823 master = mpc8xxx_spi_probe(dev, &mem, irq.start);
833 if (IS_ERR(master)) { 824 if (IS_ERR(master)) {
834 ret = PTR_ERR(master); 825 ret = PTR_ERR(master);
835 goto err; 826 goto err;
@@ -840,34 +831,34 @@ static int __devinit of_mpc83xx_spi_probe(struct of_device *ofdev,
840 return 0; 831 return 0;
841 832
842err: 833err:
843 of_mpc83xx_spi_free_chipselects(dev); 834 of_mpc8xxx_spi_free_chipselects(dev);
844err_clk: 835err_clk:
845 kfree(pinfo); 836 kfree(pinfo);
846 return ret; 837 return ret;
847} 838}
848 839
849static int __devexit of_mpc83xx_spi_remove(struct of_device *ofdev) 840static int __devexit of_mpc8xxx_spi_remove(struct of_device *ofdev)
850{ 841{
851 int ret; 842 int ret;
852 843
853 ret = mpc83xx_spi_remove(&ofdev->dev); 844 ret = mpc8xxx_spi_remove(&ofdev->dev);
854 if (ret) 845 if (ret)
855 return ret; 846 return ret;
856 of_mpc83xx_spi_free_chipselects(&ofdev->dev); 847 of_mpc8xxx_spi_free_chipselects(&ofdev->dev);
857 return 0; 848 return 0;
858} 849}
859 850
860static const struct of_device_id of_mpc83xx_spi_match[] = { 851static const struct of_device_id of_mpc8xxx_spi_match[] = {
861 { .compatible = "fsl,spi" }, 852 { .compatible = "fsl,spi" },
862 {}, 853 {},
863}; 854};
864MODULE_DEVICE_TABLE(of, of_mpc83xx_spi_match); 855MODULE_DEVICE_TABLE(of, of_mpc8xxx_spi_match);
865 856
866static struct of_platform_driver of_mpc83xx_spi_driver = { 857static struct of_platform_driver of_mpc8xxx_spi_driver = {
867 .name = "mpc83xx_spi", 858 .name = "mpc8xxx_spi",
868 .match_table = of_mpc83xx_spi_match, 859 .match_table = of_mpc8xxx_spi_match,
869 .probe = of_mpc83xx_spi_probe, 860 .probe = of_mpc8xxx_spi_probe,
870 .remove = __devexit_p(of_mpc83xx_spi_remove), 861 .remove = __devexit_p(of_mpc8xxx_spi_remove),
871}; 862};
872 863
873#ifdef CONFIG_MPC832x_RDB 864#ifdef CONFIG_MPC832x_RDB
@@ -878,7 +869,7 @@ static struct of_platform_driver of_mpc83xx_spi_driver = {
878 * tree can work with OpenFirmware driver. But for now we support old trees 869 * tree can work with OpenFirmware driver. But for now we support old trees
879 * as well. 870 * as well.
880 */ 871 */
881static int __devinit plat_mpc83xx_spi_probe(struct platform_device *pdev) 872static int __devinit plat_mpc8xxx_spi_probe(struct platform_device *pdev)
882{ 873{
883 struct resource *mem; 874 struct resource *mem;
884 unsigned int irq; 875 unsigned int irq;
@@ -895,23 +886,23 @@ static int __devinit plat_mpc83xx_spi_probe(struct platform_device *pdev)
895 if (!irq) 886 if (!irq)
896 return -EINVAL; 887 return -EINVAL;
897 888
898 master = mpc83xx_spi_probe(&pdev->dev, mem, irq); 889 master = mpc8xxx_spi_probe(&pdev->dev, mem, irq);
899 if (IS_ERR(master)) 890 if (IS_ERR(master))
900 return PTR_ERR(master); 891 return PTR_ERR(master);
901 return 0; 892 return 0;
902} 893}
903 894
904static int __devexit plat_mpc83xx_spi_remove(struct platform_device *pdev) 895static int __devexit plat_mpc8xxx_spi_remove(struct platform_device *pdev)
905{ 896{
906 return mpc83xx_spi_remove(&pdev->dev); 897 return mpc8xxx_spi_remove(&pdev->dev);
907} 898}
908 899
909MODULE_ALIAS("platform:mpc83xx_spi"); 900MODULE_ALIAS("platform:mpc8xxx_spi");
910static struct platform_driver mpc83xx_spi_driver = { 901static struct platform_driver mpc8xxx_spi_driver = {
911 .probe = plat_mpc83xx_spi_probe, 902 .probe = plat_mpc8xxx_spi_probe,
912 .remove = __exit_p(plat_mpc83xx_spi_remove), 903 .remove = __exit_p(plat_mpc8xxx_spi_remove),
913 .driver = { 904 .driver = {
914 .name = "mpc83xx_spi", 905 .name = "mpc8xxx_spi",
915 .owner = THIS_MODULE, 906 .owner = THIS_MODULE,
916 }, 907 },
917}; 908};
@@ -920,35 +911,35 @@ static bool legacy_driver_failed;
920 911
921static void __init legacy_driver_register(void) 912static void __init legacy_driver_register(void)
922{ 913{
923 legacy_driver_failed = platform_driver_register(&mpc83xx_spi_driver); 914 legacy_driver_failed = platform_driver_register(&mpc8xxx_spi_driver);
924} 915}
925 916
926static void __exit legacy_driver_unregister(void) 917static void __exit legacy_driver_unregister(void)
927{ 918{
928 if (legacy_driver_failed) 919 if (legacy_driver_failed)
929 return; 920 return;
930 platform_driver_unregister(&mpc83xx_spi_driver); 921 platform_driver_unregister(&mpc8xxx_spi_driver);
931} 922}
932#else 923#else
933static void __init legacy_driver_register(void) {} 924static void __init legacy_driver_register(void) {}
934static void __exit legacy_driver_unregister(void) {} 925static void __exit legacy_driver_unregister(void) {}
935#endif /* CONFIG_MPC832x_RDB */ 926#endif /* CONFIG_MPC832x_RDB */
936 927
937static int __init mpc83xx_spi_init(void) 928static int __init mpc8xxx_spi_init(void)
938{ 929{
939 legacy_driver_register(); 930 legacy_driver_register();
940 return of_register_platform_driver(&of_mpc83xx_spi_driver); 931 return of_register_platform_driver(&of_mpc8xxx_spi_driver);
941} 932}
942 933
943static void __exit mpc83xx_spi_exit(void) 934static void __exit mpc8xxx_spi_exit(void)
944{ 935{
945 of_unregister_platform_driver(&of_mpc83xx_spi_driver); 936 of_unregister_platform_driver(&of_mpc8xxx_spi_driver);
946 legacy_driver_unregister(); 937 legacy_driver_unregister();
947} 938}
948 939
949module_init(mpc83xx_spi_init); 940module_init(mpc8xxx_spi_init);
950module_exit(mpc83xx_spi_exit); 941module_exit(mpc8xxx_spi_exit);
951 942
952MODULE_AUTHOR("Kumar Gala"); 943MODULE_AUTHOR("Kumar Gala");
953MODULE_DESCRIPTION("Simple MPC83xx SPI Driver"); 944MODULE_DESCRIPTION("Simple MPC8xxx SPI Driver");
954MODULE_LICENSE("GPL"); 945MODULE_LICENSE("GPL");
diff --git a/drivers/usb/host/ehci-ps3.c b/drivers/usb/host/ehci-ps3.c
index eecd2a0680a2..93f7035d00a1 100644
--- a/drivers/usb/host/ehci-ps3.c
+++ b/drivers/usb/host/ehci-ps3.c
@@ -77,7 +77,7 @@ static const struct hc_driver ps3_ehci_hc_driver = {
77 .port_handed_over = ehci_port_handed_over, 77 .port_handed_over = ehci_port_handed_over,
78}; 78};
79 79
80static int ps3_ehci_probe(struct ps3_system_bus_device *dev) 80static int __devinit ps3_ehci_probe(struct ps3_system_bus_device *dev)
81{ 81{
82 int result; 82 int result;
83 struct usb_hcd *hcd; 83 struct usb_hcd *hcd;
@@ -225,7 +225,7 @@ static int ps3_ehci_remove(struct ps3_system_bus_device *dev)
225 return 0; 225 return 0;
226} 226}
227 227
228static int ps3_ehci_driver_register(struct ps3_system_bus_driver *drv) 228static int __init ps3_ehci_driver_register(struct ps3_system_bus_driver *drv)
229{ 229{
230 return firmware_has_feature(FW_FEATURE_PS3_LV1) 230 return firmware_has_feature(FW_FEATURE_PS3_LV1)
231 ? ps3_system_bus_driver_register(drv) 231 ? ps3_system_bus_driver_register(drv)
diff --git a/drivers/usb/host/ohci-ps3.c b/drivers/usb/host/ohci-ps3.c
index 1d56259c5db1..700950455f4d 100644
--- a/drivers/usb/host/ohci-ps3.c
+++ b/drivers/usb/host/ohci-ps3.c
@@ -75,7 +75,7 @@ static const struct hc_driver ps3_ohci_hc_driver = {
75#endif 75#endif
76}; 76};
77 77
78static int ps3_ohci_probe(struct ps3_system_bus_device *dev) 78static int __devinit ps3_ohci_probe(struct ps3_system_bus_device *dev)
79{ 79{
80 int result; 80 int result;
81 struct usb_hcd *hcd; 81 struct usb_hcd *hcd;
@@ -224,7 +224,7 @@ static int ps3_ohci_remove(struct ps3_system_bus_device *dev)
224 return 0; 224 return 0;
225} 225}
226 226
227static int ps3_ohci_driver_register(struct ps3_system_bus_driver *drv) 227static int __init ps3_ohci_driver_register(struct ps3_system_bus_driver *drv)
228{ 228{
229 return firmware_has_feature(FW_FEATURE_PS3_LV1) 229 return firmware_has_feature(FW_FEATURE_PS3_LV1)
230 ? ps3_system_bus_driver_register(drv) 230 ? ps3_system_bus_driver_register(drv)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 932ffdbf86d9..d6d65ef85f54 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -1122,12 +1122,14 @@ config FB_INTEL
1122 select FB_CFB_FILLRECT 1122 select FB_CFB_FILLRECT
1123 select FB_CFB_COPYAREA 1123 select FB_CFB_COPYAREA
1124 select FB_CFB_IMAGEBLIT 1124 select FB_CFB_IMAGEBLIT
1125 select FB_BOOT_VESA_SUPPORT 1125 select FB_BOOT_VESA_SUPPORT if FB_INTEL = y
1126 help 1126 help
1127 This driver supports the on-board graphics built in to the Intel 1127 This driver supports the on-board graphics built in to the Intel
1128 830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/965G/965GM chipsets. 1128 830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/965G/965GM chipsets.
1129 Say Y if you have and plan to use such a board. 1129 Say Y if you have and plan to use such a board.
1130 1130
1131 To make FB_INTELFB=Y work you need to say AGP_INTEL=y too.
1132
1131 To compile this driver as a module, choose M here: the 1133 To compile this driver as a module, choose M here: the
1132 module will be called intelfb. 1134 module will be called intelfb.
1133 1135
@@ -1460,7 +1462,7 @@ config FB_SIS
1460 select FB_CFB_FILLRECT 1462 select FB_CFB_FILLRECT
1461 select FB_CFB_COPYAREA 1463 select FB_CFB_COPYAREA
1462 select FB_CFB_IMAGEBLIT 1464 select FB_CFB_IMAGEBLIT
1463 select FB_BOOT_VESA_SUPPORT 1465 select FB_BOOT_VESA_SUPPORT if FB_SIS = y
1464 help 1466 help
1465 This is the frame buffer device driver for the SiS 300, 315, 330 1467 This is the frame buffer device driver for the SiS 300, 315, 330
1466 and 340 series as well as XGI V3XT, V5, V8, Z7 graphics chipsets. 1468 and 340 series as well as XGI V3XT, V5, V8, Z7 graphics chipsets.
diff --git a/drivers/video/xilinxfb.c b/drivers/video/xilinxfb.c
index 7a868bd16e0e..ed7c8d0ddccb 100644
--- a/drivers/video/xilinxfb.c
+++ b/drivers/video/xilinxfb.c
@@ -124,7 +124,6 @@ struct xilinxfb_drvdata {
124 registers */ 124 registers */
125 125
126 dcr_host_t dcr_host; 126 dcr_host_t dcr_host;
127 unsigned int dcr_start;
128 unsigned int dcr_len; 127 unsigned int dcr_len;
129 128
130 void *fb_virt; /* virt. address of the frame buffer */ 129 void *fb_virt; /* virt. address of the frame buffer */
@@ -325,8 +324,8 @@ static int xilinxfb_assign(struct device *dev,
325 drvdata->regs); 324 drvdata->regs);
326 } 325 }
327 /* Put a banner in the log (for DEBUG) */ 326 /* Put a banner in the log (for DEBUG) */
328 dev_dbg(dev, "fb: phys=%p, virt=%p, size=%x\n", 327 dev_dbg(dev, "fb: phys=%llx, virt=%p, size=%x\n",
329 (void *)drvdata->fb_phys, drvdata->fb_virt, fbsize); 328 (unsigned long long)drvdata->fb_phys, drvdata->fb_virt, fbsize);
330 329
331 return 0; /* success */ 330 return 0; /* success */
332 331
@@ -404,9 +403,7 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
404 u32 tft_access; 403 u32 tft_access;
405 struct xilinxfb_platform_data pdata; 404 struct xilinxfb_platform_data pdata;
406 struct resource res; 405 struct resource res;
407 int size, rc; 406 int size, rc, start;
408 int start = 0, len = 0;
409 dcr_host_t dcr_host;
410 struct xilinxfb_drvdata *drvdata; 407 struct xilinxfb_drvdata *drvdata;
411 408
412 /* Copy with the default pdata (not a ptr reference!) */ 409 /* Copy with the default pdata (not a ptr reference!) */
@@ -414,35 +411,39 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
414 411
415 dev_dbg(&op->dev, "xilinxfb_of_probe(%p, %p)\n", op, match); 412 dev_dbg(&op->dev, "xilinxfb_of_probe(%p, %p)\n", op, match);
416 413
414 /* Allocate the driver data region */
415 drvdata = kzalloc(sizeof(*drvdata), GFP_KERNEL);
416 if (!drvdata) {
417 dev_err(&op->dev, "Couldn't allocate device private record\n");
418 return -ENOMEM;
419 }
420
417 /* 421 /*
418 * To check whether the core is connected directly to DCR or PLB 422 * To check whether the core is connected directly to DCR or PLB
419 * interface and initialize the tft_access accordingly. 423 * interface and initialize the tft_access accordingly.
420 */ 424 */
421 p = (u32 *)of_get_property(op->node, "xlnx,dcr-splb-slave-if", NULL); 425 p = (u32 *)of_get_property(op->node, "xlnx,dcr-splb-slave-if", NULL);
422 426 tft_access = p ? *p : 0;
423 if (p)
424 tft_access = *p;
425 else
426 tft_access = 0; /* For backward compatibility */
427 427
428 /* 428 /*
429 * Fill the resource structure if its direct PLB interface 429 * Fill the resource structure if its direct PLB interface
430 * otherwise fill the dcr_host structure. 430 * otherwise fill the dcr_host structure.
431 */ 431 */
432 if (tft_access) { 432 if (tft_access) {
433 drvdata->flags |= PLB_ACCESS_FLAG;
433 rc = of_address_to_resource(op->node, 0, &res); 434 rc = of_address_to_resource(op->node, 0, &res);
434 if (rc) { 435 if (rc) {
435 dev_err(&op->dev, "invalid address\n"); 436 dev_err(&op->dev, "invalid address\n");
436 return -ENODEV; 437 goto err;
437 } 438 }
438
439 } else { 439 } else {
440 res.start = 0;
440 start = dcr_resource_start(op->node, 0); 441 start = dcr_resource_start(op->node, 0);
441 len = dcr_resource_len(op->node, 0); 442 drvdata->dcr_len = dcr_resource_len(op->node, 0);
442 dcr_host = dcr_map(op->node, start, len); 443 drvdata->dcr_host = dcr_map(op->node, start, drvdata->dcr_len);
443 if (!DCR_MAP_OK(dcr_host)) { 444 if (!DCR_MAP_OK(drvdata->dcr_host)) {
444 dev_err(&op->dev, "invalid address\n"); 445 dev_err(&op->dev, "invalid DCR address\n");
445 return -ENODEV; 446 goto err;
446 } 447 }
447 } 448 }
448 449
@@ -467,26 +468,12 @@ xilinxfb_of_probe(struct of_device *op, const struct of_device_id *match)
467 if (of_find_property(op->node, "rotate-display", NULL)) 468 if (of_find_property(op->node, "rotate-display", NULL))
468 pdata.rotate_screen = 1; 469 pdata.rotate_screen = 1;
469 470
470 /* Allocate the driver data region */
471 drvdata = kzalloc(sizeof(*drvdata), GFP_KERNEL);
472 if (!drvdata) {
473 dev_err(&op->dev, "Couldn't allocate device private record\n");
474 return -ENOMEM;
475 }
476 dev_set_drvdata(&op->dev, drvdata); 471 dev_set_drvdata(&op->dev, drvdata);
472 return xilinxfb_assign(&op->dev, drvdata, res.start, &pdata);
477 473
478 if (tft_access) 474 err:
479 drvdata->flags |= PLB_ACCESS_FLAG; 475 kfree(drvdata);
480 476 return -ENODEV;
481 /* Arguments are passed based on the interface */
482 if (drvdata->flags & PLB_ACCESS_FLAG) {
483 return xilinxfb_assign(&op->dev, drvdata, res.start, &pdata);
484 } else {
485 drvdata->dcr_start = start;
486 drvdata->dcr_len = len;
487 drvdata->dcr_host = dcr_host;
488 return xilinxfb_assign(&op->dev, drvdata, 0, &pdata);
489 }
490} 477}
491 478
492static int __devexit xilinxfb_of_remove(struct of_device *op) 479static int __devexit xilinxfb_of_remove(struct of_device *op)
diff --git a/drivers/watchdog/mpc5200_wdt.c b/drivers/watchdog/mpc5200_wdt.c
index 465fe36adad4..fa9c47ce0ae7 100644
--- a/drivers/watchdog/mpc5200_wdt.c
+++ b/drivers/watchdog/mpc5200_wdt.c
@@ -188,7 +188,7 @@ static int mpc5200_wdt_probe(struct of_device *op,
188 if (!wdt) 188 if (!wdt)
189 return -ENOMEM; 189 return -ENOMEM;
190 190
191 wdt->ipb_freq = mpc52xx_find_ipb_freq(op->node); 191 wdt->ipb_freq = mpc5xxx_get_bus_frequency(op->node);
192 192
193 err = of_address_to_resource(op->node, 0, &wdt->mem); 193 err = of_address_to_resource(op->node, 0, &wdt->mem);
194 if (err) 194 if (err)
diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c
index 8a0b26340b54..8359e7b3dc89 100644
--- a/fs/ext3/resize.c
+++ b/fs/ext3/resize.c
@@ -990,7 +990,7 @@ int ext3_group_extend(struct super_block *sb, struct ext3_super_block *es,
990 sb->s_id, n_blocks_count); 990 sb->s_id, n_blocks_count);
991 if (sizeof(sector_t) < 8) 991 if (sizeof(sector_t) < 8)
992 ext3_warning(sb, __func__, 992 ext3_warning(sb, __func__,
993 "CONFIG_LBD not enabled\n"); 993 "CONFIG_LBDAF not enabled\n");
994 return -EINVAL; 994 return -EINVAL;
995 } 995 }
996 996
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 26aa64dee6aa..601e881e6105 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -1812,7 +1812,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
1812 printk(KERN_ERR "EXT3-fs: filesystem on %s:" 1812 printk(KERN_ERR "EXT3-fs: filesystem on %s:"
1813 " too large to mount safely\n", sb->s_id); 1813 " too large to mount safely\n", sb->s_id);
1814 if (sizeof(sector_t) < 8) 1814 if (sizeof(sector_t) < 8)
1815 printk(KERN_WARNING "EXT3-fs: CONFIG_LBD not " 1815 printk(KERN_WARNING "EXT3-fs: CONFIG_LBDAF not "
1816 "enabled\n"); 1816 "enabled\n");
1817 goto failed_mount; 1817 goto failed_mount;
1818 } 1818 }
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 27eb289eea37..68b0351fc647 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -1002,7 +1002,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es,
1002 " too large to resize to %llu blocks safely\n", 1002 " too large to resize to %llu blocks safely\n",
1003 sb->s_id, n_blocks_count); 1003 sb->s_id, n_blocks_count);
1004 if (sizeof(sector_t) < 8) 1004 if (sizeof(sector_t) < 8)
1005 ext4_warning(sb, __func__, "CONFIG_LBD not enabled"); 1005 ext4_warning(sb, __func__, "CONFIG_LBDAF not enabled");
1006 return -EINVAL; 1006 return -EINVAL;
1007 } 1007 }
1008 1008
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 23013d303f81..8bb9e2d3e4b8 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1959,7 +1959,7 @@ static loff_t ext4_max_size(int blkbits, int has_huge_files)
1959 /* small i_blocks in vfs inode? */ 1959 /* small i_blocks in vfs inode? */
1960 if (!has_huge_files || sizeof(blkcnt_t) < sizeof(u64)) { 1960 if (!has_huge_files || sizeof(blkcnt_t) < sizeof(u64)) {
1961 /* 1961 /*
1962 * CONFIG_LBD is not enabled implies the inode 1962 * CONFIG_LBDAF is not enabled implies the inode
1963 * i_block represent total blocks in 512 bytes 1963 * i_block represent total blocks in 512 bytes
1964 * 32 == size of vfs inode i_blocks * 8 1964 * 32 == size of vfs inode i_blocks * 8
1965 */ 1965 */
@@ -2002,7 +2002,7 @@ static loff_t ext4_max_bitmap_size(int bits, int has_huge_files)
2002 2002
2003 if (!has_huge_files || sizeof(blkcnt_t) < sizeof(u64)) { 2003 if (!has_huge_files || sizeof(blkcnt_t) < sizeof(u64)) {
2004 /* 2004 /*
2005 * !has_huge_files or CONFIG_LBD not enabled implies that 2005 * !has_huge_files or CONFIG_LBDAF not enabled implies that
2006 * the inode i_block field represents total file blocks in 2006 * the inode i_block field represents total file blocks in
2007 * 2^32 512-byte sectors == size of vfs inode i_blocks * 8 2007 * 2^32 512-byte sectors == size of vfs inode i_blocks * 8
2008 */ 2008 */
@@ -2440,13 +2440,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2440 if (has_huge_files) { 2440 if (has_huge_files) {
2441 /* 2441 /*
2442 * Large file size enabled file system can only be 2442 * Large file size enabled file system can only be
2443 * mount if kernel is build with CONFIG_LBD 2443 * mount if kernel is build with CONFIG_LBDAF
2444 */ 2444 */
2445 if (sizeof(root->i_blocks) < sizeof(u64) && 2445 if (sizeof(root->i_blocks) < sizeof(u64) &&
2446 !(sb->s_flags & MS_RDONLY)) { 2446 !(sb->s_flags & MS_RDONLY)) {
2447 ext4_msg(sb, KERN_ERR, "Filesystem with huge " 2447 ext4_msg(sb, KERN_ERR, "Filesystem with huge "
2448 "files cannot be mounted read-write " 2448 "files cannot be mounted read-write "
2449 "without CONFIG_LBD"); 2449 "without CONFIG_LBDAF");
2450 goto failed_mount; 2450 goto failed_mount;
2451 } 2451 }
2452 } 2452 }
@@ -2570,7 +2570,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
2570 ext4_msg(sb, KERN_ERR, "filesystem" 2570 ext4_msg(sb, KERN_ERR, "filesystem"
2571 " too large to mount safely"); 2571 " too large to mount safely");
2572 if (sizeof(sector_t) < 8) 2572 if (sizeof(sector_t) < 8)
2573 ext4_msg(sb, KERN_WARNING, "CONFIG_LBD not enabled"); 2573 ext4_msg(sb, KERN_WARNING, "CONFIG_LBDAF not enabled");
2574 goto failed_mount; 2574 goto failed_mount;
2575 } 2575 }
2576 2576
diff --git a/fs/gfs2/Kconfig b/fs/gfs2/Kconfig
index cad957cdb1e5..5971359d2090 100644
--- a/fs/gfs2/Kconfig
+++ b/fs/gfs2/Kconfig
@@ -1,6 +1,6 @@
1config GFS2_FS 1config GFS2_FS
2 tristate "GFS2 file system support" 2 tristate "GFS2 file system support"
3 depends on EXPERIMENTAL && (64BIT || LBD) 3 depends on EXPERIMENTAL && (64BIT || LBDAF)
4 select DLM if GFS2_FS_LOCKING_DLM 4 select DLM if GFS2_FS_LOCKING_DLM
5 select CONFIGFS_FS if GFS2_FS_LOCKING_DLM 5 select CONFIGFS_FS if GFS2_FS_LOCKING_DLM
6 select SYSFS if GFS2_FS_LOCKING_DLM 6 select SYSFS if GFS2_FS_LOCKING_DLM
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index d33767f17ba3..0d3ed7407a04 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -552,7 +552,7 @@ static unsigned long long ocfs2_max_file_offset(unsigned int bbits,
552 */ 552 */
553 553
554#if BITS_PER_LONG == 32 554#if BITS_PER_LONG == 32
555# if defined(CONFIG_LBD) 555# if defined(CONFIG_LBDAF)
556 BUILD_BUG_ON(sizeof(sector_t) != 8); 556 BUILD_BUG_ON(sizeof(sector_t) != 8);
557 /* 557 /*
558 * We might be limited by page cache size. 558 * We might be limited by page cache size.
diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
index f65a53f8752f..6127e24062d0 100644
--- a/fs/xfs/linux-2.6/xfs_linux.h
+++ b/fs/xfs/linux-2.6/xfs_linux.h
@@ -24,7 +24,7 @@
24 * XFS_BIG_BLKNOS needs block layer disk addresses to be 64 bits. 24 * XFS_BIG_BLKNOS needs block layer disk addresses to be 64 bits.
25 * XFS_BIG_INUMS requires XFS_BIG_BLKNOS to be set. 25 * XFS_BIG_INUMS requires XFS_BIG_BLKNOS to be set.
26 */ 26 */
27#if defined(CONFIG_LBD) || (BITS_PER_LONG == 64) 27#if defined(CONFIG_LBDAF) || (BITS_PER_LONG == 64)
28# define XFS_BIG_BLKNOS 1 28# define XFS_BIG_BLKNOS 1
29# define XFS_BIG_INUMS 1 29# define XFS_BIG_INUMS 1
30#else 30#else
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index 2e09efbca8db..a220d36f789b 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -616,7 +616,7 @@ xfs_max_file_offset(
616 */ 616 */
617 617
618#if BITS_PER_LONG == 32 618#if BITS_PER_LONG == 32
619# if defined(CONFIG_LBD) 619# if defined(CONFIG_LBDAF)
620 ASSERT(sizeof(sector_t) == 8); 620 ASSERT(sizeof(sector_t) == 8);
621 pagefactor = PAGE_CACHE_SIZE; 621 pagefactor = PAGE_CACHE_SIZE;
622 bitshift = BITS_PER_LONG; 622 bitshift = BITS_PER_LONG;
diff --git a/include/linux/amba/pl061.h b/include/linux/amba/pl061.h
new file mode 100644
index 000000000000..b4fbd9862606
--- /dev/null
+++ b/include/linux/amba/pl061.h
@@ -0,0 +1,15 @@
1/* platform data for the PL061 GPIO driver */
2
3struct pl061_platform_data {
4 /* number of the first GPIO */
5 unsigned gpio_base;
6
7 /* number of the first IRQ.
8 * If the IRQ functionality in not desired this must be set to
9 * (unsigned) -1.
10 */
11 unsigned irq_base;
12
13 u8 directions; /* startup directions, 1: out, 0: in */
14 u8 values; /* startup values */
15};
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 8083b6a36a38..07dfd460d286 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -63,24 +63,26 @@ struct dma_map_ops {
63 63
64#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) 64#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
65 65
66typedef u64 DMA_nnBIT_MASK __deprecated;
67
66/* 68/*
67 * NOTE: do not use the below macros in new code and do not add new definitions 69 * NOTE: do not use the below macros in new code and do not add new definitions
68 * here. 70 * here.
69 * 71 *
70 * Instead, just open-code DMA_BIT_MASK(n) within your driver 72 * Instead, just open-code DMA_BIT_MASK(n) within your driver
71 */ 73 */
72#define DMA_64BIT_MASK DMA_BIT_MASK(64) 74#define DMA_64BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(64)
73#define DMA_48BIT_MASK DMA_BIT_MASK(48) 75#define DMA_48BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(48)
74#define DMA_47BIT_MASK DMA_BIT_MASK(47) 76#define DMA_47BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(47)
75#define DMA_40BIT_MASK DMA_BIT_MASK(40) 77#define DMA_40BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(40)
76#define DMA_39BIT_MASK DMA_BIT_MASK(39) 78#define DMA_39BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(39)
77#define DMA_35BIT_MASK DMA_BIT_MASK(35) 79#define DMA_35BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(35)
78#define DMA_32BIT_MASK DMA_BIT_MASK(32) 80#define DMA_32BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(32)
79#define DMA_31BIT_MASK DMA_BIT_MASK(31) 81#define DMA_31BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(31)
80#define DMA_30BIT_MASK DMA_BIT_MASK(30) 82#define DMA_30BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(30)
81#define DMA_29BIT_MASK DMA_BIT_MASK(29) 83#define DMA_29BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(29)
82#define DMA_28BIT_MASK DMA_BIT_MASK(28) 84#define DMA_28BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(28)
83#define DMA_24BIT_MASK DMA_BIT_MASK(24) 85#define DMA_24BIT_MASK (DMA_nnBIT_MASK)DMA_BIT_MASK(24)
84 86
85#define DMA_MASK_NONE 0x0ULL 87#define DMA_MASK_NONE 0x0ULL
86 88
@@ -107,9 +109,20 @@ static inline int is_buffer_dma_capable(u64 mask, dma_addr_t addr, size_t size)
107#include <asm-generic/dma-mapping-broken.h> 109#include <asm-generic/dma-mapping-broken.h>
108#endif 110#endif
109 111
110/* Backwards compat, remove in 2.7.x */ 112/* for backwards compatibility, removed soon */
111#define dma_sync_single dma_sync_single_for_cpu 113static inline void __deprecated dma_sync_single(struct device *dev,
112#define dma_sync_sg dma_sync_sg_for_cpu 114 dma_addr_t addr, size_t size,
115 enum dma_data_direction dir)
116{
117 dma_sync_single_for_cpu(dev, addr, size, dir);
118}
119
120static inline void __deprecated dma_sync_sg(struct device *dev,
121 struct scatterlist *sg, int nelems,
122 enum dma_data_direction dir)
123{
124 dma_sync_sg_for_cpu(dev, sg, nelems, dir);
125}
113 126
114static inline u64 dma_get_mask(struct device *dev) 127static inline u64 dma_get_mask(struct device *dev)
115{ 128{
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index c5a71c38a95f..fac104e7186a 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -58,7 +58,7 @@ extern const char linux_proc_banner[];
58#define _RET_IP_ (unsigned long)__builtin_return_address(0) 58#define _RET_IP_ (unsigned long)__builtin_return_address(0)
59#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; }) 59#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
60 60
61#ifdef CONFIG_LBD 61#ifdef CONFIG_LBDAF
62# include <asm/div64.h> 62# include <asm/div64.h>
63# define sector_div(a, b) do_div(a, b) 63# define sector_div(a, b) do_div(a, b)
64#else 64#else
diff --git a/include/linux/types.h b/include/linux/types.h
index 5abe354020f9..c42724f8c802 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -131,7 +131,7 @@ typedef __s64 int64_t;
131 * 131 *
132 * blkcnt_t is the type of the inode's block count. 132 * blkcnt_t is the type of the inode's block count.
133 */ 133 */
134#ifdef CONFIG_LBD 134#ifdef CONFIG_LBDAF
135typedef u64 sector_t; 135typedef u64 sector_t;
136typedef u64 blkcnt_t; 136typedef u64 blkcnt_t;
137#else 137#else
diff --git a/kernel/exit.c b/kernel/exit.c
index 13ae64001fec..628d41f0dd54 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -1197,8 +1197,11 @@ static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p)
1197 } 1197 }
1198 1198
1199 traced = ptrace_reparented(p); 1199 traced = ptrace_reparented(p);
1200 1200 /*
1201 if (likely(!traced)) { 1201 * It can be ptraced but not reparented, check
1202 * !task_detached() to filter out sub-threads.
1203 */
1204 if (likely(!traced) && likely(!task_detached(p))) {
1202 struct signal_struct *psig; 1205 struct signal_struct *psig;
1203 struct signal_struct *sig; 1206 struct signal_struct *sig;
1204 1207
diff --git a/mm/bootmem.c b/mm/bootmem.c
index 282df0a09e6f..d2a9ce952768 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -536,11 +536,15 @@ static void * __init alloc_arch_preferred_bootmem(bootmem_data_t *bdata,
536 return kzalloc(size, GFP_NOWAIT); 536 return kzalloc(size, GFP_NOWAIT);
537 537
538#ifdef CONFIG_HAVE_ARCH_BOOTMEM 538#ifdef CONFIG_HAVE_ARCH_BOOTMEM
539 bootmem_data_t *p_bdata; 539 {
540 540 bootmem_data_t *p_bdata;
541 p_bdata = bootmem_arch_preferred_node(bdata, size, align, goal, limit); 541
542 if (p_bdata) 542 p_bdata = bootmem_arch_preferred_node(bdata, size, align,
543 return alloc_bootmem_core(p_bdata, size, align, goal, limit); 543 goal, limit);
544 if (p_bdata)
545 return alloc_bootmem_core(p_bdata, size, align,
546 goal, limit);
547 }
544#endif 548#endif
545 return NULL; 549 return NULL;
546} 550}
diff --git a/sound/pci/lx6464es/lx6464es.c b/sound/pci/lx6464es/lx6464es.c
index ccf1b38c88ea..18da2ef04d09 100644
--- a/sound/pci/lx6464es/lx6464es.c
+++ b/sound/pci/lx6464es/lx6464es.c
@@ -988,7 +988,7 @@ static int __devinit snd_lx6464es_create(struct snd_card *card,
988 pci_set_master(pci); 988 pci_set_master(pci);
989 989
990 /* check if we can restrict PCI DMA transfers to 32 bits */ 990 /* check if we can restrict PCI DMA transfers to 32 bits */
991 err = pci_set_dma_mask(pci, DMA_32BIT_MASK); 991 err = pci_set_dma_mask(pci, DMA_BIT_MASK(32));
992 if (err < 0) { 992 if (err < 0) {
993 snd_printk(KERN_ERR "architecture does not support " 993 snd_printk(KERN_ERR "architecture does not support "
994 "32bit PCI busmaster DMA\n"); 994 "32bit PCI busmaster DMA\n");