diff options
Diffstat (limited to 'arch/arm')
85 files changed, 1214 insertions, 651 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5959e36c3b4c..32ba00bd0a2f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -10,9 +10,9 @@ config ARM | |||
10 | default y | 10 | default y |
11 | help | 11 | help |
12 | The ARM series is a line of low-power-consumption RISC chip designs | 12 | The ARM series is a line of low-power-consumption RISC chip designs |
13 | licensed by ARM ltd and targeted at embedded applications and | 13 | licensed by ARM Ltd and targeted at embedded applications and |
14 | handhelds such as the Compaq IPAQ. ARM-based PCs are no longer | 14 | handhelds such as the Compaq IPAQ. ARM-based PCs are no longer |
15 | manufactured, but legacy ARM-based PC hardware remains popular in | 15 | manufactured, but legacy ARM-based PC hardware remains popular in |
16 | Europe. There is an ARM Linux project with a web page at | 16 | Europe. There is an ARM Linux project with a web page at |
17 | <http://www.arm.linux.org.uk/>. | 17 | <http://www.arm.linux.org.uk/>. |
18 | 18 | ||
@@ -69,57 +69,77 @@ config GENERIC_ISA_DMA | |||
69 | config FIQ | 69 | config FIQ |
70 | bool | 70 | bool |
71 | 71 | ||
72 | config ARCH_MTD_XIP | ||
73 | bool | ||
74 | |||
72 | source "init/Kconfig" | 75 | source "init/Kconfig" |
73 | 76 | ||
74 | menu "System Type" | 77 | menu "System Type" |
75 | 78 | ||
76 | choice | 79 | choice |
77 | prompt "ARM system type" | 80 | prompt "ARM system type" |
78 | default ARCH_RPC | 81 | default ARCH_VERSATILE |
79 | 82 | ||
80 | config ARCH_CLPS7500 | 83 | config ARCH_CLPS7500 |
81 | bool "Cirrus-CL-PS7500FE" | 84 | bool "Cirrus-CL-PS7500FE" |
82 | select TIMER_ACORN | 85 | select TIMER_ACORN |
83 | select ISA | 86 | select ISA |
87 | help | ||
88 | Support for the Cirrus Logic PS7500FE system-on-a-chip. | ||
84 | 89 | ||
85 | config ARCH_CLPS711X | 90 | config ARCH_CLPS711X |
86 | bool "CLPS711x/EP721x-based" | 91 | bool "CLPS711x/EP721x-based" |
92 | help | ||
93 | Support for Cirrus Logic 711x/721x based boards. | ||
87 | 94 | ||
88 | config ARCH_CO285 | 95 | config ARCH_CO285 |
89 | bool "Co-EBSA285" | 96 | bool "Co-EBSA285" |
90 | select FOOTBRIDGE | 97 | select FOOTBRIDGE |
91 | select FOOTBRIDGE_ADDIN | 98 | select FOOTBRIDGE_ADDIN |
99 | help | ||
100 | Support for Intel's EBSA285 companion chip. | ||
92 | 101 | ||
93 | config ARCH_EBSA110 | 102 | config ARCH_EBSA110 |
94 | bool "EBSA-110" | 103 | bool "EBSA-110" |
95 | select ISA | 104 | select ISA |
96 | help | 105 | help |
97 | This is an evaluation board for the StrongARM processor available | 106 | This is an evaluation board for the StrongARM processor available |
98 | from Digital. It has limited hardware on-board, including an onboard | 107 | from Digital. It has limited hardware on-board, including an |
99 | Ethernet interface, two PCMCIA sockets, two serial ports and a | 108 | Ethernet interface, two PCMCIA sockets, two serial ports and a |
100 | parallel port. | 109 | parallel port. |
101 | 110 | ||
102 | config ARCH_FOOTBRIDGE | 111 | config ARCH_FOOTBRIDGE |
103 | bool "FootBridge" | 112 | bool "FootBridge" |
104 | select FOOTBRIDGE | 113 | select FOOTBRIDGE |
114 | help | ||
115 | Support for systems based on the DC21285 companion chip | ||
116 | ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder. | ||
105 | 117 | ||
106 | config ARCH_INTEGRATOR | 118 | config ARCH_INTEGRATOR |
107 | bool "Integrator" | 119 | bool "Integrator" |
108 | select ARM_AMBA | 120 | select ARM_AMBA |
109 | select ICST525 | 121 | select ICST525 |
122 | help | ||
123 | Support for ARM's Integrator platform. | ||
110 | 124 | ||
111 | config ARCH_IOP3XX | 125 | config ARCH_IOP3XX |
112 | bool "IOP3xx-based" | 126 | bool "IOP3xx-based" |
113 | select PCI | 127 | select PCI |
128 | help | ||
129 | Support for Intel's IOP3XX (XScale) family of processors. | ||
114 | 130 | ||
115 | config ARCH_IXP4XX | 131 | config ARCH_IXP4XX |
116 | bool "IXP4xx-based" | 132 | bool "IXP4xx-based" |
117 | select DMABOUNCE | 133 | select DMABOUNCE |
118 | select PCI | 134 | select PCI |
135 | help | ||
136 | Support for Intel's IXP4XX (XScale) family of processors. | ||
119 | 137 | ||
120 | config ARCH_IXP2000 | 138 | config ARCH_IXP2000 |
121 | bool "IXP2400/2800-based" | 139 | bool "IXP2400/2800-based" |
122 | select PCI | 140 | select PCI |
141 | help | ||
142 | Support for Intel's IXP2400/2800 (XScale) family of processors. | ||
123 | 143 | ||
124 | config ARCH_L7200 | 144 | config ARCH_L7200 |
125 | bool "LinkUp-L7200" | 145 | bool "LinkUp-L7200" |
@@ -136,6 +156,9 @@ config ARCH_L7200 | |||
136 | 156 | ||
137 | config ARCH_PXA | 157 | config ARCH_PXA |
138 | bool "PXA2xx-based" | 158 | bool "PXA2xx-based" |
159 | select ARCH_MTD_XIP | ||
160 | help | ||
161 | Support for Intel's PXA2XX processor line. | ||
139 | 162 | ||
140 | config ARCH_RPC | 163 | config ARCH_RPC |
141 | bool "RiscPC" | 164 | bool "RiscPC" |
@@ -152,19 +175,25 @@ config ARCH_SA1100 | |||
152 | bool "SA1100-based" | 175 | bool "SA1100-based" |
153 | select ISA | 176 | select ISA |
154 | select ARCH_DISCONTIGMEM_ENABLE | 177 | select ARCH_DISCONTIGMEM_ENABLE |
178 | select ARCH_MTD_XIP | ||
179 | help | ||
180 | Support for StrongARM 11x0 based boards. | ||
155 | 181 | ||
156 | config ARCH_S3C2410 | 182 | config ARCH_S3C2410 |
157 | bool "Samsung S3C2410" | 183 | bool "Samsung S3C2410" |
158 | help | 184 | help |
159 | Samsung S3C2410X CPU based systems, such as the Simtec Electronics | 185 | Samsung S3C2410X CPU based systems, such as the Simtec Electronics |
160 | BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or | 186 | BAST (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or |
161 | the Samsung SMDK2410 development board (and derviatives). | 187 | the Samsung SMDK2410 development board (and derivatives). |
162 | 188 | ||
163 | config ARCH_SHARK | 189 | config ARCH_SHARK |
164 | bool "Shark" | 190 | bool "Shark" |
165 | select ISA | 191 | select ISA |
166 | select ISA_DMA | 192 | select ISA_DMA |
167 | select PCI | 193 | select PCI |
194 | help | ||
195 | Support for the StrongARM based Digital DNARD machine, also known | ||
196 | as "Shark" (<http://www.shark-linux.de/shark.html>). | ||
168 | 197 | ||
169 | config ARCH_LH7A40X | 198 | config ARCH_LH7A40X |
170 | bool "Sharp LH7A40X" | 199 | bool "Sharp LH7A40X" |
@@ -176,6 +205,8 @@ config ARCH_LH7A40X | |||
176 | 205 | ||
177 | config ARCH_OMAP | 206 | config ARCH_OMAP |
178 | bool "TI OMAP" | 207 | bool "TI OMAP" |
208 | help | ||
209 | Support for TI's OMAP platform (OMAP1 and OMAP2). | ||
179 | 210 | ||
180 | config ARCH_VERSATILE | 211 | config ARCH_VERSATILE |
181 | bool "Versatile" | 212 | bool "Versatile" |
@@ -194,6 +225,8 @@ config ARCH_REALVIEW | |||
194 | 225 | ||
195 | config ARCH_IMX | 226 | config ARCH_IMX |
196 | bool "IMX" | 227 | bool "IMX" |
228 | help | ||
229 | Support for Motorola's i.MX family of processors (MX1, MXL). | ||
197 | 230 | ||
198 | config ARCH_H720X | 231 | config ARCH_H720X |
199 | bool "Hynix-HMS720x-based" | 232 | bool "Hynix-HMS720x-based" |
@@ -210,8 +243,8 @@ config ARCH_AAEC2000 | |||
210 | config ARCH_AT91RM9200 | 243 | config ARCH_AT91RM9200 |
211 | bool "AT91RM9200" | 244 | bool "AT91RM9200" |
212 | help | 245 | help |
213 | Say Y here if you intend to run this kernel on an AT91RM9200-based | 246 | Say Y here if you intend to run this kernel on an Atmel |
214 | board. | 247 | AT91RM9200-based board. |
215 | 248 | ||
216 | endchoice | 249 | endchoice |
217 | 250 | ||
@@ -417,8 +450,8 @@ config AEABI | |||
417 | To use this you need GCC version 4.0.0 or later. | 450 | To use this you need GCC version 4.0.0 or later. |
418 | 451 | ||
419 | config OABI_COMPAT | 452 | config OABI_COMPAT |
420 | bool "Allow old ABI binaries to run with this kernel" | 453 | bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)" |
421 | depends on AEABI | 454 | depends on AEABI && EXPERIMENTAL |
422 | default y | 455 | default y |
423 | help | 456 | help |
424 | This option preserves the old syscall interface along with the | 457 | This option preserves the old syscall interface along with the |
@@ -766,6 +799,8 @@ source "drivers/i2c/Kconfig" | |||
766 | 799 | ||
767 | source "drivers/spi/Kconfig" | 800 | source "drivers/spi/Kconfig" |
768 | 801 | ||
802 | source "drivers/w1/Kconfig" | ||
803 | |||
769 | source "drivers/hwmon/Kconfig" | 804 | source "drivers/hwmon/Kconfig" |
770 | 805 | ||
771 | #source "drivers/l3/Kconfig" | 806 | #source "drivers/l3/Kconfig" |
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c index 159ad7ed7a40..d31b1cb7eea0 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c | |||
@@ -629,6 +629,22 @@ static int locomo_resume(struct platform_device *dev) | |||
629 | } | 629 | } |
630 | #endif | 630 | #endif |
631 | 631 | ||
632 | |||
633 | #define LCM_ALC_EN 0x8000 | ||
634 | |||
635 | void frontlight_set(struct locomo *lchip, int duty, int vr, int bpwf) | ||
636 | { | ||
637 | unsigned long flags; | ||
638 | |||
639 | spin_lock_irqsave(&lchip->lock, flags); | ||
640 | locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); | ||
641 | udelay(100); | ||
642 | locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD); | ||
643 | locomo_writel(bpwf | LCM_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); | ||
644 | spin_unlock_irqrestore(&lchip->lock, flags); | ||
645 | } | ||
646 | |||
647 | |||
632 | /** | 648 | /** |
633 | * locomo_probe - probe for a single LoCoMo chip. | 649 | * locomo_probe - probe for a single LoCoMo chip. |
634 | * @phys_addr: physical address of device. | 650 | * @phys_addr: physical address of device. |
@@ -688,6 +704,11 @@ __locomo_probe(struct device *me, struct resource *mem, int irq) | |||
688 | /* FrontLight */ | 704 | /* FrontLight */ |
689 | locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); | 705 | locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS); |
690 | locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD); | 706 | locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD); |
707 | |||
708 | /* Same constants can be used for collie and poodle | ||
709 | (depending on CONFIG options in original sharp code)? */ | ||
710 | frontlight_set(lchip, 163, 0, 148); | ||
711 | |||
691 | /* Longtime timer */ | 712 | /* Longtime timer */ |
692 | locomo_writel(0, lchip->base + LOCOMO_LTINT); | 713 | locomo_writel(0, lchip->base + LOCOMO_LTINT); |
693 | /* SPI */ | 714 | /* SPI */ |
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c index 48b1e19b131f..e851d86c212c 100644 --- a/arch/arm/common/rtctime.c +++ b/arch/arm/common/rtctime.c | |||
@@ -128,19 +128,27 @@ EXPORT_SYMBOL(rtc_tm_to_time); | |||
128 | /* | 128 | /* |
129 | * Calculate the next alarm time given the requested alarm time mask | 129 | * Calculate the next alarm time given the requested alarm time mask |
130 | * and the current time. | 130 | * and the current time. |
131 | * | ||
132 | * FIXME: for now, we just copy the alarm time because we're lazy (and | ||
133 | * is therefore buggy - setting a 10am alarm at 8pm will not result in | ||
134 | * the alarm triggering.) | ||
135 | */ | 131 | */ |
136 | void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now, struct rtc_time *alrm) | 132 | void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now, struct rtc_time *alrm) |
137 | { | 133 | { |
134 | unsigned long next_time; | ||
135 | unsigned long now_time; | ||
136 | |||
138 | next->tm_year = now->tm_year; | 137 | next->tm_year = now->tm_year; |
139 | next->tm_mon = now->tm_mon; | 138 | next->tm_mon = now->tm_mon; |
140 | next->tm_mday = now->tm_mday; | 139 | next->tm_mday = now->tm_mday; |
141 | next->tm_hour = alrm->tm_hour; | 140 | next->tm_hour = alrm->tm_hour; |
142 | next->tm_min = alrm->tm_min; | 141 | next->tm_min = alrm->tm_min; |
143 | next->tm_sec = alrm->tm_sec; | 142 | next->tm_sec = alrm->tm_sec; |
143 | |||
144 | rtc_tm_to_time(now, &now_time); | ||
145 | rtc_tm_to_time(next, &next_time); | ||
146 | |||
147 | if (next_time < now_time) { | ||
148 | /* Advance one day */ | ||
149 | next_time += 60 * 60 * 24; | ||
150 | rtc_time_to_tm(next_time, next); | ||
151 | } | ||
144 | } | 152 | } |
145 | 153 | ||
146 | static inline int rtc_read_time(struct rtc_ops *ops, struct rtc_time *tm) | 154 | static inline int rtc_read_time(struct rtc_ops *ops, struct rtc_time *tm) |
diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig index 5cdd13acf8ff..1fe73d198888 100644 --- a/arch/arm/configs/at91rm9200dk_defconfig +++ b/arch/arm/configs/at91rm9200dk_defconfig | |||
@@ -85,7 +85,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
85 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
86 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
87 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
88 | # CONFIG_ARCH_CAMELOT is not set | ||
89 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
90 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
91 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig index 20838ccf1da7..b7d934cdb1b7 100644 --- a/arch/arm/configs/at91rm9200ek_defconfig +++ b/arch/arm/configs/at91rm9200ek_defconfig | |||
@@ -85,7 +85,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
85 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
86 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
87 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
88 | # CONFIG_ARCH_CAMELOT is not set | ||
89 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
90 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
91 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/bast_defconfig b/arch/arm/configs/bast_defconfig index 6886001b5366..4a8564f386af 100644 --- a/arch/arm/configs/bast_defconfig +++ b/arch/arm/configs/bast_defconfig | |||
@@ -14,8 +14,7 @@ CONFIG_GENERIC_IOMAP=y | |||
14 | # Code maturity level options | 14 | # Code maturity level options |
15 | # | 15 | # |
16 | CONFIG_EXPERIMENTAL=y | 16 | CONFIG_EXPERIMENTAL=y |
17 | # CONFIG_CLEAN_COMPILE is not set | 17 | CONFIG_CLEAN_COMPILE=y |
18 | CONFIG_BROKEN=y | ||
19 | CONFIG_BROKEN_ON_SMP=y | 18 | CONFIG_BROKEN_ON_SMP=y |
20 | 19 | ||
21 | # | 20 | # |
@@ -360,7 +359,6 @@ CONFIG_BLK_DEV_IDE_BAST=y | |||
360 | # | 359 | # |
361 | # IEEE 1394 (FireWire) support | 360 | # IEEE 1394 (FireWire) support |
362 | # | 361 | # |
363 | # CONFIG_IEEE1394 is not set | ||
364 | 362 | ||
365 | # | 363 | # |
366 | # I2O device support | 364 | # I2O device support |
@@ -781,7 +779,6 @@ CONFIG_SYSFS=y | |||
781 | # CONFIG_DEVFS_FS is not set | 779 | # CONFIG_DEVFS_FS is not set |
782 | # CONFIG_DEVPTS_FS_XATTR is not set | 780 | # CONFIG_DEVPTS_FS_XATTR is not set |
783 | # CONFIG_TMPFS is not set | 781 | # CONFIG_TMPFS is not set |
784 | # CONFIG_HUGETLBFS is not set | ||
785 | # CONFIG_HUGETLB_PAGE is not set | 782 | # CONFIG_HUGETLB_PAGE is not set |
786 | CONFIG_RAMFS=y | 783 | CONFIG_RAMFS=y |
787 | 784 | ||
diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig index 15468a0cf70e..c9aa878e610a 100644 --- a/arch/arm/configs/collie_defconfig +++ b/arch/arm/configs/collie_defconfig | |||
@@ -13,8 +13,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
13 | # Code maturity level options | 13 | # Code maturity level options |
14 | # | 14 | # |
15 | CONFIG_EXPERIMENTAL=y | 15 | CONFIG_EXPERIMENTAL=y |
16 | # CONFIG_CLEAN_COMPILE is not set | 16 | CONFIG_CLEAN_COMPILE=y |
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | 17 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_LOCK_KERNEL=y | 18 | CONFIG_LOCK_KERNEL=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
@@ -308,9 +307,7 @@ CONFIG_MTD_CFI_I2=y | |||
308 | # CONFIG_MTD_ROM is not set | 307 | # CONFIG_MTD_ROM is not set |
309 | # CONFIG_MTD_ABSENT is not set | 308 | # CONFIG_MTD_ABSENT is not set |
310 | CONFIG_MTD_OBSOLETE_CHIPS=y | 309 | CONFIG_MTD_OBSOLETE_CHIPS=y |
311 | # CONFIG_MTD_AMDSTD is not set | ||
312 | CONFIG_MTD_SHARP=y | 310 | CONFIG_MTD_SHARP=y |
313 | # CONFIG_MTD_JEDEC is not set | ||
314 | 311 | ||
315 | # | 312 | # |
316 | # Mapping drivers for chip access | 313 | # Mapping drivers for chip access |
@@ -396,7 +393,6 @@ CONFIG_ATA_OVER_ETH=m | |||
396 | # | 393 | # |
397 | # IEEE 1394 (FireWire) support | 394 | # IEEE 1394 (FireWire) support |
398 | # | 395 | # |
399 | # CONFIG_IEEE1394 is not set | ||
400 | 396 | ||
401 | # | 397 | # |
402 | # I2O device support | 398 | # I2O device support |
@@ -741,7 +737,6 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
741 | CONFIG_PROC_FS=y | 737 | CONFIG_PROC_FS=y |
742 | CONFIG_SYSFS=y | 738 | CONFIG_SYSFS=y |
743 | CONFIG_TMPFS=y | 739 | CONFIG_TMPFS=y |
744 | # CONFIG_HUGETLBFS is not set | ||
745 | # CONFIG_HUGETLB_PAGE is not set | 740 | # CONFIG_HUGETLB_PAGE is not set |
746 | CONFIG_RAMFS=y | 741 | CONFIG_RAMFS=y |
747 | # CONFIG_RELAYFS_FS is not set | 742 | # CONFIG_RELAYFS_FS is not set |
diff --git a/arch/arm/configs/csb337_defconfig b/arch/arm/configs/csb337_defconfig index 885a3184830a..94bd9932a402 100644 --- a/arch/arm/configs/csb337_defconfig +++ b/arch/arm/configs/csb337_defconfig | |||
@@ -85,7 +85,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
85 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
86 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
87 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
88 | # CONFIG_ARCH_CAMELOT is not set | ||
89 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
90 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
91 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/csb637_defconfig b/arch/arm/configs/csb637_defconfig index 95a96a5462a0..1519124c5501 100644 --- a/arch/arm/configs/csb637_defconfig +++ b/arch/arm/configs/csb637_defconfig | |||
@@ -85,7 +85,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
85 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
86 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
87 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
88 | # CONFIG_ARCH_CAMELOT is not set | ||
89 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
90 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
91 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/enp2611_defconfig b/arch/arm/configs/enp2611_defconfig index 9592e3925c79..5fdaf3ce9d56 100644 --- a/arch/arm/configs/enp2611_defconfig +++ b/arch/arm/configs/enp2611_defconfig | |||
@@ -171,7 +171,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
171 | # | 171 | # |
172 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 172 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
173 | CONFIG_ZBOOT_ROM_BSS=0x0 | 173 | CONFIG_ZBOOT_ROM_BSS=0x0 |
174 | CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware" | 174 | CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0" |
175 | # CONFIG_XIP_KERNEL is not set | 175 | # CONFIG_XIP_KERNEL is not set |
176 | 176 | ||
177 | # | 177 | # |
diff --git a/arch/arm/configs/ixdp2400_defconfig b/arch/arm/configs/ixdp2400_defconfig index d9d6bb86a6fa..c67fc449a11f 100644 --- a/arch/arm/configs/ixdp2400_defconfig +++ b/arch/arm/configs/ixdp2400_defconfig | |||
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
172 | # | 172 | # |
173 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 173 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
174 | CONFIG_ZBOOT_ROM_BSS=0x0 | 174 | CONFIG_ZBOOT_ROM_BSS=0x0 |
175 | CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware" | 175 | CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0" |
176 | # CONFIG_XIP_KERNEL is not set | 176 | # CONFIG_XIP_KERNEL is not set |
177 | 177 | ||
178 | # | 178 | # |
diff --git a/arch/arm/configs/ixdp2401_defconfig b/arch/arm/configs/ixdp2401_defconfig index 2dc9d499c7d7..60d66e82c51f 100644 --- a/arch/arm/configs/ixdp2401_defconfig +++ b/arch/arm/configs/ixdp2401_defconfig | |||
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
172 | # | 172 | # |
173 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 173 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
174 | CONFIG_ZBOOT_ROM_BSS=0x0 | 174 | CONFIG_ZBOOT_ROM_BSS=0x0 |
175 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware" | 175 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0" |
176 | # CONFIG_XIP_KERNEL is not set | 176 | # CONFIG_XIP_KERNEL is not set |
177 | 177 | ||
178 | # | 178 | # |
diff --git a/arch/arm/configs/ixdp2801_defconfig b/arch/arm/configs/ixdp2801_defconfig index ea8f4b478fa3..f54f3dcc5b33 100644 --- a/arch/arm/configs/ixdp2801_defconfig +++ b/arch/arm/configs/ixdp2801_defconfig | |||
@@ -172,7 +172,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
172 | # | 172 | # |
173 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 173 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
174 | CONFIG_ZBOOT_ROM_BSS=0x0 | 174 | CONFIG_ZBOOT_ROM_BSS=0x0 |
175 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmware ixdp2x01_clock=50000000" | 175 | CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0" |
176 | # CONFIG_XIP_KERNEL is not set | 176 | # CONFIG_XIP_KERNEL is not set |
177 | 177 | ||
178 | # | 178 | # |
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 33f31080a98c..6695b07cf1ba 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -1,11 +1,10 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.16-rc2 |
4 | # Sun Nov 13 17:41:24 2005 | 4 | # Mon Feb 6 11:17:23 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
11 | 10 | ||
@@ -13,8 +12,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
13 | # Code maturity level options | 12 | # Code maturity level options |
14 | # | 13 | # |
15 | CONFIG_EXPERIMENTAL=y | 14 | CONFIG_EXPERIMENTAL=y |
16 | # CONFIG_CLEAN_COMPILE is not set | 15 | CONFIG_CLEAN_COMPILE=y |
17 | CONFIG_BROKEN=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | 16 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
20 | 18 | ||
@@ -29,27 +27,31 @@ CONFIG_SYSVIPC=y | |||
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 27 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 28 | CONFIG_SYSCTL=y |
31 | # CONFIG_AUDIT is not set | 29 | # CONFIG_AUDIT is not set |
32 | # CONFIG_HOTPLUG is not set | ||
33 | CONFIG_KOBJECT_UEVENT=y | ||
34 | # CONFIG_IKCONFIG is not set | 30 | # CONFIG_IKCONFIG is not set |
35 | CONFIG_INITRAMFS_SOURCE="" | 31 | CONFIG_INITRAMFS_SOURCE="" |
32 | CONFIG_UID16=y | ||
33 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
36 | # CONFIG_EMBEDDED is not set | 34 | # CONFIG_EMBEDDED is not set |
37 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
38 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
38 | CONFIG_HOTPLUG=y | ||
40 | CONFIG_PRINTK=y | 39 | CONFIG_PRINTK=y |
41 | CONFIG_BUG=y | 40 | CONFIG_BUG=y |
41 | CONFIG_ELF_CORE=y | ||
42 | CONFIG_BASE_FULL=y | 42 | CONFIG_BASE_FULL=y |
43 | CONFIG_FUTEX=y | 43 | CONFIG_FUTEX=y |
44 | CONFIG_EPOLL=y | 44 | CONFIG_EPOLL=y |
45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
46 | CONFIG_SHMEM=y | 45 | CONFIG_SHMEM=y |
47 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 46 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
48 | CONFIG_CC_ALIGN_LABELS=0 | 47 | CONFIG_CC_ALIGN_LABELS=0 |
49 | CONFIG_CC_ALIGN_LOOPS=0 | 48 | CONFIG_CC_ALIGN_LOOPS=0 |
50 | CONFIG_CC_ALIGN_JUMPS=0 | 49 | CONFIG_CC_ALIGN_JUMPS=0 |
50 | CONFIG_SLAB=y | ||
51 | # CONFIG_TINY_SHMEM is not set | 51 | # CONFIG_TINY_SHMEM is not set |
52 | CONFIG_BASE_SMALL=0 | 52 | CONFIG_BASE_SMALL=0 |
53 | # CONFIG_SLOB is not set | ||
54 | CONFIG_OBSOLETE_INTERMODULE=y | ||
53 | 55 | ||
54 | # | 56 | # |
55 | # Loadable module support | 57 | # Loadable module support |
@@ -103,6 +105,7 @@ CONFIG_ARCH_S3C2410=y | |||
103 | # CONFIG_ARCH_IMX is not set | 105 | # CONFIG_ARCH_IMX is not set |
104 | # CONFIG_ARCH_H720X is not set | 106 | # CONFIG_ARCH_H720X is not set |
105 | # CONFIG_ARCH_AAEC2000 is not set | 107 | # CONFIG_ARCH_AAEC2000 is not set |
108 | # CONFIG_ARCH_AT91RM9200 is not set | ||
106 | 109 | ||
107 | # | 110 | # |
108 | # S3C24XX Implementations | 111 | # S3C24XX Implementations |
@@ -161,7 +164,6 @@ CONFIG_CPU_TLB_V4WBI=y | |||
161 | # Bus support | 164 | # Bus support |
162 | # | 165 | # |
163 | CONFIG_ISA=y | 166 | CONFIG_ISA=y |
164 | CONFIG_ISA_DMA_API=y | ||
165 | 167 | ||
166 | # | 168 | # |
167 | # PCCARD (PCMCIA/CardBus) support | 169 | # PCCARD (PCMCIA/CardBus) support |
@@ -173,6 +175,7 @@ CONFIG_ISA_DMA_API=y | |||
173 | # | 175 | # |
174 | # CONFIG_PREEMPT is not set | 176 | # CONFIG_PREEMPT is not set |
175 | # CONFIG_NO_IDLE_HZ is not set | 177 | # CONFIG_NO_IDLE_HZ is not set |
178 | # CONFIG_AEABI is not set | ||
176 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | 179 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set |
177 | CONFIG_SELECT_MEMORY_MODEL=y | 180 | CONFIG_SELECT_MEMORY_MODEL=y |
178 | CONFIG_FLATMEM_MANUAL=y | 181 | CONFIG_FLATMEM_MANUAL=y |
@@ -215,6 +218,8 @@ CONFIG_BINFMT_AOUT=y | |||
215 | # Power management options | 218 | # Power management options |
216 | # | 219 | # |
217 | CONFIG_PM=y | 220 | CONFIG_PM=y |
221 | CONFIG_PM_LEGACY=y | ||
222 | # CONFIG_PM_DEBUG is not set | ||
218 | CONFIG_APM=y | 223 | CONFIG_APM=y |
219 | 224 | ||
220 | # | 225 | # |
@@ -260,6 +265,11 @@ CONFIG_TCP_CONG_BIC=y | |||
260 | # SCTP Configuration (EXPERIMENTAL) | 265 | # SCTP Configuration (EXPERIMENTAL) |
261 | # | 266 | # |
262 | # CONFIG_IP_SCTP is not set | 267 | # CONFIG_IP_SCTP is not set |
268 | |||
269 | # | ||
270 | # TIPC Configuration (EXPERIMENTAL) | ||
271 | # | ||
272 | # CONFIG_TIPC is not set | ||
263 | # CONFIG_ATM is not set | 273 | # CONFIG_ATM is not set |
264 | # CONFIG_BRIDGE is not set | 274 | # CONFIG_BRIDGE is not set |
265 | # CONFIG_VLAN_8021Q is not set | 275 | # CONFIG_VLAN_8021Q is not set |
@@ -277,7 +287,6 @@ CONFIG_TCP_CONG_BIC=y | |||
277 | # QoS and/or fair queueing | 287 | # QoS and/or fair queueing |
278 | # | 288 | # |
279 | # CONFIG_NET_SCHED is not set | 289 | # CONFIG_NET_SCHED is not set |
280 | # CONFIG_NET_CLS_ROUTE is not set | ||
281 | 290 | ||
282 | # | 291 | # |
283 | # Network testing | 292 | # Network testing |
@@ -301,6 +310,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
301 | # CONFIG_DEBUG_DRIVER is not set | 310 | # CONFIG_DEBUG_DRIVER is not set |
302 | 311 | ||
303 | # | 312 | # |
313 | # Connector - unified userspace <-> kernelspace linker | ||
314 | # | ||
315 | # CONFIG_CONNECTOR is not set | ||
316 | |||
317 | # | ||
304 | # Memory Technology Devices (MTD) | 318 | # Memory Technology Devices (MTD) |
305 | # | 319 | # |
306 | CONFIG_MTD=y | 320 | CONFIG_MTD=y |
@@ -413,8 +427,6 @@ CONFIG_PARPORT_1284=y | |||
413 | # | 427 | # |
414 | # Block devices | 428 | # Block devices |
415 | # | 429 | # |
416 | # CONFIG_BLK_DEV_XD is not set | ||
417 | # CONFIG_PARIDE is not set | ||
418 | # CONFIG_BLK_DEV_COW_COMMON is not set | 430 | # CONFIG_BLK_DEV_COW_COMMON is not set |
419 | CONFIG_BLK_DEV_LOOP=y | 431 | CONFIG_BLK_DEV_LOOP=y |
420 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 432 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
@@ -473,7 +485,6 @@ CONFIG_BLK_DEV_IDE_BAST=y | |||
473 | # | 485 | # |
474 | # IEEE 1394 (FireWire) support | 486 | # IEEE 1394 (FireWire) support |
475 | # | 487 | # |
476 | # CONFIG_IEEE1394 is not set | ||
477 | 488 | ||
478 | # | 489 | # |
479 | # I2O device support | 490 | # I2O device support |
@@ -504,7 +515,6 @@ CONFIG_NETDEVICES=y | |||
504 | CONFIG_NET_ETHERNET=y | 515 | CONFIG_NET_ETHERNET=y |
505 | CONFIG_MII=y | 516 | CONFIG_MII=y |
506 | # CONFIG_NET_VENDOR_3COM is not set | 517 | # CONFIG_NET_VENDOR_3COM is not set |
507 | # CONFIG_LANCE is not set | ||
508 | # CONFIG_NET_VENDOR_SMC is not set | 518 | # CONFIG_NET_VENDOR_SMC is not set |
509 | # CONFIG_SMC91X is not set | 519 | # CONFIG_SMC91X is not set |
510 | CONFIG_DM9000=y | 520 | CONFIG_DM9000=y |
@@ -609,11 +619,11 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
609 | # CONFIG_ROCKETPORT is not set | 619 | # CONFIG_ROCKETPORT is not set |
610 | # CONFIG_CYCLADES is not set | 620 | # CONFIG_CYCLADES is not set |
611 | # CONFIG_DIGIEPCA is not set | 621 | # CONFIG_DIGIEPCA is not set |
612 | # CONFIG_ESPSERIAL is not set | ||
613 | # CONFIG_MOXA_INTELLIO is not set | 622 | # CONFIG_MOXA_INTELLIO is not set |
614 | # CONFIG_MOXA_SMARTIO is not set | 623 | # CONFIG_MOXA_SMARTIO is not set |
615 | # CONFIG_ISI is not set | 624 | # CONFIG_ISI is not set |
616 | # CONFIG_SYNCLINKMP is not set | 625 | # CONFIG_SYNCLINKMP is not set |
626 | # CONFIG_SYNCLINK_GT is not set | ||
617 | # CONFIG_N_HDLC is not set | 627 | # CONFIG_N_HDLC is not set |
618 | # CONFIG_RISCOM8 is not set | 628 | # CONFIG_RISCOM8 is not set |
619 | # CONFIG_SPECIALIX is not set | 629 | # CONFIG_SPECIALIX is not set |
@@ -627,6 +637,7 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
627 | CONFIG_SERIAL_8250=y | 637 | CONFIG_SERIAL_8250=y |
628 | CONFIG_SERIAL_8250_CONSOLE=y | 638 | CONFIG_SERIAL_8250_CONSOLE=y |
629 | CONFIG_SERIAL_8250_NR_UARTS=8 | 639 | CONFIG_SERIAL_8250_NR_UARTS=8 |
640 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
630 | CONFIG_SERIAL_8250_EXTENDED=y | 641 | CONFIG_SERIAL_8250_EXTENDED=y |
631 | CONFIG_SERIAL_8250_MANY_PORTS=y | 642 | CONFIG_SERIAL_8250_MANY_PORTS=y |
632 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 643 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
@@ -689,6 +700,7 @@ CONFIG_S3C2410_RTC=y | |||
689 | # | 700 | # |
690 | # TPM devices | 701 | # TPM devices |
691 | # | 702 | # |
703 | # CONFIG_TCG_TPM is not set | ||
692 | # CONFIG_TELCLOCK is not set | 704 | # CONFIG_TELCLOCK is not set |
693 | 705 | ||
694 | # | 706 | # |
@@ -733,6 +745,12 @@ CONFIG_SENSORS_EEPROM=m | |||
733 | # CONFIG_I2C_DEBUG_CHIP is not set | 745 | # CONFIG_I2C_DEBUG_CHIP is not set |
734 | 746 | ||
735 | # | 747 | # |
748 | # SPI support | ||
749 | # | ||
750 | # CONFIG_SPI is not set | ||
751 | # CONFIG_SPI_MASTER is not set | ||
752 | |||
753 | # | ||
736 | # Hardware Monitoring support | 754 | # Hardware Monitoring support |
737 | # | 755 | # |
738 | CONFIG_HWMON=y | 756 | CONFIG_HWMON=y |
@@ -865,6 +883,7 @@ CONFIG_FS_MBCACHE=y | |||
865 | # CONFIG_JFS_FS is not set | 883 | # CONFIG_JFS_FS is not set |
866 | # CONFIG_FS_POSIX_ACL is not set | 884 | # CONFIG_FS_POSIX_ACL is not set |
867 | # CONFIG_XFS_FS is not set | 885 | # CONFIG_XFS_FS is not set |
886 | # CONFIG_OCFS2_FS is not set | ||
868 | # CONFIG_MINIX_FS is not set | 887 | # CONFIG_MINIX_FS is not set |
869 | CONFIG_ROMFS_FS=y | 888 | CONFIG_ROMFS_FS=y |
870 | CONFIG_INOTIFY=y | 889 | CONFIG_INOTIFY=y |
@@ -896,10 +915,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
896 | CONFIG_PROC_FS=y | 915 | CONFIG_PROC_FS=y |
897 | CONFIG_SYSFS=y | 916 | CONFIG_SYSFS=y |
898 | # CONFIG_TMPFS is not set | 917 | # CONFIG_TMPFS is not set |
899 | # CONFIG_HUGETLBFS is not set | ||
900 | # CONFIG_HUGETLB_PAGE is not set | 918 | # CONFIG_HUGETLB_PAGE is not set |
901 | CONFIG_RAMFS=y | 919 | CONFIG_RAMFS=y |
902 | # CONFIG_RELAYFS_FS is not set | 920 | # CONFIG_RELAYFS_FS is not set |
921 | # CONFIG_CONFIGFS_FS is not set | ||
903 | 922 | ||
904 | # | 923 | # |
905 | # Miscellaneous filesystems | 924 | # Miscellaneous filesystems |
@@ -968,6 +987,7 @@ CONFIG_SOLARIS_X86_PARTITION=y | |||
968 | # CONFIG_SGI_PARTITION is not set | 987 | # CONFIG_SGI_PARTITION is not set |
969 | # CONFIG_ULTRIX_PARTITION is not set | 988 | # CONFIG_ULTRIX_PARTITION is not set |
970 | # CONFIG_SUN_PARTITION is not set | 989 | # CONFIG_SUN_PARTITION is not set |
990 | # CONFIG_KARMA_PARTITION is not set | ||
971 | # CONFIG_EFI_PARTITION is not set | 991 | # CONFIG_EFI_PARTITION is not set |
972 | 992 | ||
973 | # | 993 | # |
@@ -1023,12 +1043,13 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1023 | # Kernel hacking | 1043 | # Kernel hacking |
1024 | # | 1044 | # |
1025 | # CONFIG_PRINTK_TIME is not set | 1045 | # CONFIG_PRINTK_TIME is not set |
1026 | CONFIG_DEBUG_KERNEL=y | ||
1027 | CONFIG_MAGIC_SYSRQ=y | 1046 | CONFIG_MAGIC_SYSRQ=y |
1047 | CONFIG_DEBUG_KERNEL=y | ||
1028 | CONFIG_LOG_BUF_SHIFT=16 | 1048 | CONFIG_LOG_BUF_SHIFT=16 |
1029 | CONFIG_DETECT_SOFTLOCKUP=y | 1049 | CONFIG_DETECT_SOFTLOCKUP=y |
1030 | # CONFIG_SCHEDSTATS is not set | 1050 | # CONFIG_SCHEDSTATS is not set |
1031 | # CONFIG_DEBUG_SLAB is not set | 1051 | # CONFIG_DEBUG_SLAB is not set |
1052 | CONFIG_DEBUG_MUTEXES=y | ||
1032 | # CONFIG_DEBUG_SPINLOCK is not set | 1053 | # CONFIG_DEBUG_SPINLOCK is not set |
1033 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1054 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1034 | # CONFIG_DEBUG_KOBJECT is not set | 1055 | # CONFIG_DEBUG_KOBJECT is not set |
@@ -1037,6 +1058,7 @@ CONFIG_DEBUG_INFO=y | |||
1037 | # CONFIG_DEBUG_FS is not set | 1058 | # CONFIG_DEBUG_FS is not set |
1038 | # CONFIG_DEBUG_VM is not set | 1059 | # CONFIG_DEBUG_VM is not set |
1039 | CONFIG_FRAME_POINTER=y | 1060 | CONFIG_FRAME_POINTER=y |
1061 | CONFIG_FORCED_INLINING=y | ||
1040 | # CONFIG_RCU_TORTURE_TEST is not set | 1062 | # CONFIG_RCU_TORTURE_TEST is not set |
1041 | CONFIG_DEBUG_USER=y | 1063 | CONFIG_DEBUG_USER=y |
1042 | # CONFIG_DEBUG_WAITQ is not set | 1064 | # CONFIG_DEBUG_WAITQ is not set |
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 0abbce8c70bc..b324dcac1c56 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
@@ -57,7 +57,9 @@ int main(void) | |||
57 | DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value)); | 57 | DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value)); |
58 | DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate)); | 58 | DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate)); |
59 | DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); | 59 | DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); |
60 | DEFINE(TI_IWMMXT_STATE, (offsetof(struct thread_info, fpstate)+4)&~7); | 60 | #ifdef CONFIG_IWMMXT |
61 | DEFINE(TI_IWMMXT_STATE, offsetof(struct thread_info, fpstate.iwmmxt)); | ||
62 | #endif | ||
61 | BLANK(); | 63 | BLANK(); |
62 | DEFINE(S_R0, offsetof(struct pt_regs, ARM_r0)); | 64 | DEFINE(S_R0, offsetof(struct pt_regs, ARM_r0)); |
63 | DEFINE(S_R1, offsetof(struct pt_regs, ARM_r1)); | 65 | DEFINE(S_R1, offsetof(struct pt_regs, ARM_r1)); |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 75e6f9a94713..3173924a9b60 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -7,337 +7,334 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | * | 9 | * |
10 | * This file is included twice in entry-common.S | 10 | * This file is included thrice in entry-common.S |
11 | */ | 11 | */ |
12 | #ifndef NR_syscalls | 12 | /* 0 */ CALL(sys_restart_syscall) |
13 | #define NR_syscalls 328 | 13 | CALL(sys_exit) |
14 | #else | 14 | CALL(sys_fork_wrapper) |
15 | 15 | CALL(sys_read) | |
16 | 100: | 16 | CALL(sys_write) |
17 | /* 0 */ .long sys_restart_syscall | 17 | /* 5 */ CALL(sys_open) |
18 | .long sys_exit | 18 | CALL(sys_close) |
19 | .long sys_fork_wrapper | 19 | CALL(sys_ni_syscall) /* was sys_waitpid */ |
20 | .long sys_read | 20 | CALL(sys_creat) |
21 | .long sys_write | 21 | CALL(sys_link) |
22 | /* 5 */ .long sys_open | 22 | /* 10 */ CALL(sys_unlink) |
23 | .long sys_close | 23 | CALL(sys_execve_wrapper) |
24 | .long sys_ni_syscall /* was sys_waitpid */ | 24 | CALL(sys_chdir) |
25 | .long sys_creat | 25 | CALL(OBSOLETE(sys_time)) /* used by libc4 */ |
26 | .long sys_link | 26 | CALL(sys_mknod) |
27 | /* 10 */ .long sys_unlink | 27 | /* 15 */ CALL(sys_chmod) |
28 | .long sys_execve_wrapper | 28 | CALL(sys_lchown16) |
29 | .long sys_chdir | 29 | CALL(sys_ni_syscall) /* was sys_break */ |
30 | .long OBSOLETE(sys_time) /* used by libc4 */ | 30 | CALL(sys_ni_syscall) /* was sys_stat */ |
31 | .long sys_mknod | 31 | CALL(sys_lseek) |
32 | /* 15 */ .long sys_chmod | 32 | /* 20 */ CALL(sys_getpid) |
33 | .long sys_lchown16 | 33 | CALL(sys_mount) |
34 | .long sys_ni_syscall /* was sys_break */ | 34 | CALL(OBSOLETE(sys_oldumount)) /* used by libc4 */ |
35 | .long sys_ni_syscall /* was sys_stat */ | 35 | CALL(sys_setuid16) |
36 | .long sys_lseek | 36 | CALL(sys_getuid16) |
37 | /* 20 */ .long sys_getpid | 37 | /* 25 */ CALL(OBSOLETE(sys_stime)) |
38 | .long sys_mount | 38 | CALL(sys_ptrace) |
39 | .long OBSOLETE(sys_oldumount) /* used by libc4 */ | 39 | CALL(OBSOLETE(sys_alarm)) /* used by libc4 */ |
40 | .long sys_setuid16 | 40 | CALL(sys_ni_syscall) /* was sys_fstat */ |
41 | .long sys_getuid16 | 41 | CALL(sys_pause) |
42 | /* 25 */ .long OBSOLETE(sys_stime) | 42 | /* 30 */ CALL(OBSOLETE(sys_utime)) /* used by libc4 */ |
43 | .long sys_ptrace | 43 | CALL(sys_ni_syscall) /* was sys_stty */ |
44 | .long OBSOLETE(sys_alarm) /* used by libc4 */ | 44 | CALL(sys_ni_syscall) /* was sys_getty */ |
45 | .long sys_ni_syscall /* was sys_fstat */ | 45 | CALL(sys_access) |
46 | .long sys_pause | 46 | CALL(sys_nice) |
47 | /* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */ | 47 | /* 35 */ CALL(sys_ni_syscall) /* was sys_ftime */ |
48 | .long sys_ni_syscall /* was sys_stty */ | 48 | CALL(sys_sync) |
49 | .long sys_ni_syscall /* was sys_getty */ | 49 | CALL(sys_kill) |
50 | .long sys_access | 50 | CALL(sys_rename) |
51 | .long sys_nice | 51 | CALL(sys_mkdir) |
52 | /* 35 */ .long sys_ni_syscall /* was sys_ftime */ | 52 | /* 40 */ CALL(sys_rmdir) |
53 | .long sys_sync | 53 | CALL(sys_dup) |
54 | .long sys_kill | 54 | CALL(sys_pipe) |
55 | .long sys_rename | 55 | CALL(sys_times) |
56 | .long sys_mkdir | 56 | CALL(sys_ni_syscall) /* was sys_prof */ |
57 | /* 40 */ .long sys_rmdir | 57 | /* 45 */ CALL(sys_brk) |
58 | .long sys_dup | 58 | CALL(sys_setgid16) |
59 | .long sys_pipe | 59 | CALL(sys_getgid16) |
60 | .long sys_times | 60 | CALL(sys_ni_syscall) /* was sys_signal */ |
61 | .long sys_ni_syscall /* was sys_prof */ | 61 | CALL(sys_geteuid16) |
62 | /* 45 */ .long sys_brk | 62 | /* 50 */ CALL(sys_getegid16) |
63 | .long sys_setgid16 | 63 | CALL(sys_acct) |
64 | .long sys_getgid16 | 64 | CALL(sys_umount) |
65 | .long sys_ni_syscall /* was sys_signal */ | 65 | CALL(sys_ni_syscall) /* was sys_lock */ |
66 | .long sys_geteuid16 | 66 | CALL(sys_ioctl) |
67 | /* 50 */ .long sys_getegid16 | 67 | /* 55 */ CALL(sys_fcntl) |
68 | .long sys_acct | 68 | CALL(sys_ni_syscall) /* was sys_mpx */ |
69 | .long sys_umount | 69 | CALL(sys_setpgid) |
70 | .long sys_ni_syscall /* was sys_lock */ | 70 | CALL(sys_ni_syscall) /* was sys_ulimit */ |
71 | .long sys_ioctl | 71 | CALL(sys_ni_syscall) /* was sys_olduname */ |
72 | /* 55 */ .long sys_fcntl | 72 | /* 60 */ CALL(sys_umask) |
73 | .long sys_ni_syscall /* was sys_mpx */ | 73 | CALL(sys_chroot) |
74 | .long sys_setpgid | 74 | CALL(sys_ustat) |
75 | .long sys_ni_syscall /* was sys_ulimit */ | 75 | CALL(sys_dup2) |
76 | .long sys_ni_syscall /* was sys_olduname */ | 76 | CALL(sys_getppid) |
77 | /* 60 */ .long sys_umask | 77 | /* 65 */ CALL(sys_getpgrp) |
78 | .long sys_chroot | 78 | CALL(sys_setsid) |
79 | .long sys_ustat | 79 | CALL(sys_sigaction) |
80 | .long sys_dup2 | 80 | CALL(sys_ni_syscall) /* was sys_sgetmask */ |
81 | .long sys_getppid | 81 | CALL(sys_ni_syscall) /* was sys_ssetmask */ |
82 | /* 65 */ .long sys_getpgrp | 82 | /* 70 */ CALL(sys_setreuid16) |
83 | .long sys_setsid | 83 | CALL(sys_setregid16) |
84 | .long sys_sigaction | 84 | CALL(sys_sigsuspend_wrapper) |
85 | .long sys_ni_syscall /* was sys_sgetmask */ | 85 | CALL(sys_sigpending) |
86 | .long sys_ni_syscall /* was sys_ssetmask */ | 86 | CALL(sys_sethostname) |
87 | /* 70 */ .long sys_setreuid16 | 87 | /* 75 */ CALL(sys_setrlimit) |
88 | .long sys_setregid16 | 88 | CALL(OBSOLETE(sys_old_getrlimit)) /* used by libc4 */ |
89 | .long sys_sigsuspend_wrapper | 89 | CALL(sys_getrusage) |
90 | .long sys_sigpending | 90 | CALL(sys_gettimeofday) |
91 | .long sys_sethostname | 91 | CALL(sys_settimeofday) |
92 | /* 75 */ .long sys_setrlimit | 92 | /* 80 */ CALL(sys_getgroups16) |
93 | .long OBSOLETE(sys_old_getrlimit) /* used by libc4 */ | 93 | CALL(sys_setgroups16) |
94 | .long sys_getrusage | 94 | CALL(OBSOLETE(old_select)) /* used by libc4 */ |
95 | .long sys_gettimeofday | 95 | CALL(sys_symlink) |
96 | .long sys_settimeofday | 96 | CALL(sys_ni_syscall) /* was sys_lstat */ |
97 | /* 80 */ .long sys_getgroups16 | 97 | /* 85 */ CALL(sys_readlink) |
98 | .long sys_setgroups16 | 98 | CALL(sys_uselib) |
99 | .long OBSOLETE(old_select) /* used by libc4 */ | 99 | CALL(sys_swapon) |
100 | .long sys_symlink | 100 | CALL(sys_reboot) |
101 | .long sys_ni_syscall /* was sys_lstat */ | 101 | CALL(OBSOLETE(old_readdir)) /* used by libc4 */ |
102 | /* 85 */ .long sys_readlink | 102 | /* 90 */ CALL(OBSOLETE(old_mmap)) /* used by libc4 */ |
103 | .long sys_uselib | 103 | CALL(sys_munmap) |
104 | .long sys_swapon | 104 | CALL(sys_truncate) |
105 | .long sys_reboot | 105 | CALL(sys_ftruncate) |
106 | .long OBSOLETE(old_readdir) /* used by libc4 */ | 106 | CALL(sys_fchmod) |
107 | /* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */ | 107 | /* 95 */ CALL(sys_fchown16) |
108 | .long sys_munmap | 108 | CALL(sys_getpriority) |
109 | .long sys_truncate | 109 | CALL(sys_setpriority) |
110 | .long sys_ftruncate | 110 | CALL(sys_ni_syscall) /* was sys_profil */ |
111 | .long sys_fchmod | 111 | CALL(sys_statfs) |
112 | /* 95 */ .long sys_fchown16 | 112 | /* 100 */ CALL(sys_fstatfs) |
113 | .long sys_getpriority | 113 | CALL(sys_ni_syscall) |
114 | .long sys_setpriority | 114 | CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall))) |
115 | .long sys_ni_syscall /* was sys_profil */ | 115 | CALL(sys_syslog) |
116 | .long sys_statfs | 116 | CALL(sys_setitimer) |
117 | /* 100 */ .long sys_fstatfs | 117 | /* 105 */ CALL(sys_getitimer) |
118 | .long sys_ni_syscall | 118 | CALL(sys_newstat) |
119 | .long OBSOLETE(sys_socketcall) | 119 | CALL(sys_newlstat) |
120 | .long sys_syslog | 120 | CALL(sys_newfstat) |
121 | .long sys_setitimer | 121 | CALL(sys_ni_syscall) /* was sys_uname */ |
122 | /* 105 */ .long sys_getitimer | 122 | /* 110 */ CALL(sys_ni_syscall) /* was sys_iopl */ |
123 | .long sys_newstat | 123 | CALL(sys_vhangup) |
124 | .long sys_newlstat | 124 | CALL(sys_ni_syscall) |
125 | .long sys_newfstat | 125 | CALL(OBSOLETE(sys_syscall)) /* call a syscall */ |
126 | .long sys_ni_syscall /* was sys_uname */ | 126 | CALL(sys_wait4) |
127 | /* 110 */ .long sys_ni_syscall /* was sys_iopl */ | 127 | /* 115 */ CALL(sys_swapoff) |
128 | .long sys_vhangup | 128 | CALL(sys_sysinfo) |
129 | .long sys_ni_syscall | 129 | CALL(OBSOLETE(ABI(sys_ipc, sys_oabi_ipc))) |
130 | .long OBSOLETE(sys_syscall) /* call a syscall */ | 130 | CALL(sys_fsync) |
131 | .long sys_wait4 | 131 | CALL(sys_sigreturn_wrapper) |
132 | /* 115 */ .long sys_swapoff | 132 | /* 120 */ CALL(sys_clone_wrapper) |
133 | .long sys_sysinfo | 133 | CALL(sys_setdomainname) |
134 | .long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)) | 134 | CALL(sys_newuname) |
135 | .long sys_fsync | 135 | CALL(sys_ni_syscall) |
136 | .long sys_sigreturn_wrapper | 136 | CALL(sys_adjtimex) |
137 | /* 120 */ .long sys_clone_wrapper | 137 | /* 125 */ CALL(sys_mprotect) |
138 | .long sys_setdomainname | 138 | CALL(sys_sigprocmask) |
139 | .long sys_newuname | 139 | CALL(sys_ni_syscall) /* was sys_create_module */ |
140 | .long sys_ni_syscall | 140 | CALL(sys_init_module) |
141 | .long sys_adjtimex | 141 | CALL(sys_delete_module) |
142 | /* 125 */ .long sys_mprotect | 142 | /* 130 */ CALL(sys_ni_syscall) /* was sys_get_kernel_syms */ |
143 | .long sys_sigprocmask | 143 | CALL(sys_quotactl) |
144 | .long sys_ni_syscall /* was sys_create_module */ | 144 | CALL(sys_getpgid) |
145 | .long sys_init_module | 145 | CALL(sys_fchdir) |
146 | .long sys_delete_module | 146 | CALL(sys_bdflush) |
147 | /* 130 */ .long sys_ni_syscall /* was sys_get_kernel_syms */ | 147 | /* 135 */ CALL(sys_sysfs) |
148 | .long sys_quotactl | 148 | CALL(sys_personality) |
149 | .long sys_getpgid | 149 | CALL(sys_ni_syscall) /* CALL(_sys_afs_syscall) */ |
150 | .long sys_fchdir | 150 | CALL(sys_setfsuid16) |
151 | .long sys_bdflush | 151 | CALL(sys_setfsgid16) |
152 | /* 135 */ .long sys_sysfs | 152 | /* 140 */ CALL(sys_llseek) |
153 | .long sys_personality | 153 | CALL(sys_getdents) |
154 | .long sys_ni_syscall /* .long _sys_afs_syscall */ | 154 | CALL(sys_select) |
155 | .long sys_setfsuid16 | 155 | CALL(sys_flock) |
156 | .long sys_setfsgid16 | 156 | CALL(sys_msync) |
157 | /* 140 */ .long sys_llseek | 157 | /* 145 */ CALL(sys_readv) |
158 | .long sys_getdents | 158 | CALL(sys_writev) |
159 | .long sys_select | 159 | CALL(sys_getsid) |
160 | .long sys_flock | 160 | CALL(sys_fdatasync) |
161 | .long sys_msync | 161 | CALL(sys_sysctl) |
162 | /* 145 */ .long sys_readv | 162 | /* 150 */ CALL(sys_mlock) |
163 | .long sys_writev | 163 | CALL(sys_munlock) |
164 | .long sys_getsid | 164 | CALL(sys_mlockall) |
165 | .long sys_fdatasync | 165 | CALL(sys_munlockall) |
166 | .long sys_sysctl | 166 | CALL(sys_sched_setparam) |
167 | /* 150 */ .long sys_mlock | 167 | /* 155 */ CALL(sys_sched_getparam) |
168 | .long sys_munlock | 168 | CALL(sys_sched_setscheduler) |
169 | .long sys_mlockall | 169 | CALL(sys_sched_getscheduler) |
170 | .long sys_munlockall | 170 | CALL(sys_sched_yield) |
171 | .long sys_sched_setparam | 171 | CALL(sys_sched_get_priority_max) |
172 | /* 155 */ .long sys_sched_getparam | 172 | /* 160 */ CALL(sys_sched_get_priority_min) |
173 | .long sys_sched_setscheduler | 173 | CALL(sys_sched_rr_get_interval) |
174 | .long sys_sched_getscheduler | 174 | CALL(sys_nanosleep) |
175 | .long sys_sched_yield | 175 | CALL(sys_arm_mremap) |
176 | .long sys_sched_get_priority_max | 176 | CALL(sys_setresuid16) |
177 | /* 160 */ .long sys_sched_get_priority_min | 177 | /* 165 */ CALL(sys_getresuid16) |
178 | .long sys_sched_rr_get_interval | 178 | CALL(sys_ni_syscall) |
179 | .long sys_nanosleep | 179 | CALL(sys_ni_syscall) /* was sys_query_module */ |
180 | .long sys_arm_mremap | 180 | CALL(sys_poll) |
181 | .long sys_setresuid16 | 181 | CALL(sys_nfsservctl) |
182 | /* 165 */ .long sys_getresuid16 | 182 | /* 170 */ CALL(sys_setresgid16) |
183 | .long sys_ni_syscall | 183 | CALL(sys_getresgid16) |
184 | .long sys_ni_syscall /* was sys_query_module */ | 184 | CALL(sys_prctl) |
185 | .long sys_poll | 185 | CALL(sys_rt_sigreturn_wrapper) |
186 | .long sys_nfsservctl | 186 | CALL(sys_rt_sigaction) |
187 | /* 170 */ .long sys_setresgid16 | 187 | /* 175 */ CALL(sys_rt_sigprocmask) |
188 | .long sys_getresgid16 | 188 | CALL(sys_rt_sigpending) |
189 | .long sys_prctl | 189 | CALL(sys_rt_sigtimedwait) |
190 | .long sys_rt_sigreturn_wrapper | 190 | CALL(sys_rt_sigqueueinfo) |
191 | .long sys_rt_sigaction | 191 | CALL(sys_rt_sigsuspend_wrapper) |
192 | /* 175 */ .long sys_rt_sigprocmask | 192 | /* 180 */ CALL(ABI(sys_pread64, sys_oabi_pread64)) |
193 | .long sys_rt_sigpending | 193 | CALL(ABI(sys_pwrite64, sys_oabi_pwrite64)) |
194 | .long sys_rt_sigtimedwait | 194 | CALL(sys_chown16) |
195 | .long sys_rt_sigqueueinfo | 195 | CALL(sys_getcwd) |
196 | .long sys_rt_sigsuspend_wrapper | 196 | CALL(sys_capget) |
197 | /* 180 */ .long ABI(sys_pread64, sys_oabi_pread64) | 197 | /* 185 */ CALL(sys_capset) |
198 | .long ABI(sys_pwrite64, sys_oabi_pwrite64) | 198 | CALL(sys_sigaltstack_wrapper) |
199 | .long sys_chown16 | 199 | CALL(sys_sendfile) |
200 | .long sys_getcwd | 200 | CALL(sys_ni_syscall) |
201 | .long sys_capget | 201 | CALL(sys_ni_syscall) |
202 | /* 185 */ .long sys_capset | 202 | /* 190 */ CALL(sys_vfork_wrapper) |
203 | .long sys_sigaltstack_wrapper | 203 | CALL(sys_getrlimit) |
204 | .long sys_sendfile | 204 | CALL(sys_mmap2) |
205 | .long sys_ni_syscall | 205 | CALL(ABI(sys_truncate64, sys_oabi_truncate64)) |
206 | .long sys_ni_syscall | 206 | CALL(ABI(sys_ftruncate64, sys_oabi_ftruncate64)) |
207 | /* 190 */ .long sys_vfork_wrapper | 207 | /* 195 */ CALL(ABI(sys_stat64, sys_oabi_stat64)) |
208 | .long sys_getrlimit | 208 | CALL(ABI(sys_lstat64, sys_oabi_lstat64)) |
209 | .long sys_mmap2 | 209 | CALL(ABI(sys_fstat64, sys_oabi_fstat64)) |
210 | .long ABI(sys_truncate64, sys_oabi_truncate64) | 210 | CALL(sys_lchown) |
211 | .long ABI(sys_ftruncate64, sys_oabi_ftruncate64) | 211 | CALL(sys_getuid) |
212 | /* 195 */ .long ABI(sys_stat64, sys_oabi_stat64) | 212 | /* 200 */ CALL(sys_getgid) |
213 | .long ABI(sys_lstat64, sys_oabi_lstat64) | 213 | CALL(sys_geteuid) |
214 | .long ABI(sys_fstat64, sys_oabi_fstat64) | 214 | CALL(sys_getegid) |
215 | .long sys_lchown | 215 | CALL(sys_setreuid) |
216 | .long sys_getuid | 216 | CALL(sys_setregid) |
217 | /* 200 */ .long sys_getgid | 217 | /* 205 */ CALL(sys_getgroups) |
218 | .long sys_geteuid | 218 | CALL(sys_setgroups) |
219 | .long sys_getegid | 219 | CALL(sys_fchown) |
220 | .long sys_setreuid | 220 | CALL(sys_setresuid) |
221 | .long sys_setregid | 221 | CALL(sys_getresuid) |
222 | /* 205 */ .long sys_getgroups | 222 | /* 210 */ CALL(sys_setresgid) |
223 | .long sys_setgroups | 223 | CALL(sys_getresgid) |
224 | .long sys_fchown | 224 | CALL(sys_chown) |
225 | .long sys_setresuid | 225 | CALL(sys_setuid) |
226 | .long sys_getresuid | 226 | CALL(sys_setgid) |
227 | /* 210 */ .long sys_setresgid | 227 | /* 215 */ CALL(sys_setfsuid) |
228 | .long sys_getresgid | 228 | CALL(sys_setfsgid) |
229 | .long sys_chown | 229 | CALL(sys_getdents64) |
230 | .long sys_setuid | 230 | CALL(sys_pivot_root) |
231 | .long sys_setgid | 231 | CALL(sys_mincore) |
232 | /* 215 */ .long sys_setfsuid | 232 | /* 220 */ CALL(sys_madvise) |
233 | .long sys_setfsgid | 233 | CALL(ABI(sys_fcntl64, sys_oabi_fcntl64)) |
234 | .long sys_getdents64 | 234 | CALL(sys_ni_syscall) /* TUX */ |
235 | .long sys_pivot_root | 235 | CALL(sys_ni_syscall) |
236 | .long sys_mincore | 236 | CALL(sys_gettid) |
237 | /* 220 */ .long sys_madvise | 237 | /* 225 */ CALL(ABI(sys_readahead, sys_oabi_readahead)) |
238 | .long ABI(sys_fcntl64, sys_oabi_fcntl64) | 238 | CALL(sys_setxattr) |
239 | .long sys_ni_syscall /* TUX */ | 239 | CALL(sys_lsetxattr) |
240 | .long sys_ni_syscall | 240 | CALL(sys_fsetxattr) |
241 | .long sys_gettid | 241 | CALL(sys_getxattr) |
242 | /* 225 */ .long ABI(sys_readahead, sys_oabi_readahead) | 242 | /* 230 */ CALL(sys_lgetxattr) |
243 | .long sys_setxattr | 243 | CALL(sys_fgetxattr) |
244 | .long sys_lsetxattr | 244 | CALL(sys_listxattr) |
245 | .long sys_fsetxattr | 245 | CALL(sys_llistxattr) |
246 | .long sys_getxattr | 246 | CALL(sys_flistxattr) |
247 | /* 230 */ .long sys_lgetxattr | 247 | /* 235 */ CALL(sys_removexattr) |
248 | .long sys_fgetxattr | 248 | CALL(sys_lremovexattr) |
249 | .long sys_listxattr | 249 | CALL(sys_fremovexattr) |
250 | .long sys_llistxattr | 250 | CALL(sys_tkill) |
251 | .long sys_flistxattr | 251 | CALL(sys_sendfile64) |
252 | /* 235 */ .long sys_removexattr | 252 | /* 240 */ CALL(sys_futex) |
253 | .long sys_lremovexattr | 253 | CALL(sys_sched_setaffinity) |
254 | .long sys_fremovexattr | 254 | CALL(sys_sched_getaffinity) |
255 | .long sys_tkill | 255 | CALL(sys_io_setup) |
256 | .long sys_sendfile64 | 256 | CALL(sys_io_destroy) |
257 | /* 240 */ .long sys_futex | 257 | /* 245 */ CALL(sys_io_getevents) |
258 | .long sys_sched_setaffinity | 258 | CALL(sys_io_submit) |
259 | .long sys_sched_getaffinity | 259 | CALL(sys_io_cancel) |
260 | .long sys_io_setup | 260 | CALL(sys_exit_group) |
261 | .long sys_io_destroy | 261 | CALL(sys_lookup_dcookie) |
262 | /* 245 */ .long sys_io_getevents | 262 | /* 250 */ CALL(sys_epoll_create) |
263 | .long sys_io_submit | 263 | CALL(ABI(sys_epoll_ctl, sys_oabi_epoll_ctl)) |
264 | .long sys_io_cancel | 264 | CALL(ABI(sys_epoll_wait, sys_oabi_epoll_wait)) |
265 | .long sys_exit_group | 265 | CALL(sys_remap_file_pages) |
266 | .long sys_lookup_dcookie | 266 | CALL(sys_ni_syscall) /* sys_set_thread_area */ |
267 | /* 250 */ .long sys_epoll_create | 267 | /* 255 */ CALL(sys_ni_syscall) /* sys_get_thread_area */ |
268 | .long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl) | 268 | CALL(sys_set_tid_address) |
269 | .long ABI(sys_epoll_wait, sys_oabi_epoll_wait) | 269 | CALL(sys_timer_create) |
270 | .long sys_remap_file_pages | 270 | CALL(sys_timer_settime) |
271 | .long sys_ni_syscall /* sys_set_thread_area */ | 271 | CALL(sys_timer_gettime) |
272 | /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ | 272 | /* 260 */ CALL(sys_timer_getoverrun) |
273 | .long sys_set_tid_address | 273 | CALL(sys_timer_delete) |
274 | .long sys_timer_create | 274 | CALL(sys_clock_settime) |
275 | .long sys_timer_settime | 275 | CALL(sys_clock_gettime) |
276 | .long sys_timer_gettime | 276 | CALL(sys_clock_getres) |
277 | /* 260 */ .long sys_timer_getoverrun | 277 | /* 265 */ CALL(sys_clock_nanosleep) |
278 | .long sys_timer_delete | 278 | CALL(sys_statfs64_wrapper) |
279 | .long sys_clock_settime | 279 | CALL(sys_fstatfs64_wrapper) |
280 | .long sys_clock_gettime | 280 | CALL(sys_tgkill) |
281 | .long sys_clock_getres | 281 | CALL(sys_utimes) |
282 | /* 265 */ .long sys_clock_nanosleep | 282 | /* 270 */ CALL(sys_arm_fadvise64_64) |
283 | .long sys_statfs64_wrapper | 283 | CALL(sys_pciconfig_iobase) |
284 | .long sys_fstatfs64_wrapper | 284 | CALL(sys_pciconfig_read) |
285 | .long sys_tgkill | 285 | CALL(sys_pciconfig_write) |
286 | .long sys_utimes | 286 | CALL(sys_mq_open) |
287 | /* 270 */ .long sys_arm_fadvise64_64 | 287 | /* 275 */ CALL(sys_mq_unlink) |
288 | .long sys_pciconfig_iobase | 288 | CALL(sys_mq_timedsend) |
289 | .long sys_pciconfig_read | 289 | CALL(sys_mq_timedreceive) |
290 | .long sys_pciconfig_write | 290 | CALL(sys_mq_notify) |
291 | .long sys_mq_open | 291 | CALL(sys_mq_getsetattr) |
292 | /* 275 */ .long sys_mq_unlink | 292 | /* 280 */ CALL(sys_waitid) |
293 | .long sys_mq_timedsend | 293 | CALL(sys_socket) |
294 | .long sys_mq_timedreceive | 294 | CALL(ABI(sys_bind, sys_oabi_bind)) |
295 | .long sys_mq_notify | 295 | CALL(ABI(sys_connect, sys_oabi_connect)) |
296 | .long sys_mq_getsetattr | 296 | CALL(sys_listen) |
297 | /* 280 */ .long sys_waitid | 297 | /* 285 */ CALL(sys_accept) |
298 | .long sys_socket | 298 | CALL(sys_getsockname) |
299 | .long sys_bind | 299 | CALL(sys_getpeername) |
300 | .long sys_connect | 300 | CALL(sys_socketpair) |
301 | .long sys_listen | 301 | CALL(sys_send) |
302 | /* 285 */ .long sys_accept | 302 | /* 290 */ CALL(ABI(sys_sendto, sys_oabi_sendto)) |
303 | .long sys_getsockname | 303 | CALL(sys_recv) |
304 | .long sys_getpeername | 304 | CALL(sys_recvfrom) |
305 | .long sys_socketpair | 305 | CALL(sys_shutdown) |
306 | .long sys_send | 306 | CALL(sys_setsockopt) |
307 | /* 290 */ .long sys_sendto | 307 | /* 295 */ CALL(sys_getsockopt) |
308 | .long sys_recv | 308 | CALL(ABI(sys_sendmsg, sys_oabi_sendmsg)) |
309 | .long sys_recvfrom | 309 | CALL(sys_recvmsg) |
310 | .long sys_shutdown | 310 | CALL(ABI(sys_semop, sys_oabi_semop)) |
311 | .long sys_setsockopt | 311 | CALL(sys_semget) |
312 | /* 295 */ .long sys_getsockopt | 312 | /* 300 */ CALL(sys_semctl) |
313 | .long sys_sendmsg | 313 | CALL(sys_msgsnd) |
314 | .long sys_recvmsg | 314 | CALL(sys_msgrcv) |
315 | .long ABI(sys_semop, sys_oabi_semop) | 315 | CALL(sys_msgget) |
316 | .long sys_semget | 316 | CALL(sys_msgctl) |
317 | /* 300 */ .long sys_semctl | 317 | /* 305 */ CALL(sys_shmat) |
318 | .long sys_msgsnd | 318 | CALL(sys_shmdt) |
319 | .long sys_msgrcv | 319 | CALL(sys_shmget) |
320 | .long sys_msgget | 320 | CALL(sys_shmctl) |
321 | .long sys_msgctl | 321 | CALL(sys_add_key) |
322 | /* 305 */ .long sys_shmat | 322 | /* 310 */ CALL(sys_request_key) |
323 | .long sys_shmdt | 323 | CALL(sys_keyctl) |
324 | .long sys_shmget | 324 | CALL(ABI(sys_semtimedop, sys_oabi_semtimedop)) |
325 | .long sys_shmctl | 325 | /* vserver */ CALL(sys_ni_syscall) |
326 | .long sys_add_key | 326 | CALL(sys_ioprio_set) |
327 | /* 310 */ .long sys_request_key | 327 | /* 315 */ CALL(sys_ioprio_get) |
328 | .long sys_keyctl | 328 | CALL(sys_inotify_init) |
329 | .long ABI(sys_semtimedop, sys_oabi_semtimedop) | 329 | CALL(sys_inotify_add_watch) |
330 | /* vserver */ .long sys_ni_syscall | 330 | CALL(sys_inotify_rm_watch) |
331 | .long sys_ioprio_set | 331 | CALL(sys_mbind) |
332 | /* 315 */ .long sys_ioprio_get | 332 | /* 320 */ CALL(sys_get_mempolicy) |
333 | .long sys_inotify_init | 333 | CALL(sys_set_mempolicy) |
334 | .long sys_inotify_add_watch | 334 | #ifndef syscalls_counted |
335 | .long sys_inotify_rm_watch | 335 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
336 | .long sys_mbind | 336 | #define syscalls_counted |
337 | /* 320 */ .long sys_get_mempolicy | ||
338 | .long sys_set_mempolicy | ||
339 | |||
340 | .rept NR_syscalls - (. - 100b) / 4 | ||
341 | .long sys_ni_syscall | ||
342 | .endr | ||
343 | #endif | 337 | #endif |
338 | .rept syscalls_padding | ||
339 | CALL(sys_ni_syscall) | ||
340 | .endr | ||
diff --git a/arch/arm/kernel/compat.c b/arch/arm/kernel/compat.c index 7195add42e74..60cfa7f3226c 100644 --- a/arch/arm/kernel/compat.c +++ b/arch/arm/kernel/compat.c | |||
@@ -27,6 +27,8 @@ | |||
27 | 27 | ||
28 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
29 | 29 | ||
30 | #include "compat.h" | ||
31 | |||
30 | /* | 32 | /* |
31 | * Usage: | 33 | * Usage: |
32 | * - do not go blindly adding fields, add them at the end | 34 | * - do not go blindly adding fields, add them at the end |
diff --git a/arch/arm/kernel/compat.h b/arch/arm/kernel/compat.h new file mode 100644 index 000000000000..27e61a68bd1c --- /dev/null +++ b/arch/arm/kernel/compat.h | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/kernel/compat.h | ||
3 | * | ||
4 | * Copyright (C) 2001 Russell King | ||
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 | |||
11 | extern void convert_to_tag_list(struct tag *tags); | ||
12 | |||
13 | extern void squash_mem_tags(struct tag *tag); | ||
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index d401d908c463..ec48d70c6d8b 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -333,10 +333,14 @@ __pabt_svc: | |||
333 | @ from the exception stack | 333 | @ from the exception stack |
334 | 334 | ||
335 | #if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) | 335 | #if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) |
336 | #ifndef CONFIG_MMU | ||
337 | #warning "NPTL on non MMU needs fixing" | ||
338 | #else | ||
336 | @ make sure our user space atomic helper is aborted | 339 | @ make sure our user space atomic helper is aborted |
337 | cmp r2, #TASK_SIZE | 340 | cmp r2, #TASK_SIZE |
338 | bichs r3, r3, #PSR_Z_BIT | 341 | bichs r3, r3, #PSR_Z_BIT |
339 | #endif | 342 | #endif |
343 | #endif | ||
340 | 344 | ||
341 | @ | 345 | @ |
342 | @ We are now ready to fill in the remaining blanks on the stack: | 346 | @ We are now ready to fill in the remaining blanks on the stack: |
@@ -562,7 +566,7 @@ ENTRY(__switch_to) | |||
562 | ldr r6, [r2, #TI_CPU_DOMAIN]! | 566 | ldr r6, [r2, #TI_CPU_DOMAIN]! |
563 | #endif | 567 | #endif |
564 | #if __LINUX_ARM_ARCH__ >= 6 | 568 | #if __LINUX_ARM_ARCH__ >= 6 |
565 | #ifdef CONFIG_CPU_MPCORE | 569 | #ifdef CONFIG_CPU_32v6K |
566 | clrex | 570 | clrex |
567 | #else | 571 | #else |
568 | strex r5, r4, [ip] @ Clear exclusive monitor | 572 | strex r5, r4, [ip] @ Clear exclusive monitor |
@@ -705,7 +709,12 @@ __kuser_memory_barrier: @ 0xffff0fa0 | |||
705 | * The C flag is also set if *ptr was changed to allow for assembly | 709 | * The C flag is also set if *ptr was changed to allow for assembly |
706 | * optimization in the calling code. | 710 | * optimization in the calling code. |
707 | * | 711 | * |
708 | * Note: this routine already includes memory barriers as needed. | 712 | * Notes: |
713 | * | ||
714 | * - This routine already includes memory barriers as needed. | ||
715 | * | ||
716 | * - A failure might be transient, i.e. it is possible, although unlikely, | ||
717 | * that "failure" be returned even if *ptr == oldval. | ||
709 | * | 718 | * |
710 | * For example, a user space atomic_add implementation could look like this: | 719 | * For example, a user space atomic_add implementation could look like this: |
711 | * | 720 | * |
@@ -756,12 +765,18 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
756 | * exception happening just after the str instruction which would | 765 | * exception happening just after the str instruction which would |
757 | * clear the Z flag although the exchange was done. | 766 | * clear the Z flag although the exchange was done. |
758 | */ | 767 | */ |
768 | #ifdef CONFIG_MMU | ||
759 | teq ip, ip @ set Z flag | 769 | teq ip, ip @ set Z flag |
760 | ldr ip, [r2] @ load current val | 770 | ldr ip, [r2] @ load current val |
761 | add r3, r2, #1 @ prepare store ptr | 771 | add r3, r2, #1 @ prepare store ptr |
762 | teqeq ip, r0 @ compare with oldval if still allowed | 772 | teqeq ip, r0 @ compare with oldval if still allowed |
763 | streq r1, [r3, #-1]! @ store newval if still allowed | 773 | streq r1, [r3, #-1]! @ store newval if still allowed |
764 | subs r0, r2, r3 @ if r2 == r3 the str occured | 774 | subs r0, r2, r3 @ if r2 == r3 the str occured |
775 | #else | ||
776 | #warning "NPTL on non MMU needs fixing" | ||
777 | mov r0, #-1 | ||
778 | adds r0, r0, #0 | ||
779 | #endif | ||
765 | mov pc, lr | 780 | mov pc, lr |
766 | 781 | ||
767 | #else | 782 | #else |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 2b92ce85f97f..dbcb11a31f78 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -87,7 +87,11 @@ ENTRY(ret_from_fork) | |||
87 | b ret_slow_syscall | 87 | b ret_slow_syscall |
88 | 88 | ||
89 | 89 | ||
90 | .equ NR_syscalls,0 | ||
91 | #define CALL(x) .equ NR_syscalls,NR_syscalls+1 | ||
90 | #include "calls.S" | 92 | #include "calls.S" |
93 | #undef CALL | ||
94 | #define CALL(x) .long x | ||
91 | 95 | ||
92 | /*============================================================================= | 96 | /*============================================================================= |
93 | * SWI handler | 97 | * SWI handler |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 4b4e4cf79c80..489c069e5c3e 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/kallsyms.h> | 27 | #include <linux/kallsyms.h> |
28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
29 | #include <linux/cpu.h> | 29 | #include <linux/cpu.h> |
30 | #include <linux/elfcore.h> | ||
30 | 31 | ||
31 | #include <asm/leds.h> | 32 | #include <asm/leds.h> |
32 | #include <asm/processor.h> | 33 | #include <asm/processor.h> |
@@ -83,7 +84,7 @@ EXPORT_SYMBOL(pm_power_off); | |||
83 | * This is our default idle handler. We need to disable | 84 | * This is our default idle handler. We need to disable |
84 | * interrupts here to ensure we don't miss a wakeup call. | 85 | * interrupts here to ensure we don't miss a wakeup call. |
85 | */ | 86 | */ |
86 | void default_idle(void) | 87 | static void default_idle(void) |
87 | { | 88 | { |
88 | if (hlt_counter) | 89 | if (hlt_counter) |
89 | cpu_relax(); | 90 | cpu_relax(); |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index 7b6256bb590e..a1d1b2906e8d 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -610,15 +610,12 @@ static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) | |||
610 | static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) | 610 | static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) |
611 | { | 611 | { |
612 | struct thread_info *thread = task_thread_info(tsk); | 612 | struct thread_info *thread = task_thread_info(tsk); |
613 | void *ptr = &thread->fpstate; | ||
614 | 613 | ||
615 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) | 614 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) |
616 | return -ENODATA; | 615 | return -ENODATA; |
617 | iwmmxt_task_disable(thread); /* force it to ram */ | 616 | iwmmxt_task_disable(thread); /* force it to ram */ |
618 | /* The iWMMXt state is stored doubleword-aligned. */ | 617 | return copy_to_user(ufp, &thread->fpstate.iwmmxt, IWMMXT_SIZE) |
619 | if (((long) ptr) & 4) | 618 | ? -EFAULT : 0; |
620 | ptr += 4; | ||
621 | return copy_to_user(ufp, ptr, 0x98) ? -EFAULT : 0; | ||
622 | } | 619 | } |
623 | 620 | ||
624 | /* | 621 | /* |
@@ -627,15 +624,12 @@ static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) | |||
627 | static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) | 624 | static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) |
628 | { | 625 | { |
629 | struct thread_info *thread = task_thread_info(tsk); | 626 | struct thread_info *thread = task_thread_info(tsk); |
630 | void *ptr = &thread->fpstate; | ||
631 | 627 | ||
632 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) | 628 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) |
633 | return -EACCES; | 629 | return -EACCES; |
634 | iwmmxt_task_release(thread); /* force a reload */ | 630 | iwmmxt_task_release(thread); /* force a reload */ |
635 | /* The iWMMXt state is stored doubleword-aligned. */ | 631 | return copy_from_user(&thread->fpstate.iwmmxt, ufp, IWMMXT_SIZE) |
636 | if (((long) ptr) & 4) | 632 | ? -EFAULT : 0; |
637 | ptr += 4; | ||
638 | return copy_from_user(ptr, ufp, 0x98) ? -EFAULT : 0; | ||
639 | } | 633 | } |
640 | 634 | ||
641 | #endif | 635 | #endif |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index c45d10d07bde..08974cbe9824 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/root_dev.h> | 23 | #include <linux/root_dev.h> |
24 | #include <linux/cpu.h> | 24 | #include <linux/cpu.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/smp.h> | ||
26 | 27 | ||
27 | #include <asm/cpu.h> | 28 | #include <asm/cpu.h> |
28 | #include <asm/elf.h> | 29 | #include <asm/elf.h> |
@@ -36,6 +37,8 @@ | |||
36 | #include <asm/mach/irq.h> | 37 | #include <asm/mach/irq.h> |
37 | #include <asm/mach/time.h> | 38 | #include <asm/mach/time.h> |
38 | 39 | ||
40 | #include "compat.h" | ||
41 | |||
39 | #ifndef MEM_SIZE | 42 | #ifndef MEM_SIZE |
40 | #define MEM_SIZE (16*1024*1024) | 43 | #define MEM_SIZE (16*1024*1024) |
41 | #endif | 44 | #endif |
@@ -52,10 +55,7 @@ static int __init fpe_setup(char *line) | |||
52 | __setup("fpe=", fpe_setup); | 55 | __setup("fpe=", fpe_setup); |
53 | #endif | 56 | #endif |
54 | 57 | ||
55 | extern unsigned int mem_fclk_21285; | ||
56 | extern void paging_init(struct meminfo *, struct machine_desc *desc); | 58 | extern void paging_init(struct meminfo *, struct machine_desc *desc); |
57 | extern void convert_to_tag_list(struct tag *tags); | ||
58 | extern void squash_mem_tags(struct tag *tag); | ||
59 | extern void reboot_setup(char *str); | 59 | extern void reboot_setup(char *str); |
60 | extern int root_mountflags; | 60 | extern int root_mountflags; |
61 | extern void _stext, _text, _etext, __data_start, _edata, _end; | 61 | extern void _stext, _text, _etext, __data_start, _edata, _end; |
@@ -771,6 +771,10 @@ void __init setup_arch(char **cmdline_p) | |||
771 | paging_init(&meminfo, mdesc); | 771 | paging_init(&meminfo, mdesc); |
772 | request_standard_resources(&meminfo, mdesc); | 772 | request_standard_resources(&meminfo, mdesc); |
773 | 773 | ||
774 | #ifdef CONFIG_SMP | ||
775 | smp_init_cpus(); | ||
776 | #endif | ||
777 | |||
774 | cpu_init(); | 778 | cpu_init(); |
775 | 779 | ||
776 | /* | 780 | /* |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 7338948bd7d3..02aa300c4633 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -338,7 +338,6 @@ void __init smp_prepare_boot_cpu(void) | |||
338 | 338 | ||
339 | per_cpu(cpu_data, cpu).idle = current; | 339 | per_cpu(cpu_data, cpu).idle = current; |
340 | 340 | ||
341 | cpu_set(cpu, cpu_possible_map); | ||
342 | cpu_set(cpu, cpu_present_map); | 341 | cpu_set(cpu, cpu_present_map); |
343 | cpu_set(cpu, cpu_online_map); | 342 | cpu_set(cpu, cpu_online_map); |
344 | } | 343 | } |
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c index eafa8e5284af..8e2f9bc3368b 100644 --- a/arch/arm/kernel/sys_oabi-compat.c +++ b/arch/arm/kernel/sys_oabi-compat.c | |||
@@ -59,6 +59,17 @@ | |||
59 | * struct sembuf loses its padding with EABI. Since arrays of them are | 59 | * struct sembuf loses its padding with EABI. Since arrays of them are |
60 | * used they have to be copyed to remove the padding. Compatibility wrappers | 60 | * used they have to be copyed to remove the padding. Compatibility wrappers |
61 | * provided below. | 61 | * provided below. |
62 | * | ||
63 | * sys_bind: | ||
64 | * sys_connect: | ||
65 | * sys_sendmsg: | ||
66 | * sys_sendto: | ||
67 | * sys_socketcall: | ||
68 | * | ||
69 | * struct sockaddr_un loses its padding with EABI. Since the size of the | ||
70 | * structure is used as a validation test in unix_mkname(), we need to | ||
71 | * change the length argument to 110 whenever it is 112. Compatibility | ||
72 | * wrappers provided below. | ||
62 | */ | 73 | */ |
63 | 74 | ||
64 | #include <linux/syscalls.h> | 75 | #include <linux/syscalls.h> |
@@ -67,6 +78,8 @@ | |||
67 | #include <linux/fcntl.h> | 78 | #include <linux/fcntl.h> |
68 | #include <linux/eventpoll.h> | 79 | #include <linux/eventpoll.h> |
69 | #include <linux/sem.h> | 80 | #include <linux/sem.h> |
81 | #include <linux/socket.h> | ||
82 | #include <linux/net.h> | ||
70 | #include <asm/ipc.h> | 83 | #include <asm/ipc.h> |
71 | #include <asm/uaccess.h> | 84 | #include <asm/uaccess.h> |
72 | 85 | ||
@@ -337,3 +350,91 @@ asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third, | |||
337 | return sys_ipc(call, first, second, third, ptr, fifth); | 350 | return sys_ipc(call, first, second, third, ptr, fifth); |
338 | } | 351 | } |
339 | } | 352 | } |
353 | |||
354 | asmlinkage long sys_oabi_bind(int fd, struct sockaddr __user *addr, int addrlen) | ||
355 | { | ||
356 | sa_family_t sa_family; | ||
357 | if (addrlen == 112 && | ||
358 | get_user(sa_family, &addr->sa_family) == 0 && | ||
359 | sa_family == AF_UNIX) | ||
360 | addrlen = 110; | ||
361 | return sys_bind(fd, addr, addrlen); | ||
362 | } | ||
363 | |||
364 | asmlinkage long sys_oabi_connect(int fd, struct sockaddr __user *addr, int addrlen) | ||
365 | { | ||
366 | sa_family_t sa_family; | ||
367 | if (addrlen == 112 && | ||
368 | get_user(sa_family, &addr->sa_family) == 0 && | ||
369 | sa_family == AF_UNIX) | ||
370 | addrlen = 110; | ||
371 | return sys_connect(fd, addr, addrlen); | ||
372 | } | ||
373 | |||
374 | asmlinkage long sys_oabi_sendto(int fd, void __user *buff, | ||
375 | size_t len, unsigned flags, | ||
376 | struct sockaddr __user *addr, | ||
377 | int addrlen) | ||
378 | { | ||
379 | sa_family_t sa_family; | ||
380 | if (addrlen == 112 && | ||
381 | get_user(sa_family, &addr->sa_family) == 0 && | ||
382 | sa_family == AF_UNIX) | ||
383 | addrlen = 110; | ||
384 | return sys_sendto(fd, buff, len, flags, addr, addrlen); | ||
385 | } | ||
386 | |||
387 | asmlinkage long sys_oabi_sendmsg(int fd, struct msghdr __user *msg, unsigned flags) | ||
388 | { | ||
389 | struct sockaddr __user *addr; | ||
390 | int msg_namelen; | ||
391 | sa_family_t sa_family; | ||
392 | if (msg && | ||
393 | get_user(msg_namelen, &msg->msg_namelen) == 0 && | ||
394 | msg_namelen == 112 && | ||
395 | get_user(addr, &msg->msg_name) == 0 && | ||
396 | get_user(sa_family, &addr->sa_family) == 0 && | ||
397 | sa_family == AF_UNIX) | ||
398 | { | ||
399 | /* | ||
400 | * HACK ALERT: there is a limit to how much backward bending | ||
401 | * we should do for what is actually a transitional | ||
402 | * compatibility layer. This already has known flaws with | ||
403 | * a few ioctls that we don't intend to fix. Therefore | ||
404 | * consider this blatent hack as another one... and take care | ||
405 | * to run for cover. In most cases it will "just work fine". | ||
406 | * If it doesn't, well, tough. | ||
407 | */ | ||
408 | put_user(110, &msg->msg_namelen); | ||
409 | } | ||
410 | return sys_sendmsg(fd, msg, flags); | ||
411 | } | ||
412 | |||
413 | asmlinkage long sys_oabi_socketcall(int call, unsigned long __user *args) | ||
414 | { | ||
415 | unsigned long r = -EFAULT, a[6]; | ||
416 | |||
417 | switch (call) { | ||
418 | case SYS_BIND: | ||
419 | if (copy_from_user(a, args, 3 * sizeof(long)) == 0) | ||
420 | r = sys_oabi_bind(a[0], (struct sockaddr __user *)a[1], a[2]); | ||
421 | break; | ||
422 | case SYS_CONNECT: | ||
423 | if (copy_from_user(a, args, 3 * sizeof(long)) == 0) | ||
424 | r = sys_oabi_connect(a[0], (struct sockaddr __user *)a[1], a[2]); | ||
425 | break; | ||
426 | case SYS_SENDTO: | ||
427 | if (copy_from_user(a, args, 6 * sizeof(long)) == 0) | ||
428 | r = sys_oabi_sendto(a[0], (void __user *)a[1], a[2], a[3], | ||
429 | (struct sockaddr __user *)a[4], a[5]); | ||
430 | break; | ||
431 | case SYS_SENDMSG: | ||
432 | if (copy_from_user(a, args, 3 * sizeof(long)) == 0) | ||
433 | r = sys_oabi_sendmsg(a[0], (struct msghdr __user *)a[1], a[2]); | ||
434 | break; | ||
435 | default: | ||
436 | r = sys_socketcall(call, args); | ||
437 | } | ||
438 | |||
439 | return r; | ||
440 | } | ||
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index d7d932c02866..d6bd435a6857 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -422,12 +422,14 @@ static int timer_dyn_tick_disable(void) | |||
422 | void timer_dyn_reprogram(void) | 422 | void timer_dyn_reprogram(void) |
423 | { | 423 | { |
424 | struct dyn_tick_timer *dyn_tick = system_timer->dyn_tick; | 424 | struct dyn_tick_timer *dyn_tick = system_timer->dyn_tick; |
425 | unsigned long next, seq; | ||
425 | 426 | ||
426 | if (dyn_tick) { | 427 | if (dyn_tick && (dyn_tick->state & DYN_TICK_ENABLED)) { |
427 | write_seqlock(&xtime_lock); | 428 | next = next_timer_interrupt(); |
428 | if (dyn_tick->state & DYN_TICK_ENABLED) | 429 | do { |
430 | seq = read_seqbegin(&xtime_lock); | ||
429 | dyn_tick->reprogram(next_timer_interrupt() - jiffies); | 431 | dyn_tick->reprogram(next_timer_interrupt() - jiffies); |
430 | write_sequnlock(&xtime_lock); | 432 | } while (read_seqretry(&xtime_lock, seq)); |
431 | } | 433 | } |
432 | } | 434 | } |
433 | 435 | ||
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 10235b01582e..03924bcc6129 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/personality.h> | 19 | #include <linux/personality.h> |
20 | #include <linux/ptrace.h> | 20 | #include <linux/ptrace.h> |
21 | #include <linux/kallsyms.h> | 21 | #include <linux/kallsyms.h> |
22 | #include <linux/delay.h> | ||
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | 24 | ||
24 | #include <asm/atomic.h> | 25 | #include <asm/atomic.h> |
@@ -231,6 +232,13 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err) | |||
231 | __die(str, err, thread, regs); | 232 | __die(str, err, thread, regs); |
232 | bust_spinlocks(0); | 233 | bust_spinlocks(0); |
233 | spin_unlock_irq(&die_lock); | 234 | spin_unlock_irq(&die_lock); |
235 | |||
236 | if (panic_on_oops) { | ||
237 | printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); | ||
238 | ssleep(5); | ||
239 | panic("Fatal exception"); | ||
240 | } | ||
241 | |||
234 | do_exit(SIGSEGV); | 242 | do_exit(SIGSEGV); |
235 | } | 243 | } |
236 | 244 | ||
diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S index 72d594184b8a..d89c60615794 100644 --- a/arch/arm/lib/muldi3.S +++ b/arch/arm/lib/muldi3.S | |||
@@ -29,8 +29,8 @@ ENTRY(__aeabi_lmul) | |||
29 | 29 | ||
30 | mul xh, yl, xh | 30 | mul xh, yl, xh |
31 | mla xh, xl, yh, xh | 31 | mla xh, xl, yh, xh |
32 | mov ip, xl, asr #16 | 32 | mov ip, xl, lsr #16 |
33 | mov yh, yl, asr #16 | 33 | mov yh, yl, lsr #16 |
34 | bic xl, xl, ip, lsl #16 | 34 | bic xl, xl, ip, lsl #16 |
35 | bic yl, yl, yh, lsl #16 | 35 | bic yl, yl, yh, lsl #16 |
36 | mla xh, yh, ip, xh | 36 | mla xh, yh, ip, xh |
diff --git a/arch/arm/mach-at91rm9200/devices.c b/arch/arm/mach-at91rm9200/devices.c index 8df3e5245651..57eedd5beaf6 100644 --- a/arch/arm/mach-at91rm9200/devices.c +++ b/arch/arm/mach-at91rm9200/devices.c | |||
@@ -100,8 +100,10 @@ void __init at91_add_device_udc(struct at91_udc_data *data) | |||
100 | at91_set_gpio_input(data->vbus_pin, 0); | 100 | at91_set_gpio_input(data->vbus_pin, 0); |
101 | at91_set_deglitch(data->vbus_pin, 1); | 101 | at91_set_deglitch(data->vbus_pin, 1); |
102 | } | 102 | } |
103 | if (data->pullup_pin) | 103 | if (data->pullup_pin) { |
104 | at91_set_gpio_output(data->pullup_pin, 0); | 104 | at91_set_gpio_output(data->pullup_pin, 0); |
105 | at91_set_multi_drive(data->pullup_pin, 1); | ||
106 | } | ||
105 | 107 | ||
106 | udc_data = *data; | 108 | udc_data = *data; |
107 | platform_device_register(&at91rm9200_udc_device); | 109 | platform_device_register(&at91rm9200_udc_device); |
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c index 2fd2ef583e4d..0e396feec468 100644 --- a/arch/arm/mach-at91rm9200/gpio.c +++ b/arch/arm/mach-at91rm9200/gpio.c | |||
@@ -159,6 +159,23 @@ int __init_or_module at91_set_deglitch(unsigned pin, int is_on) | |||
159 | } | 159 | } |
160 | EXPORT_SYMBOL(at91_set_deglitch); | 160 | EXPORT_SYMBOL(at91_set_deglitch); |
161 | 161 | ||
162 | /* | ||
163 | * enable/disable the multi-driver; This is only valid for output and | ||
164 | * allows the output pin to run as an open collector output. | ||
165 | */ | ||
166 | int __init_or_module at91_set_multi_drive(unsigned pin, int is_on) | ||
167 | { | ||
168 | void __iomem *pio = pin_to_controller(pin); | ||
169 | unsigned mask = pin_to_mask(pin); | ||
170 | |||
171 | if (!pio) | ||
172 | return -EINVAL; | ||
173 | |||
174 | __raw_writel(mask, pio + (is_on ? PIO_MDER : PIO_MDDR)); | ||
175 | return 0; | ||
176 | } | ||
177 | EXPORT_SYMBOL(at91_set_multi_drive); | ||
178 | |||
162 | /*--------------------------------------------------------------------------*/ | 179 | /*--------------------------------------------------------------------------*/ |
163 | 180 | ||
164 | 181 | ||
@@ -257,8 +274,18 @@ static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs | |||
257 | gpio = &irq_desc[pin]; | 274 | gpio = &irq_desc[pin]; |
258 | 275 | ||
259 | while (isr) { | 276 | while (isr) { |
260 | if (isr & 1) | 277 | if (isr & 1) { |
261 | gpio->handle(pin, gpio, regs); | 278 | if (unlikely(gpio->disable_depth)) { |
279 | /* | ||
280 | * The core ARM interrupt handler lazily disables IRQs so | ||
281 | * another IRQ must be generated before it actually gets | ||
282 | * here to be disabled on the GPIO controller. | ||
283 | */ | ||
284 | gpio_irq_mask(pin); | ||
285 | } | ||
286 | else | ||
287 | gpio->handle(pin, gpio, regs); | ||
288 | } | ||
262 | pin++; | 289 | pin++; |
263 | gpio++; | 290 | gpio++; |
264 | isr >>= 1; | 291 | isr >>= 1; |
diff --git a/arch/arm/mach-clps711x/Kconfig b/arch/arm/mach-clps711x/Kconfig index 0793dcf54f2e..0e2b641268ad 100644 --- a/arch/arm/mach-clps711x/Kconfig +++ b/arch/arm/mach-clps711x/Kconfig | |||
@@ -24,6 +24,8 @@ config ARCH_CEIVA | |||
24 | 24 | ||
25 | config ARCH_CLEP7312 | 25 | config ARCH_CLEP7312 |
26 | bool "CLEP7312" | 26 | bool "CLEP7312" |
27 | help | ||
28 | Boards based on the Cirrus Logic 7212/7312 chips. | ||
27 | 29 | ||
28 | config ARCH_EDB7211 | 30 | config ARCH_EDB7211 |
29 | bool "EDB7211" | 31 | bool "EDB7211" |
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c index dc31e3fd6c57..8ab1b040288c 100644 --- a/arch/arm/mach-imx/mx1ads.c +++ b/arch/arm/mach-imx/mx1ads.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <linux/interrupt.h> | 28 | #include <linux/interrupt.h> |
29 | #include "generic.h" | 29 | #include "generic.h" |
30 | #include <asm/serial.h> | ||
31 | 30 | ||
32 | static struct resource cs89x0_resources[] = { | 31 | static struct resource cs89x0_resources[] = { |
33 | [0] = { | 32 | [0] = { |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 31820170f306..a0724f2b24ce 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
@@ -469,7 +469,9 @@ static void cp_clcd_enable(struct clcd_fb *fb) | |||
469 | if (fb->fb.var.bits_per_pixel <= 8) | 469 | if (fb->fb.var.bits_per_pixel <= 8) |
470 | val = CM_CTRL_LCDMUXSEL_VGA_8421BPP; | 470 | val = CM_CTRL_LCDMUXSEL_VGA_8421BPP; |
471 | else if (fb->fb.var.bits_per_pixel <= 16) | 471 | else if (fb->fb.var.bits_per_pixel <= 16) |
472 | val = CM_CTRL_LCDMUXSEL_VGA_16BPP; | 472 | val = CM_CTRL_LCDMUXSEL_VGA_16BPP |
473 | | CM_CTRL_LCDEN0 | CM_CTRL_LCDEN1 | ||
474 | | CM_CTRL_STATIC1 | CM_CTRL_STATIC2; | ||
473 | else | 475 | else |
474 | val = 0; /* no idea for this, don't trust the docs */ | 476 | val = 0; /* no idea for this, don't trust the docs */ |
475 | 477 | ||
diff --git a/arch/arm/mach-integrator/platsmp.c b/arch/arm/mach-integrator/platsmp.c index ea10bd8c972c..1bc8534ef0c6 100644 --- a/arch/arm/mach-integrator/platsmp.c +++ b/arch/arm/mach-integrator/platsmp.c | |||
@@ -140,6 +140,18 @@ static void __init poke_milo(void) | |||
140 | mb(); | 140 | mb(); |
141 | } | 141 | } |
142 | 142 | ||
143 | /* | ||
144 | * Initialise the CPU possible map early - this describes the CPUs | ||
145 | * which may be present or become present in the system. | ||
146 | */ | ||
147 | void __init smp_init_cpus(void) | ||
148 | { | ||
149 | unsigned int i, ncores = get_core_count(); | ||
150 | |||
151 | for (i = 0; i < ncores; i++) | ||
152 | cpu_set(i, cpu_possible_map); | ||
153 | } | ||
154 | |||
143 | void __init smp_prepare_cpus(unsigned int max_cpus) | 155 | void __init smp_prepare_cpus(unsigned int max_cpus) |
144 | { | 156 | { |
145 | unsigned int ncores = get_core_count(); | 157 | unsigned int ncores = get_core_count(); |
@@ -176,14 +188,11 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
176 | max_cpus = ncores; | 188 | max_cpus = ncores; |
177 | 189 | ||
178 | /* | 190 | /* |
179 | * Initialise the possible/present maps. | 191 | * Initialise the present map, which describes the set of CPUs |
180 | * cpu_possible_map describes the set of CPUs which may be present | 192 | * actually populated at the present time. |
181 | * cpu_present_map describes the set of CPUs populated | ||
182 | */ | 193 | */ |
183 | for (i = 0; i < max_cpus; i++) { | 194 | for (i = 0; i < max_cpus; i++) |
184 | cpu_set(i, cpu_possible_map); | ||
185 | cpu_set(i, cpu_present_map); | 195 | cpu_set(i, cpu_present_map); |
186 | } | ||
187 | 196 | ||
188 | /* | 197 | /* |
189 | * Do we need any more CPUs? If so, then let them know where | 198 | * Do we need any more CPUs? If so, then let them know where |
diff --git a/arch/arm/mach-iop3xx/iop321-setup.c b/arch/arm/mach-iop3xx/iop321-setup.c index e4f4c52d93d4..0ebbcb20c6ae 100644 --- a/arch/arm/mach-iop3xx/iop321-setup.c +++ b/arch/arm/mach-iop3xx/iop321-setup.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/config.h> | 15 | #include <linux/config.h> |
16 | #include <linux/init.h> | ||
17 | #include <linux/major.h> | 16 | #include <linux/major.h> |
18 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
19 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
diff --git a/arch/arm/mach-iop3xx/iop331-setup.c b/arch/arm/mach-iop3xx/iop331-setup.c index 63585485123e..2d6abe5be14d 100644 --- a/arch/arm/mach-iop3xx/iop331-setup.c +++ b/arch/arm/mach-iop3xx/iop331-setup.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/config.h> | 14 | #include <linux/config.h> |
15 | #include <linux/init.h> | ||
16 | #include <linux/major.h> | 15 | #include <linux/major.h> |
17 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
18 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c index 9e5a13bb39d0..52fac89e95b5 100644 --- a/arch/arm/mach-ixp2000/enp2611.c +++ b/arch/arm/mach-ixp2000/enp2611.c | |||
@@ -106,6 +106,7 @@ static void __init enp2611_pci_preinit(void) | |||
106 | { | 106 | { |
107 | ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000); | 107 | ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000); |
108 | ixp2000_pci_preinit(); | 108 | ixp2000_pci_preinit(); |
109 | pcibios_setup("firmware"); | ||
109 | } | 110 | } |
110 | 111 | ||
111 | static inline int enp2611_pci_valid_device(struct pci_bus *bus, | 112 | static inline int enp2611_pci_valid_device(struct pci_bus *bus, |
diff --git a/arch/arm/mach-ixp2000/ixdp2400.c b/arch/arm/mach-ixp2000/ixdp2400.c index 7c782403042a..09101271298e 100644 --- a/arch/arm/mach-ixp2000/ixdp2400.c +++ b/arch/arm/mach-ixp2000/ixdp2400.c | |||
@@ -68,6 +68,7 @@ void __init ixdp2400_pci_preinit(void) | |||
68 | { | 68 | { |
69 | ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000); | 69 | ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000); |
70 | ixp2000_pci_preinit(); | 70 | ixp2000_pci_preinit(); |
71 | pcibios_setup("firmware"); | ||
71 | } | 72 | } |
72 | 73 | ||
73 | int ixdp2400_pci_setup(int nr, struct pci_sys_data *sys) | 74 | int ixdp2400_pci_setup(int nr, struct pci_sys_data *sys) |
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c index 10f06606d460..150519fb38ec 100644 --- a/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/arch/arm/mach-ixp2000/ixdp2x01.c | |||
@@ -212,6 +212,7 @@ void __init ixdp2x01_pci_preinit(void) | |||
212 | { | 212 | { |
213 | ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00000000); | 213 | ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00000000); |
214 | ixp2000_pci_preinit(); | 214 | ixp2000_pci_preinit(); |
215 | pcibios_setup("firmware"); | ||
215 | } | 216 | } |
216 | 217 | ||
217 | #define DEVPIN(dev, pin) ((pin) | ((dev) << 3)) | 218 | #define DEVPIN(dev, pin) ((pin) | ((dev) << 3)) |
@@ -299,7 +300,9 @@ struct hw_pci ixdp2x01_pci __initdata = { | |||
299 | 300 | ||
300 | int __init ixdp2x01_pci_init(void) | 301 | int __init ixdp2x01_pci_init(void) |
301 | { | 302 | { |
302 | pci_common_init(&ixdp2x01_pci); | 303 | if (machine_is_ixdp2401() || machine_is_ixdp2801()) |
304 | pci_common_init(&ixdp2x01_pci); | ||
305 | |||
303 | return 0; | 306 | return 0; |
304 | } | 307 | } |
305 | 308 | ||
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig index daadc78e271b..5bf50a2a737d 100644 --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig | |||
@@ -8,11 +8,9 @@ menu "Intel IXP4xx Implementation Options" | |||
8 | 8 | ||
9 | comment "IXP4xx Platforms" | 9 | comment "IXP4xx Platforms" |
10 | 10 | ||
11 | # This entry is placed on top because otherwise it would have | ||
12 | # been shown as a submenu. | ||
13 | config MACH_NSLU2 | 11 | config MACH_NSLU2 |
14 | bool | 12 | bool |
15 | prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715) | 13 | prompt "Linksys NSLU2" |
16 | help | 14 | help |
17 | Say 'Y' here if you want your kernel to support Linksys's | 15 | Say 'Y' here if you want your kernel to support Linksys's |
18 | NSLU2 NAS device. For more information on this platform, | 16 | NSLU2 NAS device. For more information on this platform, |
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index 4bdc9d4526cd..fbadf3021b9e 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c | |||
@@ -111,24 +111,30 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) | |||
111 | if (line < 0) | 111 | if (line < 0) |
112 | return -EINVAL; | 112 | return -EINVAL; |
113 | 113 | ||
114 | if (type & IRQT_BOTHEDGE) { | 114 | switch (type){ |
115 | case IRQT_BOTHEDGE: | ||
115 | int_style = IXP4XX_GPIO_STYLE_TRANSITIONAL; | 116 | int_style = IXP4XX_GPIO_STYLE_TRANSITIONAL; |
116 | irq_type = IXP4XX_IRQ_EDGE; | 117 | irq_type = IXP4XX_IRQ_EDGE; |
117 | } else if (type & IRQT_RISING) { | 118 | break; |
119 | case IRQT_RISING: | ||
118 | int_style = IXP4XX_GPIO_STYLE_RISING_EDGE; | 120 | int_style = IXP4XX_GPIO_STYLE_RISING_EDGE; |
119 | irq_type = IXP4XX_IRQ_EDGE; | 121 | irq_type = IXP4XX_IRQ_EDGE; |
120 | } else if (type & IRQT_FALLING) { | 122 | break; |
123 | case IRQT_FALLING: | ||
121 | int_style = IXP4XX_GPIO_STYLE_FALLING_EDGE; | 124 | int_style = IXP4XX_GPIO_STYLE_FALLING_EDGE; |
122 | irq_type = IXP4XX_IRQ_EDGE; | 125 | irq_type = IXP4XX_IRQ_EDGE; |
123 | } else if (type & IRQT_HIGH) { | 126 | break; |
127 | case IRQT_HIGH: | ||
124 | int_style = IXP4XX_GPIO_STYLE_ACTIVE_HIGH; | 128 | int_style = IXP4XX_GPIO_STYLE_ACTIVE_HIGH; |
125 | irq_type = IXP4XX_IRQ_LEVEL; | 129 | irq_type = IXP4XX_IRQ_LEVEL; |
126 | } else if (type & IRQT_LOW) { | 130 | break; |
131 | case IRQT_LOW: | ||
127 | int_style = IXP4XX_GPIO_STYLE_ACTIVE_LOW; | 132 | int_style = IXP4XX_GPIO_STYLE_ACTIVE_LOW; |
128 | irq_type = IXP4XX_IRQ_LEVEL; | 133 | irq_type = IXP4XX_IRQ_LEVEL; |
129 | } else | 134 | break; |
135 | default: | ||
130 | return -EINVAL; | 136 | return -EINVAL; |
131 | 137 | } | |
132 | ixp4xx_config_irq(irq, irq_type); | 138 | ixp4xx_config_irq(irq, irq_type); |
133 | 139 | ||
134 | if (line >= 8) { /* pins 8-15 */ | 140 | if (line >= 8) { /* pins 8-15 */ |
diff --git a/arch/arm/mach-ixp4xx/nas100d-power.c b/arch/arm/mach-ixp4xx/nas100d-power.c index 2bec69bfa715..99d333d7ebdd 100644 --- a/arch/arm/mach-ixp4xx/nas100d-power.c +++ b/arch/arm/mach-ixp4xx/nas100d-power.c | |||
@@ -56,6 +56,9 @@ static int __init nas100d_power_init(void) | |||
56 | 56 | ||
57 | static void __exit nas100d_power_exit(void) | 57 | static void __exit nas100d_power_exit(void) |
58 | { | 58 | { |
59 | if (!(machine_is_nas100d())) | ||
60 | return; | ||
61 | |||
59 | free_irq(NAS100D_RB_IRQ, NULL); | 62 | free_irq(NAS100D_RB_IRQ, NULL); |
60 | } | 63 | } |
61 | 64 | ||
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c index 856d56f3b2ae..a3b4c6ac5708 100644 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
@@ -113,6 +113,9 @@ static void __init nas100d_init(void) | |||
113 | { | 113 | { |
114 | ixp4xx_sys_init(); | 114 | ixp4xx_sys_init(); |
115 | 115 | ||
116 | /* gpio 14 and 15 are _not_ clocks */ | ||
117 | *IXP4XX_GPIO_GPCLKR = 0; | ||
118 | |||
116 | nas100d_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | 119 | nas100d_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); |
117 | nas100d_flash_resource.end = | 120 | nas100d_flash_resource.end = |
118 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; | 121 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; |
diff --git a/arch/arm/mach-ixp4xx/nslu2-power.c b/arch/arm/mach-ixp4xx/nslu2-power.c index b0ad9e901f6e..d80c362bc539 100644 --- a/arch/arm/mach-ixp4xx/nslu2-power.c +++ b/arch/arm/mach-ixp4xx/nslu2-power.c | |||
@@ -77,6 +77,9 @@ static int __init nslu2_power_init(void) | |||
77 | 77 | ||
78 | static void __exit nslu2_power_exit(void) | 78 | static void __exit nslu2_power_exit(void) |
79 | { | 79 | { |
80 | if (!(machine_is_nslu2())) | ||
81 | return; | ||
82 | |||
80 | free_irq(NSLU2_RB_IRQ, NULL); | 83 | free_irq(NSLU2_RB_IRQ, NULL); |
81 | free_irq(NSLU2_PB_IRQ, NULL); | 84 | free_irq(NSLU2_PB_IRQ, NULL); |
82 | } | 85 | } |
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index da9340a53434..55411f21d838 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -27,8 +27,6 @@ static struct flash_platform_data nslu2_flash_data = { | |||
27 | }; | 27 | }; |
28 | 28 | ||
29 | static struct resource nslu2_flash_resource = { | 29 | static struct resource nslu2_flash_resource = { |
30 | .start = NSLU2_FLASH_BASE, | ||
31 | .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE, | ||
32 | .flags = IORESOURCE_MEM, | 30 | .flags = IORESOURCE_MEM, |
33 | }; | 31 | }; |
34 | 32 | ||
@@ -52,6 +50,12 @@ static struct platform_device nslu2_i2c_controller = { | |||
52 | .num_resources = 0, | 50 | .num_resources = 0, |
53 | }; | 51 | }; |
54 | 52 | ||
53 | static struct platform_device nslu2_beeper = { | ||
54 | .name = "ixp4xx-beeper", | ||
55 | .id = NSLU2_GPIO_BUZZ, | ||
56 | .num_resources = 0, | ||
57 | }; | ||
58 | |||
55 | static struct resource nslu2_uart_resources[] = { | 59 | static struct resource nslu2_uart_resources[] = { |
56 | { | 60 | { |
57 | .start = IXP4XX_UART1_BASE_PHYS, | 61 | .start = IXP4XX_UART1_BASE_PHYS, |
@@ -99,6 +103,7 @@ static struct platform_device *nslu2_devices[] __initdata = { | |||
99 | &nslu2_i2c_controller, | 103 | &nslu2_i2c_controller, |
100 | &nslu2_flash, | 104 | &nslu2_flash, |
101 | &nslu2_uart, | 105 | &nslu2_uart, |
106 | &nslu2_beeper, | ||
102 | }; | 107 | }; |
103 | 108 | ||
104 | static void nslu2_power_off(void) | 109 | static void nslu2_power_off(void) |
@@ -116,6 +121,10 @@ static void __init nslu2_init(void) | |||
116 | { | 121 | { |
117 | ixp4xx_sys_init(); | 122 | ixp4xx_sys_init(); |
118 | 123 | ||
124 | nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | ||
125 | nslu2_flash_resource.end = | ||
126 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; | ||
127 | |||
119 | pm_power_off = nslu2_power_off; | 128 | pm_power_off = nslu2_power_off; |
120 | 129 | ||
121 | platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices)); | 130 | platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices)); |
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index bdc20b51b076..a177e78b2b87 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | static void __init omap_generic_init_irq(void) | 31 | static void __init omap_generic_init_irq(void) |
32 | { | 32 | { |
33 | omap1_init_common_hw(); | ||
33 | omap_init_irq(); | 34 | omap_init_irq(); |
34 | } | 35 | } |
35 | 36 | ||
@@ -104,7 +105,7 @@ static void __init omap_generic_init(void) | |||
104 | 105 | ||
105 | static void __init omap_generic_map_io(void) | 106 | static void __init omap_generic_map_io(void) |
106 | { | 107 | { |
107 | omap_map_common_io(); | 108 | omap1_map_common_io(); |
108 | } | 109 | } |
109 | 110 | ||
110 | MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") | 111 | MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 9533c36a92df..89f0cc74a519 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -128,6 +128,7 @@ static void __init h2_init_smc91x(void) | |||
128 | 128 | ||
129 | static void __init h2_init_irq(void) | 129 | static void __init h2_init_irq(void) |
130 | { | 130 | { |
131 | omap1_init_common_hw(); | ||
131 | omap_init_irq(); | 132 | omap_init_irq(); |
132 | omap_gpio_init(); | 133 | omap_gpio_init(); |
133 | h2_init_smc91x(); | 134 | h2_init_smc91x(); |
@@ -194,7 +195,7 @@ static void __init h2_init(void) | |||
194 | 195 | ||
195 | static void __init h2_map_io(void) | 196 | static void __init h2_map_io(void) |
196 | { | 197 | { |
197 | omap_map_common_io(); | 198 | omap1_map_common_io(); |
198 | } | 199 | } |
199 | 200 | ||
200 | MACHINE_START(OMAP_H2, "TI-H2") | 201 | MACHINE_START(OMAP_H2, "TI-H2") |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index d665efc1c344..d9f386265996 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -203,6 +203,7 @@ static void __init h3_init_smc91x(void) | |||
203 | 203 | ||
204 | void h3_init_irq(void) | 204 | void h3_init_irq(void) |
205 | { | 205 | { |
206 | omap1_init_common_hw(); | ||
206 | omap_init_irq(); | 207 | omap_init_irq(); |
207 | omap_gpio_init(); | 208 | omap_gpio_init(); |
208 | h3_init_smc91x(); | 209 | h3_init_smc91x(); |
@@ -210,7 +211,7 @@ void h3_init_irq(void) | |||
210 | 211 | ||
211 | static void __init h3_map_io(void) | 212 | static void __init h3_map_io(void) |
212 | { | 213 | { |
213 | omap_map_common_io(); | 214 | omap1_map_common_io(); |
214 | } | 215 | } |
215 | 216 | ||
216 | MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") | 217 | MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 652f37c7f906..a04e4332915e 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -181,6 +181,7 @@ static void __init innovator_init_smc91x(void) | |||
181 | 181 | ||
182 | void innovator_init_irq(void) | 182 | void innovator_init_irq(void) |
183 | { | 183 | { |
184 | omap1_init_common_hw(); | ||
184 | omap_init_irq(); | 185 | omap_init_irq(); |
185 | omap_gpio_init(); | 186 | omap_gpio_init(); |
186 | #ifdef CONFIG_ARCH_OMAP15XX | 187 | #ifdef CONFIG_ARCH_OMAP15XX |
@@ -285,7 +286,7 @@ static void __init innovator_init(void) | |||
285 | 286 | ||
286 | static void __init innovator_map_io(void) | 287 | static void __init innovator_map_io(void) |
287 | { | 288 | { |
288 | omap_map_common_io(); | 289 | omap1_map_common_io(); |
289 | 290 | ||
290 | #ifdef CONFIG_ARCH_OMAP15XX | 291 | #ifdef CONFIG_ARCH_OMAP15XX |
291 | if (cpu_is_omap1510()) { | 292 | if (cpu_is_omap1510()) { |
diff --git a/arch/arm/mach-omap1/board-netstar.c b/arch/arm/mach-omap1/board-netstar.c index 58f783930d45..60d5f8a3339c 100644 --- a/arch/arm/mach-omap1/board-netstar.c +++ b/arch/arm/mach-omap1/board-netstar.c | |||
@@ -65,6 +65,7 @@ static struct omap_board_config_kernel netstar_config[] = { | |||
65 | 65 | ||
66 | static void __init netstar_init_irq(void) | 66 | static void __init netstar_init_irq(void) |
67 | { | 67 | { |
68 | omap1_init_common_hw(); | ||
68 | omap_init_irq(); | 69 | omap_init_irq(); |
69 | omap_gpio_init(); | 70 | omap_gpio_init(); |
70 | } | 71 | } |
@@ -108,7 +109,7 @@ static void __init netstar_init(void) | |||
108 | 109 | ||
109 | static void __init netstar_map_io(void) | 110 | static void __init netstar_map_io(void) |
110 | { | 111 | { |
111 | omap_map_common_io(); | 112 | omap1_map_common_io(); |
112 | } | 113 | } |
113 | 114 | ||
114 | #define MACHINE_PANICED 1 | 115 | #define MACHINE_PANICED 1 |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index e5d126e8f276..543fa136106d 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -169,6 +169,7 @@ static void __init osk_init_cf(void) | |||
169 | 169 | ||
170 | static void __init osk_init_irq(void) | 170 | static void __init osk_init_irq(void) |
171 | { | 171 | { |
172 | omap1_init_common_hw(); | ||
172 | omap_init_irq(); | 173 | omap_init_irq(); |
173 | omap_gpio_init(); | 174 | omap_gpio_init(); |
174 | osk_init_smc91x(); | 175 | osk_init_smc91x(); |
@@ -269,7 +270,7 @@ static void __init osk_init(void) | |||
269 | 270 | ||
270 | static void __init osk_map_io(void) | 271 | static void __init osk_map_io(void) |
271 | { | 272 | { |
272 | omap_map_common_io(); | 273 | omap1_map_common_io(); |
273 | } | 274 | } |
274 | 275 | ||
275 | MACHINE_START(OMAP_OSK, "TI-OSK") | 276 | MACHINE_START(OMAP_OSK, "TI-OSK") |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 67fada207622..e488f7236775 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -34,6 +34,7 @@ | |||
34 | 34 | ||
35 | static void __init omap_generic_init_irq(void) | 35 | static void __init omap_generic_init_irq(void) |
36 | { | 36 | { |
37 | omap1_init_common_hw(); | ||
37 | omap_init_irq(); | 38 | omap_init_irq(); |
38 | } | 39 | } |
39 | 40 | ||
@@ -72,7 +73,7 @@ static void __init omap_generic_init(void) | |||
72 | 73 | ||
73 | static void __init omap_generic_map_io(void) | 74 | static void __init omap_generic_map_io(void) |
74 | { | 75 | { |
75 | omap_map_common_io(); | 76 | omap1_map_common_io(); |
76 | } | 77 | } |
77 | 78 | ||
78 | MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") | 79 | MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 88708a0c52a2..3913a3cc0ce6 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -144,6 +144,7 @@ static void __init perseus2_init_smc91x(void) | |||
144 | 144 | ||
145 | void omap_perseus2_init_irq(void) | 145 | void omap_perseus2_init_irq(void) |
146 | { | 146 | { |
147 | omap1_init_common_hw(); | ||
147 | omap_init_irq(); | 148 | omap_init_irq(); |
148 | omap_gpio_init(); | 149 | omap_gpio_init(); |
149 | perseus2_init_smc91x(); | 150 | perseus2_init_smc91x(); |
@@ -160,7 +161,7 @@ static struct map_desc omap_perseus2_io_desc[] __initdata = { | |||
160 | 161 | ||
161 | static void __init omap_perseus2_map_io(void) | 162 | static void __init omap_perseus2_map_io(void) |
162 | { | 163 | { |
163 | omap_map_common_io(); | 164 | omap1_map_common_io(); |
164 | iotable_init(omap_perseus2_io_desc, | 165 | iotable_init(omap_perseus2_io_desc, |
165 | ARRAY_SIZE(omap_perseus2_io_desc)); | 166 | ARRAY_SIZE(omap_perseus2_io_desc)); |
166 | 167 | ||
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 959b4b847c87..bfd5fdd1a875 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -162,6 +162,7 @@ static struct omap_board_config_kernel voiceblue_config[] = { | |||
162 | 162 | ||
163 | static void __init voiceblue_init_irq(void) | 163 | static void __init voiceblue_init_irq(void) |
164 | { | 164 | { |
165 | omap1_init_common_hw(); | ||
165 | omap_init_irq(); | 166 | omap_init_irq(); |
166 | omap_gpio_init(); | 167 | omap_gpio_init(); |
167 | } | 168 | } |
@@ -206,7 +207,7 @@ static void __init voiceblue_init(void) | |||
206 | 207 | ||
207 | static void __init voiceblue_map_io(void) | 208 | static void __init voiceblue_map_io(void) |
208 | { | 209 | { |
209 | omap_map_common_io(); | 210 | omap1_map_common_io(); |
210 | } | 211 | } |
211 | 212 | ||
212 | #define MACHINE_PANICED 1 | 213 | #define MACHINE_PANICED 1 |
diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c index a7a19f75b9e1..82d556be79c5 100644 --- a/arch/arm/mach-omap1/io.c +++ b/arch/arm/mach-omap1/io.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | 15 | ||
16 | #include <asm/tlb.h> | ||
16 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
17 | #include <asm/io.h> | 18 | #include <asm/io.h> |
18 | #include <asm/arch/mux.h> | 19 | #include <asm/arch/mux.h> |
@@ -83,15 +84,24 @@ static struct map_desc omap16xx_io_desc[] __initdata = { | |||
83 | }; | 84 | }; |
84 | #endif | 85 | #endif |
85 | 86 | ||
86 | static int initialized = 0; | 87 | /* |
87 | 88 | * Maps common IO regions for omap1. This should only get called from | |
88 | static void __init _omap_map_io(void) | 89 | * board specific init. |
90 | */ | ||
91 | void __init omap1_map_common_io(void) | ||
89 | { | 92 | { |
90 | initialized = 1; | ||
91 | |||
92 | /* We have to initialize the IO space mapping before we can run | ||
93 | * cpu_is_omapxxx() macros. */ | ||
94 | iotable_init(omap_io_desc, ARRAY_SIZE(omap_io_desc)); | 93 | iotable_init(omap_io_desc, ARRAY_SIZE(omap_io_desc)); |
94 | |||
95 | /* Normally devicemaps_init() would flush caches and tlb after | ||
96 | * mdesc->map_io(), but we must also do it here because of the CPU | ||
97 | * revision check below. | ||
98 | */ | ||
99 | local_flush_tlb_all(); | ||
100 | flush_cache_all(); | ||
101 | |||
102 | /* We want to check CPU revision early for cpu_is_omapxxxx() macros. | ||
103 | * IO space mapping must be initialized before we can do that. | ||
104 | */ | ||
95 | omap_check_revision(); | 105 | omap_check_revision(); |
96 | 106 | ||
97 | #ifdef CONFIG_ARCH_OMAP730 | 107 | #ifdef CONFIG_ARCH_OMAP730 |
@@ -111,7 +121,14 @@ static void __init _omap_map_io(void) | |||
111 | #endif | 121 | #endif |
112 | 122 | ||
113 | omap_sram_init(); | 123 | omap_sram_init(); |
124 | } | ||
114 | 125 | ||
126 | /* | ||
127 | * Common low-level hardware init for omap1. This should only get called from | ||
128 | * board specific init. | ||
129 | */ | ||
130 | void __init omap1_init_common_hw() | ||
131 | { | ||
115 | /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort | 132 | /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort |
116 | * on a Posted Write in the TIPB Bridge". | 133 | * on a Posted Write in the TIPB Bridge". |
117 | */ | 134 | */ |
@@ -121,16 +138,7 @@ static void __init _omap_map_io(void) | |||
121 | /* Must init clocks early to assure that timer interrupt works | 138 | /* Must init clocks early to assure that timer interrupt works |
122 | */ | 139 | */ |
123 | omap1_clk_init(); | 140 | omap1_clk_init(); |
124 | } | ||
125 | 141 | ||
126 | /* | 142 | omap1_mux_init(); |
127 | * This should only get called from board specific init | ||
128 | */ | ||
129 | void __init omap_map_common_io(void) | ||
130 | { | ||
131 | if (!initialized) { | ||
132 | _omap_map_io(); | ||
133 | omap1_mux_init(); | ||
134 | } | ||
135 | } | 143 | } |
136 | 144 | ||
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index b937123e5c65..eaecbf422d8c 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -33,6 +33,7 @@ | |||
33 | 33 | ||
34 | static void __init omap_generic_init_irq(void) | 34 | static void __init omap_generic_init_irq(void) |
35 | { | 35 | { |
36 | omap2_init_common_hw(); | ||
36 | omap_init_irq(); | 37 | omap_init_irq(); |
37 | } | 38 | } |
38 | 39 | ||
@@ -64,7 +65,7 @@ static void __init omap_generic_init(void) | |||
64 | 65 | ||
65 | static void __init omap_generic_map_io(void) | 66 | static void __init omap_generic_map_io(void) |
66 | { | 67 | { |
67 | omap_map_common_io(); | 68 | omap2_map_common_io(); |
68 | } | 69 | } |
69 | 70 | ||
70 | MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx") | 71 | MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx") |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index c3c35d40378a..a300d634d8a5 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -136,6 +136,7 @@ static inline void __init h4_init_smc91x(void) | |||
136 | 136 | ||
137 | static void __init omap_h4_init_irq(void) | 137 | static void __init omap_h4_init_irq(void) |
138 | { | 138 | { |
139 | omap2_init_common_hw(); | ||
139 | omap_init_irq(); | 140 | omap_init_irq(); |
140 | omap_gpio_init(); | 141 | omap_gpio_init(); |
141 | h4_init_smc91x(); | 142 | h4_init_smc91x(); |
@@ -181,7 +182,7 @@ static void __init omap_h4_init(void) | |||
181 | 182 | ||
182 | static void __init omap_h4_map_io(void) | 183 | static void __init omap_h4_map_io(void) |
183 | { | 184 | { |
184 | omap_map_common_io(); | 185 | omap2_map_common_io(); |
185 | } | 186 | } |
186 | 187 | ||
187 | MACHINE_START(OMAP_H4, "OMAP2420 H4 board") | 188 | MACHINE_START(OMAP_H4, "OMAP2420 H4 board") |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index b41b1efaa2cf..3baa70819f24 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -44,7 +44,7 @@ unsigned int get_clk_frequency_khz( int info) | |||
44 | 44 | ||
45 | /* Read clkcfg register: it has turbo, b, half-turbo (and f) */ | 45 | /* Read clkcfg register: it has turbo, b, half-turbo (and f) */ |
46 | asm( "mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg) ); | 46 | asm( "mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg) ); |
47 | t = clkcfg & (1 << 1); | 47 | t = clkcfg & (1 << 0); |
48 | ht = clkcfg & (1 << 2); | 48 | ht = clkcfg & (1 << 2); |
49 | b = clkcfg & (1 << 3); | 49 | b = clkcfg & (1 << 3); |
50 | 50 | ||
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index 4a222f59f2cf..4303d988c4bf 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -182,7 +182,7 @@ static const struct icst307_params realview_oscvco_params = { | |||
182 | static void realview_oscvco_set(struct clk *clk, struct icst307_vco vco) | 182 | static void realview_oscvco_set(struct clk *clk, struct icst307_vco vco) |
183 | { | 183 | { |
184 | void __iomem *sys_lock = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_LOCK_OFFSET; | 184 | void __iomem *sys_lock = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_LOCK_OFFSET; |
185 | void __iomem *sys_osc = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_OSC1_OFFSET; | 185 | void __iomem *sys_osc = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_OSC4_OFFSET; |
186 | u32 val; | 186 | u32 val; |
187 | 187 | ||
188 | val = readl(sys_osc) & ~0x7ffff; | 188 | val = readl(sys_osc) & ~0x7ffff; |
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c index a8fbd76d8be5..b8484e15dacb 100644 --- a/arch/arm/mach-realview/platsmp.c +++ b/arch/arm/mach-realview/platsmp.c | |||
@@ -143,6 +143,18 @@ static void __init poke_milo(void) | |||
143 | mb(); | 143 | mb(); |
144 | } | 144 | } |
145 | 145 | ||
146 | /* | ||
147 | * Initialise the CPU possible map early - this describes the CPUs | ||
148 | * which may be present or become present in the system. | ||
149 | */ | ||
150 | void __init smp_init_cpus(void) | ||
151 | { | ||
152 | unsigned int i, ncores = get_core_count(); | ||
153 | |||
154 | for (i = 0; i < ncores; i++) | ||
155 | cpu_set(i, cpu_possible_map); | ||
156 | } | ||
157 | |||
146 | void __init smp_prepare_cpus(unsigned int max_cpus) | 158 | void __init smp_prepare_cpus(unsigned int max_cpus) |
147 | { | 159 | { |
148 | unsigned int ncores = get_core_count(); | 160 | unsigned int ncores = get_core_count(); |
@@ -179,14 +191,11 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
179 | local_timer_setup(cpu); | 191 | local_timer_setup(cpu); |
180 | 192 | ||
181 | /* | 193 | /* |
182 | * Initialise the possible/present maps. | 194 | * Initialise the present map, which describes the set of CPUs |
183 | * cpu_possible_map describes the set of CPUs which may be present | 195 | * actually populated at the present time. |
184 | * cpu_present_map describes the set of CPUs populated | ||
185 | */ | 196 | */ |
186 | for (i = 0; i < max_cpus; i++) { | 197 | for (i = 0; i < max_cpus; i++) |
187 | cpu_set(i, cpu_possible_map); | ||
188 | cpu_set(i, cpu_present_map); | 198 | cpu_set(i, cpu_present_map); |
189 | } | ||
190 | 199 | ||
191 | /* | 200 | /* |
192 | * Do we need any more CPUs? If so, then let them know where | 201 | * Do we need any more CPUs? If so, then let them know where |
diff --git a/arch/arm/mach-s3c2410/Makefile b/arch/arm/mach-s3c2410/Makefile index b4f1e051c768..1217bf00309c 100644 --- a/arch/arm/mach-s3c2410/Makefile +++ b/arch/arm/mach-s3c2410/Makefile | |||
@@ -10,9 +10,13 @@ obj-m := | |||
10 | obj-n := | 10 | obj-n := |
11 | obj- := | 11 | obj- := |
12 | 12 | ||
13 | # S3C2400 support files | ||
14 | obj-$(CONFIG_CPU_S3C2400) += s3c2400-gpio.o | ||
15 | |||
13 | # S3C2410 support files | 16 | # S3C2410 support files |
14 | 17 | ||
15 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o | 18 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o |
19 | obj-$(CONFIG_CPU_S3C2410) += s3c2410-gpio.o | ||
16 | obj-$(CONFIG_S3C2410_DMA) += dma.o | 20 | obj-$(CONFIG_S3C2410_DMA) += dma.o |
17 | 21 | ||
18 | # Power Management support | 22 | # Power Management support |
@@ -25,6 +29,7 @@ obj-$(CONFIG_PM_SIMTEC) += pm-simtec.o | |||
25 | obj-$(CONFIG_CPU_S3C2440) += s3c2440.o s3c2440-dsc.o | 29 | obj-$(CONFIG_CPU_S3C2440) += s3c2440.o s3c2440-dsc.o |
26 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-irq.o | 30 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-irq.o |
27 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-clock.o | 31 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-clock.o |
32 | obj-$(CONFIG_CPU_S3C2440) += s3c2410-gpio.o | ||
28 | 33 | ||
29 | # bast extras | 34 | # bast extras |
30 | 35 | ||
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index af2f3d52b61b..08489efdaf06 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <linux/mutex.h> | 40 | #include <linux/mutex.h> |
41 | 41 | ||
42 | #include <asm/hardware.h> | 42 | #include <asm/hardware.h> |
43 | #include <asm/atomic.h> | ||
44 | #include <asm/irq.h> | 43 | #include <asm/irq.h> |
45 | #include <asm/io.h> | 44 | #include <asm/io.h> |
46 | 45 | ||
@@ -59,22 +58,18 @@ static DEFINE_MUTEX(clocks_mutex); | |||
59 | void inline s3c24xx_clk_enable(unsigned int clocks, unsigned int enable) | 58 | void inline s3c24xx_clk_enable(unsigned int clocks, unsigned int enable) |
60 | { | 59 | { |
61 | unsigned long clkcon; | 60 | unsigned long clkcon; |
62 | unsigned long flags; | ||
63 | |||
64 | local_irq_save(flags); | ||
65 | 61 | ||
66 | clkcon = __raw_readl(S3C2410_CLKCON); | 62 | clkcon = __raw_readl(S3C2410_CLKCON); |
67 | clkcon &= ~clocks; | ||
68 | 63 | ||
69 | if (enable) | 64 | if (enable) |
70 | clkcon |= clocks; | 65 | clkcon |= clocks; |
66 | else | ||
67 | clkcon &= ~clocks; | ||
71 | 68 | ||
72 | /* ensure none of the special function bits set */ | 69 | /* ensure none of the special function bits set */ |
73 | clkcon &= ~(S3C2410_CLKCON_IDLE|S3C2410_CLKCON_POWER); | 70 | clkcon &= ~(S3C2410_CLKCON_IDLE|S3C2410_CLKCON_POWER); |
74 | 71 | ||
75 | __raw_writel(clkcon, S3C2410_CLKCON); | 72 | __raw_writel(clkcon, S3C2410_CLKCON); |
76 | |||
77 | local_irq_restore(flags); | ||
78 | } | 73 | } |
79 | 74 | ||
80 | /* enable and disable calls for use with the clk struct */ | 75 | /* enable and disable calls for use with the clk struct */ |
@@ -138,16 +133,32 @@ void clk_put(struct clk *clk) | |||
138 | 133 | ||
139 | int clk_enable(struct clk *clk) | 134 | int clk_enable(struct clk *clk) |
140 | { | 135 | { |
141 | if (IS_ERR(clk)) | 136 | if (IS_ERR(clk) || clk == NULL) |
142 | return -EINVAL; | 137 | return -EINVAL; |
143 | 138 | ||
144 | return (clk->enable)(clk, 1); | 139 | clk_enable(clk->parent); |
140 | |||
141 | mutex_lock(&clocks_mutex); | ||
142 | |||
143 | if ((clk->usage++) == 0) | ||
144 | (clk->enable)(clk, 1); | ||
145 | |||
146 | mutex_unlock(&clocks_mutex); | ||
147 | return 0; | ||
145 | } | 148 | } |
146 | 149 | ||
147 | void clk_disable(struct clk *clk) | 150 | void clk_disable(struct clk *clk) |
148 | { | 151 | { |
149 | if (!IS_ERR(clk)) | 152 | if (IS_ERR(clk) || clk == NULL) |
153 | return; | ||
154 | |||
155 | mutex_lock(&clocks_mutex); | ||
156 | |||
157 | if ((--clk->usage) == 0) | ||
150 | (clk->enable)(clk, 0); | 158 | (clk->enable)(clk, 0); |
159 | |||
160 | mutex_unlock(&clocks_mutex); | ||
161 | clk_disable(clk->parent); | ||
151 | } | 162 | } |
152 | 163 | ||
153 | 164 | ||
@@ -361,6 +372,14 @@ int s3c24xx_register_clock(struct clk *clk) | |||
361 | if (clk->enable == NULL) | 372 | if (clk->enable == NULL) |
362 | clk->enable = clk_null_enable; | 373 | clk->enable = clk_null_enable; |
363 | 374 | ||
375 | /* if this is a standard clock, set the usage state */ | ||
376 | |||
377 | if (clk->ctrlbit) { | ||
378 | unsigned long clkcon = __raw_readl(S3C2410_CLKCON); | ||
379 | |||
380 | clk->usage = (clkcon & clk->ctrlbit) ? 1 : 0; | ||
381 | } | ||
382 | |||
364 | /* add to the list of available clocks */ | 383 | /* add to the list of available clocks */ |
365 | 384 | ||
366 | mutex_lock(&clocks_mutex); | 385 | mutex_lock(&clocks_mutex); |
@@ -402,6 +421,8 @@ int __init s3c24xx_setup_clocks(unsigned long xtal, | |||
402 | * the LCD clock if it is not needed. | 421 | * the LCD clock if it is not needed. |
403 | */ | 422 | */ |
404 | 423 | ||
424 | mutex_lock(&clocks_mutex); | ||
425 | |||
405 | s3c24xx_clk_enable(S3C2410_CLKCON_NAND, 0); | 426 | s3c24xx_clk_enable(S3C2410_CLKCON_NAND, 0); |
406 | s3c24xx_clk_enable(S3C2410_CLKCON_USBH, 0); | 427 | s3c24xx_clk_enable(S3C2410_CLKCON_USBH, 0); |
407 | s3c24xx_clk_enable(S3C2410_CLKCON_USBD, 0); | 428 | s3c24xx_clk_enable(S3C2410_CLKCON_USBD, 0); |
@@ -409,6 +430,8 @@ int __init s3c24xx_setup_clocks(unsigned long xtal, | |||
409 | s3c24xx_clk_enable(S3C2410_CLKCON_IIC, 0); | 430 | s3c24xx_clk_enable(S3C2410_CLKCON_IIC, 0); |
410 | s3c24xx_clk_enable(S3C2410_CLKCON_SPI, 0); | 431 | s3c24xx_clk_enable(S3C2410_CLKCON_SPI, 0); |
411 | 432 | ||
433 | mutex_unlock(&clocks_mutex); | ||
434 | |||
412 | /* assume uart clocks are correctly setup */ | 435 | /* assume uart clocks are correctly setup */ |
413 | 436 | ||
414 | /* register our clocks */ | 437 | /* register our clocks */ |
diff --git a/arch/arm/mach-s3c2410/clock.h b/arch/arm/mach-s3c2410/clock.h index 177d5c8decf7..eb5c95d1e7f2 100644 --- a/arch/arm/mach-s3c2410/clock.h +++ b/arch/arm/mach-s3c2410/clock.h | |||
@@ -16,6 +16,7 @@ struct clk { | |||
16 | struct clk *parent; | 16 | struct clk *parent; |
17 | const char *name; | 17 | const char *name; |
18 | int id; | 18 | int id; |
19 | int usage; | ||
19 | unsigned long rate; | 20 | unsigned long rate; |
20 | unsigned long ctrlbit; | 21 | unsigned long ctrlbit; |
21 | int (*enable)(struct clk *, int enable); | 22 | int (*enable)(struct clk *, int enable); |
diff --git a/arch/arm/mach-s3c2410/cpu.c b/arch/arm/mach-s3c2410/cpu.c index 687fe371369d..00a379334b60 100644 --- a/arch/arm/mach-s3c2410/cpu.c +++ b/arch/arm/mach-s3c2410/cpu.c | |||
@@ -40,6 +40,7 @@ | |||
40 | 40 | ||
41 | #include "cpu.h" | 41 | #include "cpu.h" |
42 | #include "clock.h" | 42 | #include "clock.h" |
43 | #include "s3c2400.h" | ||
43 | #include "s3c2410.h" | 44 | #include "s3c2410.h" |
44 | #include "s3c2440.h" | 45 | #include "s3c2440.h" |
45 | 46 | ||
@@ -55,6 +56,7 @@ struct cpu_table { | |||
55 | 56 | ||
56 | /* table of supported CPUs */ | 57 | /* table of supported CPUs */ |
57 | 58 | ||
59 | static const char name_s3c2400[] = "S3C2400"; | ||
58 | static const char name_s3c2410[] = "S3C2410"; | 60 | static const char name_s3c2410[] = "S3C2410"; |
59 | static const char name_s3c2440[] = "S3C2440"; | 61 | static const char name_s3c2440[] = "S3C2440"; |
60 | static const char name_s3c2410a[] = "S3C2410A"; | 62 | static const char name_s3c2410a[] = "S3C2410A"; |
@@ -96,7 +98,16 @@ static struct cpu_table cpu_ids[] __initdata = { | |||
96 | .init_uarts = s3c2440_init_uarts, | 98 | .init_uarts = s3c2440_init_uarts, |
97 | .init = s3c2440_init, | 99 | .init = s3c2440_init, |
98 | .name = name_s3c2440a | 100 | .name = name_s3c2440a |
99 | } | 101 | }, |
102 | { | ||
103 | .idcode = 0x0, /* S3C2400 doesn't have an idcode */ | ||
104 | .idmask = 0xffffffff, | ||
105 | .map_io = s3c2400_map_io, | ||
106 | .init_clocks = s3c2400_init_clocks, | ||
107 | .init_uarts = s3c2400_init_uarts, | ||
108 | .init = s3c2400_init, | ||
109 | .name = name_s3c2400 | ||
110 | }, | ||
100 | }; | 111 | }; |
101 | 112 | ||
102 | /* minimal IO mapping */ | 113 | /* minimal IO mapping */ |
@@ -148,12 +159,15 @@ static struct cpu_table *cpu; | |||
148 | 159 | ||
149 | void __init s3c24xx_init_io(struct map_desc *mach_desc, int size) | 160 | void __init s3c24xx_init_io(struct map_desc *mach_desc, int size) |
150 | { | 161 | { |
151 | unsigned long idcode; | 162 | unsigned long idcode = 0x0; |
152 | 163 | ||
153 | /* initialise the io descriptors we need for initialisation */ | 164 | /* initialise the io descriptors we need for initialisation */ |
154 | iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc)); | 165 | iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc)); |
155 | 166 | ||
167 | #ifndef CONFIG_CPU_S3C2400 | ||
156 | idcode = __raw_readl(S3C2410_GSTATUS1); | 168 | idcode = __raw_readl(S3C2410_GSTATUS1); |
169 | #endif | ||
170 | |||
157 | cpu = s3c_lookup_cpu(idcode); | 171 | cpu = s3c_lookup_cpu(idcode); |
158 | 172 | ||
159 | if (cpu == NULL) { | 173 | if (cpu == NULL) { |
diff --git a/arch/arm/mach-s3c2410/cpu.h b/arch/arm/mach-s3c2410/cpu.h index 9cbe5eef492b..fc1067783f6d 100644 --- a/arch/arm/mach-s3c2410/cpu.h +++ b/arch/arm/mach-s3c2410/cpu.h | |||
@@ -17,11 +17,12 @@ | |||
17 | * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call | 17 | * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call |
18 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT | 18 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT |
19 | * 14-Mar-2005 BJD Updated for __iomem | 19 | * 14-Mar-2005 BJD Updated for __iomem |
20 | * 15-Jan-2006 LCVR Updated S3C2410_PA_##x to new S3C24XX_PA_##x macro | ||
20 | */ | 21 | */ |
21 | 22 | ||
22 | /* todo - fix when rmk changes iodescs to use `void __iomem *` */ | 23 | /* todo - fix when rmk changes iodescs to use `void __iomem *` */ |
23 | 24 | ||
24 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C2410_PA_##x), S3C24XX_SZ_##x, MT_DEVICE } | 25 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE } |
25 | 26 | ||
26 | #ifndef MHZ | 27 | #ifndef MHZ |
27 | #define MHZ (1000*1000) | 28 | #define MHZ (1000*1000) |
diff --git a/arch/arm/mach-s3c2410/devs.c b/arch/arm/mach-s3c2410/devs.c index f58406e6ef5a..ca09ba516e4c 100644 --- a/arch/arm/mach-s3c2410/devs.c +++ b/arch/arm/mach-s3c2410/devs.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | * | 11 | * |
12 | * Modifications: | 12 | * Modifications: |
13 | * 15-Jan-2006 LCVR Using S3C24XX_PA_##x macro for common S3C24XX devices | ||
13 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} | 14 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} |
14 | * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv | 15 | * 10-Feb-2005 BJD Added camera from guillaume.gourat@nexvision.tv |
15 | * 29-Aug-2004 BJD Added timers 0 through 3 | 16 | * 29-Aug-2004 BJD Added timers 0 through 3 |
@@ -46,8 +47,8 @@ struct platform_device *s3c24xx_uart_devs[3]; | |||
46 | 47 | ||
47 | static struct resource s3c_usb_resource[] = { | 48 | static struct resource s3c_usb_resource[] = { |
48 | [0] = { | 49 | [0] = { |
49 | .start = S3C2410_PA_USBHOST, | 50 | .start = S3C24XX_PA_USBHOST, |
50 | .end = S3C2410_PA_USBHOST + S3C24XX_SZ_USBHOST - 1, | 51 | .end = S3C24XX_PA_USBHOST + S3C24XX_SZ_USBHOST - 1, |
51 | .flags = IORESOURCE_MEM, | 52 | .flags = IORESOURCE_MEM, |
52 | }, | 53 | }, |
53 | [1] = { | 54 | [1] = { |
@@ -76,8 +77,8 @@ EXPORT_SYMBOL(s3c_device_usb); | |||
76 | 77 | ||
77 | static struct resource s3c_lcd_resource[] = { | 78 | static struct resource s3c_lcd_resource[] = { |
78 | [0] = { | 79 | [0] = { |
79 | .start = S3C2410_PA_LCD, | 80 | .start = S3C24XX_PA_LCD, |
80 | .end = S3C2410_PA_LCD + S3C24XX_SZ_LCD - 1, | 81 | .end = S3C24XX_PA_LCD + S3C24XX_SZ_LCD - 1, |
81 | .flags = IORESOURCE_MEM, | 82 | .flags = IORESOURCE_MEM, |
82 | }, | 83 | }, |
83 | [1] = { | 84 | [1] = { |
@@ -139,8 +140,8 @@ EXPORT_SYMBOL(s3c_device_nand); | |||
139 | 140 | ||
140 | static struct resource s3c_usbgadget_resource[] = { | 141 | static struct resource s3c_usbgadget_resource[] = { |
141 | [0] = { | 142 | [0] = { |
142 | .start = S3C2410_PA_USBDEV, | 143 | .start = S3C24XX_PA_USBDEV, |
143 | .end = S3C2410_PA_USBDEV + S3C24XX_SZ_USBDEV - 1, | 144 | .end = S3C24XX_PA_USBDEV + S3C24XX_SZ_USBDEV - 1, |
144 | .flags = IORESOURCE_MEM, | 145 | .flags = IORESOURCE_MEM, |
145 | }, | 146 | }, |
146 | [1] = { | 147 | [1] = { |
@@ -164,8 +165,8 @@ EXPORT_SYMBOL(s3c_device_usbgadget); | |||
164 | 165 | ||
165 | static struct resource s3c_wdt_resource[] = { | 166 | static struct resource s3c_wdt_resource[] = { |
166 | [0] = { | 167 | [0] = { |
167 | .start = S3C2410_PA_WATCHDOG, | 168 | .start = S3C24XX_PA_WATCHDOG, |
168 | .end = S3C2410_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1, | 169 | .end = S3C24XX_PA_WATCHDOG + S3C24XX_SZ_WATCHDOG - 1, |
169 | .flags = IORESOURCE_MEM, | 170 | .flags = IORESOURCE_MEM, |
170 | }, | 171 | }, |
171 | [1] = { | 172 | [1] = { |
@@ -189,8 +190,8 @@ EXPORT_SYMBOL(s3c_device_wdt); | |||
189 | 190 | ||
190 | static struct resource s3c_i2c_resource[] = { | 191 | static struct resource s3c_i2c_resource[] = { |
191 | [0] = { | 192 | [0] = { |
192 | .start = S3C2410_PA_IIC, | 193 | .start = S3C24XX_PA_IIC, |
193 | .end = S3C2410_PA_IIC + S3C24XX_SZ_IIC - 1, | 194 | .end = S3C24XX_PA_IIC + S3C24XX_SZ_IIC - 1, |
194 | .flags = IORESOURCE_MEM, | 195 | .flags = IORESOURCE_MEM, |
195 | }, | 196 | }, |
196 | [1] = { | 197 | [1] = { |
@@ -214,8 +215,8 @@ EXPORT_SYMBOL(s3c_device_i2c); | |||
214 | 215 | ||
215 | static struct resource s3c_iis_resource[] = { | 216 | static struct resource s3c_iis_resource[] = { |
216 | [0] = { | 217 | [0] = { |
217 | .start = S3C2410_PA_IIS, | 218 | .start = S3C24XX_PA_IIS, |
218 | .end = S3C2410_PA_IIS + S3C24XX_SZ_IIS -1, | 219 | .end = S3C24XX_PA_IIS + S3C24XX_SZ_IIS -1, |
219 | .flags = IORESOURCE_MEM, | 220 | .flags = IORESOURCE_MEM, |
220 | } | 221 | } |
221 | }; | 222 | }; |
@@ -239,8 +240,8 @@ EXPORT_SYMBOL(s3c_device_iis); | |||
239 | 240 | ||
240 | static struct resource s3c_rtc_resource[] = { | 241 | static struct resource s3c_rtc_resource[] = { |
241 | [0] = { | 242 | [0] = { |
242 | .start = S3C2410_PA_RTC, | 243 | .start = S3C24XX_PA_RTC, |
243 | .end = S3C2410_PA_RTC + 0xff, | 244 | .end = S3C24XX_PA_RTC + 0xff, |
244 | .flags = IORESOURCE_MEM, | 245 | .flags = IORESOURCE_MEM, |
245 | }, | 246 | }, |
246 | [1] = { | 247 | [1] = { |
@@ -268,12 +269,17 @@ EXPORT_SYMBOL(s3c_device_rtc); | |||
268 | 269 | ||
269 | static struct resource s3c_adc_resource[] = { | 270 | static struct resource s3c_adc_resource[] = { |
270 | [0] = { | 271 | [0] = { |
271 | .start = S3C2410_PA_ADC, | 272 | .start = S3C24XX_PA_ADC, |
272 | .end = S3C2410_PA_ADC + S3C24XX_SZ_ADC - 1, | 273 | .end = S3C24XX_PA_ADC + S3C24XX_SZ_ADC - 1, |
273 | .flags = IORESOURCE_MEM, | 274 | .flags = IORESOURCE_MEM, |
274 | }, | 275 | }, |
275 | [1] = { | 276 | [1] = { |
276 | .start = IRQ_TC, | 277 | .start = IRQ_TC, |
278 | .end = IRQ_TC, | ||
279 | .flags = IORESOURCE_IRQ, | ||
280 | }, | ||
281 | [2] = { | ||
282 | .start = IRQ_ADC, | ||
277 | .end = IRQ_ADC, | 283 | .end = IRQ_ADC, |
278 | .flags = IORESOURCE_IRQ, | 284 | .flags = IORESOURCE_IRQ, |
279 | } | 285 | } |
@@ -316,8 +322,8 @@ EXPORT_SYMBOL(s3c_device_sdi); | |||
316 | 322 | ||
317 | static struct resource s3c_spi0_resource[] = { | 323 | static struct resource s3c_spi0_resource[] = { |
318 | [0] = { | 324 | [0] = { |
319 | .start = S3C2410_PA_SPI, | 325 | .start = S3C24XX_PA_SPI, |
320 | .end = S3C2410_PA_SPI + 0x1f, | 326 | .end = S3C24XX_PA_SPI + 0x1f, |
321 | .flags = IORESOURCE_MEM, | 327 | .flags = IORESOURCE_MEM, |
322 | }, | 328 | }, |
323 | [1] = { | 329 | [1] = { |
@@ -328,11 +334,17 @@ static struct resource s3c_spi0_resource[] = { | |||
328 | 334 | ||
329 | }; | 335 | }; |
330 | 336 | ||
337 | static u64 s3c_device_spi0_dmamask = 0xffffffffUL; | ||
338 | |||
331 | struct platform_device s3c_device_spi0 = { | 339 | struct platform_device s3c_device_spi0 = { |
332 | .name = "s3c2410-spi", | 340 | .name = "s3c2410-spi", |
333 | .id = 0, | 341 | .id = 0, |
334 | .num_resources = ARRAY_SIZE(s3c_spi0_resource), | 342 | .num_resources = ARRAY_SIZE(s3c_spi0_resource), |
335 | .resource = s3c_spi0_resource, | 343 | .resource = s3c_spi0_resource, |
344 | .dev = { | ||
345 | .dma_mask = &s3c_device_spi0_dmamask, | ||
346 | .coherent_dma_mask = 0xffffffffUL | ||
347 | } | ||
336 | }; | 348 | }; |
337 | 349 | ||
338 | EXPORT_SYMBOL(s3c_device_spi0); | 350 | EXPORT_SYMBOL(s3c_device_spi0); |
@@ -341,8 +353,8 @@ EXPORT_SYMBOL(s3c_device_spi0); | |||
341 | 353 | ||
342 | static struct resource s3c_spi1_resource[] = { | 354 | static struct resource s3c_spi1_resource[] = { |
343 | [0] = { | 355 | [0] = { |
344 | .start = S3C2410_PA_SPI + 0x20, | 356 | .start = S3C24XX_PA_SPI + 0x20, |
345 | .end = S3C2410_PA_SPI + 0x20 + 0x1f, | 357 | .end = S3C24XX_PA_SPI + 0x20 + 0x1f, |
346 | .flags = IORESOURCE_MEM, | 358 | .flags = IORESOURCE_MEM, |
347 | }, | 359 | }, |
348 | [1] = { | 360 | [1] = { |
@@ -353,11 +365,17 @@ static struct resource s3c_spi1_resource[] = { | |||
353 | 365 | ||
354 | }; | 366 | }; |
355 | 367 | ||
368 | static u64 s3c_device_spi1_dmamask = 0xffffffffUL; | ||
369 | |||
356 | struct platform_device s3c_device_spi1 = { | 370 | struct platform_device s3c_device_spi1 = { |
357 | .name = "s3c2410-spi", | 371 | .name = "s3c2410-spi", |
358 | .id = 1, | 372 | .id = 1, |
359 | .num_resources = ARRAY_SIZE(s3c_spi1_resource), | 373 | .num_resources = ARRAY_SIZE(s3c_spi1_resource), |
360 | .resource = s3c_spi1_resource, | 374 | .resource = s3c_spi1_resource, |
375 | .dev = { | ||
376 | .dma_mask = &s3c_device_spi1_dmamask, | ||
377 | .coherent_dma_mask = 0xffffffffUL | ||
378 | } | ||
361 | }; | 379 | }; |
362 | 380 | ||
363 | EXPORT_SYMBOL(s3c_device_spi1); | 381 | EXPORT_SYMBOL(s3c_device_spi1); |
@@ -366,8 +384,8 @@ EXPORT_SYMBOL(s3c_device_spi1); | |||
366 | 384 | ||
367 | static struct resource s3c_timer0_resource[] = { | 385 | static struct resource s3c_timer0_resource[] = { |
368 | [0] = { | 386 | [0] = { |
369 | .start = S3C2410_PA_TIMER + 0x0C, | 387 | .start = S3C24XX_PA_TIMER + 0x0C, |
370 | .end = S3C2410_PA_TIMER + 0x0C + 0xB, | 388 | .end = S3C24XX_PA_TIMER + 0x0C + 0xB, |
371 | .flags = IORESOURCE_MEM, | 389 | .flags = IORESOURCE_MEM, |
372 | }, | 390 | }, |
373 | [1] = { | 391 | [1] = { |
@@ -391,8 +409,8 @@ EXPORT_SYMBOL(s3c_device_timer0); | |||
391 | 409 | ||
392 | static struct resource s3c_timer1_resource[] = { | 410 | static struct resource s3c_timer1_resource[] = { |
393 | [0] = { | 411 | [0] = { |
394 | .start = S3C2410_PA_TIMER + 0x18, | 412 | .start = S3C24XX_PA_TIMER + 0x18, |
395 | .end = S3C2410_PA_TIMER + 0x23, | 413 | .end = S3C24XX_PA_TIMER + 0x23, |
396 | .flags = IORESOURCE_MEM, | 414 | .flags = IORESOURCE_MEM, |
397 | }, | 415 | }, |
398 | [1] = { | 416 | [1] = { |
@@ -416,8 +434,8 @@ EXPORT_SYMBOL(s3c_device_timer1); | |||
416 | 434 | ||
417 | static struct resource s3c_timer2_resource[] = { | 435 | static struct resource s3c_timer2_resource[] = { |
418 | [0] = { | 436 | [0] = { |
419 | .start = S3C2410_PA_TIMER + 0x24, | 437 | .start = S3C24XX_PA_TIMER + 0x24, |
420 | .end = S3C2410_PA_TIMER + 0x2F, | 438 | .end = S3C24XX_PA_TIMER + 0x2F, |
421 | .flags = IORESOURCE_MEM, | 439 | .flags = IORESOURCE_MEM, |
422 | }, | 440 | }, |
423 | [1] = { | 441 | [1] = { |
@@ -441,8 +459,8 @@ EXPORT_SYMBOL(s3c_device_timer2); | |||
441 | 459 | ||
442 | static struct resource s3c_timer3_resource[] = { | 460 | static struct resource s3c_timer3_resource[] = { |
443 | [0] = { | 461 | [0] = { |
444 | .start = S3C2410_PA_TIMER + 0x30, | 462 | .start = S3C24XX_PA_TIMER + 0x30, |
445 | .end = S3C2410_PA_TIMER + 0x3B, | 463 | .end = S3C24XX_PA_TIMER + 0x3B, |
446 | .flags = IORESOURCE_MEM, | 464 | .flags = IORESOURCE_MEM, |
447 | }, | 465 | }, |
448 | [1] = { | 466 | [1] = { |
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c index 65feaf20d23e..4dbd8e758ea6 100644 --- a/arch/arm/mach-s3c2410/dma.c +++ b/arch/arm/mach-s3c2410/dma.c | |||
@@ -1152,7 +1152,7 @@ static int __init s3c2410_init_dma(void) | |||
1152 | 1152 | ||
1153 | printk("S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics\n"); | 1153 | printk("S3C2410 DMA Driver, (c) 2003-2004 Simtec Electronics\n"); |
1154 | 1154 | ||
1155 | dma_base = ioremap(S3C2410_PA_DMA, 0x200); | 1155 | dma_base = ioremap(S3C24XX_PA_DMA, 0x200); |
1156 | if (dma_base == NULL) { | 1156 | if (dma_base == NULL) { |
1157 | printk(KERN_ERR "dma failed to remap register block\n"); | 1157 | printk(KERN_ERR "dma failed to remap register block\n"); |
1158 | return -ENOMEM; | 1158 | return -ENOMEM; |
diff --git a/arch/arm/mach-s3c2410/gpio.c b/arch/arm/mach-s3c2410/gpio.c index 23ea3d5fa09c..cd39e8684584 100644 --- a/arch/arm/mach-s3c2410/gpio.c +++ b/arch/arm/mach-s3c2410/gpio.c | |||
@@ -31,6 +31,7 @@ | |||
31 | * 05-Nov-2004 BJD EXPORT_SYMBOL() added for all code | 31 | * 05-Nov-2004 BJD EXPORT_SYMBOL() added for all code |
32 | * 13-Mar-2005 BJD Updates for __iomem | 32 | * 13-Mar-2005 BJD Updates for __iomem |
33 | * 26-Oct-2005 BJD Added generic configuration types | 33 | * 26-Oct-2005 BJD Added generic configuration types |
34 | * 15-Jan-2006 LCVR Added support for the S3C2400 | ||
34 | */ | 35 | */ |
35 | 36 | ||
36 | 37 | ||
@@ -48,7 +49,7 @@ | |||
48 | 49 | ||
49 | void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function) | 50 | void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function) |
50 | { | 51 | { |
51 | void __iomem *base = S3C2410_GPIO_BASE(pin); | 52 | void __iomem *base = S3C24XX_GPIO_BASE(pin); |
52 | unsigned long mask; | 53 | unsigned long mask; |
53 | unsigned long con; | 54 | unsigned long con; |
54 | unsigned long flags; | 55 | unsigned long flags; |
@@ -95,7 +96,7 @@ EXPORT_SYMBOL(s3c2410_gpio_cfgpin); | |||
95 | 96 | ||
96 | unsigned int s3c2410_gpio_getcfg(unsigned int pin) | 97 | unsigned int s3c2410_gpio_getcfg(unsigned int pin) |
97 | { | 98 | { |
98 | void __iomem *base = S3C2410_GPIO_BASE(pin); | 99 | void __iomem *base = S3C24XX_GPIO_BASE(pin); |
99 | unsigned long mask; | 100 | unsigned long mask; |
100 | 101 | ||
101 | if (pin < S3C2410_GPIO_BANKB) { | 102 | if (pin < S3C2410_GPIO_BANKB) { |
@@ -111,7 +112,7 @@ EXPORT_SYMBOL(s3c2410_gpio_getcfg); | |||
111 | 112 | ||
112 | void s3c2410_gpio_pullup(unsigned int pin, unsigned int to) | 113 | void s3c2410_gpio_pullup(unsigned int pin, unsigned int to) |
113 | { | 114 | { |
114 | void __iomem *base = S3C2410_GPIO_BASE(pin); | 115 | void __iomem *base = S3C24XX_GPIO_BASE(pin); |
115 | unsigned long offs = S3C2410_GPIO_OFFSET(pin); | 116 | unsigned long offs = S3C2410_GPIO_OFFSET(pin); |
116 | unsigned long flags; | 117 | unsigned long flags; |
117 | unsigned long up; | 118 | unsigned long up; |
@@ -133,7 +134,7 @@ EXPORT_SYMBOL(s3c2410_gpio_pullup); | |||
133 | 134 | ||
134 | void s3c2410_gpio_setpin(unsigned int pin, unsigned int to) | 135 | void s3c2410_gpio_setpin(unsigned int pin, unsigned int to) |
135 | { | 136 | { |
136 | void __iomem *base = S3C2410_GPIO_BASE(pin); | 137 | void __iomem *base = S3C24XX_GPIO_BASE(pin); |
137 | unsigned long offs = S3C2410_GPIO_OFFSET(pin); | 138 | unsigned long offs = S3C2410_GPIO_OFFSET(pin); |
138 | unsigned long flags; | 139 | unsigned long flags; |
139 | unsigned long dat; | 140 | unsigned long dat; |
@@ -152,7 +153,7 @@ EXPORT_SYMBOL(s3c2410_gpio_setpin); | |||
152 | 153 | ||
153 | unsigned int s3c2410_gpio_getpin(unsigned int pin) | 154 | unsigned int s3c2410_gpio_getpin(unsigned int pin) |
154 | { | 155 | { |
155 | void __iomem *base = S3C2410_GPIO_BASE(pin); | 156 | void __iomem *base = S3C24XX_GPIO_BASE(pin); |
156 | unsigned long offs = S3C2410_GPIO_OFFSET(pin); | 157 | unsigned long offs = S3C2410_GPIO_OFFSET(pin); |
157 | 158 | ||
158 | return __raw_readl(base + 0x04) & (1<< offs); | 159 | return __raw_readl(base + 0x04) & (1<< offs); |
@@ -166,70 +167,13 @@ unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change) | |||
166 | unsigned long misccr; | 167 | unsigned long misccr; |
167 | 168 | ||
168 | local_irq_save(flags); | 169 | local_irq_save(flags); |
169 | misccr = __raw_readl(S3C2410_MISCCR); | 170 | misccr = __raw_readl(S3C24XX_MISCCR); |
170 | misccr &= ~clear; | 171 | misccr &= ~clear; |
171 | misccr ^= change; | 172 | misccr ^= change; |
172 | __raw_writel(misccr, S3C2410_MISCCR); | 173 | __raw_writel(misccr, S3C24XX_MISCCR); |
173 | local_irq_restore(flags); | 174 | local_irq_restore(flags); |
174 | 175 | ||
175 | return misccr; | 176 | return misccr; |
176 | } | 177 | } |
177 | 178 | ||
178 | EXPORT_SYMBOL(s3c2410_modify_misccr); | 179 | EXPORT_SYMBOL(s3c2410_modify_misccr); |
179 | |||
180 | int s3c2410_gpio_getirq(unsigned int pin) | ||
181 | { | ||
182 | if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15_EINT23) | ||
183 | return -1; /* not valid interrupts */ | ||
184 | |||
185 | if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7) | ||
186 | return -1; /* not valid pin */ | ||
187 | |||
188 | if (pin < S3C2410_GPF4) | ||
189 | return (pin - S3C2410_GPF0) + IRQ_EINT0; | ||
190 | |||
191 | if (pin < S3C2410_GPG0) | ||
192 | return (pin - S3C2410_GPF4) + IRQ_EINT4; | ||
193 | |||
194 | return (pin - S3C2410_GPG0) + IRQ_EINT8; | ||
195 | } | ||
196 | |||
197 | EXPORT_SYMBOL(s3c2410_gpio_getirq); | ||
198 | |||
199 | int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on, | ||
200 | unsigned int config) | ||
201 | { | ||
202 | void __iomem *reg = S3C2410_EINFLT0; | ||
203 | unsigned long flags; | ||
204 | unsigned long val; | ||
205 | |||
206 | if (pin < S3C2410_GPG8 || pin > S3C2410_GPG15) | ||
207 | return -1; | ||
208 | |||
209 | config &= 0xff; | ||
210 | |||
211 | pin -= S3C2410_GPG8_EINT16; | ||
212 | reg += pin & ~3; | ||
213 | |||
214 | local_irq_save(flags); | ||
215 | |||
216 | /* update filter width and clock source */ | ||
217 | |||
218 | val = __raw_readl(reg); | ||
219 | val &= ~(0xff << ((pin & 3) * 8)); | ||
220 | val |= config << ((pin & 3) * 8); | ||
221 | __raw_writel(val, reg); | ||
222 | |||
223 | /* update filter enable */ | ||
224 | |||
225 | val = __raw_readl(S3C2410_EXTINT2); | ||
226 | val &= ~(1 << ((pin * 4) + 3)); | ||
227 | val |= on << ((pin * 4) + 3); | ||
228 | __raw_writel(val, S3C2410_EXTINT2); | ||
229 | |||
230 | local_irq_restore(flags); | ||
231 | |||
232 | return 0; | ||
233 | } | ||
234 | |||
235 | EXPORT_SYMBOL(s3c2410_gpio_irqfilter); | ||
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 1c316f14ed94..646a3a5d33a5 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -46,10 +46,11 @@ | |||
46 | #include <asm/irq.h> | 46 | #include <asm/irq.h> |
47 | #include <asm/mach-types.h> | 47 | #include <asm/mach-types.h> |
48 | 48 | ||
49 | //#include <asm/debug-ll.h> | 49 | |
50 | #include <asm/arch/regs-serial.h> | 50 | #include <asm/arch/regs-serial.h> |
51 | #include <asm/arch/regs-lcd.h> | 51 | #include <asm/arch/regs-lcd.h> |
52 | 52 | ||
53 | #include <asm/arch/h1940-latch.h> | ||
53 | #include <asm/arch/fb.h> | 54 | #include <asm/arch/fb.h> |
54 | 55 | ||
55 | #include <linux/serial_core.h> | 56 | #include <linux/serial_core.h> |
@@ -59,7 +60,12 @@ | |||
59 | #include "cpu.h" | 60 | #include "cpu.h" |
60 | 61 | ||
61 | static struct map_desc h1940_iodesc[] __initdata = { | 62 | static struct map_desc h1940_iodesc[] __initdata = { |
62 | /* nothing here yet */ | 63 | [0] = { |
64 | .virtual = (unsigned long)H1940_LATCH, | ||
65 | .pfn = __phys_to_pfn(H1940_PA_LATCH), | ||
66 | .length = SZ_16K, | ||
67 | .type = MT_DEVICE | ||
68 | }, | ||
63 | }; | 69 | }; |
64 | 70 | ||
65 | #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK | 71 | #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK |
@@ -92,6 +98,25 @@ static struct s3c2410_uartcfg h1940_uartcfgs[] = { | |||
92 | } | 98 | } |
93 | }; | 99 | }; |
94 | 100 | ||
101 | /* Board control latch control */ | ||
102 | |||
103 | static unsigned int latch_state = H1940_LATCH_DEFAULT; | ||
104 | |||
105 | void h1940_latch_control(unsigned int clear, unsigned int set) | ||
106 | { | ||
107 | unsigned long flags; | ||
108 | |||
109 | local_irq_save(flags); | ||
110 | |||
111 | latch_state &= ~clear; | ||
112 | latch_state |= set; | ||
113 | |||
114 | __raw_writel(latch_state, H1940_LATCH); | ||
115 | |||
116 | local_irq_restore(flags); | ||
117 | } | ||
118 | |||
119 | EXPORT_SYMBOL_GPL(h1940_latch_control); | ||
95 | 120 | ||
96 | 121 | ||
97 | /** | 122 | /** |
diff --git a/arch/arm/mach-s3c2410/s3c2400-gpio.c b/arch/arm/mach-s3c2410/s3c2400-gpio.c new file mode 100644 index 000000000000..5127f39fa9bf --- /dev/null +++ b/arch/arm/mach-s3c2410/s3c2400-gpio.c | |||
@@ -0,0 +1,45 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/gpio.c | ||
2 | * | ||
3 | * Copyright (c) 2006 Lucas Correia Villa Real <lucasvr@gobolinux.org> | ||
4 | * | ||
5 | * S3C2400 GPIO support | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | * | ||
21 | * Changelog | ||
22 | * 15-Jan-2006 LCVR Splitted from gpio.c, adding support for the S3C2400 | ||
23 | */ | ||
24 | |||
25 | #include <linux/kernel.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/module.h> | ||
28 | #include <linux/interrupt.h> | ||
29 | #include <linux/ioport.h> | ||
30 | |||
31 | #include <asm/hardware.h> | ||
32 | #include <asm/irq.h> | ||
33 | #include <asm/io.h> | ||
34 | |||
35 | #include <asm/arch/regs-gpio.h> | ||
36 | |||
37 | int s3c2400_gpio_getirq(unsigned int pin) | ||
38 | { | ||
39 | if (pin < S3C2410_GPE0 || pin > S3C2400_GPE7_EINT7) | ||
40 | return -1; /* not valid interrupts */ | ||
41 | |||
42 | return (pin - S3C2410_GPE0) + IRQ_EINT0; | ||
43 | } | ||
44 | |||
45 | EXPORT_SYMBOL(s3c2400_gpio_getirq); | ||
diff --git a/arch/arm/mach-s3c2410/s3c2400.h b/arch/arm/mach-s3c2410/s3c2400.h new file mode 100644 index 000000000000..8b2394e1ed40 --- /dev/null +++ b/arch/arm/mach-s3c2410/s3c2400.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* arch/arm/mach-s3c2410/s3c2400.h | ||
2 | * | ||
3 | * Copyright (c) 2004 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * Header file for S3C2400 cpu support | ||
7 | * | ||
8 | * This program 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 | * Modifications: | ||
13 | * 09-Fev-2006 LCVR First version, based on s3c2410.h | ||
14 | */ | ||
15 | |||
16 | #ifdef CONFIG_CPU_S3C2400 | ||
17 | |||
18 | extern int s3c2400_init(void); | ||
19 | |||
20 | extern void s3c2400_map_io(struct map_desc *mach_desc, int size); | ||
21 | |||
22 | extern void s3c2400_init_uarts(struct s3c2410_uartcfg *cfg, int no); | ||
23 | |||
24 | extern void s3c2400_init_clocks(int xtal); | ||
25 | |||
26 | #else | ||
27 | #define s3c2400_init_clocks NULL | ||
28 | #define s3c2400_init_uarts NULL | ||
29 | #define s3c2400_map_io NULL | ||
30 | #define s3c2400_init NULL | ||
31 | #endif | ||
diff --git a/arch/arm/mach-s3c2410/s3c2410-gpio.c b/arch/arm/mach-s3c2410/s3c2410-gpio.c new file mode 100644 index 000000000000..d5e1caea1d23 --- /dev/null +++ b/arch/arm/mach-s3c2410/s3c2410-gpio.c | |||
@@ -0,0 +1,93 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/gpio.c | ||
2 | * | ||
3 | * Copyright (c) 2004-2006 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * S3C2410 GPIO support | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | * | ||
22 | * Changelog | ||
23 | * 15-Jan-2006 LCVR Splitted from gpio.c | ||
24 | */ | ||
25 | |||
26 | #include <linux/kernel.h> | ||
27 | #include <linux/init.h> | ||
28 | #include <linux/module.h> | ||
29 | #include <linux/interrupt.h> | ||
30 | #include <linux/ioport.h> | ||
31 | |||
32 | #include <asm/hardware.h> | ||
33 | #include <asm/irq.h> | ||
34 | #include <asm/io.h> | ||
35 | |||
36 | #include <asm/arch/regs-gpio.h> | ||
37 | |||
38 | int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on, | ||
39 | unsigned int config) | ||
40 | { | ||
41 | void __iomem *reg = S3C2410_EINFLT0; | ||
42 | unsigned long flags; | ||
43 | unsigned long val; | ||
44 | |||
45 | if (pin < S3C2410_GPG8 || pin > S3C2410_GPG15) | ||
46 | return -1; | ||
47 | |||
48 | config &= 0xff; | ||
49 | |||
50 | pin -= S3C2410_GPG8_EINT16; | ||
51 | reg += pin & ~3; | ||
52 | |||
53 | local_irq_save(flags); | ||
54 | |||
55 | /* update filter width and clock source */ | ||
56 | |||
57 | val = __raw_readl(reg); | ||
58 | val &= ~(0xff << ((pin & 3) * 8)); | ||
59 | val |= config << ((pin & 3) * 8); | ||
60 | __raw_writel(val, reg); | ||
61 | |||
62 | /* update filter enable */ | ||
63 | |||
64 | val = __raw_readl(S3C2410_EXTINT2); | ||
65 | val &= ~(1 << ((pin * 4) + 3)); | ||
66 | val |= on << ((pin * 4) + 3); | ||
67 | __raw_writel(val, S3C2410_EXTINT2); | ||
68 | |||
69 | local_irq_restore(flags); | ||
70 | |||
71 | return 0; | ||
72 | } | ||
73 | |||
74 | EXPORT_SYMBOL(s3c2410_gpio_irqfilter); | ||
75 | |||
76 | int s3c2410_gpio_getirq(unsigned int pin) | ||
77 | { | ||
78 | if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15_EINT23) | ||
79 | return -1; /* not valid interrupts */ | ||
80 | |||
81 | if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7) | ||
82 | return -1; /* not valid pin */ | ||
83 | |||
84 | if (pin < S3C2410_GPF4) | ||
85 | return (pin - S3C2410_GPF0) + IRQ_EINT0; | ||
86 | |||
87 | if (pin < S3C2410_GPG0) | ||
88 | return (pin - S3C2410_GPF4) + IRQ_EINT4; | ||
89 | |||
90 | return (pin - S3C2410_GPG0) + IRQ_EINT8; | ||
91 | } | ||
92 | |||
93 | EXPORT_SYMBOL(s3c2410_gpio_getirq); | ||
diff --git a/arch/arm/mach-s3c2410/sleep.S b/arch/arm/mach-s3c2410/sleep.S index 61768dac7fee..832fb86a03b4 100644 --- a/arch/arm/mach-s3c2410/sleep.S +++ b/arch/arm/mach-s3c2410/sleep.S | |||
@@ -72,7 +72,7 @@ ENTRY(s3c2410_cpu_suspend) | |||
72 | @@ prepare cpu to sleep | 72 | @@ prepare cpu to sleep |
73 | 73 | ||
74 | ldr r4, =S3C2410_REFRESH | 74 | ldr r4, =S3C2410_REFRESH |
75 | ldr r5, =S3C2410_MISCCR | 75 | ldr r5, =S3C24XX_MISCCR |
76 | ldr r6, =S3C2410_CLKCON | 76 | ldr r6, =S3C2410_CLKCON |
77 | ldr r7, [ r4 ] @ get REFRESH (and ensure in TLB) | 77 | ldr r7, [ r4 ] @ get REFRESH (and ensure in TLB) |
78 | ldr r8, [ r5 ] @ get MISCCR (and ensure in TLB) | 78 | ldr r8, [ r5 ] @ get MISCCR (and ensure in TLB) |
@@ -133,12 +133,12 @@ ENTRY(s3c2410_cpu_resume) | |||
133 | @@ load UART to allow us to print the two characters for | 133 | @@ load UART to allow us to print the two characters for |
134 | @@ resume debug | 134 | @@ resume debug |
135 | 135 | ||
136 | mov r2, #S3C2410_PA_UART & 0xff000000 | 136 | mov r2, #S3C24XX_PA_UART & 0xff000000 |
137 | orr r2, r2, #S3C2410_PA_UART & 0xff000 | 137 | orr r2, r2, #S3C24XX_PA_UART & 0xff000 |
138 | 138 | ||
139 | #if 0 | 139 | #if 0 |
140 | /* SMDK2440 LED set */ | 140 | /* SMDK2440 LED set */ |
141 | mov r14, #S3C2410_PA_GPIO | 141 | mov r14, #S3C24XX_PA_GPIO |
142 | ldr r12, [ r14, #0x54 ] | 142 | ldr r12, [ r14, #0x54 ] |
143 | bic r12, r12, #3<<4 | 143 | bic r12, r12, #3<<4 |
144 | orr r12, r12, #1<<7 | 144 | orr r12, r12, #1<<7 |
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index b80d57d51699..722fbabc9cfb 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c | |||
@@ -240,6 +240,14 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) | |||
240 | int i; | 240 | int i; |
241 | int myslot = -1; | 241 | int myslot = -1; |
242 | unsigned long val; | 242 | unsigned long val; |
243 | void __iomem *local_pci_cfg_base; | ||
244 | |||
245 | val = __raw_readl(SYS_PCICTL); | ||
246 | if (!(val & 1)) { | ||
247 | printk("Not plugged into PCI backplane!\n"); | ||
248 | ret = -EIO; | ||
249 | goto out; | ||
250 | } | ||
243 | 251 | ||
244 | if (nr == 0) { | 252 | if (nr == 0) { |
245 | sys->mem_offset = 0; | 253 | sys->mem_offset = 0; |
@@ -253,48 +261,45 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) | |||
253 | goto out; | 261 | goto out; |
254 | } | 262 | } |
255 | 263 | ||
256 | __raw_writel(VERSATILE_PCI_MEM_BASE0 >> 28,PCI_IMAP0); | ||
257 | __raw_writel(VERSATILE_PCI_MEM_BASE1 >> 28,PCI_IMAP1); | ||
258 | __raw_writel(VERSATILE_PCI_MEM_BASE2 >> 28,PCI_IMAP2); | ||
259 | |||
260 | __raw_writel(1, SYS_PCICTL); | ||
261 | |||
262 | val = __raw_readl(SYS_PCICTL); | ||
263 | if (!(val & 1)) { | ||
264 | printk("Not plugged into PCI backplane!\n"); | ||
265 | ret = -EIO; | ||
266 | goto out; | ||
267 | } | ||
268 | |||
269 | /* | 264 | /* |
270 | * We need to discover the PCI core first to configure itself | 265 | * We need to discover the PCI core first to configure itself |
271 | * before the main PCI probing is performed | 266 | * before the main PCI probing is performed |
272 | */ | 267 | */ |
273 | for (i=0; i<32; i++) { | 268 | for (i=0; i<32; i++) |
274 | if ((__raw_readl(VERSATILE_PCI_VIRT_BASE+(i<<11)+DEVICE_ID_OFFSET) == VP_PCI_DEVICE_ID) && | 269 | if ((__raw_readl(VERSATILE_PCI_VIRT_BASE+(i<<11)+DEVICE_ID_OFFSET) == VP_PCI_DEVICE_ID) && |
275 | (__raw_readl(VERSATILE_PCI_VIRT_BASE+(i<<11)+CLASS_ID_OFFSET) == VP_PCI_CLASS_ID)) { | 270 | (__raw_readl(VERSATILE_PCI_VIRT_BASE+(i<<11)+CLASS_ID_OFFSET) == VP_PCI_CLASS_ID)) { |
276 | myslot = i; | 271 | myslot = i; |
277 | |||
278 | __raw_writel(myslot, PCI_SELFID); | ||
279 | val = __raw_readl(VERSATILE_PCI_CFG_VIRT_BASE+(myslot<<11)+CSR_OFFSET); | ||
280 | val |= (1<<2); | ||
281 | __raw_writel(val, VERSATILE_PCI_CFG_VIRT_BASE+(myslot<<11)+CSR_OFFSET); | ||
282 | break; | 272 | break; |
283 | } | 273 | } |
284 | } | ||
285 | 274 | ||
286 | if (myslot == -1) { | 275 | if (myslot == -1) { |
287 | printk("Cannot find PCI core!\n"); | 276 | printk("Cannot find PCI core!\n"); |
288 | ret = -EIO; | 277 | ret = -EIO; |
289 | } else { | 278 | goto out; |
290 | printk("PCI core found (slot %d)\n",myslot); | ||
291 | /* Do not to map Versatile FPGA PCI device | ||
292 | into memory space as we are short of | ||
293 | mappable memory */ | ||
294 | pci_slot_ignore |= (1 << myslot); | ||
295 | ret = 1; | ||
296 | } | 279 | } |
297 | 280 | ||
281 | printk("PCI core found (slot %d)\n",myslot); | ||
282 | |||
283 | __raw_writel(myslot, PCI_SELFID); | ||
284 | local_pci_cfg_base = (void *) VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11); | ||
285 | |||
286 | val = __raw_readl(local_pci_cfg_base + CSR_OFFSET); | ||
287 | val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE; | ||
288 | __raw_writel(val, local_pci_cfg_base + CSR_OFFSET); | ||
289 | |||
290 | /* | ||
291 | * Configure the PCI inbound memory windows to be 1:1 mapped to SDRAM | ||
292 | */ | ||
293 | __raw_writel(PHYS_OFFSET, local_pci_cfg_base + PCI_BASE_ADDRESS_0); | ||
294 | __raw_writel(PHYS_OFFSET, local_pci_cfg_base + PCI_BASE_ADDRESS_1); | ||
295 | __raw_writel(PHYS_OFFSET, local_pci_cfg_base + PCI_BASE_ADDRESS_2); | ||
296 | |||
297 | /* | ||
298 | * Do not to map Versatile FPGA PCI device into memory space | ||
299 | */ | ||
300 | pci_slot_ignore |= (1 << myslot); | ||
301 | ret = 1; | ||
302 | |||
298 | out: | 303 | out: |
299 | return ret; | 304 | return ret; |
300 | } | 305 | } |
@@ -305,18 +310,18 @@ struct pci_bus *pci_versatile_scan_bus(int nr, struct pci_sys_data *sys) | |||
305 | return pci_scan_bus(sys->busnr, &pci_versatile_ops, sys); | 310 | return pci_scan_bus(sys->busnr, &pci_versatile_ops, sys); |
306 | } | 311 | } |
307 | 312 | ||
308 | /* | ||
309 | * V3_LB_BASE? - local bus address | ||
310 | * V3_LB_MAP? - pci bus address | ||
311 | */ | ||
312 | void __init pci_versatile_preinit(void) | 313 | void __init pci_versatile_preinit(void) |
313 | { | 314 | { |
314 | } | 315 | __raw_writel(VERSATILE_PCI_MEM_BASE0 >> 28, PCI_IMAP0); |
316 | __raw_writel(VERSATILE_PCI_MEM_BASE1 >> 28, PCI_IMAP1); | ||
317 | __raw_writel(VERSATILE_PCI_MEM_BASE2 >> 28, PCI_IMAP2); | ||
315 | 318 | ||
316 | void __init pci_versatile_postinit(void) | 319 | __raw_writel(PHYS_OFFSET >> 28, PCI_SMAP0); |
317 | { | 320 | __raw_writel(PHYS_OFFSET >> 28, PCI_SMAP1); |
318 | } | 321 | __raw_writel(PHYS_OFFSET >> 28, PCI_SMAP2); |
319 | 322 | ||
323 | __raw_writel(1, SYS_PCICTL); | ||
324 | } | ||
320 | 325 | ||
321 | /* | 326 | /* |
322 | * map the specified device/slot/pin to an IRQ. Different backplanes may need to modify this. | 327 | * map the specified device/slot/pin to an IRQ. Different backplanes may need to modify this. |
@@ -326,16 +331,15 @@ static int __init versatile_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
326 | int irq; | 331 | int irq; |
327 | int devslot = PCI_SLOT(dev->devfn); | 332 | int devslot = PCI_SLOT(dev->devfn); |
328 | 333 | ||
329 | /* slot, pin, irq | 334 | /* slot, pin, irq |
330 | 24 1 27 | 335 | * 24 1 27 |
331 | 25 1 28 untested | 336 | * 25 1 28 |
332 | 26 1 29 | 337 | * 26 1 29 |
333 | 27 1 30 untested | 338 | * 27 1 30 |
334 | */ | 339 | */ |
335 | 340 | irq = 27 + ((slot + pin - 1) & 3); | |
336 | irq = 27 + ((slot + pin + 2) % 3); /* Fudged */ | ||
337 | 341 | ||
338 | printk("map irq: slot %d, pin %d, devslot %d, irq: %d\n",slot,pin,devslot,irq); | 342 | printk("PCI map irq: slot %d, pin %d, devslot %d, irq: %d\n",slot,pin,devslot,irq); |
339 | 343 | ||
340 | return irq; | 344 | return irq; |
341 | } | 345 | } |
@@ -347,7 +351,6 @@ static struct hw_pci versatile_pci __initdata = { | |||
347 | .setup = pci_versatile_setup, | 351 | .setup = pci_versatile_setup, |
348 | .scan = pci_versatile_scan_bus, | 352 | .scan = pci_versatile_scan_bus, |
349 | .preinit = pci_versatile_preinit, | 353 | .preinit = pci_versatile_preinit, |
350 | .postinit = pci_versatile_postinit, | ||
351 | }; | 354 | }; |
352 | 355 | ||
353 | static int __init versatile_pci_init(void) | 356 | static int __init versatile_pci_init(void) |
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S index dbd346033122..8a7f65ba14b7 100644 --- a/arch/arm/mm/abort-ev6.S +++ b/arch/arm/mm/abort-ev6.S | |||
@@ -20,7 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | .align 5 | 21 | .align 5 |
22 | ENTRY(v6_early_abort) | 22 | ENTRY(v6_early_abort) |
23 | #ifdef CONFIG_CPU_MPCORE | 23 | #ifdef CONFIG_CPU_32v6K |
24 | clrex | 24 | clrex |
25 | #else | 25 | #else |
26 | strex r0, r1, [sp] @ Clear the exclusive monitor | 26 | strex r0, r1, [sp] @ Clear the exclusive monitor |
diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index 72966d90e956..2c6c2a7c05a0 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S | |||
@@ -92,25 +92,20 @@ ENTRY(v6_coherent_kern_range) | |||
92 | * - the Icache does not read data from the write buffer | 92 | * - the Icache does not read data from the write buffer |
93 | */ | 93 | */ |
94 | ENTRY(v6_coherent_user_range) | 94 | ENTRY(v6_coherent_user_range) |
95 | bic r0, r0, #CACHE_LINE_SIZE - 1 | 95 | |
96 | 1: | ||
97 | #ifdef HARVARD_CACHE | 96 | #ifdef HARVARD_CACHE |
98 | mcr p15, 0, r0, c7, c10, 1 @ clean D line | 97 | bic r0, r0, #CACHE_LINE_SIZE - 1 |
99 | mcr p15, 0, r0, c7, c5, 1 @ invalidate I line | 98 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D line |
100 | #endif | 99 | add r0, r0, #CACHE_LINE_SIZE |
101 | mcr p15, 0, r0, c7, c5, 7 @ invalidate BTB entry | ||
102 | add r0, r0, #BTB_FLUSH_SIZE | ||
103 | mcr p15, 0, r0, c7, c5, 7 @ invalidate BTB entry | ||
104 | add r0, r0, #BTB_FLUSH_SIZE | ||
105 | mcr p15, 0, r0, c7, c5, 7 @ invalidate BTB entry | ||
106 | add r0, r0, #BTB_FLUSH_SIZE | ||
107 | mcr p15, 0, r0, c7, c5, 7 @ invalidate BTB entry | ||
108 | add r0, r0, #BTB_FLUSH_SIZE | ||
109 | cmp r0, r1 | 100 | cmp r0, r1 |
110 | blo 1b | 101 | blo 1b |
111 | #ifdef HARVARD_CACHE | 102 | #endif |
112 | mov r0, #0 | 103 | mov r0, #0 |
104 | #ifdef HARVARD_CACHE | ||
113 | mcr p15, 0, r0, c7, c10, 4 @ drain write buffer | 105 | mcr p15, 0, r0, c7, c10, 4 @ drain write buffer |
106 | mcr p15, 0, r0, c7, c5, 0 @ I+BTB cache invalidate | ||
107 | #else | ||
108 | mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB | ||
114 | #endif | 109 | #endif |
115 | mov pc, lr | 110 | mov pc, lr |
116 | 111 | ||
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 330695b6b19d..b103e56806bd 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
@@ -24,14 +24,16 @@ | |||
24 | static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) | 24 | static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) |
25 | { | 25 | { |
26 | unsigned long to = ALIAS_FLUSH_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT); | 26 | unsigned long to = ALIAS_FLUSH_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT); |
27 | const int zero = 0; | ||
27 | 28 | ||
28 | set_pte(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL)); | 29 | set_pte(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL)); |
29 | flush_tlb_kernel_page(to); | 30 | flush_tlb_kernel_page(to); |
30 | 31 | ||
31 | asm( "mcrr p15, 0, %1, %0, c14\n" | 32 | asm( "mcrr p15, 0, %1, %0, c14\n" |
32 | " mcrr p15, 0, %1, %0, c5\n" | 33 | " mcr p15, 0, %2, c7, c10, 4\n" |
34 | " mcr p15, 0, %2, c7, c5, 0\n" | ||
33 | : | 35 | : |
34 | : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES) | 36 | : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) |
35 | : "cc"); | 37 | : "cc"); |
36 | } | 38 | } |
37 | 39 | ||
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index de3ce1eec2ec..da9b35974118 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -142,7 +142,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
142 | return NULL; | 142 | return NULL; |
143 | addr = (unsigned long)area->addr; | 143 | addr = (unsigned long)area->addr; |
144 | if (remap_area_pages(addr, pfn, size, flags)) { | 144 | if (remap_area_pages(addr, pfn, size, flags)) { |
145 | vfree(addr); | 145 | vfree((void *)addr); |
146 | return NULL; | 146 | return NULL; |
147 | } | 147 | } |
148 | return (void __iomem *) (offset + (char *)addr); | 148 | return (void __iomem *) (offset + (char *)addr); |
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index d0245a31d4dd..ef8d30a185a9 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -343,6 +343,12 @@ static struct mem_types mem_types[] __initdata = { | |||
343 | PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE | | 343 | PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE | |
344 | PMD_SECT_TEX(1), | 344 | PMD_SECT_TEX(1), |
345 | .domain = DOMAIN_IO, | 345 | .domain = DOMAIN_IO, |
346 | }, | ||
347 | [MT_NONSHARED_DEVICE] = { | ||
348 | .prot_l1 = PMD_TYPE_TABLE, | ||
349 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_NONSHARED_DEV | | ||
350 | PMD_SECT_AP_WRITE, | ||
351 | .domain = DOMAIN_IO, | ||
346 | } | 352 | } |
347 | }; | 353 | }; |
348 | 354 | ||
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 861b35947280..2d3823ec3153 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -241,7 +241,15 @@ ENTRY(xscale_flush_user_cache_range) | |||
241 | * it also trashes the mini I-cache used by JTAG debuggers. | 241 | * it also trashes the mini I-cache used by JTAG debuggers. |
242 | */ | 242 | */ |
243 | ENTRY(xscale_coherent_kern_range) | 243 | ENTRY(xscale_coherent_kern_range) |
244 | /* FALLTHROUGH */ | 244 | bic r0, r0, #CACHELINESIZE - 1 |
245 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry | ||
246 | add r0, r0, #CACHELINESIZE | ||
247 | cmp r0, r1 | ||
248 | blo 1b | ||
249 | mov r0, #0 | ||
250 | mcr p15, 0, r0, c7, c5, 0 @ Invalidate I cache & BTB | ||
251 | mcr p15, 0, r0, c7, c10, 4 @ Drain Write (& Fill) Buffer | ||
252 | mov pc, lr | ||
245 | 253 | ||
246 | /* | 254 | /* |
247 | * coherent_user_range(start, end) | 255 | * coherent_user_range(start, end) |
@@ -252,18 +260,16 @@ ENTRY(xscale_coherent_kern_range) | |||
252 | * | 260 | * |
253 | * - start - virtual start address | 261 | * - start - virtual start address |
254 | * - end - virtual end address | 262 | * - end - virtual end address |
255 | * | ||
256 | * Note: single I-cache line invalidation isn't used here since | ||
257 | * it also trashes the mini I-cache used by JTAG debuggers. | ||
258 | */ | 263 | */ |
259 | ENTRY(xscale_coherent_user_range) | 264 | ENTRY(xscale_coherent_user_range) |
260 | bic r0, r0, #CACHELINESIZE - 1 | 265 | bic r0, r0, #CACHELINESIZE - 1 |
261 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 266 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D entry |
267 | mcr p15, 0, r0, c7, c5, 1 @ Invalidate I cache entry | ||
262 | add r0, r0, #CACHELINESIZE | 268 | add r0, r0, #CACHELINESIZE |
263 | cmp r0, r1 | 269 | cmp r0, r1 |
264 | blo 1b | 270 | blo 1b |
265 | mov r0, #0 | 271 | mov r0, #0 |
266 | mcr p15, 0, r0, c7, c5, 0 @ Invalidate I cache & BTB | 272 | mcr p15, 0, r0, c7, c5, 6 @ Invalidate BTB |
267 | mcr p15, 0, r0, c7, c10, 4 @ Drain Write (& Fill) Buffer | 273 | mcr p15, 0, r0, c7, c10, 4 @ Drain Write (& Fill) Buffer |
268 | mov pc, lr | 274 | mov pc, lr |
269 | 275 | ||
diff --git a/arch/arm/mm/tlb-v6.S b/arch/arm/mm/tlb-v6.S index 6f76b89ef46e..fd6adde39091 100644 --- a/arch/arm/mm/tlb-v6.S +++ b/arch/arm/mm/tlb-v6.S | |||
@@ -80,6 +80,7 @@ ENTRY(v6wbi_flush_kern_tlb_range) | |||
80 | add r0, r0, #PAGE_SZ | 80 | add r0, r0, #PAGE_SZ |
81 | cmp r0, r1 | 81 | cmp r0, r1 |
82 | blo 1b | 82 | blo 1b |
83 | mcr p15, 0, r2, c7, c10, 4 @ data synchronization barrier | ||
83 | mov pc, lr | 84 | mov pc, lr |
84 | 85 | ||
85 | .section ".text.init", #alloc, #execinstr | 86 | .section ".text.init", #alloc, #execinstr |
diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c index 1415930ceee1..6f8bc1f0e6a1 100644 --- a/arch/arm/oprofile/common.c +++ b/arch/arm/oprofile/common.c | |||
@@ -137,8 +137,9 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) | |||
137 | if (spec) { | 137 | if (spec) { |
138 | init_MUTEX(&op_arm_sem); | 138 | init_MUTEX(&op_arm_sem); |
139 | 139 | ||
140 | if (spec->init() < 0) | 140 | ret = spec->init(); |
141 | return -ENODEV; | 141 | if (ret < 0) |
142 | return ret; | ||
142 | 143 | ||
143 | op_arm_model = spec; | 144 | op_arm_model = spec; |
144 | init_driverfs(); | 145 | init_driverfs(); |
diff --git a/arch/arm/plat-omap/pm.c b/arch/arm/plat-omap/pm.c index 1a24e2c10714..093efd786f21 100644 --- a/arch/arm/plat-omap/pm.c +++ b/arch/arm/plat-omap/pm.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/pm.h> | 38 | #include <linux/pm.h> |
39 | #include <linux/sched.h> | 39 | #include <linux/sched.h> |
40 | #include <linux/proc_fs.h> | 40 | #include <linux/proc_fs.h> |
41 | #include <linux/pm.h> | ||
42 | #include <linux/interrupt.h> | 41 | #include <linux/interrupt.h> |
43 | 42 | ||
44 | #include <asm/io.h> | 43 | #include <asm/io.h> |
diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c index 792f66375830..ee82763b02b8 100644 --- a/arch/arm/plat-omap/sram.c +++ b/arch/arm/plat-omap/sram.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | 18 | ||
19 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
20 | #include <asm/tlb.h> | ||
20 | #include <asm/io.h> | 21 | #include <asm/io.h> |
21 | #include <asm/cacheflush.h> | 22 | #include <asm/cacheflush.h> |
22 | 23 | ||
@@ -96,6 +97,14 @@ void __init omap_map_sram(void) | |||
96 | omap_sram_io_desc[0].length); | 97 | omap_sram_io_desc[0].length); |
97 | 98 | ||
98 | /* | 99 | /* |
100 | * Normally devicemaps_init() would flush caches and tlb after | ||
101 | * mdesc->map_io(), but since we're called from map_io(), we | ||
102 | * must do it here. | ||
103 | */ | ||
104 | local_flush_tlb_all(); | ||
105 | flush_cache_all(); | ||
106 | |||
107 | /* | ||
99 | * Looks like we need to preserve some bootloader code at the | 108 | * Looks like we need to preserve some bootloader code at the |
100 | * beginning of SRAM for jumping to flash for reboot to work... | 109 | * beginning of SRAM for jumping to flash for reboot to work... |
101 | */ | 110 | */ |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index d0f9bb5e9023..8ab5300dcb94 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
@@ -12,7 +12,7 @@ | |||
12 | # | 12 | # |
13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
14 | # | 14 | # |
15 | # Last update: Mon Jan 9 12:56:42 2006 | 15 | # Last update: Mon Feb 20 10:18:02 2006 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -904,7 +904,7 @@ wg302v2 MACH_WG302V2 WG302V2 890 | |||
904 | eb42x MACH_EB42X EB42X 891 | 904 | eb42x MACH_EB42X EB42X 891 |
905 | iq331es MACH_IQ331ES IQ331ES 892 | 905 | iq331es MACH_IQ331ES IQ331ES 892 |
906 | cosydsp MACH_COSYDSP COSYDSP 893 | 906 | cosydsp MACH_COSYDSP COSYDSP 893 |
907 | uplat7d MACH_UPLAT7D UPLAT7D 894 | 907 | uplat7d_proto MACH_UPLAT7D UPLAT7D 894 |
908 | ptdavinci MACH_PTDAVINCI PTDAVINCI 895 | 908 | ptdavinci MACH_PTDAVINCI PTDAVINCI 895 |
909 | mbus MACH_MBUS MBUS 896 | 909 | mbus MACH_MBUS MBUS 896 |
910 | nadia2vb MACH_NADIA2VB NADIA2VB 897 | 910 | nadia2vb MACH_NADIA2VB NADIA2VB 897 |
@@ -938,3 +938,34 @@ auckland MACH_AUCKLAND AUCKLAND 924 | |||
938 | ak3220m MACH_AK3320M AK3320M 925 | 938 | ak3220m MACH_AK3320M AK3320M 925 |
939 | duramax MACH_DURAMAX DURAMAX 926 | 939 | duramax MACH_DURAMAX DURAMAX 926 |
940 | n35 MACH_N35 N35 927 | 940 | n35 MACH_N35 N35 927 |
941 | pronghorn MACH_PRONGHORN PRONGHORN 928 | ||
942 | fundy MACH_FUNDY FUNDY 929 | ||
943 | logicpd_pxa270 MACH_LOGICPD_PXA270 LOGICPD_PXA270 930 | ||
944 | cpu777 MACH_CPU777 CPU777 931 | ||
945 | simicon9201 MACH_SIMICON9201 SIMICON9201 932 | ||
946 | leap2_hpm MACH_LEAP2_HPM LEAP2_HPM 933 | ||
947 | cm922txa10 MACH_CM922TXA10 CM922TXA10 934 | ||
948 | sandgate MACH_PXA PXA 935 | ||
949 | sandgate2 MACH_SANDGATE2 SANDGATE2 936 | ||
950 | sandgate2g MACH_SANDGATE2G SANDGATE2G 937 | ||
951 | sandgate2p MACH_SANDGATE2P SANDGATE2P 938 | ||
952 | fred_jack MACH_FRED_JACK FRED_JACK 939 | ||
953 | ttg_color1 MACH_TTG_COLOR1 TTG_COLOR1 940 | ||
954 | nxeb500hmi MACH_NXEB500HMI NXEB500HMI 941 | ||
955 | netdcu8 MACH_NETDCU8 NETDCU8 942 | ||
956 | ml675050_cpu_boa MACH_ML675050_CPU_BOA ML675050_CPU_BOA 943 | ||
957 | ng_fvx538 MACH_NG_FVX538 NG_FVX538 944 | ||
958 | ng_fvs338 MACH_NG_FVS338 NG_FVS338 945 | ||
959 | pnx4103 MACH_PNX4103 PNX4103 946 | ||
960 | hesdb MACH_HESDB HESDB 947 | ||
961 | xsilo MACH_XSILO XSILO 948 | ||
962 | espresso MACH_ESPRESSO ESPRESSO 949 | ||
963 | emlc MACH_EMLC EMLC 950 | ||
964 | sisteron MACH_SISTERON SISTERON 951 | ||
965 | rx1950 MACH_RX1950 RX1950 952 | ||
966 | tsc_venus MACH_TSC_VENUS TSC_VENUS 953 | ||
967 | ds101j MACH_DS101J DS101J 954 | ||
968 | mxc300_30ads MACH_MXC30030ADS MXC30030ADS 955 | ||
969 | fujitsu_wimaxsoc MACH_FUJITSU_WIMAXSOC FUJITSU_WIMAXSOC 956 | ||
970 | dualpcmodem MACH_DUALPCMODEM DUALPCMODEM 957 | ||
971 | gesbc9312 MACH_GESBC9312 GESBC9312 958 | ||