aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2008-10-15 18:16:07 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-10-15 18:16:07 -0400
commit2502991560dc8244dbe10e48473d85722c1e2ec1 (patch)
tree63b1f3be2ed56ff06f1e8db709e4ce85d69c3add /arch/arm
parent7e69a8c4d06b7ecb874f571e82b715a9f79bc3c4 (diff)
parenta9ff8f6462635c8d9f8d64b7b10ddcea8404d77b (diff)
Merge branch 'fixes' into for-linus
Conflicts: arch/arm/mach-versatile/core.c
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig4
-rw-r--r--arch/arm/include/asm/statfs.h34
-rw-r--r--arch/arm/kernel/dma.c17
-rw-r--r--arch/arm/kernel/smp.c1
-rw-r--r--arch/arm/mach-kirkwood/db88f6281-bp-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/rd88f6192-nas-setup.c2
-rw-r--r--arch/arm/mach-kirkwood/rd88f6281-setup.c2
-rw-r--r--arch/arm/mach-loki/lb88rc8480-setup.c2
-rw-r--r--arch/arm/mach-mv78xx0/common.c6
-rw-r--r--arch/arm/mach-mv78xx0/db78x00-bp-setup.c8
-rw-r--r--arch/arm/mach-orion5x/db88f5281-setup.c2
-rw-r--r--arch/arm/mach-orion5x/dns323-setup.c2
-rw-r--r--arch/arm/mach-orion5x/include/mach/orion5x.h2
-rw-r--r--arch/arm/mach-orion5x/kurobox_pro-setup.c2
-rw-r--r--arch/arm/mach-orion5x/mss2-setup.c2
-rw-r--r--arch/arm/mach-orion5x/mv2120-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-ge-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5182-setup.c2
-rw-r--r--arch/arm/mach-orion5x/ts78xx-setup.c3
-rw-r--r--arch/arm/mach-orion5x/tsx09-common.c2
-rw-r--r--arch/arm/mach-orion5x/wnr854t-setup.c2
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c2
-rw-r--r--arch/arm/mach-pxa/cm-x270.c2
-rw-r--r--arch/arm/mach-pxa/include/mach/camera.h2
-rw-r--r--arch/arm/mach-pxa/include/mach/reset.h9
-rw-r--r--arch/arm/mach-pxa/reset.c9
-rw-r--r--arch/arm/mach-pxa/spitz.c2
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mach-pxa/viper.c54
-rw-r--r--arch/arm/mach-versatile/core.c2
-rw-r--r--arch/arm/plat-omap/devices.c21
-rw-r--r--arch/arm/plat-omap/include/mach/mtd-xip.h2
33 files changed, 102 insertions, 108 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index efeed65b4a66..4853f9df37bd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -8,6 +8,7 @@ mainmenu "Linux Kernel Configuration"
8config ARM 8config ARM
9 bool 9 bool
10 default y 10 default y
11 select HAVE_AOUT
11 select HAVE_IDE 12 select HAVE_IDE
12 select RTC_LIB 13 select RTC_LIB
13 select SYS_SUPPORTS_APM_EMULATION 14 select SYS_SUPPORTS_APM_EMULATION
@@ -140,9 +141,6 @@ config GENERIC_CALIBRATE_DELAY
140 bool 141 bool
141 default y 142 default y
142 143
143config ARCH_SUPPORTS_AOUT
144 def_bool y
145
146config ARCH_MAY_HAVE_PC_FDC 144config ARCH_MAY_HAVE_PC_FDC
147 bool 145 bool
148 146
diff --git a/arch/arm/include/asm/statfs.h b/arch/arm/include/asm/statfs.h
index a02e6a8c3d70..079447c05ba7 100644
--- a/arch/arm/include/asm/statfs.h
+++ b/arch/arm/include/asm/statfs.h
@@ -1,42 +1,12 @@
1#ifndef _ASMARM_STATFS_H 1#ifndef _ASMARM_STATFS_H
2#define _ASMARM_STATFS_H 2#define _ASMARM_STATFS_H
3 3
4#ifndef __KERNEL_STRICT_NAMES
5# include <linux/types.h>
6typedef __kernel_fsid_t fsid_t;
7#endif
8
9struct statfs {
10 __u32 f_type;
11 __u32 f_bsize;
12 __u32 f_blocks;
13 __u32 f_bfree;
14 __u32 f_bavail;
15 __u32 f_files;
16 __u32 f_ffree;
17 __kernel_fsid_t f_fsid;
18 __u32 f_namelen;
19 __u32 f_frsize;
20 __u32 f_spare[5];
21};
22
23/* 4/*
24 * With EABI there is 4 bytes of padding added to this structure. 5 * With EABI there is 4 bytes of padding added to this structure.
25 * Let's pack it so the padding goes away to simplify dual ABI support. 6 * Let's pack it so the padding goes away to simplify dual ABI support.
26 * Note that user space does NOT have to pack this structure. 7 * Note that user space does NOT have to pack this structure.
27 */ 8 */
28struct statfs64 { 9#define ARCH_PACK_STATFS64 __attribute__((packed,aligned(4)))
29 __u32 f_type;
30 __u32 f_bsize;
31 __u64 f_blocks;
32 __u64 f_bfree;
33 __u64 f_bavail;
34 __u64 f_files;
35 __u64 f_ffree;
36 __kernel_fsid_t f_fsid;
37 __u32 f_namelen;
38 __u32 f_frsize;
39 __u32 f_spare[5];
40} __attribute__ ((packed,aligned(4)));
41 10
11#include <asm-generic/statfs.h>
42#endif 12#endif
diff --git a/arch/arm/kernel/dma.c b/arch/arm/kernel/dma.c
index ba99a2035523..d006085ed7e7 100644
--- a/arch/arm/kernel/dma.c
+++ b/arch/arm/kernel/dma.c
@@ -26,23 +26,6 @@ EXPORT_SYMBOL(dma_spin_lock);
26static dma_t dma_chan[MAX_DMA_CHANNELS]; 26static dma_t dma_chan[MAX_DMA_CHANNELS];
27 27
28/* 28/*
29 * Get dma list for /proc/dma
30 */
31int get_dma_list(char *buf)
32{
33 dma_t *dma;
34 char *p = buf;
35 int i;
36
37 for (i = 0, dma = dma_chan; i < MAX_DMA_CHANNELS; i++, dma++)
38 if (dma->lock)
39 p += sprintf(p, "%2d: %14s %s\n", i,
40 dma->d_ops->type, dma->device_id);
41
42 return p - buf;
43}
44
45/*
46 * Request DMA channel 29 * Request DMA channel
47 * 30 *
48 * On certain platforms, we have to allocate an interrupt as well... 31 * On certain platforms, we have to allocate an interrupt as well...
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index e9842f6767f9..e42a749a56dd 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -277,6 +277,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
277 /* 277 /*
278 * Enable local interrupts. 278 * Enable local interrupts.
279 */ 279 */
280 notify_cpu_starting(cpu);
280 local_irq_enable(); 281 local_irq_enable();
281 local_fiq_enable(); 282 local_fiq_enable();
282 283
diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
index 89d746d13fda..a14c2948c62a 100644
--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
+++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
@@ -25,7 +25,7 @@
25#include "common.h" 25#include "common.h"
26 26
27static struct mv643xx_eth_platform_data db88f6281_ge00_data = { 27static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
28 .phy_addr = 8, 28 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
29}; 29};
30 30
31static struct mv_sata_platform_data db88f6281_sata_data = { 31static struct mv_sata_platform_data db88f6281_sata_data = {
diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
index a3012d445971..b1d1a87a6821 100644
--- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
@@ -30,7 +30,7 @@
30#define RD88F6192_GPIO_USB_VBUS 10 30#define RD88F6192_GPIO_USB_VBUS 10
31 31
32static struct mv643xx_eth_platform_data rd88f6192_ge00_data = { 32static struct mv643xx_eth_platform_data rd88f6192_ge00_data = {
33 .phy_addr = 8, 33 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
34}; 34};
35 35
36static struct mv_sata_platform_data rd88f6192_sata_data = { 36static struct mv_sata_platform_data rd88f6192_sata_data = {
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
index fb8990f9770d..f785093e433f 100644
--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
@@ -69,7 +69,7 @@ static struct platform_device rd88f6281_nand_flash = {
69}; 69};
70 70
71static struct mv643xx_eth_platform_data rd88f6281_ge00_data = { 71static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
72 .phy_addr = -1, 72 .phy_addr = MV643XX_ETH_PHY_NONE,
73 .speed = SPEED_1000, 73 .speed = SPEED_1000,
74 .duplex = DUPLEX_FULL, 74 .duplex = DUPLEX_FULL,
75}; 75};
diff --git a/arch/arm/mach-loki/lb88rc8480-setup.c b/arch/arm/mach-loki/lb88rc8480-setup.c
index 2cc9ac9b488f..85f9c1296aa0 100644
--- a/arch/arm/mach-loki/lb88rc8480-setup.c
+++ b/arch/arm/mach-loki/lb88rc8480-setup.c
@@ -67,7 +67,7 @@ static struct platform_device lb88rc8480_boot_flash = {
67}; 67};
68 68
69static struct mv643xx_eth_platform_data lb88rc8480_ge0_data = { 69static struct mv643xx_eth_platform_data lb88rc8480_ge0_data = {
70 .phy_addr = 1, 70 .phy_addr = MV643XX_ETH_PHY_ADDR(1),
71 .mac_addr = { 0x00, 0x50, 0x43, 0x11, 0x22, 0x33 }, 71 .mac_addr = { 0x00, 0x50, 0x43, 0x11, 0x22, 0x33 },
72}; 72};
73 73
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
index d56a05e8356b..238a2f8c2d52 100644
--- a/arch/arm/mach-mv78xx0/common.c
+++ b/arch/arm/mach-mv78xx0/common.c
@@ -335,6 +335,7 @@ void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
335struct mv643xx_eth_shared_platform_data mv78xx0_ge01_shared_data = { 335struct mv643xx_eth_shared_platform_data mv78xx0_ge01_shared_data = {
336 .t_clk = 0, 336 .t_clk = 0,
337 .dram = &mv78xx0_mbus_dram_info, 337 .dram = &mv78xx0_mbus_dram_info,
338 .shared_smi = &mv78xx0_ge00_shared,
338}; 339};
339 340
340static struct resource mv78xx0_ge01_shared_resources[] = { 341static struct resource mv78xx0_ge01_shared_resources[] = {
@@ -375,7 +376,6 @@ static struct platform_device mv78xx0_ge01 = {
375void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data) 376void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
376{ 377{
377 eth_data->shared = &mv78xx0_ge01_shared; 378 eth_data->shared = &mv78xx0_ge01_shared;
378 eth_data->shared_smi = &mv78xx0_ge00_shared;
379 mv78xx0_ge01.dev.platform_data = eth_data; 379 mv78xx0_ge01.dev.platform_data = eth_data;
380 380
381 platform_device_register(&mv78xx0_ge01_shared); 381 platform_device_register(&mv78xx0_ge01_shared);
@@ -389,6 +389,7 @@ void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
389struct mv643xx_eth_shared_platform_data mv78xx0_ge10_shared_data = { 389struct mv643xx_eth_shared_platform_data mv78xx0_ge10_shared_data = {
390 .t_clk = 0, 390 .t_clk = 0,
391 .dram = &mv78xx0_mbus_dram_info, 391 .dram = &mv78xx0_mbus_dram_info,
392 .shared_smi = &mv78xx0_ge00_shared,
392}; 393};
393 394
394static struct resource mv78xx0_ge10_shared_resources[] = { 395static struct resource mv78xx0_ge10_shared_resources[] = {
@@ -429,7 +430,6 @@ static struct platform_device mv78xx0_ge10 = {
429void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data) 430void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data)
430{ 431{
431 eth_data->shared = &mv78xx0_ge10_shared; 432 eth_data->shared = &mv78xx0_ge10_shared;
432 eth_data->shared_smi = &mv78xx0_ge00_shared;
433 mv78xx0_ge10.dev.platform_data = eth_data; 433 mv78xx0_ge10.dev.platform_data = eth_data;
434 434
435 platform_device_register(&mv78xx0_ge10_shared); 435 platform_device_register(&mv78xx0_ge10_shared);
@@ -443,6 +443,7 @@ void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data)
443struct mv643xx_eth_shared_platform_data mv78xx0_ge11_shared_data = { 443struct mv643xx_eth_shared_platform_data mv78xx0_ge11_shared_data = {
444 .t_clk = 0, 444 .t_clk = 0,
445 .dram = &mv78xx0_mbus_dram_info, 445 .dram = &mv78xx0_mbus_dram_info,
446 .shared_smi = &mv78xx0_ge00_shared,
446}; 447};
447 448
448static struct resource mv78xx0_ge11_shared_resources[] = { 449static struct resource mv78xx0_ge11_shared_resources[] = {
@@ -483,7 +484,6 @@ static struct platform_device mv78xx0_ge11 = {
483void __init mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data) 484void __init mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data)
484{ 485{
485 eth_data->shared = &mv78xx0_ge11_shared; 486 eth_data->shared = &mv78xx0_ge11_shared;
486 eth_data->shared_smi = &mv78xx0_ge00_shared;
487 mv78xx0_ge11.dev.platform_data = eth_data; 487 mv78xx0_ge11.dev.platform_data = eth_data;
488 488
489 platform_device_register(&mv78xx0_ge11_shared); 489 platform_device_register(&mv78xx0_ge11_shared);
diff --git a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
index a2d0c9783604..49f434c39eb7 100644
--- a/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
+++ b/arch/arm/mach-mv78xx0/db78x00-bp-setup.c
@@ -19,19 +19,19 @@
19#include "common.h" 19#include "common.h"
20 20
21static struct mv643xx_eth_platform_data db78x00_ge00_data = { 21static struct mv643xx_eth_platform_data db78x00_ge00_data = {
22 .phy_addr = 8, 22 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
23}; 23};
24 24
25static struct mv643xx_eth_platform_data db78x00_ge01_data = { 25static struct mv643xx_eth_platform_data db78x00_ge01_data = {
26 .phy_addr = 9, 26 .phy_addr = MV643XX_ETH_PHY_ADDR(9),
27}; 27};
28 28
29static struct mv643xx_eth_platform_data db78x00_ge10_data = { 29static struct mv643xx_eth_platform_data db78x00_ge10_data = {
30 .phy_addr = -1, 30 .phy_addr = MV643XX_ETH_PHY_NONE,
31}; 31};
32 32
33static struct mv643xx_eth_platform_data db78x00_ge11_data = { 33static struct mv643xx_eth_platform_data db78x00_ge11_data = {
34 .phy_addr = -1, 34 .phy_addr = MV643XX_ETH_PHY_NONE,
35}; 35};
36 36
37static struct mv_sata_platform_data db78x00_sata_data = { 37static struct mv_sata_platform_data db78x00_sata_data = {
diff --git a/arch/arm/mach-orion5x/db88f5281-setup.c b/arch/arm/mach-orion5x/db88f5281-setup.c
index ff13e9060b18..d318bea2af91 100644
--- a/arch/arm/mach-orion5x/db88f5281-setup.c
+++ b/arch/arm/mach-orion5x/db88f5281-setup.c
@@ -285,7 +285,7 @@ subsys_initcall(db88f5281_pci_init);
285 * Ethernet 285 * Ethernet
286 ****************************************************************************/ 286 ****************************************************************************/
287static struct mv643xx_eth_platform_data db88f5281_eth_data = { 287static struct mv643xx_eth_platform_data db88f5281_eth_data = {
288 .phy_addr = 8, 288 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
289}; 289};
290 290
291/***************************************************************************** 291/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
index b38c65ccfb15..3e66098340a5 100644
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ b/arch/arm/mach-orion5x/dns323-setup.c
@@ -79,7 +79,7 @@ subsys_initcall(dns323_pci_init);
79 */ 79 */
80 80
81static struct mv643xx_eth_platform_data dns323_eth_data = { 81static struct mv643xx_eth_platform_data dns323_eth_data = {
82 .phy_addr = 8, 82 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
83}; 83};
84 84
85/**************************************************************************** 85/****************************************************************************
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h
index e67c843baa02..9f5ce1ce5840 100644
--- a/arch/arm/mach-orion5x/include/mach/orion5x.h
+++ b/arch/arm/mach-orion5x/include/mach/orion5x.h
@@ -157,9 +157,11 @@
157#define CPU_CONF ORION5X_BRIDGE_REG(0x100) 157#define CPU_CONF ORION5X_BRIDGE_REG(0x100)
158#define CPU_CTRL ORION5X_BRIDGE_REG(0x104) 158#define CPU_CTRL ORION5X_BRIDGE_REG(0x104)
159#define CPU_RESET_MASK ORION5X_BRIDGE_REG(0x108) 159#define CPU_RESET_MASK ORION5X_BRIDGE_REG(0x108)
160#define WDT_RESET 0x0002
160#define CPU_SOFT_RESET ORION5X_BRIDGE_REG(0x10c) 161#define CPU_SOFT_RESET ORION5X_BRIDGE_REG(0x10c)
161#define POWER_MNG_CTRL_REG ORION5X_BRIDGE_REG(0x11C) 162#define POWER_MNG_CTRL_REG ORION5X_BRIDGE_REG(0x11C)
162#define BRIDGE_CAUSE ORION5X_BRIDGE_REG(0x110) 163#define BRIDGE_CAUSE ORION5X_BRIDGE_REG(0x110)
164#define WDT_INT_REQ 0x0008
163#define BRIDGE_MASK ORION5X_BRIDGE_REG(0x114) 165#define BRIDGE_MASK ORION5X_BRIDGE_REG(0x114)
164#define BRIDGE_INT_TIMER0 0x0002 166#define BRIDGE_INT_TIMER0 0x0002
165#define BRIDGE_INT_TIMER1 0x0004 167#define BRIDGE_INT_TIMER1 0x0004
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
index c5bd54d8aa0c..dfbb68df7b09 100644
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c
@@ -161,7 +161,7 @@ subsys_initcall(kurobox_pro_pci_init);
161 ****************************************************************************/ 161 ****************************************************************************/
162 162
163static struct mv643xx_eth_platform_data kurobox_pro_eth_data = { 163static struct mv643xx_eth_platform_data kurobox_pro_eth_data = {
164 .phy_addr = 8, 164 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
165}; 165};
166 166
167/***************************************************************************** 167/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/mss2-setup.c b/arch/arm/mach-orion5x/mss2-setup.c
index 53ff1893b883..68acca98e638 100644
--- a/arch/arm/mach-orion5x/mss2-setup.c
+++ b/arch/arm/mach-orion5x/mss2-setup.c
@@ -109,7 +109,7 @@ subsys_initcall(mss2_pci_init);
109 ****************************************************************************/ 109 ****************************************************************************/
110 110
111static struct mv643xx_eth_platform_data mss2_eth_data = { 111static struct mv643xx_eth_platform_data mss2_eth_data = {
112 .phy_addr = 8, 112 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
113}; 113};
114 114
115/***************************************************************************** 115/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
index 978d4d599396..97c9ccb2ac60 100644
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ b/arch/arm/mach-orion5x/mv2120-setup.c
@@ -39,7 +39,7 @@
39 * Ethernet 39 * Ethernet
40 ****************************************************************************/ 40 ****************************************************************************/
41static struct mv643xx_eth_platform_data mv2120_eth_data = { 41static struct mv643xx_eth_platform_data mv2120_eth_data = {
42 .phy_addr = 8, 42 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
43}; 43};
44 44
45static struct mv_sata_platform_data mv2120_sata_data = { 45static struct mv_sata_platform_data mv2120_sata_data = {
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index e72fe1e065e8..500cdadaf09c 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -88,7 +88,7 @@ static struct orion5x_mpp_mode rd88f5181l_fxo_mpp_modes[] __initdata = {
88}; 88};
89 89
90static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = { 90static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = {
91 .phy_addr = -1, 91 .phy_addr = MV643XX_ETH_PHY_NONE,
92 .speed = SPEED_1000, 92 .speed = SPEED_1000,
93 .duplex = DUPLEX_FULL, 93 .duplex = DUPLEX_FULL,
94}; 94};
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index a1fe3257320d..ebde81416499 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -89,7 +89,7 @@ static struct orion5x_mpp_mode rd88f5181l_ge_mpp_modes[] __initdata = {
89}; 89};
90 90
91static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = { 91static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = {
92 .phy_addr = -1, 92 .phy_addr = MV643XX_ETH_PHY_NONE,
93 .speed = SPEED_1000, 93 .speed = SPEED_1000,
94 .duplex = DUPLEX_FULL, 94 .duplex = DUPLEX_FULL,
95}; 95};
diff --git a/arch/arm/mach-orion5x/rd88f5182-setup.c b/arch/arm/mach-orion5x/rd88f5182-setup.c
index 4c3bcd76ac85..a04f9e4b633a 100644
--- a/arch/arm/mach-orion5x/rd88f5182-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5182-setup.c
@@ -221,7 +221,7 @@ subsys_initcall(rd88f5182_pci_init);
221 ****************************************************************************/ 221 ****************************************************************************/
222 222
223static struct mv643xx_eth_platform_data rd88f5182_eth_data = { 223static struct mv643xx_eth_platform_data rd88f5182_eth_data = {
224 .phy_addr = 8, 224 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
225}; 225};
226 226
227/***************************************************************************** 227/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
index ae0a5dccd2a1..1368e9fd1a06 100644
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ b/arch/arm/mach-orion5x/ts78xx-setup.c
@@ -103,8 +103,7 @@ static struct platform_device ts78xx_nor_boot_flash = {
103 * Ethernet 103 * Ethernet
104 ****************************************************************************/ 104 ****************************************************************************/
105static struct mv643xx_eth_platform_data ts78xx_eth_data = { 105static struct mv643xx_eth_platform_data ts78xx_eth_data = {
106 .phy_addr = 0, 106 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
107 .force_phy_addr = 1,
108}; 107};
109 108
110/***************************************************************************** 109/*****************************************************************************
diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
index 5128da1101bf..c9abb8fbfa70 100644
--- a/arch/arm/mach-orion5x/tsx09-common.c
+++ b/arch/arm/mach-orion5x/tsx09-common.c
@@ -49,7 +49,7 @@ void qnap_tsx09_power_off(void)
49 ****************************************************************************/ 49 ****************************************************************************/
50 50
51struct mv643xx_eth_platform_data qnap_tsx09_eth_data = { 51struct mv643xx_eth_platform_data qnap_tsx09_eth_data = {
52 .phy_addr = 8, 52 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
53}; 53};
54 54
55static int __init qnap_tsx09_parse_hex_nibble(char n) 55static int __init qnap_tsx09_parse_hex_nibble(char n)
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index b6bc43e07eed..7ddc22c2bb54 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -92,7 +92,7 @@ static struct platform_device wnr854t_nor_flash = {
92}; 92};
93 93
94static struct mv643xx_eth_platform_data wnr854t_eth_data = { 94static struct mv643xx_eth_platform_data wnr854t_eth_data = {
95 .phy_addr = -1, 95 .phy_addr = MV643XX_ETH_PHY_NONE,
96 .speed = SPEED_1000, 96 .speed = SPEED_1000,
97 .duplex = DUPLEX_FULL, 97 .duplex = DUPLEX_FULL,
98}; 98};
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index b10da17b3fbd..9a4fd5256462 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -100,7 +100,7 @@ static struct platform_device wrt350n_v2_nor_flash = {
100}; 100};
101 101
102static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = { 102static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = {
103 .phy_addr = -1, 103 .phy_addr = MV643XX_ETH_PHY_NONE,
104 .speed = SPEED_1000, 104 .speed = SPEED_1000,
105 .duplex = DUPLEX_FULL, 105 .duplex = DUPLEX_FULL,
106}; 106};
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
index a82dad1a8cc8..df83b97f303f 100644
--- a/arch/arm/mach-pxa/cm-x270.c
+++ b/arch/arm/mach-pxa/cm-x270.c
@@ -162,7 +162,7 @@ static void __init cmx270_init_rtc(void)
162 platform_device_register(&cmx270_rtc_device); 162 platform_device_register(&cmx270_rtc_device);
163} 163}
164#else 164#else
165static inline void cmx2xx_init_rtc(void) {} 165static inline void cmx270_init_rtc(void) {}
166#endif 166#endif
167 167
168/* 2700G graphics */ 168/* 2700G graphics */
diff --git a/arch/arm/mach-pxa/include/mach/camera.h b/arch/arm/mach-pxa/include/mach/camera.h
index 39516ced8b1f..31abe6d514b8 100644
--- a/arch/arm/mach-pxa/include/mach/camera.h
+++ b/arch/arm/mach-pxa/include/mach/camera.h
@@ -36,8 +36,6 @@
36 36
37struct pxacamera_platform_data { 37struct pxacamera_platform_data {
38 int (*init)(struct device *); 38 int (*init)(struct device *);
39 int (*power)(struct device *, int);
40 int (*reset)(struct device *, int);
41 39
42 unsigned long flags; 40 unsigned long flags;
43 unsigned long mclk_10khz; 41 unsigned long mclk_10khz;
diff --git a/arch/arm/mach-pxa/include/mach/reset.h b/arch/arm/mach-pxa/include/mach/reset.h
index 9489a48871a8..7b8842cfa5fc 100644
--- a/arch/arm/mach-pxa/include/mach/reset.h
+++ b/arch/arm/mach-pxa/include/mach/reset.h
@@ -10,9 +10,12 @@
10extern unsigned int reset_status; 10extern unsigned int reset_status;
11extern void clear_reset_status(unsigned int mask); 11extern void clear_reset_status(unsigned int mask);
12 12
13/* 13/**
14 * register GPIO as reset generator 14 * init_gpio_reset() - register GPIO as reset generator
15 *
16 * @gpio - gpio nr
17 * @output - set gpio as out/low instead of input during normal work
15 */ 18 */
16extern int init_gpio_reset(int gpio); 19extern int init_gpio_reset(int gpio, int output);
17 20
18#endif /* __ASM_ARCH_RESET_H */ 21#endif /* __ASM_ARCH_RESET_H */
diff --git a/arch/arm/mach-pxa/reset.c b/arch/arm/mach-pxa/reset.c
index 31d78855aac8..1b2af575c40f 100644
--- a/arch/arm/mach-pxa/reset.c
+++ b/arch/arm/mach-pxa/reset.c
@@ -20,7 +20,7 @@ static void do_hw_reset(void);
20 20
21static int reset_gpio = -1; 21static int reset_gpio = -1;
22 22
23int init_gpio_reset(int gpio) 23int init_gpio_reset(int gpio, int output)
24{ 24{
25 int rc; 25 int rc;
26 26
@@ -30,9 +30,12 @@ int init_gpio_reset(int gpio)
30 goto out; 30 goto out;
31 } 31 }
32 32
33 rc = gpio_direction_input(gpio); 33 if (output)
34 rc = gpio_direction_output(gpio, 0);
35 else
36 rc = gpio_direction_input(gpio);
34 if (rc) { 37 if (rc) {
35 printk(KERN_ERR "Can't configure reset_gpio for input\n"); 38 printk(KERN_ERR "Can't configure reset_gpio\n");
36 gpio_free(gpio); 39 gpio_free(gpio);
37 goto out; 40 goto out;
38 } 41 }
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 9b4f24c7c055..524f656dc56d 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -618,7 +618,7 @@ static void spitz_restart(char mode)
618 618
619static void __init common_init(void) 619static void __init common_init(void)
620{ 620{
621 init_gpio_reset(SPITZ_GPIO_ON_RESET); 621 init_gpio_reset(SPITZ_GPIO_ON_RESET, 1);
622 pm_power_off = spitz_poweroff; 622 pm_power_off = spitz_poweroff;
623 arm_pm_restart = spitz_restart; 623 arm_pm_restart = spitz_restart;
624 624
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index 9f3ef9eb32e3..130e37e4ebdd 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -781,7 +781,7 @@ static void __init tosa_init(void)
781 gpio_set_wake(MFP_PIN_GPIO1, 1); 781 gpio_set_wake(MFP_PIN_GPIO1, 1);
782 /* We can't pass to gpio-keys since it will drop the Reset altfunc */ 782 /* We can't pass to gpio-keys since it will drop the Reset altfunc */
783 783
784 init_gpio_reset(TOSA_GPIO_ON_RESET); 784 init_gpio_reset(TOSA_GPIO_ON_RESET, 0);
785 785
786 pm_power_off = tosa_poweroff; 786 pm_power_off = tosa_poweroff;
787 arm_pm_restart = tosa_restart; 787 arm_pm_restart = tosa_restart;
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c
index d7632f63603c..4b3120dbc049 100644
--- a/arch/arm/mach-pxa/viper.c
+++ b/arch/arm/mach-pxa/viper.c
@@ -204,25 +204,54 @@ static void viper_set_core_cpu_voltage(unsigned long khz, int force)
204 204
205/* Interrupt handling */ 205/* Interrupt handling */
206static unsigned long viper_irq_enabled_mask; 206static unsigned long viper_irq_enabled_mask;
207static const int viper_isa_irqs[] = { 3, 4, 5, 6, 7, 10, 11, 12, 9, 14, 15 };
208static const int viper_isa_irq_map[] = {
209 0, /* ISA irq #0, invalid */
210 0, /* ISA irq #1, invalid */
211 0, /* ISA irq #2, invalid */
212 1 << 0, /* ISA irq #3 */
213 1 << 1, /* ISA irq #4 */
214 1 << 2, /* ISA irq #5 */
215 1 << 3, /* ISA irq #6 */
216 1 << 4, /* ISA irq #7 */
217 0, /* ISA irq #8, invalid */
218 1 << 8, /* ISA irq #9 */
219 1 << 5, /* ISA irq #10 */
220 1 << 6, /* ISA irq #11 */
221 1 << 7, /* ISA irq #12 */
222 0, /* ISA irq #13, invalid */
223 1 << 9, /* ISA irq #14 */
224 1 << 10, /* ISA irq #15 */
225};
226
227static inline int viper_irq_to_bitmask(unsigned int irq)
228{
229 return viper_isa_irq_map[irq - PXA_ISA_IRQ(0)];
230}
231
232static inline int viper_bit_to_irq(int bit)
233{
234 return viper_isa_irqs[bit] + PXA_ISA_IRQ(0);
235}
207 236
208static void viper_ack_irq(unsigned int irq) 237static void viper_ack_irq(unsigned int irq)
209{ 238{
210 int viper_irq = irq - PXA_ISA_IRQ(0); 239 int viper_irq = viper_irq_to_bitmask(irq);
211 240
212 if (viper_irq < 8) 241 if (viper_irq & 0xff)
213 VIPER_LO_IRQ_STATUS = 1 << viper_irq; 242 VIPER_LO_IRQ_STATUS = viper_irq;
214 else 243 else
215 VIPER_HI_IRQ_STATUS = 1 << (viper_irq - 8); 244 VIPER_HI_IRQ_STATUS = (viper_irq >> 8);
216} 245}
217 246
218static void viper_mask_irq(unsigned int irq) 247static void viper_mask_irq(unsigned int irq)
219{ 248{
220 viper_irq_enabled_mask &= ~(1 << (irq - PXA_ISA_IRQ(0))); 249 viper_irq_enabled_mask &= ~(viper_irq_to_bitmask(irq));
221} 250}
222 251
223static void viper_unmask_irq(unsigned int irq) 252static void viper_unmask_irq(unsigned int irq)
224{ 253{
225 viper_irq_enabled_mask |= (1 << (irq - PXA_ISA_IRQ(0))); 254 viper_irq_enabled_mask |= viper_irq_to_bitmask(irq);
226} 255}
227 256
228static inline unsigned long viper_irq_pending(void) 257static inline unsigned long viper_irq_pending(void)
@@ -237,8 +266,12 @@ static void viper_irq_handler(unsigned int irq, struct irq_desc *desc)
237 266
238 pending = viper_irq_pending(); 267 pending = viper_irq_pending();
239 do { 268 do {
269 /* we're in a chained irq handler,
270 * so ack the interrupt by hand */
271 GEDR(VIPER_CPLD_GPIO) = GPIO_bit(VIPER_CPLD_GPIO);
272
240 if (likely(pending)) { 273 if (likely(pending)) {
241 irq = PXA_ISA_IRQ(0) + __ffs(pending); 274 irq = viper_bit_to_irq(__ffs(pending));
242 generic_handle_irq(irq); 275 generic_handle_irq(irq);
243 } 276 }
244 pending = viper_irq_pending(); 277 pending = viper_irq_pending();
@@ -254,15 +287,14 @@ static struct irq_chip viper_irq_chip = {
254 287
255static void __init viper_init_irq(void) 288static void __init viper_init_irq(void)
256{ 289{
257 const int isa_irqs[] = { 3, 4, 5, 6, 7, 10, 11, 12, 9, 14, 15 }; 290 int level;
258 int irq;
259 int isa_irq; 291 int isa_irq;
260 292
261 pxa25x_init_irq(); 293 pxa25x_init_irq();
262 294
263 /* setup ISA IRQs */ 295 /* setup ISA IRQs */
264 for (irq = 0; irq < ARRAY_SIZE(isa_irqs); irq++) { 296 for (level = 0; level < ARRAY_SIZE(viper_isa_irqs); level++) {
265 isa_irq = isa_irqs[irq]; 297 isa_irq = viper_bit_to_irq(level);
266 set_irq_chip(isa_irq, &viper_irq_chip); 298 set_irq_chip(isa_irq, &viper_irq_chip);
267 set_irq_handler(isa_irq, handle_edge_irq); 299 set_irq_handler(isa_irq, handle_edge_irq);
268 set_irq_flags(isa_irq, IRQF_VALID | IRQF_PROBE); 300 set_irq_flags(isa_irq, IRQF_VALID | IRQF_PROBE);
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 1553d986dcbd..565e0ba0d67e 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -28,8 +28,8 @@
28#include <linux/amba/clcd.h> 28#include <linux/amba/clcd.h>
29#include <linux/clocksource.h> 29#include <linux/clocksource.h>
30#include <linux/clockchips.h> 30#include <linux/clockchips.h>
31#include <linux/io.h>
32#include <linux/cnt32_to_63.h> 31#include <linux/cnt32_to_63.h>
32#include <linux/io.h>
33 33
34#include <asm/system.h> 34#include <asm/system.h>
35#include <mach/hardware.h> 35#include <mach/hardware.h>
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index ed94dee326ca..0cb2b22388e9 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -438,16 +438,8 @@ static inline void omap_init_uwire(void) {}
438 438
439#if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE) 439#if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE)
440 440
441#ifdef CONFIG_ARCH_OMAP24XX
442#define OMAP_WDT_BASE 0x48022000
443#else
444#define OMAP_WDT_BASE 0xfffeb000
445#endif
446
447static struct resource wdt_resources[] = { 441static struct resource wdt_resources[] = {
448 { 442 {
449 .start = OMAP_WDT_BASE,
450 .end = OMAP_WDT_BASE + 0x4f,
451 .flags = IORESOURCE_MEM, 443 .flags = IORESOURCE_MEM,
452 }, 444 },
453}; 445};
@@ -461,6 +453,19 @@ static struct platform_device omap_wdt_device = {
461 453
462static void omap_init_wdt(void) 454static void omap_init_wdt(void)
463{ 455{
456 if (cpu_is_omap16xx())
457 wdt_resources[0].start = 0xfffeb000;
458 else if (cpu_is_omap2420())
459 wdt_resources[0].start = 0x48022000; /* WDT2 */
460 else if (cpu_is_omap2430())
461 wdt_resources[0].start = 0x49016000; /* WDT2 */
462 else if (cpu_is_omap343x())
463 wdt_resources[0].start = 0x48314000; /* WDT2 */
464 else
465 return;
466
467 wdt_resources[0].end = wdt_resources[0].start + 0x4f;
468
464 (void) platform_device_register(&omap_wdt_device); 469 (void) platform_device_register(&omap_wdt_device);
465} 470}
466#else 471#else
diff --git a/arch/arm/plat-omap/include/mach/mtd-xip.h b/arch/arm/plat-omap/include/mach/mtd-xip.h
index 5cee7e16a1b4..39b591ff54bb 100644
--- a/arch/arm/plat-omap/include/mach/mtd-xip.h
+++ b/arch/arm/plat-omap/include/mach/mtd-xip.h
@@ -3,7 +3,7 @@
3 * 3 *
4 * Do not include this file directly. It's included from linux/mtd/xip.h 4 * Do not include this file directly. It's included from linux/mtd/xip.h
5 * 5 *
6 * Author: Vladimir Barinov <vbarinov@ru.mvista.com> 6 * Author: Vladimir Barinov <vbarinov@embeddedalley.com>
7 * 7 *
8 * (c) 2005 MontaVista Software, Inc. This file is licensed under the 8 * (c) 2005 MontaVista Software, Inc. This file is licensed under the
9 * terms of the GNU General Public License version 2. This program is 9 * terms of the GNU General Public License version 2. This program is