diff options
Diffstat (limited to 'arch/arm')
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" | |||
8 | config ARM | 8 | config 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 | ||
143 | config ARCH_SUPPORTS_AOUT | ||
144 | def_bool y | ||
145 | |||
146 | config ARCH_MAY_HAVE_PC_FDC | 144 | config 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> | ||
6 | typedef __kernel_fsid_t fsid_t; | ||
7 | #endif | ||
8 | |||
9 | struct 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 | */ |
28 | struct 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); | |||
26 | static dma_t dma_chan[MAX_DMA_CHANNELS]; | 26 | static dma_t dma_chan[MAX_DMA_CHANNELS]; |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * Get dma list for /proc/dma | ||
30 | */ | ||
31 | int 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 | ||
27 | static struct mv643xx_eth_platform_data db88f6281_ge00_data = { | 27 | static struct mv643xx_eth_platform_data db88f6281_ge00_data = { |
28 | .phy_addr = 8, | 28 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
29 | }; | 29 | }; |
30 | 30 | ||
31 | static struct mv_sata_platform_data db88f6281_sata_data = { | 31 | static 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 | ||
32 | static struct mv643xx_eth_platform_data rd88f6192_ge00_data = { | 32 | static struct mv643xx_eth_platform_data rd88f6192_ge00_data = { |
33 | .phy_addr = 8, | 33 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
34 | }; | 34 | }; |
35 | 35 | ||
36 | static struct mv_sata_platform_data rd88f6192_sata_data = { | 36 | static 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 | ||
71 | static struct mv643xx_eth_platform_data rd88f6281_ge00_data = { | 71 | static 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 | ||
69 | static struct mv643xx_eth_platform_data lb88rc8480_ge0_data = { | 69 | static 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) | |||
335 | struct mv643xx_eth_shared_platform_data mv78xx0_ge01_shared_data = { | 335 | struct 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 | ||
340 | static struct resource mv78xx0_ge01_shared_resources[] = { | 341 | static struct resource mv78xx0_ge01_shared_resources[] = { |
@@ -375,7 +376,6 @@ static struct platform_device mv78xx0_ge01 = { | |||
375 | void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data) | 376 | void __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) | |||
389 | struct mv643xx_eth_shared_platform_data mv78xx0_ge10_shared_data = { | 389 | struct 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 | ||
394 | static struct resource mv78xx0_ge10_shared_resources[] = { | 395 | static struct resource mv78xx0_ge10_shared_resources[] = { |
@@ -429,7 +430,6 @@ static struct platform_device mv78xx0_ge10 = { | |||
429 | void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data) | 430 | void __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) | |||
443 | struct mv643xx_eth_shared_platform_data mv78xx0_ge11_shared_data = { | 443 | struct 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 | ||
448 | static struct resource mv78xx0_ge11_shared_resources[] = { | 449 | static struct resource mv78xx0_ge11_shared_resources[] = { |
@@ -483,7 +484,6 @@ static struct platform_device mv78xx0_ge11 = { | |||
483 | void __init mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data) | 484 | void __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 | ||
21 | static struct mv643xx_eth_platform_data db78x00_ge00_data = { | 21 | static struct mv643xx_eth_platform_data db78x00_ge00_data = { |
22 | .phy_addr = 8, | 22 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
23 | }; | 23 | }; |
24 | 24 | ||
25 | static struct mv643xx_eth_platform_data db78x00_ge01_data = { | 25 | static struct mv643xx_eth_platform_data db78x00_ge01_data = { |
26 | .phy_addr = 9, | 26 | .phy_addr = MV643XX_ETH_PHY_ADDR(9), |
27 | }; | 27 | }; |
28 | 28 | ||
29 | static struct mv643xx_eth_platform_data db78x00_ge10_data = { | 29 | static struct mv643xx_eth_platform_data db78x00_ge10_data = { |
30 | .phy_addr = -1, | 30 | .phy_addr = MV643XX_ETH_PHY_NONE, |
31 | }; | 31 | }; |
32 | 32 | ||
33 | static struct mv643xx_eth_platform_data db78x00_ge11_data = { | 33 | static struct mv643xx_eth_platform_data db78x00_ge11_data = { |
34 | .phy_addr = -1, | 34 | .phy_addr = MV643XX_ETH_PHY_NONE, |
35 | }; | 35 | }; |
36 | 36 | ||
37 | static struct mv_sata_platform_data db78x00_sata_data = { | 37 | static 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 | ****************************************************************************/ |
287 | static struct mv643xx_eth_platform_data db88f5281_eth_data = { | 287 | static 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 | ||
81 | static struct mv643xx_eth_platform_data dns323_eth_data = { | 81 | static 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 | ||
163 | static struct mv643xx_eth_platform_data kurobox_pro_eth_data = { | 163 | static 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 | ||
111 | static struct mv643xx_eth_platform_data mss2_eth_data = { | 111 | static 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 | ****************************************************************************/ |
41 | static struct mv643xx_eth_platform_data mv2120_eth_data = { | 41 | static struct mv643xx_eth_platform_data mv2120_eth_data = { |
42 | .phy_addr = 8, | 42 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
43 | }; | 43 | }; |
44 | 44 | ||
45 | static struct mv_sata_platform_data mv2120_sata_data = { | 45 | static 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 | ||
90 | static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = { | 90 | static 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 | ||
91 | static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = { | 91 | static 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 | ||
223 | static struct mv643xx_eth_platform_data rd88f5182_eth_data = { | 223 | static 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 | ****************************************************************************/ |
105 | static struct mv643xx_eth_platform_data ts78xx_eth_data = { | 105 | static 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 | ||
51 | struct mv643xx_eth_platform_data qnap_tsx09_eth_data = { | 51 | struct mv643xx_eth_platform_data qnap_tsx09_eth_data = { |
52 | .phy_addr = 8, | 52 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
53 | }; | 53 | }; |
54 | 54 | ||
55 | static int __init qnap_tsx09_parse_hex_nibble(char n) | 55 | static 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 | ||
94 | static struct mv643xx_eth_platform_data wnr854t_eth_data = { | 94 | static 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 | ||
102 | static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = { | 102 | static 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 |
165 | static inline void cmx2xx_init_rtc(void) {} | 165 | static 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 | ||
37 | struct pxacamera_platform_data { | 37 | struct 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 @@ | |||
10 | extern unsigned int reset_status; | 10 | extern unsigned int reset_status; |
11 | extern void clear_reset_status(unsigned int mask); | 11 | extern 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 | */ |
16 | extern int init_gpio_reset(int gpio); | 19 | extern 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 | ||
21 | static int reset_gpio = -1; | 21 | static int reset_gpio = -1; |
22 | 22 | ||
23 | int init_gpio_reset(int gpio) | 23 | int 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 | ||
619 | static void __init common_init(void) | 619 | static 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 */ |
206 | static unsigned long viper_irq_enabled_mask; | 206 | static unsigned long viper_irq_enabled_mask; |
207 | static const int viper_isa_irqs[] = { 3, 4, 5, 6, 7, 10, 11, 12, 9, 14, 15 }; | ||
208 | static 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 | |||
227 | static inline int viper_irq_to_bitmask(unsigned int irq) | ||
228 | { | ||
229 | return viper_isa_irq_map[irq - PXA_ISA_IRQ(0)]; | ||
230 | } | ||
231 | |||
232 | static inline int viper_bit_to_irq(int bit) | ||
233 | { | ||
234 | return viper_isa_irqs[bit] + PXA_ISA_IRQ(0); | ||
235 | } | ||
207 | 236 | ||
208 | static void viper_ack_irq(unsigned int irq) | 237 | static 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 | ||
218 | static void viper_mask_irq(unsigned int irq) | 247 | static 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 | ||
223 | static void viper_unmask_irq(unsigned int irq) | 252 | static 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 | ||
228 | static inline unsigned long viper_irq_pending(void) | 257 | static 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 | ||
255 | static void __init viper_init_irq(void) | 288 | static 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 | |||
447 | static struct resource wdt_resources[] = { | 441 | static 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 | ||
462 | static void omap_init_wdt(void) | 454 | static 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 |