diff options
author | David S. Miller <davem@davemloft.net> | 2010-06-26 13:27:00 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-26 13:27:00 -0400 |
commit | c67dda14389205f0a223c5089307495290939b3b (patch) | |
tree | fad0bb26b28703d02a22ebdd44d94eabac4a2ade /arch | |
parent | 43bc2db47292a824152145253b1dd2847e7312a3 (diff) | |
parent | 7e27d6e778cd87b6f2415515d7127eba53fe5d02 (diff) |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'arch')
322 files changed, 7277 insertions, 1881 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 24efdfe277fc..3e2e540a0f2a 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -61,6 +61,9 @@ config ZONE_DMA | |||
61 | config NEED_DMA_MAP_STATE | 61 | config NEED_DMA_MAP_STATE |
62 | def_bool y | 62 | def_bool y |
63 | 63 | ||
64 | config NEED_SG_DMA_LENGTH | ||
65 | def_bool y | ||
66 | |||
64 | config GENERIC_ISA_DMA | 67 | config GENERIC_ISA_DMA |
65 | bool | 68 | bool |
66 | default y | 69 | default y |
diff --git a/arch/alpha/include/asm/scatterlist.h b/arch/alpha/include/asm/scatterlist.h index 440747ca6349..5728c52a7412 100644 --- a/arch/alpha/include/asm/scatterlist.h +++ b/arch/alpha/include/asm/scatterlist.h | |||
@@ -1,24 +1,7 @@ | |||
1 | #ifndef _ALPHA_SCATTERLIST_H | 1 | #ifndef _ALPHA_SCATTERLIST_H |
2 | #define _ALPHA_SCATTERLIST_H | 2 | #define _ALPHA_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/page.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | #include <asm/types.h> | ||
6 | |||
7 | struct scatterlist { | ||
8 | #ifdef CONFIG_DEBUG_SG | ||
9 | unsigned long sg_magic; | ||
10 | #endif | ||
11 | unsigned long page_link; | ||
12 | unsigned int offset; | ||
13 | |||
14 | unsigned int length; | ||
15 | |||
16 | dma_addr_t dma_address; | ||
17 | __u32 dma_length; | ||
18 | }; | ||
19 | |||
20 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
21 | #define sg_dma_len(sg) ((sg)->dma_length) | ||
22 | 5 | ||
23 | #define ISA_DMA_THRESHOLD (~0UL) | 6 | #define ISA_DMA_THRESHOLD (~0UL) |
24 | 7 | ||
diff --git a/arch/alpha/math-emu/sfp-util.h b/arch/alpha/math-emu/sfp-util.h index d4c6ae7fee47..f53707f77455 100644 --- a/arch/alpha/math-emu/sfp-util.h +++ b/arch/alpha/math-emu/sfp-util.h | |||
@@ -28,3 +28,8 @@ extern unsigned long __udiv_qrnnd (unsigned long *, unsigned long, | |||
28 | #define UDIV_NEEDS_NORMALIZATION 1 | 28 | #define UDIV_NEEDS_NORMALIZATION 1 |
29 | 29 | ||
30 | #define abort() goto bad_insn | 30 | #define abort() goto bad_insn |
31 | |||
32 | #ifndef __LITTLE_ENDIAN | ||
33 | #define __LITTLE_ENDIAN -1 | ||
34 | #endif | ||
35 | #define __BYTE_ORDER __LITTLE_ENDIAN | ||
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c index a52a27c1d9be..6f80665f477e 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
@@ -951,8 +951,6 @@ static int sa1111_resume(struct platform_device *dev) | |||
951 | if (!save) | 951 | if (!save) |
952 | return 0; | 952 | return 0; |
953 | 953 | ||
954 | spin_lock_irqsave(&sachip->lock, flags); | ||
955 | |||
956 | /* | 954 | /* |
957 | * Ensure that the SA1111 is still here. | 955 | * Ensure that the SA1111 is still here. |
958 | * FIXME: shouldn't do this here. | 956 | * FIXME: shouldn't do this here. |
@@ -969,6 +967,13 @@ static int sa1111_resume(struct platform_device *dev) | |||
969 | * First of all, wake up the chip. | 967 | * First of all, wake up the chip. |
970 | */ | 968 | */ |
971 | sa1111_wake(sachip); | 969 | sa1111_wake(sachip); |
970 | |||
971 | /* | ||
972 | * Only lock for write ops. Also, sa1111_wake must be called with | ||
973 | * released spinlock! | ||
974 | */ | ||
975 | spin_lock_irqsave(&sachip->lock, flags); | ||
976 | |||
972 | sa1111_writel(0, sachip->base + SA1111_INTC + SA1111_INTEN0); | 977 | sa1111_writel(0, sachip->base + SA1111_INTC + SA1111_INTEN0); |
973 | sa1111_writel(0, sachip->base + SA1111_INTC + SA1111_INTEN1); | 978 | sa1111_writel(0, sachip->base + SA1111_INTC + SA1111_INTEN1); |
974 | 979 | ||
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 9236475e7131..44cea2ddd22b 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -1,12 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Sat May 22 03:17:31 2010 | 4 | # Fri May 28 19:15:48 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_HAVE_PWM=y | 7 | CONFIG_HAVE_PWM=y |
8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
9 | CONFIG_GENERIC_GPIO=y | 9 | CONFIG_GENERIC_GPIO=y |
10 | CONFIG_GENERIC_TIME=y | ||
11 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
10 | CONFIG_HAVE_PROC_CPU=y | 12 | CONFIG_HAVE_PROC_CPU=y |
11 | CONFIG_NO_IOPORT=y | 13 | CONFIG_NO_IOPORT=y |
12 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
@@ -35,6 +37,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
35 | CONFIG_LOCALVERSION="" | 37 | CONFIG_LOCALVERSION="" |
36 | CONFIG_LOCALVERSION_AUTO=y | 38 | CONFIG_LOCALVERSION_AUTO=y |
37 | CONFIG_HAVE_KERNEL_GZIP=y | 39 | CONFIG_HAVE_KERNEL_GZIP=y |
40 | CONFIG_HAVE_KERNEL_LZMA=y | ||
38 | CONFIG_HAVE_KERNEL_LZO=y | 41 | CONFIG_HAVE_KERNEL_LZO=y |
39 | CONFIG_KERNEL_GZIP=y | 42 | CONFIG_KERNEL_GZIP=y |
40 | # CONFIG_KERNEL_BZIP2 is not set | 43 | # CONFIG_KERNEL_BZIP2 is not set |
@@ -186,9 +189,11 @@ CONFIG_MMU=y | |||
186 | # CONFIG_ARCH_INTEGRATOR is not set | 189 | # CONFIG_ARCH_INTEGRATOR is not set |
187 | # CONFIG_ARCH_REALVIEW is not set | 190 | # CONFIG_ARCH_REALVIEW is not set |
188 | # CONFIG_ARCH_VERSATILE is not set | 191 | # CONFIG_ARCH_VERSATILE is not set |
192 | # CONFIG_ARCH_VEXPRESS is not set | ||
189 | # CONFIG_ARCH_AT91 is not set | 193 | # CONFIG_ARCH_AT91 is not set |
190 | # CONFIG_ARCH_BCMRING is not set | 194 | # CONFIG_ARCH_BCMRING is not set |
191 | # CONFIG_ARCH_CLPS711X is not set | 195 | # CONFIG_ARCH_CLPS711X is not set |
196 | # CONFIG_ARCH_CNS3XXX is not set | ||
192 | # CONFIG_ARCH_GEMINI is not set | 197 | # CONFIG_ARCH_GEMINI is not set |
193 | # CONFIG_ARCH_EBSA110 is not set | 198 | # CONFIG_ARCH_EBSA110 is not set |
194 | # CONFIG_ARCH_EP93XX is not set | 199 | # CONFIG_ARCH_EP93XX is not set |
@@ -224,7 +229,7 @@ CONFIG_ARCH_S3C2410=y | |||
224 | # CONFIG_ARCH_S3C64XX is not set | 229 | # CONFIG_ARCH_S3C64XX is not set |
225 | # CONFIG_ARCH_S5P6440 is not set | 230 | # CONFIG_ARCH_S5P6440 is not set |
226 | # CONFIG_ARCH_S5P6442 is not set | 231 | # CONFIG_ARCH_S5P6442 is not set |
227 | # CONFIG_ARCH_S5PC1XX is not set | 232 | # CONFIG_ARCH_S5PC100 is not set |
228 | # CONFIG_ARCH_S5PV210 is not set | 233 | # CONFIG_ARCH_S5PV210 is not set |
229 | # CONFIG_ARCH_SHARK is not set | 234 | # CONFIG_ARCH_SHARK is not set |
230 | # CONFIG_ARCH_LH7A40X is not set | 235 | # CONFIG_ARCH_LH7A40X is not set |
@@ -233,6 +238,7 @@ CONFIG_ARCH_S3C2410=y | |||
233 | # CONFIG_ARCH_NOMADIK is not set | 238 | # CONFIG_ARCH_NOMADIK is not set |
234 | # CONFIG_ARCH_DAVINCI is not set | 239 | # CONFIG_ARCH_DAVINCI is not set |
235 | # CONFIG_ARCH_OMAP is not set | 240 | # CONFIG_ARCH_OMAP is not set |
241 | # CONFIG_PLAT_SPEAR is not set | ||
236 | CONFIG_PLAT_SAMSUNG=y | 242 | CONFIG_PLAT_SAMSUNG=y |
237 | 243 | ||
238 | # | 244 | # |
@@ -243,11 +249,18 @@ CONFIG_S3C_BOOT_ERROR_RESET=y | |||
243 | CONFIG_S3C_BOOT_UART_FORCE_FIFO=y | 249 | CONFIG_S3C_BOOT_UART_FORCE_FIFO=y |
244 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 | 250 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 |
245 | CONFIG_SAMSUNG_CLKSRC=y | 251 | CONFIG_SAMSUNG_CLKSRC=y |
252 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | ||
253 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | ||
254 | CONFIG_S3C_GPIO_PULL_UP=y | ||
246 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | 255 | CONFIG_SAMSUNG_GPIO_EXTRA=0 |
247 | CONFIG_S3C_GPIO_SPACE=0 | 256 | CONFIG_S3C_GPIO_SPACE=0 |
248 | CONFIG_S3C_ADC=y | 257 | CONFIG_S3C_ADC=y |
249 | CONFIG_S3C_DEV_HSMMC=y | 258 | CONFIG_S3C_DEV_HSMMC=y |
259 | CONFIG_S3C_DEV_HSMMC1=y | ||
260 | CONFIG_S3C_DEV_HWMON=y | ||
261 | CONFIG_S3C_DEV_FB=y | ||
250 | CONFIG_S3C_DEV_USB_HOST=y | 262 | CONFIG_S3C_DEV_USB_HOST=y |
263 | CONFIG_S3C_DEV_WDT=y | ||
251 | CONFIG_S3C_DEV_NAND=y | 264 | CONFIG_S3C_DEV_NAND=y |
252 | CONFIG_S3C_DMA=y | 265 | CONFIG_S3C_DMA=y |
253 | 266 | ||
@@ -260,6 +273,7 @@ CONFIG_PLAT_S3C24XX=y | |||
260 | CONFIG_CPU_LLSERIAL_S3C2410=y | 273 | CONFIG_CPU_LLSERIAL_S3C2410=y |
261 | CONFIG_CPU_LLSERIAL_S3C2440=y | 274 | CONFIG_CPU_LLSERIAL_S3C2440=y |
262 | CONFIG_S3C2410_CLOCK=y | 275 | CONFIG_S3C2410_CLOCK=y |
276 | CONFIG_S3C2443_CLOCK=y | ||
263 | CONFIG_S3C24XX_DCLK=y | 277 | CONFIG_S3C24XX_DCLK=y |
264 | CONFIG_S3C24XX_PWM=y | 278 | CONFIG_S3C24XX_PWM=y |
265 | CONFIG_S3C24XX_GPIO_EXTRA=128 | 279 | CONFIG_S3C24XX_GPIO_EXTRA=128 |
@@ -270,6 +284,7 @@ CONFIG_S3C2410_DMA=y | |||
270 | # CONFIG_S3C2410_DMA_DEBUG is not set | 284 | # CONFIG_S3C2410_DMA_DEBUG is not set |
271 | CONFIG_MACH_SMDK=y | 285 | CONFIG_MACH_SMDK=y |
272 | CONFIG_S3C24XX_SIMTEC_AUDIO=y | 286 | CONFIG_S3C24XX_SIMTEC_AUDIO=y |
287 | CONFIG_S3C2410_SETUP_TS=y | ||
273 | 288 | ||
274 | # | 289 | # |
275 | # S3C2400 Machines | 290 | # S3C2400 Machines |
@@ -289,6 +304,7 @@ CONFIG_ARCH_H1940=y | |||
289 | # CONFIG_H1940BT is not set | 304 | # CONFIG_H1940BT is not set |
290 | CONFIG_PM_H1940=y | 305 | CONFIG_PM_H1940=y |
291 | CONFIG_MACH_N30=y | 306 | CONFIG_MACH_N30=y |
307 | CONFIG_MACH_N35=y | ||
292 | CONFIG_ARCH_BAST=y | 308 | CONFIG_ARCH_BAST=y |
293 | CONFIG_MACH_OTOM=y | 309 | CONFIG_MACH_OTOM=y |
294 | CONFIG_MACH_AML_M5900=y | 310 | CONFIG_MACH_AML_M5900=y |
@@ -309,6 +325,13 @@ CONFIG_MACH_SMDK2413=y | |||
309 | CONFIG_MACH_S3C2413=y | 325 | CONFIG_MACH_S3C2413=y |
310 | CONFIG_MACH_SMDK2412=y | 326 | CONFIG_MACH_SMDK2412=y |
311 | CONFIG_MACH_VSTMS=y | 327 | CONFIG_MACH_VSTMS=y |
328 | CONFIG_CPU_S3C2416=y | ||
329 | CONFIG_S3C2416_DMA=y | ||
330 | |||
331 | # | ||
332 | # S3C2416 Machines | ||
333 | # | ||
334 | CONFIG_MACH_SMDK2416=y | ||
312 | CONFIG_CPU_S3C2440=y | 335 | CONFIG_CPU_S3C2440=y |
313 | CONFIG_CPU_S3C2442=y | 336 | CONFIG_CPU_S3C2442=y |
314 | CONFIG_CPU_S3C244X=y | 337 | CONFIG_CPU_S3C244X=y |
@@ -320,9 +343,9 @@ CONFIG_S3C2440_DMA=y | |||
320 | # S3C2440 and S3C2442 Machines | 343 | # S3C2440 and S3C2442 Machines |
321 | # | 344 | # |
322 | CONFIG_MACH_ANUBIS=y | 345 | CONFIG_MACH_ANUBIS=y |
323 | # CONFIG_MACH_NEO1973_GTA02 is not set | 346 | CONFIG_MACH_NEO1973_GTA02=y |
324 | CONFIG_MACH_OSIRIS=y | 347 | CONFIG_MACH_OSIRIS=y |
325 | # CONFIG_MACH_OSIRIS_DVS is not set | 348 | CONFIG_MACH_OSIRIS_DVS=m |
326 | CONFIG_MACH_RX3715=y | 349 | CONFIG_MACH_RX3715=y |
327 | CONFIG_ARCH_S3C2440=y | 350 | CONFIG_ARCH_S3C2440=y |
328 | CONFIG_MACH_NEXCODER_2440=y | 351 | CONFIG_MACH_NEXCODER_2440=y |
@@ -330,6 +353,7 @@ CONFIG_SMDK2440_CPU2440=y | |||
330 | CONFIG_SMDK2440_CPU2442=y | 353 | CONFIG_SMDK2440_CPU2442=y |
331 | CONFIG_MACH_AT2440EVB=y | 354 | CONFIG_MACH_AT2440EVB=y |
332 | CONFIG_MACH_MINI2440=y | 355 | CONFIG_MACH_MINI2440=y |
356 | CONFIG_MACH_RX1950=y | ||
333 | CONFIG_CPU_S3C2443=y | 357 | CONFIG_CPU_S3C2443=y |
334 | CONFIG_S3C2443_DMA=y | 358 | CONFIG_S3C2443_DMA=y |
335 | 359 | ||
@@ -410,6 +434,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
410 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 434 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
411 | CONFIG_ZBOOT_ROM_BSS=0x0 | 435 | CONFIG_ZBOOT_ROM_BSS=0x0 |
412 | CONFIG_CMDLINE="root=/dev/hda1 ro init=/bin/bash console=ttySAC0" | 436 | CONFIG_CMDLINE="root=/dev/hda1 ro init=/bin/bash console=ttySAC0" |
437 | # CONFIG_CMDLINE_FORCE is not set | ||
413 | # CONFIG_XIP_KERNEL is not set | 438 | # CONFIG_XIP_KERNEL is not set |
414 | # CONFIG_KEXEC is not set | 439 | # CONFIG_KEXEC is not set |
415 | 440 | ||
@@ -509,7 +534,9 @@ CONFIG_TCP_CONG_ILLINOIS=m | |||
509 | # CONFIG_DEFAULT_BIC is not set | 534 | # CONFIG_DEFAULT_BIC is not set |
510 | CONFIG_DEFAULT_CUBIC=y | 535 | CONFIG_DEFAULT_CUBIC=y |
511 | # CONFIG_DEFAULT_HTCP is not set | 536 | # CONFIG_DEFAULT_HTCP is not set |
537 | # CONFIG_DEFAULT_HYBLA is not set | ||
512 | # CONFIG_DEFAULT_VEGAS is not set | 538 | # CONFIG_DEFAULT_VEGAS is not set |
539 | # CONFIG_DEFAULT_VENO is not set | ||
513 | # CONFIG_DEFAULT_WESTWOOD is not set | 540 | # CONFIG_DEFAULT_WESTWOOD is not set |
514 | # CONFIG_DEFAULT_RENO is not set | 541 | # CONFIG_DEFAULT_RENO is not set |
515 | CONFIG_DEFAULT_TCP_CONG="cubic" | 542 | CONFIG_DEFAULT_TCP_CONG="cubic" |
@@ -566,6 +593,16 @@ CONFIG_NF_CONNTRACK_TFTP=m | |||
566 | CONFIG_NF_CT_NETLINK=m | 593 | CONFIG_NF_CT_NETLINK=m |
567 | # CONFIG_NETFILTER_TPROXY is not set | 594 | # CONFIG_NETFILTER_TPROXY is not set |
568 | CONFIG_NETFILTER_XTABLES=m | 595 | CONFIG_NETFILTER_XTABLES=m |
596 | |||
597 | # | ||
598 | # Xtables combined modules | ||
599 | # | ||
600 | CONFIG_NETFILTER_XT_MARK=m | ||
601 | CONFIG_NETFILTER_XT_CONNMARK=m | ||
602 | |||
603 | # | ||
604 | # Xtables targets | ||
605 | # | ||
569 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 606 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
570 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 607 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
571 | # CONFIG_NETFILTER_XT_TARGET_CT is not set | 608 | # CONFIG_NETFILTER_XT_TARGET_CT is not set |
@@ -577,9 +614,14 @@ CONFIG_NETFILTER_XT_TARGET_NFLOG=m | |||
577 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 614 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
578 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set | 615 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set |
579 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | 616 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m |
617 | # CONFIG_NETFILTER_XT_TARGET_TEE is not set | ||
580 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | 618 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set |
581 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 619 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
582 | # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set | 620 | # CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set |
621 | |||
622 | # | ||
623 | # Xtables matches | ||
624 | # | ||
583 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m | 625 | CONFIG_NETFILTER_XT_MATCH_CLUSTER=m |
584 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 626 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
585 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 627 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
@@ -598,6 +640,7 @@ CONFIG_NETFILTER_XT_MATCH_LIMIT=m | |||
598 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 640 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
599 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 641 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
600 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 642 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
643 | # CONFIG_NETFILTER_XT_MATCH_OSF is not set | ||
601 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | 644 | CONFIG_NETFILTER_XT_MATCH_OWNER=m |
602 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 645 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
603 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 646 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
@@ -605,7 +648,6 @@ CONFIG_NETFILTER_XT_MATCH_QUOTA=m | |||
605 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | 648 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m |
606 | CONFIG_NETFILTER_XT_MATCH_REALM=m | 649 | CONFIG_NETFILTER_XT_MATCH_REALM=m |
607 | CONFIG_NETFILTER_XT_MATCH_RECENT=m | 650 | CONFIG_NETFILTER_XT_MATCH_RECENT=m |
608 | # CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set | ||
609 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | 651 | CONFIG_NETFILTER_XT_MATCH_SCTP=m |
610 | CONFIG_NETFILTER_XT_MATCH_STATE=m | 652 | CONFIG_NETFILTER_XT_MATCH_STATE=m |
611 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | 653 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m |
@@ -613,7 +655,6 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m | |||
613 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 655 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
614 | CONFIG_NETFILTER_XT_MATCH_TIME=m | 656 | CONFIG_NETFILTER_XT_MATCH_TIME=m |
615 | CONFIG_NETFILTER_XT_MATCH_U32=m | 657 | CONFIG_NETFILTER_XT_MATCH_U32=m |
616 | # CONFIG_NETFILTER_XT_MATCH_OSF is not set | ||
617 | CONFIG_IP_VS=m | 658 | CONFIG_IP_VS=m |
618 | # CONFIG_IP_VS_IPV6 is not set | 659 | # CONFIG_IP_VS_IPV6 is not set |
619 | # CONFIG_IP_VS_DEBUG is not set | 660 | # CONFIG_IP_VS_DEBUG is not set |
@@ -713,6 +754,7 @@ CONFIG_IP6_NF_RAW=m | |||
713 | # CONFIG_RDS is not set | 754 | # CONFIG_RDS is not set |
714 | # CONFIG_TIPC is not set | 755 | # CONFIG_TIPC is not set |
715 | # CONFIG_ATM is not set | 756 | # CONFIG_ATM is not set |
757 | # CONFIG_L2TP is not set | ||
716 | # CONFIG_BRIDGE is not set | 758 | # CONFIG_BRIDGE is not set |
717 | # CONFIG_NET_DSA is not set | 759 | # CONFIG_NET_DSA is not set |
718 | # CONFIG_VLAN_8021Q is not set | 760 | # CONFIG_VLAN_8021Q is not set |
@@ -739,6 +781,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
739 | # CONFIG_IRDA is not set | 781 | # CONFIG_IRDA is not set |
740 | CONFIG_BT=m | 782 | CONFIG_BT=m |
741 | CONFIG_BT_L2CAP=m | 783 | CONFIG_BT_L2CAP=m |
784 | # CONFIG_BT_L2CAP_EXT_FEATURES is not set | ||
742 | CONFIG_BT_SCO=m | 785 | CONFIG_BT_SCO=m |
743 | CONFIG_BT_RFCOMM=m | 786 | CONFIG_BT_RFCOMM=m |
744 | CONFIG_BT_RFCOMM_TTY=y | 787 | CONFIG_BT_RFCOMM_TTY=y |
@@ -775,6 +818,7 @@ CONFIG_CFG80211_WEXT=y | |||
775 | CONFIG_WIRELESS_EXT_SYSFS=y | 818 | CONFIG_WIRELESS_EXT_SYSFS=y |
776 | # CONFIG_LIB80211 is not set | 819 | # CONFIG_LIB80211 is not set |
777 | CONFIG_MAC80211=m | 820 | CONFIG_MAC80211=m |
821 | CONFIG_MAC80211_HAS_RC=y | ||
778 | CONFIG_MAC80211_RC_MINSTREL=y | 822 | CONFIG_MAC80211_RC_MINSTREL=y |
779 | # CONFIG_MAC80211_RC_DEFAULT_PID is not set | 823 | # CONFIG_MAC80211_RC_DEFAULT_PID is not set |
780 | CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y | 824 | CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y |
@@ -785,6 +829,7 @@ CONFIG_MAC80211_LEDS=y | |||
785 | # CONFIG_WIMAX is not set | 829 | # CONFIG_WIMAX is not set |
786 | # CONFIG_RFKILL is not set | 830 | # CONFIG_RFKILL is not set |
787 | # CONFIG_NET_9P is not set | 831 | # CONFIG_NET_9P is not set |
832 | # CONFIG_CAIF is not set | ||
788 | 833 | ||
789 | # | 834 | # |
790 | # Device Drivers | 835 | # Device Drivers |
@@ -828,6 +873,7 @@ CONFIG_MTD_BLOCK=y | |||
828 | # CONFIG_INFTL is not set | 873 | # CONFIG_INFTL is not set |
829 | # CONFIG_RFD_FTL is not set | 874 | # CONFIG_RFD_FTL is not set |
830 | # CONFIG_SSFDC is not set | 875 | # CONFIG_SSFDC is not set |
876 | # CONFIG_SM_FTL is not set | ||
831 | # CONFIG_MTD_OOPS is not set | 877 | # CONFIG_MTD_OOPS is not set |
832 | 878 | ||
833 | # | 879 | # |
@@ -882,9 +928,12 @@ CONFIG_MTD_ROM=y | |||
882 | # CONFIG_MTD_DOC2001 is not set | 928 | # CONFIG_MTD_DOC2001 is not set |
883 | # CONFIG_MTD_DOC2001PLUS is not set | 929 | # CONFIG_MTD_DOC2001PLUS is not set |
884 | CONFIG_MTD_NAND=y | 930 | CONFIG_MTD_NAND=y |
885 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | 931 | CONFIG_MTD_NAND_ECC=y |
886 | # CONFIG_MTD_NAND_ECC_SMC is not set | 932 | # CONFIG_MTD_NAND_ECC_SMC is not set |
933 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
934 | # CONFIG_MTD_SM_COMMON is not set | ||
887 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | 935 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set |
936 | CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 | ||
888 | # CONFIG_MTD_NAND_GPIO is not set | 937 | # CONFIG_MTD_NAND_GPIO is not set |
889 | CONFIG_MTD_NAND_IDS=y | 938 | CONFIG_MTD_NAND_IDS=y |
890 | CONFIG_MTD_NAND_S3C2410=y | 939 | CONFIG_MTD_NAND_S3C2410=y |
@@ -1149,6 +1198,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
1149 | # CONFIG_QT2160 is not set | 1198 | # CONFIG_QT2160 is not set |
1150 | # CONFIG_KEYBOARD_LKKBD is not set | 1199 | # CONFIG_KEYBOARD_LKKBD is not set |
1151 | # CONFIG_KEYBOARD_GPIO is not set | 1200 | # CONFIG_KEYBOARD_GPIO is not set |
1201 | # CONFIG_KEYBOARD_TCA6416 is not set | ||
1152 | # CONFIG_KEYBOARD_MATRIX is not set | 1202 | # CONFIG_KEYBOARD_MATRIX is not set |
1153 | # CONFIG_KEYBOARD_LM8323 is not set | 1203 | # CONFIG_KEYBOARD_LM8323 is not set |
1154 | # CONFIG_KEYBOARD_MAX7359 is not set | 1204 | # CONFIG_KEYBOARD_MAX7359 is not set |
@@ -1212,6 +1262,7 @@ CONFIG_INPUT_TOUCHSCREEN=y | |||
1212 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set | 1262 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set |
1213 | # CONFIG_TOUCHSCREEN_AD7879 is not set | 1263 | # CONFIG_TOUCHSCREEN_AD7879 is not set |
1214 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | 1264 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set |
1265 | # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set | ||
1215 | # CONFIG_TOUCHSCREEN_EETI is not set | 1266 | # CONFIG_TOUCHSCREEN_EETI is not set |
1216 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 1267 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
1217 | # CONFIG_TOUCHSCREEN_S3C2410 is not set | 1268 | # CONFIG_TOUCHSCREEN_S3C2410 is not set |
@@ -1248,6 +1299,7 @@ CONFIG_TOUCHSCREEN_USB_NEXIO=y | |||
1248 | # CONFIG_TOUCHSCREEN_TSC2007 is not set | 1299 | # CONFIG_TOUCHSCREEN_TSC2007 is not set |
1249 | # CONFIG_TOUCHSCREEN_W90X900 is not set | 1300 | # CONFIG_TOUCHSCREEN_W90X900 is not set |
1250 | CONFIG_INPUT_MISC=y | 1301 | CONFIG_INPUT_MISC=y |
1302 | # CONFIG_INPUT_AD714X is not set | ||
1251 | CONFIG_INPUT_ATI_REMOTE=m | 1303 | CONFIG_INPUT_ATI_REMOTE=m |
1252 | CONFIG_INPUT_ATI_REMOTE2=m | 1304 | CONFIG_INPUT_ATI_REMOTE2=m |
1253 | CONFIG_INPUT_KEYSPAN_REMOTE=m | 1305 | CONFIG_INPUT_KEYSPAN_REMOTE=m |
@@ -1255,6 +1307,8 @@ CONFIG_INPUT_POWERMATE=m | |||
1255 | CONFIG_INPUT_YEALINK=m | 1307 | CONFIG_INPUT_YEALINK=m |
1256 | CONFIG_INPUT_CM109=m | 1308 | CONFIG_INPUT_CM109=m |
1257 | CONFIG_INPUT_UINPUT=m | 1309 | CONFIG_INPUT_UINPUT=m |
1310 | # CONFIG_INPUT_PCF50633_PMU is not set | ||
1311 | # CONFIG_INPUT_PCF8574 is not set | ||
1258 | CONFIG_INPUT_GPIO_ROTARY_ENCODER=m | 1312 | CONFIG_INPUT_GPIO_ROTARY_ENCODER=m |
1259 | 1313 | ||
1260 | # | 1314 | # |
@@ -1287,6 +1341,7 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
1287 | # CONFIG_MOXA_INTELLIO is not set | 1341 | # CONFIG_MOXA_INTELLIO is not set |
1288 | # CONFIG_MOXA_SMARTIO is not set | 1342 | # CONFIG_MOXA_SMARTIO is not set |
1289 | # CONFIG_N_HDLC is not set | 1343 | # CONFIG_N_HDLC is not set |
1344 | # CONFIG_N_GSM is not set | ||
1290 | # CONFIG_RISCOM8 is not set | 1345 | # CONFIG_RISCOM8 is not set |
1291 | # CONFIG_SPECIALIX is not set | 1346 | # CONFIG_SPECIALIX is not set |
1292 | # CONFIG_STALDRV is not set | 1347 | # CONFIG_STALDRV is not set |
@@ -1324,6 +1379,8 @@ CONFIG_SERIAL_S3C2440=y | |||
1324 | CONFIG_SERIAL_CORE=y | 1379 | CONFIG_SERIAL_CORE=y |
1325 | CONFIG_SERIAL_CORE_CONSOLE=y | 1380 | CONFIG_SERIAL_CORE_CONSOLE=y |
1326 | # CONFIG_SERIAL_TIMBERDALE is not set | 1381 | # CONFIG_SERIAL_TIMBERDALE is not set |
1382 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
1383 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
1327 | CONFIG_UNIX98_PTYS=y | 1384 | CONFIG_UNIX98_PTYS=y |
1328 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 1385 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
1329 | CONFIG_LEGACY_PTYS=y | 1386 | CONFIG_LEGACY_PTYS=y |
@@ -1439,7 +1496,16 @@ CONFIG_GPIOLIB=y | |||
1439 | # AC97 GPIO expanders: | 1496 | # AC97 GPIO expanders: |
1440 | # | 1497 | # |
1441 | # CONFIG_W1 is not set | 1498 | # CONFIG_W1 is not set |
1442 | # CONFIG_POWER_SUPPLY is not set | 1499 | CONFIG_POWER_SUPPLY=y |
1500 | # CONFIG_POWER_SUPPLY_DEBUG is not set | ||
1501 | # CONFIG_PDA_POWER is not set | ||
1502 | # CONFIG_APM_POWER is not set | ||
1503 | # CONFIG_TEST_POWER is not set | ||
1504 | # CONFIG_BATTERY_DS2760 is not set | ||
1505 | # CONFIG_BATTERY_DS2782 is not set | ||
1506 | # CONFIG_BATTERY_BQ27x00 is not set | ||
1507 | # CONFIG_BATTERY_MAX17040 is not set | ||
1508 | # CONFIG_CHARGER_PCF50633 is not set | ||
1443 | CONFIG_HWMON=y | 1509 | CONFIG_HWMON=y |
1444 | CONFIG_HWMON_VID=m | 1510 | CONFIG_HWMON_VID=m |
1445 | # CONFIG_HWMON_DEBUG_CHIP is not set | 1511 | # CONFIG_HWMON_DEBUG_CHIP is not set |
@@ -1499,6 +1565,7 @@ CONFIG_SENSORS_LM85=m | |||
1499 | # CONFIG_SENSORS_SMSC47M192 is not set | 1565 | # CONFIG_SENSORS_SMSC47M192 is not set |
1500 | # CONFIG_SENSORS_SMSC47B397 is not set | 1566 | # CONFIG_SENSORS_SMSC47B397 is not set |
1501 | # CONFIG_SENSORS_ADS7828 is not set | 1567 | # CONFIG_SENSORS_ADS7828 is not set |
1568 | # CONFIG_SENSORS_ADS7871 is not set | ||
1502 | # CONFIG_SENSORS_AMC6821 is not set | 1569 | # CONFIG_SENSORS_AMC6821 is not set |
1503 | # CONFIG_SENSORS_THMC50 is not set | 1570 | # CONFIG_SENSORS_THMC50 is not set |
1504 | # CONFIG_SENSORS_TMP401 is not set | 1571 | # CONFIG_SENSORS_TMP401 is not set |
@@ -1555,7 +1622,7 @@ CONFIG_MFD_SM501=y | |||
1555 | # CONFIG_HTC_PASIC3 is not set | 1622 | # CONFIG_HTC_PASIC3 is not set |
1556 | # CONFIG_HTC_I2CPLD is not set | 1623 | # CONFIG_HTC_I2CPLD is not set |
1557 | # CONFIG_UCB1400_CORE is not set | 1624 | # CONFIG_UCB1400_CORE is not set |
1558 | # CONFIG_TPS65010 is not set | 1625 | CONFIG_TPS65010=m |
1559 | # CONFIG_TWL4030_CORE is not set | 1626 | # CONFIG_TWL4030_CORE is not set |
1560 | # CONFIG_MFD_TMIO is not set | 1627 | # CONFIG_MFD_TMIO is not set |
1561 | # CONFIG_MFD_T7L66XB is not set | 1628 | # CONFIG_MFD_T7L66XB is not set |
@@ -1568,8 +1635,10 @@ CONFIG_MFD_SM501=y | |||
1568 | # CONFIG_MFD_WM831X is not set | 1635 | # CONFIG_MFD_WM831X is not set |
1569 | # CONFIG_MFD_WM8350_I2C is not set | 1636 | # CONFIG_MFD_WM8350_I2C is not set |
1570 | # CONFIG_MFD_WM8994 is not set | 1637 | # CONFIG_MFD_WM8994 is not set |
1571 | # CONFIG_MFD_PCF50633 is not set | 1638 | CONFIG_MFD_PCF50633=y |
1572 | # CONFIG_MFD_MC13783 is not set | 1639 | # CONFIG_MFD_MC13783 is not set |
1640 | # CONFIG_PCF50633_ADC is not set | ||
1641 | CONFIG_PCF50633_GPIO=y | ||
1573 | # CONFIG_AB3100_CORE is not set | 1642 | # CONFIG_AB3100_CORE is not set |
1574 | # CONFIG_EZX_PCAP is not set | 1643 | # CONFIG_EZX_PCAP is not set |
1575 | # CONFIG_AB4500_CORE is not set | 1644 | # CONFIG_AB4500_CORE is not set |
@@ -1685,6 +1754,7 @@ CONFIG_SND_S3C24XX_SOC_I2S=y | |||
1685 | CONFIG_SND_S3C_I2SV2_SOC=m | 1754 | CONFIG_SND_S3C_I2SV2_SOC=m |
1686 | CONFIG_SND_S3C2412_SOC_I2S=m | 1755 | CONFIG_SND_S3C2412_SOC_I2S=m |
1687 | CONFIG_SND_S3C_SOC_AC97=m | 1756 | CONFIG_SND_S3C_SOC_AC97=m |
1757 | # CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753 is not set | ||
1688 | CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m | 1758 | CONFIG_SND_S3C24XX_SOC_JIVE_WM8750=m |
1689 | CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m | 1759 | CONFIG_SND_S3C24XX_SOC_SMDK2443_WM9710=m |
1690 | CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m | 1760 | CONFIG_SND_S3C24XX_SOC_LN2440SBC_ALC650=m |
@@ -1836,10 +1906,12 @@ CONFIG_USB_SERIAL_PL2303=y | |||
1836 | # CONFIG_USB_SERIAL_TI is not set | 1906 | # CONFIG_USB_SERIAL_TI is not set |
1837 | # CONFIG_USB_SERIAL_CYBERJACK is not set | 1907 | # CONFIG_USB_SERIAL_CYBERJACK is not set |
1838 | # CONFIG_USB_SERIAL_XIRCOM is not set | 1908 | # CONFIG_USB_SERIAL_XIRCOM is not set |
1909 | CONFIG_USB_SERIAL_WWAN=m | ||
1839 | CONFIG_USB_SERIAL_OPTION=m | 1910 | CONFIG_USB_SERIAL_OPTION=m |
1840 | # CONFIG_USB_SERIAL_OMNINET is not set | 1911 | # CONFIG_USB_SERIAL_OMNINET is not set |
1841 | # CONFIG_USB_SERIAL_OPTICON is not set | 1912 | # CONFIG_USB_SERIAL_OPTICON is not set |
1842 | # CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set | 1913 | # CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set |
1914 | # CONFIG_USB_SERIAL_ZIO is not set | ||
1843 | # CONFIG_USB_SERIAL_DEBUG is not set | 1915 | # CONFIG_USB_SERIAL_DEBUG is not set |
1844 | 1916 | ||
1845 | # | 1917 | # |
@@ -1991,6 +2063,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1991 | # CONFIG_RTC_DRV_BQ4802 is not set | 2063 | # CONFIG_RTC_DRV_BQ4802 is not set |
1992 | # CONFIG_RTC_DRV_RP5C01 is not set | 2064 | # CONFIG_RTC_DRV_RP5C01 is not set |
1993 | # CONFIG_RTC_DRV_V3020 is not set | 2065 | # CONFIG_RTC_DRV_V3020 is not set |
2066 | # CONFIG_RTC_DRV_PCF50633 is not set | ||
1994 | 2067 | ||
1995 | # | 2068 | # |
1996 | # on-CPU RTC drivers | 2069 | # on-CPU RTC drivers |
@@ -1999,10 +2072,6 @@ CONFIG_RTC_DRV_S3C=y | |||
1999 | # CONFIG_DMADEVICES is not set | 2072 | # CONFIG_DMADEVICES is not set |
2000 | # CONFIG_AUXDISPLAY is not set | 2073 | # CONFIG_AUXDISPLAY is not set |
2001 | # CONFIG_UIO is not set | 2074 | # CONFIG_UIO is not set |
2002 | |||
2003 | # | ||
2004 | # TI VLYNQ | ||
2005 | # | ||
2006 | # CONFIG_STAGING is not set | 2075 | # CONFIG_STAGING is not set |
2007 | 2076 | ||
2008 | # | 2077 | # |
@@ -2274,6 +2343,7 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
2274 | CONFIG_TRACING_SUPPORT=y | 2343 | CONFIG_TRACING_SUPPORT=y |
2275 | CONFIG_FTRACE=y | 2344 | CONFIG_FTRACE=y |
2276 | # CONFIG_FUNCTION_TRACER is not set | 2345 | # CONFIG_FUNCTION_TRACER is not set |
2346 | # CONFIG_IRQSOFF_TRACER is not set | ||
2277 | # CONFIG_SCHED_TRACER is not set | 2347 | # CONFIG_SCHED_TRACER is not set |
2278 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 2348 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
2279 | # CONFIG_BOOT_TRACER is not set | 2349 | # CONFIG_BOOT_TRACER is not set |
@@ -2284,6 +2354,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
2284 | # CONFIG_KMEMTRACE is not set | 2354 | # CONFIG_KMEMTRACE is not set |
2285 | # CONFIG_WORKQUEUE_TRACER is not set | 2355 | # CONFIG_WORKQUEUE_TRACER is not set |
2286 | # CONFIG_BLK_DEV_IO_TRACE is not set | 2356 | # CONFIG_BLK_DEV_IO_TRACE is not set |
2357 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
2287 | # CONFIG_SAMPLES is not set | 2358 | # CONFIG_SAMPLES is not set |
2288 | CONFIG_HAVE_ARCH_KGDB=y | 2359 | CONFIG_HAVE_ARCH_KGDB=y |
2289 | # CONFIG_KGDB is not set | 2360 | # CONFIG_KGDB is not set |
diff --git a/arch/arm/configs/s3c6400_defconfig b/arch/arm/configs/s3c6400_defconfig index a3a9993e5cd0..2b642386f030 100644 --- a/arch/arm/configs/s3c6400_defconfig +++ b/arch/arm/configs/s3c6400_defconfig | |||
@@ -1,11 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Sat May 22 03:17:32 2010 | 4 | # Fri May 28 19:05:39 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_HAVE_PWM=y | ||
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 8 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 9 | CONFIG_GENERIC_GPIO=y |
10 | CONFIG_GENERIC_TIME=y | ||
11 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
9 | CONFIG_HAVE_PROC_CPU=y | 12 | CONFIG_HAVE_PROC_CPU=y |
10 | CONFIG_NO_IOPORT=y | 13 | CONFIG_NO_IOPORT=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
@@ -34,6 +37,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
34 | CONFIG_LOCALVERSION="" | 37 | CONFIG_LOCALVERSION="" |
35 | CONFIG_LOCALVERSION_AUTO=y | 38 | CONFIG_LOCALVERSION_AUTO=y |
36 | CONFIG_HAVE_KERNEL_GZIP=y | 39 | CONFIG_HAVE_KERNEL_GZIP=y |
40 | CONFIG_HAVE_KERNEL_LZMA=y | ||
37 | CONFIG_HAVE_KERNEL_LZO=y | 41 | CONFIG_HAVE_KERNEL_LZO=y |
38 | CONFIG_KERNEL_GZIP=y | 42 | CONFIG_KERNEL_GZIP=y |
39 | # CONFIG_KERNEL_BZIP2 is not set | 43 | # CONFIG_KERNEL_BZIP2 is not set |
@@ -179,9 +183,11 @@ CONFIG_MMU=y | |||
179 | # CONFIG_ARCH_INTEGRATOR is not set | 183 | # CONFIG_ARCH_INTEGRATOR is not set |
180 | # CONFIG_ARCH_REALVIEW is not set | 184 | # CONFIG_ARCH_REALVIEW is not set |
181 | # CONFIG_ARCH_VERSATILE is not set | 185 | # CONFIG_ARCH_VERSATILE is not set |
186 | # CONFIG_ARCH_VEXPRESS is not set | ||
182 | # CONFIG_ARCH_AT91 is not set | 187 | # CONFIG_ARCH_AT91 is not set |
183 | # CONFIG_ARCH_BCMRING is not set | 188 | # CONFIG_ARCH_BCMRING is not set |
184 | # CONFIG_ARCH_CLPS711X is not set | 189 | # CONFIG_ARCH_CLPS711X is not set |
190 | # CONFIG_ARCH_CNS3XXX is not set | ||
185 | # CONFIG_ARCH_GEMINI is not set | 191 | # CONFIG_ARCH_GEMINI is not set |
186 | # CONFIG_ARCH_EBSA110 is not set | 192 | # CONFIG_ARCH_EBSA110 is not set |
187 | # CONFIG_ARCH_EP93XX is not set | 193 | # CONFIG_ARCH_EP93XX is not set |
@@ -217,7 +223,7 @@ CONFIG_MMU=y | |||
217 | CONFIG_ARCH_S3C64XX=y | 223 | CONFIG_ARCH_S3C64XX=y |
218 | # CONFIG_ARCH_S5P6440 is not set | 224 | # CONFIG_ARCH_S5P6440 is not set |
219 | # CONFIG_ARCH_S5P6442 is not set | 225 | # CONFIG_ARCH_S5P6442 is not set |
220 | # CONFIG_ARCH_S5PC1XX is not set | 226 | # CONFIG_ARCH_S5PC100 is not set |
221 | # CONFIG_ARCH_S5PV210 is not set | 227 | # CONFIG_ARCH_S5PV210 is not set |
222 | # CONFIG_ARCH_SHARK is not set | 228 | # CONFIG_ARCH_SHARK is not set |
223 | # CONFIG_ARCH_LH7A40X is not set | 229 | # CONFIG_ARCH_LH7A40X is not set |
@@ -226,6 +232,7 @@ CONFIG_ARCH_S3C64XX=y | |||
226 | # CONFIG_ARCH_NOMADIK is not set | 232 | # CONFIG_ARCH_NOMADIK is not set |
227 | # CONFIG_ARCH_DAVINCI is not set | 233 | # CONFIG_ARCH_DAVINCI is not set |
228 | # CONFIG_ARCH_OMAP is not set | 234 | # CONFIG_ARCH_OMAP is not set |
235 | # CONFIG_PLAT_SPEAR is not set | ||
229 | CONFIG_PLAT_SAMSUNG=y | 236 | CONFIG_PLAT_SAMSUNG=y |
230 | 237 | ||
231 | # | 238 | # |
@@ -247,11 +254,17 @@ CONFIG_S3C_GPIO_TRACK=y | |||
247 | # CONFIG_S3C_ADC is not set | 254 | # CONFIG_S3C_ADC is not set |
248 | CONFIG_S3C_DEV_HSMMC=y | 255 | CONFIG_S3C_DEV_HSMMC=y |
249 | CONFIG_S3C_DEV_HSMMC1=y | 256 | CONFIG_S3C_DEV_HSMMC1=y |
257 | CONFIG_S3C_DEV_HSMMC2=y | ||
258 | CONFIG_S3C_DEV_HWMON=y | ||
250 | CONFIG_S3C_DEV_I2C1=y | 259 | CONFIG_S3C_DEV_I2C1=y |
251 | CONFIG_S3C_DEV_FB=y | 260 | CONFIG_S3C_DEV_FB=y |
252 | CONFIG_S3C_DEV_USB_HOST=y | 261 | CONFIG_S3C_DEV_USB_HOST=y |
253 | CONFIG_S3C_DEV_USB_HSOTG=y | 262 | CONFIG_S3C_DEV_USB_HSOTG=y |
263 | CONFIG_S3C_DEV_WDT=y | ||
254 | CONFIG_S3C_DEV_NAND=y | 264 | CONFIG_S3C_DEV_NAND=y |
265 | CONFIG_S3C_DEV_RTC=y | ||
266 | CONFIG_SAMSUNG_DEV_ADC=y | ||
267 | CONFIG_SAMSUNG_DEV_TS=y | ||
255 | CONFIG_S3C_DMA=y | 268 | CONFIG_S3C_DMA=y |
256 | 269 | ||
257 | # | 270 | # |
@@ -260,7 +273,9 @@ CONFIG_S3C_DMA=y | |||
260 | # CONFIG_SAMSUNG_PM_DEBUG is not set | 273 | # CONFIG_SAMSUNG_PM_DEBUG is not set |
261 | # CONFIG_S3C_PM_DEBUG_LED_SMDK is not set | 274 | # CONFIG_S3C_PM_DEBUG_LED_SMDK is not set |
262 | # CONFIG_SAMSUNG_PM_CHECK is not set | 275 | # CONFIG_SAMSUNG_PM_CHECK is not set |
276 | CONFIG_SAMSUNG_WAKEMASK=y | ||
263 | CONFIG_PLAT_S3C64XX=y | 277 | CONFIG_PLAT_S3C64XX=y |
278 | CONFIG_CPU_S3C6400=y | ||
264 | CONFIG_CPU_S3C6410=y | 279 | CONFIG_CPU_S3C6410=y |
265 | CONFIG_S3C64XX_DMA=y | 280 | CONFIG_S3C64XX_DMA=y |
266 | CONFIG_S3C64XX_SETUP_SDHCI=y | 281 | CONFIG_S3C64XX_SETUP_SDHCI=y |
@@ -268,15 +283,18 @@ CONFIG_S3C64XX_SETUP_I2C0=y | |||
268 | CONFIG_S3C64XX_SETUP_I2C1=y | 283 | CONFIG_S3C64XX_SETUP_I2C1=y |
269 | CONFIG_S3C64XX_SETUP_FB_24BPP=y | 284 | CONFIG_S3C64XX_SETUP_FB_24BPP=y |
270 | CONFIG_S3C64XX_SETUP_SDHCI_GPIO=y | 285 | CONFIG_S3C64XX_SETUP_SDHCI_GPIO=y |
271 | # CONFIG_MACH_SMDK6400 is not set | 286 | CONFIG_MACH_SMDK6400=y |
272 | # CONFIG_MACH_ANW6410 is not set | 287 | CONFIG_MACH_ANW6410=y |
273 | CONFIG_MACH_SMDK6410=y | 288 | CONFIG_MACH_SMDK6410=y |
274 | CONFIG_SMDK6410_SD_CH0=y | 289 | CONFIG_SMDK6410_SD_CH0=y |
275 | # CONFIG_SMDK6410_SD_CH1 is not set | 290 | # CONFIG_SMDK6410_SD_CH1 is not set |
276 | # CONFIG_SMDK6410_WM1190_EV1 is not set | 291 | # CONFIG_SMDK6410_WM1190_EV1 is not set |
277 | # CONFIG_SMDK6410_WM1192_EV1 is not set | 292 | # CONFIG_SMDK6410_WM1192_EV1 is not set |
278 | # CONFIG_MACH_NCP is not set | 293 | CONFIG_MACH_NCP=y |
279 | # CONFIG_MACH_HMT is not set | 294 | CONFIG_MACH_HMT=y |
295 | CONFIG_MACH_SMARTQ=y | ||
296 | CONFIG_MACH_SMARTQ5=y | ||
297 | CONFIG_MACH_SMARTQ7=y | ||
280 | 298 | ||
281 | # | 299 | # |
282 | # Processor Type | 300 | # Processor Type |
@@ -302,6 +320,7 @@ CONFIG_ARM_THUMB=y | |||
302 | # CONFIG_CPU_DCACHE_DISABLE is not set | 320 | # CONFIG_CPU_DCACHE_DISABLE is not set |
303 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 321 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
304 | CONFIG_ARM_L1_CACHE_SHIFT=5 | 322 | CONFIG_ARM_L1_CACHE_SHIFT=5 |
323 | CONFIG_ARM_DMA_MEM_BUFFERABLE=y | ||
305 | CONFIG_CPU_HAS_PMU=y | 324 | CONFIG_CPU_HAS_PMU=y |
306 | # CONFIG_ARM_ERRATA_411920 is not set | 325 | # CONFIG_ARM_ERRATA_411920 is not set |
307 | CONFIG_ARM_VIC=y | 326 | CONFIG_ARM_VIC=y |
@@ -352,6 +371,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
352 | CONFIG_ZBOOT_ROM_TEXT=0 | 371 | CONFIG_ZBOOT_ROM_TEXT=0 |
353 | CONFIG_ZBOOT_ROM_BSS=0 | 372 | CONFIG_ZBOOT_ROM_BSS=0 |
354 | CONFIG_CMDLINE="console=ttySAC0,115200 root=/dev/ram init=/linuxrc initrd=0x51000000,6M ramdisk_size=6144" | 373 | CONFIG_CMDLINE="console=ttySAC0,115200 root=/dev/ram init=/linuxrc initrd=0x51000000,6M ramdisk_size=6144" |
374 | # CONFIG_CMDLINE_FORCE is not set | ||
355 | # CONFIG_XIP_KERNEL is not set | 375 | # CONFIG_XIP_KERNEL is not set |
356 | # CONFIG_KEXEC is not set | 376 | # CONFIG_KEXEC is not set |
357 | 377 | ||
@@ -430,6 +450,7 @@ CONFIG_MTD=y | |||
430 | # CONFIG_INFTL is not set | 450 | # CONFIG_INFTL is not set |
431 | # CONFIG_RFD_FTL is not set | 451 | # CONFIG_RFD_FTL is not set |
432 | # CONFIG_SSFDC is not set | 452 | # CONFIG_SSFDC is not set |
453 | # CONFIG_SM_FTL is not set | ||
433 | # CONFIG_MTD_OOPS is not set | 454 | # CONFIG_MTD_OOPS is not set |
434 | 455 | ||
435 | # | 456 | # |
@@ -460,6 +481,9 @@ CONFIG_MTD_CFI_I2=y | |||
460 | # | 481 | # |
461 | # Self-contained MTD device drivers | 482 | # Self-contained MTD device drivers |
462 | # | 483 | # |
484 | # CONFIG_MTD_DATAFLASH is not set | ||
485 | # CONFIG_MTD_M25P80 is not set | ||
486 | # CONFIG_MTD_SST25L is not set | ||
463 | # CONFIG_MTD_SLRAM is not set | 487 | # CONFIG_MTD_SLRAM is not set |
464 | # CONFIG_MTD_PHRAM is not set | 488 | # CONFIG_MTD_PHRAM is not set |
465 | # CONFIG_MTD_MTDRAM is not set | 489 | # CONFIG_MTD_MTDRAM is not set |
@@ -472,9 +496,12 @@ CONFIG_MTD_CFI_I2=y | |||
472 | # CONFIG_MTD_DOC2001 is not set | 496 | # CONFIG_MTD_DOC2001 is not set |
473 | # CONFIG_MTD_DOC2001PLUS is not set | 497 | # CONFIG_MTD_DOC2001PLUS is not set |
474 | CONFIG_MTD_NAND=y | 498 | CONFIG_MTD_NAND=y |
475 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | 499 | CONFIG_MTD_NAND_ECC=y |
476 | # CONFIG_MTD_NAND_ECC_SMC is not set | 500 | # CONFIG_MTD_NAND_ECC_SMC is not set |
501 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
502 | # CONFIG_MTD_SM_COMMON is not set | ||
477 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | 503 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set |
504 | CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 | ||
478 | # CONFIG_MTD_NAND_GPIO is not set | 505 | # CONFIG_MTD_NAND_GPIO is not set |
479 | CONFIG_MTD_NAND_IDS=y | 506 | CONFIG_MTD_NAND_IDS=y |
480 | CONFIG_MTD_NAND_S3C2410=y | 507 | CONFIG_MTD_NAND_S3C2410=y |
@@ -483,6 +510,7 @@ CONFIG_MTD_NAND_S3C2410=y | |||
483 | # CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set | 510 | # CONFIG_MTD_NAND_S3C2410_CLKSTOP is not set |
484 | # CONFIG_MTD_NAND_DISKONCHIP is not set | 511 | # CONFIG_MTD_NAND_DISKONCHIP is not set |
485 | # CONFIG_MTD_NAND_PLATFORM is not set | 512 | # CONFIG_MTD_NAND_PLATFORM is not set |
513 | # CONFIG_MTD_ALAUDA is not set | ||
486 | # CONFIG_MTD_ONENAND is not set | 514 | # CONFIG_MTD_ONENAND is not set |
487 | 515 | ||
488 | # | 516 | # |
@@ -503,6 +531,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
503 | # | 531 | # |
504 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | 532 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected |
505 | # | 533 | # |
534 | # CONFIG_BLK_DEV_UB is not set | ||
506 | CONFIG_BLK_DEV_RAM=y | 535 | CONFIG_BLK_DEV_RAM=y |
507 | CONFIG_BLK_DEV_RAM_COUNT=16 | 536 | CONFIG_BLK_DEV_RAM_COUNT=16 |
508 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 537 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
@@ -516,12 +545,14 @@ CONFIG_MISC_DEVICES=y | |||
516 | # CONFIG_ISL29003 is not set | 545 | # CONFIG_ISL29003 is not set |
517 | # CONFIG_SENSORS_TSL2550 is not set | 546 | # CONFIG_SENSORS_TSL2550 is not set |
518 | # CONFIG_DS1682 is not set | 547 | # CONFIG_DS1682 is not set |
548 | # CONFIG_TI_DAC7512 is not set | ||
519 | # CONFIG_C2PORT is not set | 549 | # CONFIG_C2PORT is not set |
520 | 550 | ||
521 | # | 551 | # |
522 | # EEPROM support | 552 | # EEPROM support |
523 | # | 553 | # |
524 | CONFIG_EEPROM_AT24=y | 554 | CONFIG_EEPROM_AT24=y |
555 | # CONFIG_EEPROM_AT25 is not set | ||
525 | # CONFIG_EEPROM_LEGACY is not set | 556 | # CONFIG_EEPROM_LEGACY is not set |
526 | # CONFIG_EEPROM_MAX6875 is not set | 557 | # CONFIG_EEPROM_MAX6875 is not set |
527 | # CONFIG_EEPROM_93CX6 is not set | 558 | # CONFIG_EEPROM_93CX6 is not set |
@@ -569,6 +600,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
569 | # CONFIG_QT2160 is not set | 600 | # CONFIG_QT2160 is not set |
570 | # CONFIG_KEYBOARD_LKKBD is not set | 601 | # CONFIG_KEYBOARD_LKKBD is not set |
571 | # CONFIG_KEYBOARD_GPIO is not set | 602 | # CONFIG_KEYBOARD_GPIO is not set |
603 | # CONFIG_KEYBOARD_TCA6416 is not set | ||
572 | # CONFIG_KEYBOARD_MATRIX is not set | 604 | # CONFIG_KEYBOARD_MATRIX is not set |
573 | # CONFIG_KEYBOARD_MAX7359 is not set | 605 | # CONFIG_KEYBOARD_MAX7359 is not set |
574 | # CONFIG_KEYBOARD_NEWTON is not set | 606 | # CONFIG_KEYBOARD_NEWTON is not set |
@@ -635,9 +667,12 @@ CONFIG_SERIAL_SAMSUNG_UARTS=4 | |||
635 | # CONFIG_SERIAL_SAMSUNG_DEBUG is not set | 667 | # CONFIG_SERIAL_SAMSUNG_DEBUG is not set |
636 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y | 668 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y |
637 | CONFIG_SERIAL_S3C6400=y | 669 | CONFIG_SERIAL_S3C6400=y |
670 | # CONFIG_SERIAL_MAX3100 is not set | ||
638 | CONFIG_SERIAL_CORE=y | 671 | CONFIG_SERIAL_CORE=y |
639 | CONFIG_SERIAL_CORE_CONSOLE=y | 672 | CONFIG_SERIAL_CORE_CONSOLE=y |
640 | # CONFIG_SERIAL_TIMBERDALE is not set | 673 | # CONFIG_SERIAL_TIMBERDALE is not set |
674 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
675 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
641 | CONFIG_UNIX98_PTYS=y | 676 | CONFIG_UNIX98_PTYS=y |
642 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 677 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
643 | CONFIG_LEGACY_PTYS=y | 678 | CONFIG_LEGACY_PTYS=y |
@@ -673,6 +708,7 @@ CONFIG_I2C_S3C2410=y | |||
673 | # | 708 | # |
674 | # CONFIG_I2C_PARPORT_LIGHT is not set | 709 | # CONFIG_I2C_PARPORT_LIGHT is not set |
675 | # CONFIG_I2C_TAOS_EVM is not set | 710 | # CONFIG_I2C_TAOS_EVM is not set |
711 | # CONFIG_I2C_TINY_USB is not set | ||
676 | 712 | ||
677 | # | 713 | # |
678 | # Other I2C/SMBus bus drivers | 714 | # Other I2C/SMBus bus drivers |
@@ -682,7 +718,24 @@ CONFIG_I2C_S3C2410=y | |||
682 | # CONFIG_I2C_DEBUG_CORE is not set | 718 | # CONFIG_I2C_DEBUG_CORE is not set |
683 | # CONFIG_I2C_DEBUG_ALGO is not set | 719 | # CONFIG_I2C_DEBUG_ALGO is not set |
684 | # CONFIG_I2C_DEBUG_BUS is not set | 720 | # CONFIG_I2C_DEBUG_BUS is not set |
685 | # CONFIG_SPI is not set | 721 | CONFIG_SPI=y |
722 | # CONFIG_SPI_DEBUG is not set | ||
723 | CONFIG_SPI_MASTER=y | ||
724 | |||
725 | # | ||
726 | # SPI Master Controller Drivers | ||
727 | # | ||
728 | CONFIG_SPI_BITBANG=m | ||
729 | CONFIG_SPI_GPIO=m | ||
730 | CONFIG_SPI_S3C64XX=m | ||
731 | # CONFIG_SPI_XILINX is not set | ||
732 | # CONFIG_SPI_DESIGNWARE is not set | ||
733 | |||
734 | # | ||
735 | # SPI Protocol Masters | ||
736 | # | ||
737 | # CONFIG_SPI_SPIDEV is not set | ||
738 | # CONFIG_SPI_TLE62X0 is not set | ||
686 | 739 | ||
687 | # | 740 | # |
688 | # PPS support | 741 | # PPS support |
@@ -714,6 +767,9 @@ CONFIG_GPIOLIB=y | |||
714 | # | 767 | # |
715 | # SPI GPIO expanders: | 768 | # SPI GPIO expanders: |
716 | # | 769 | # |
770 | # CONFIG_GPIO_MAX7301 is not set | ||
771 | # CONFIG_GPIO_MCP23S08 is not set | ||
772 | # CONFIG_GPIO_MC33880 is not set | ||
717 | 773 | ||
718 | # | 774 | # |
719 | # AC97 GPIO expanders: | 775 | # AC97 GPIO expanders: |
@@ -729,6 +785,7 @@ CONFIG_HWMON=y | |||
729 | # | 785 | # |
730 | # CONFIG_SENSORS_AD7414 is not set | 786 | # CONFIG_SENSORS_AD7414 is not set |
731 | # CONFIG_SENSORS_AD7418 is not set | 787 | # CONFIG_SENSORS_AD7418 is not set |
788 | # CONFIG_SENSORS_ADCXX is not set | ||
732 | # CONFIG_SENSORS_ADM1021 is not set | 789 | # CONFIG_SENSORS_ADM1021 is not set |
733 | # CONFIG_SENSORS_ADM1025 is not set | 790 | # CONFIG_SENSORS_ADM1025 is not set |
734 | # CONFIG_SENSORS_ADM1026 is not set | 791 | # CONFIG_SENSORS_ADM1026 is not set |
@@ -750,6 +807,7 @@ CONFIG_HWMON=y | |||
750 | # CONFIG_SENSORS_GL520SM is not set | 807 | # CONFIG_SENSORS_GL520SM is not set |
751 | # CONFIG_SENSORS_IT87 is not set | 808 | # CONFIG_SENSORS_IT87 is not set |
752 | # CONFIG_SENSORS_LM63 is not set | 809 | # CONFIG_SENSORS_LM63 is not set |
810 | # CONFIG_SENSORS_LM70 is not set | ||
753 | # CONFIG_SENSORS_LM73 is not set | 811 | # CONFIG_SENSORS_LM73 is not set |
754 | # CONFIG_SENSORS_LM75 is not set | 812 | # CONFIG_SENSORS_LM75 is not set |
755 | # CONFIG_SENSORS_LM77 is not set | 813 | # CONFIG_SENSORS_LM77 is not set |
@@ -764,6 +822,7 @@ CONFIG_HWMON=y | |||
764 | # CONFIG_SENSORS_LTC4215 is not set | 822 | # CONFIG_SENSORS_LTC4215 is not set |
765 | # CONFIG_SENSORS_LTC4245 is not set | 823 | # CONFIG_SENSORS_LTC4245 is not set |
766 | # CONFIG_SENSORS_LM95241 is not set | 824 | # CONFIG_SENSORS_LM95241 is not set |
825 | # CONFIG_SENSORS_MAX1111 is not set | ||
767 | # CONFIG_SENSORS_MAX1619 is not set | 826 | # CONFIG_SENSORS_MAX1619 is not set |
768 | # CONFIG_SENSORS_MAX6650 is not set | 827 | # CONFIG_SENSORS_MAX6650 is not set |
769 | # CONFIG_SENSORS_PC87360 is not set | 828 | # CONFIG_SENSORS_PC87360 is not set |
@@ -775,6 +834,7 @@ CONFIG_HWMON=y | |||
775 | # CONFIG_SENSORS_SMSC47M192 is not set | 834 | # CONFIG_SENSORS_SMSC47M192 is not set |
776 | # CONFIG_SENSORS_SMSC47B397 is not set | 835 | # CONFIG_SENSORS_SMSC47B397 is not set |
777 | # CONFIG_SENSORS_ADS7828 is not set | 836 | # CONFIG_SENSORS_ADS7828 is not set |
837 | # CONFIG_SENSORS_ADS7871 is not set | ||
778 | # CONFIG_SENSORS_AMC6821 is not set | 838 | # CONFIG_SENSORS_AMC6821 is not set |
779 | # CONFIG_SENSORS_THMC50 is not set | 839 | # CONFIG_SENSORS_THMC50 is not set |
780 | # CONFIG_SENSORS_TMP401 is not set | 840 | # CONFIG_SENSORS_TMP401 is not set |
@@ -788,9 +848,11 @@ CONFIG_HWMON=y | |||
788 | # CONFIG_SENSORS_W83L786NG is not set | 848 | # CONFIG_SENSORS_W83L786NG is not set |
789 | # CONFIG_SENSORS_W83627HF is not set | 849 | # CONFIG_SENSORS_W83627HF is not set |
790 | # CONFIG_SENSORS_W83627EHF is not set | 850 | # CONFIG_SENSORS_W83627EHF is not set |
851 | # CONFIG_SENSORS_LIS3_SPI is not set | ||
791 | # CONFIG_SENSORS_LIS3_I2C is not set | 852 | # CONFIG_SENSORS_LIS3_I2C is not set |
792 | # CONFIG_THERMAL is not set | 853 | # CONFIG_THERMAL is not set |
793 | # CONFIG_WATCHDOG is not set | 854 | # CONFIG_WATCHDOG is not set |
855 | CONFIG_HAVE_S3C2410_WATCHDOG=y | ||
794 | CONFIG_SSB_POSSIBLE=y | 856 | CONFIG_SSB_POSSIBLE=y |
795 | 857 | ||
796 | # | 858 | # |
@@ -823,7 +885,10 @@ CONFIG_SSB_POSSIBLE=y | |||
823 | # CONFIG_MFD_WM8350_I2C is not set | 885 | # CONFIG_MFD_WM8350_I2C is not set |
824 | # CONFIG_MFD_WM8994 is not set | 886 | # CONFIG_MFD_WM8994 is not set |
825 | # CONFIG_MFD_PCF50633 is not set | 887 | # CONFIG_MFD_PCF50633 is not set |
888 | # CONFIG_MFD_MC13783 is not set | ||
826 | # CONFIG_AB3100_CORE is not set | 889 | # CONFIG_AB3100_CORE is not set |
890 | # CONFIG_EZX_PCAP is not set | ||
891 | # CONFIG_AB4500_CORE is not set | ||
827 | # CONFIG_REGULATOR is not set | 892 | # CONFIG_REGULATOR is not set |
828 | # CONFIG_MEDIA_SUPPORT is not set | 893 | # CONFIG_MEDIA_SUPPORT is not set |
829 | 894 | ||
@@ -832,8 +897,47 @@ CONFIG_SSB_POSSIBLE=y | |||
832 | # | 897 | # |
833 | # CONFIG_VGASTATE is not set | 898 | # CONFIG_VGASTATE is not set |
834 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 899 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
835 | # CONFIG_FB is not set | 900 | CONFIG_FB=y |
836 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 901 | # CONFIG_FIRMWARE_EDID is not set |
902 | # CONFIG_FB_DDC is not set | ||
903 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
904 | CONFIG_FB_CFB_FILLRECT=y | ||
905 | CONFIG_FB_CFB_COPYAREA=y | ||
906 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
907 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
908 | # CONFIG_FB_SYS_FILLRECT is not set | ||
909 | # CONFIG_FB_SYS_COPYAREA is not set | ||
910 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
911 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
912 | # CONFIG_FB_SYS_FOPS is not set | ||
913 | # CONFIG_FB_SVGALIB is not set | ||
914 | # CONFIG_FB_MACMODES is not set | ||
915 | # CONFIG_FB_BACKLIGHT is not set | ||
916 | # CONFIG_FB_MODE_HELPERS is not set | ||
917 | # CONFIG_FB_TILEBLITTING is not set | ||
918 | |||
919 | # | ||
920 | # Frame buffer hardware drivers | ||
921 | # | ||
922 | # CONFIG_FB_S1D13XXX is not set | ||
923 | CONFIG_FB_S3C=y | ||
924 | # CONFIG_FB_S3C_DEBUG_REGWRITE is not set | ||
925 | # CONFIG_FB_VIRTUAL is not set | ||
926 | # CONFIG_FB_METRONOME is not set | ||
927 | # CONFIG_FB_MB862XX is not set | ||
928 | # CONFIG_FB_BROADSHEET is not set | ||
929 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
930 | CONFIG_LCD_CLASS_DEVICE=y | ||
931 | # CONFIG_LCD_L4F00242T03 is not set | ||
932 | # CONFIG_LCD_LMS283GF05 is not set | ||
933 | CONFIG_LCD_LTV350QV=y | ||
934 | # CONFIG_LCD_ILI9320 is not set | ||
935 | # CONFIG_LCD_TDO24M is not set | ||
936 | # CONFIG_LCD_VGG2432A4 is not set | ||
937 | # CONFIG_LCD_PLATFORM is not set | ||
938 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
939 | CONFIG_BACKLIGHT_GENERIC=y | ||
940 | CONFIG_BACKLIGHT_PWM=y | ||
837 | 941 | ||
838 | # | 942 | # |
839 | # Display device support | 943 | # Display device support |
@@ -845,6 +949,8 @@ CONFIG_SSB_POSSIBLE=y | |||
845 | # | 949 | # |
846 | # CONFIG_VGA_CONSOLE is not set | 950 | # CONFIG_VGA_CONSOLE is not set |
847 | CONFIG_DUMMY_CONSOLE=y | 951 | CONFIG_DUMMY_CONSOLE=y |
952 | # CONFIG_FRAMEBUFFER_CONSOLE is not set | ||
953 | # CONFIG_LOGO is not set | ||
848 | CONFIG_SOUND=y | 954 | CONFIG_SOUND=y |
849 | CONFIG_SOUND_OSS_CORE=y | 955 | CONFIG_SOUND_OSS_CORE=y |
850 | CONFIG_SOUND_OSS_CORE_PRECLAIM=y | 956 | CONFIG_SOUND_OSS_CORE_PRECLAIM=y |
@@ -873,10 +979,16 @@ CONFIG_SND_DRIVERS=y | |||
873 | # CONFIG_SND_SERIAL_U16550 is not set | 979 | # CONFIG_SND_SERIAL_U16550 is not set |
874 | # CONFIG_SND_MPU401 is not set | 980 | # CONFIG_SND_MPU401 is not set |
875 | CONFIG_SND_ARM=y | 981 | CONFIG_SND_ARM=y |
982 | CONFIG_SND_SPI=y | ||
983 | CONFIG_SND_USB=y | ||
984 | # CONFIG_SND_USB_AUDIO is not set | ||
985 | # CONFIG_SND_USB_UA101 is not set | ||
986 | # CONFIG_SND_USB_CAIAQ is not set | ||
876 | CONFIG_SND_SOC=m | 987 | CONFIG_SND_SOC=m |
877 | CONFIG_SND_SOC_AC97_BUS=y | 988 | CONFIG_SND_SOC_AC97_BUS=y |
878 | CONFIG_SND_S3C24XX_SOC=m | 989 | CONFIG_SND_S3C24XX_SOC=m |
879 | CONFIG_SND_S3C_SOC_AC97=m | 990 | CONFIG_SND_S3C_SOC_AC97=m |
991 | # CONFIG_SND_S3C64XX_SOC_WM8580 is not set | ||
880 | CONFIG_SND_SOC_SMDK_WM9713=m | 992 | CONFIG_SND_SOC_SMDK_WM9713=m |
881 | CONFIG_SND_SOC_I2C_AND_SPI=m | 993 | CONFIG_SND_SOC_I2C_AND_SPI=m |
882 | # CONFIG_SND_SOC_ALL_CODECS is not set | 994 | # CONFIG_SND_SOC_ALL_CODECS is not set |
@@ -886,29 +998,197 @@ CONFIG_AC97_BUS=m | |||
886 | CONFIG_HID_SUPPORT=y | 998 | CONFIG_HID_SUPPORT=y |
887 | CONFIG_HID=y | 999 | CONFIG_HID=y |
888 | # CONFIG_HIDRAW is not set | 1000 | # CONFIG_HIDRAW is not set |
1001 | |||
1002 | # | ||
1003 | # USB Input Devices | ||
1004 | # | ||
1005 | CONFIG_USB_HID=y | ||
889 | # CONFIG_HID_PID is not set | 1006 | # CONFIG_HID_PID is not set |
1007 | # CONFIG_USB_HIDDEV is not set | ||
890 | 1008 | ||
891 | # | 1009 | # |
892 | # Special HID drivers | 1010 | # Special HID drivers |
893 | # | 1011 | # |
1012 | # CONFIG_HID_3M_PCT is not set | ||
1013 | CONFIG_HID_A4TECH=y | ||
1014 | CONFIG_HID_APPLE=y | ||
1015 | CONFIG_HID_BELKIN=y | ||
1016 | # CONFIG_HID_CANDO is not set | ||
1017 | CONFIG_HID_CHERRY=y | ||
1018 | CONFIG_HID_CHICONY=y | ||
1019 | # CONFIG_HID_PRODIKEYS is not set | ||
1020 | CONFIG_HID_CYPRESS=y | ||
1021 | # CONFIG_HID_DRAGONRISE is not set | ||
1022 | # CONFIG_HID_EGALAX is not set | ||
1023 | CONFIG_HID_EZKEY=y | ||
1024 | CONFIG_HID_KYE=y | ||
1025 | # CONFIG_HID_GYRATION is not set | ||
1026 | # CONFIG_HID_TWINHAN is not set | ||
1027 | CONFIG_HID_KENSINGTON=y | ||
1028 | CONFIG_HID_LOGITECH=y | ||
1029 | # CONFIG_LOGITECH_FF is not set | ||
1030 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | ||
1031 | # CONFIG_LOGIG940_FF is not set | ||
1032 | CONFIG_HID_MICROSOFT=y | ||
1033 | # CONFIG_HID_MOSART is not set | ||
1034 | CONFIG_HID_MONTEREY=y | ||
1035 | # CONFIG_HID_NTRIG is not set | ||
1036 | # CONFIG_HID_ORTEK is not set | ||
1037 | # CONFIG_HID_PANTHERLORD is not set | ||
1038 | # CONFIG_HID_PETALYNX is not set | ||
1039 | # CONFIG_HID_PICOLCD is not set | ||
1040 | # CONFIG_HID_QUANTA is not set | ||
1041 | # CONFIG_HID_ROCCAT_KONE is not set | ||
1042 | # CONFIG_HID_SAMSUNG is not set | ||
1043 | # CONFIG_HID_SONY is not set | ||
1044 | # CONFIG_HID_STANTUM is not set | ||
1045 | # CONFIG_HID_SUNPLUS is not set | ||
1046 | # CONFIG_HID_GREENASIA is not set | ||
1047 | # CONFIG_HID_SMARTJOYPLUS is not set | ||
1048 | # CONFIG_HID_TOPSEED is not set | ||
1049 | # CONFIG_HID_THRUSTMASTER is not set | ||
1050 | # CONFIG_HID_ZEROPLUS is not set | ||
1051 | # CONFIG_HID_ZYDACRON is not set | ||
894 | CONFIG_USB_SUPPORT=y | 1052 | CONFIG_USB_SUPPORT=y |
895 | CONFIG_USB_ARCH_HAS_HCD=y | 1053 | CONFIG_USB_ARCH_HAS_HCD=y |
896 | CONFIG_USB_ARCH_HAS_OHCI=y | 1054 | CONFIG_USB_ARCH_HAS_OHCI=y |
897 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 1055 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
898 | # CONFIG_USB is not set | 1056 | CONFIG_USB=y |
1057 | # CONFIG_USB_DEBUG is not set | ||
1058 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
899 | 1059 | ||
900 | # | 1060 | # |
901 | # Enable Host or Gadget support to see Inventra options | 1061 | # Miscellaneous USB options |
902 | # | 1062 | # |
1063 | CONFIG_USB_DEVICEFS=y | ||
1064 | CONFIG_USB_DEVICE_CLASS=y | ||
1065 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
1066 | # CONFIG_USB_MON is not set | ||
1067 | # CONFIG_USB_WUSB is not set | ||
1068 | # CONFIG_USB_WUSB_CBAF is not set | ||
1069 | |||
1070 | # | ||
1071 | # USB Host Controller Drivers | ||
1072 | # | ||
1073 | # CONFIG_USB_C67X00_HCD is not set | ||
1074 | # CONFIG_USB_OXU210HP_HCD is not set | ||
1075 | # CONFIG_USB_ISP116X_HCD is not set | ||
1076 | # CONFIG_USB_ISP1760_HCD is not set | ||
1077 | # CONFIG_USB_ISP1362_HCD is not set | ||
1078 | CONFIG_USB_OHCI_HCD=y | ||
1079 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | ||
1080 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
1081 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
1082 | # CONFIG_USB_SL811_HCD is not set | ||
1083 | # CONFIG_USB_R8A66597_HCD is not set | ||
1084 | # CONFIG_USB_HWA_HCD is not set | ||
1085 | # CONFIG_USB_MUSB_HDRC is not set | ||
1086 | |||
1087 | # | ||
1088 | # USB Device Class drivers | ||
1089 | # | ||
1090 | CONFIG_USB_ACM=m | ||
1091 | CONFIG_USB_PRINTER=m | ||
1092 | # CONFIG_USB_WDM is not set | ||
1093 | # CONFIG_USB_TMC is not set | ||
903 | 1094 | ||
904 | # | 1095 | # |
905 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | 1096 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may |
906 | # | 1097 | # |
1098 | |||
1099 | # | ||
1100 | # also be needed; see USB_STORAGE Help for more info | ||
1101 | # | ||
1102 | # CONFIG_USB_LIBUSUAL is not set | ||
1103 | |||
1104 | # | ||
1105 | # USB Imaging devices | ||
1106 | # | ||
1107 | # CONFIG_USB_MDC800 is not set | ||
1108 | |||
1109 | # | ||
1110 | # USB port drivers | ||
1111 | # | ||
1112 | CONFIG_USB_SERIAL=m | ||
1113 | # CONFIG_USB_EZUSB is not set | ||
1114 | CONFIG_USB_SERIAL_GENERIC=y | ||
1115 | # CONFIG_USB_SERIAL_AIRCABLE is not set | ||
1116 | # CONFIG_USB_SERIAL_ARK3116 is not set | ||
1117 | # CONFIG_USB_SERIAL_BELKIN is not set | ||
1118 | # CONFIG_USB_SERIAL_CH341 is not set | ||
1119 | # CONFIG_USB_SERIAL_WHITEHEAT is not set | ||
1120 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set | ||
1121 | # CONFIG_USB_SERIAL_CP210X is not set | ||
1122 | # CONFIG_USB_SERIAL_CYPRESS_M8 is not set | ||
1123 | CONFIG_USB_SERIAL_EMPEG=m | ||
1124 | CONFIG_USB_SERIAL_FTDI_SIO=m | ||
1125 | # CONFIG_USB_SERIAL_FUNSOFT is not set | ||
1126 | # CONFIG_USB_SERIAL_VISOR is not set | ||
1127 | # CONFIG_USB_SERIAL_IPAQ is not set | ||
1128 | # CONFIG_USB_SERIAL_IR is not set | ||
1129 | # CONFIG_USB_SERIAL_EDGEPORT is not set | ||
1130 | # CONFIG_USB_SERIAL_EDGEPORT_TI is not set | ||
1131 | # CONFIG_USB_SERIAL_GARMIN is not set | ||
1132 | # CONFIG_USB_SERIAL_IPW is not set | ||
1133 | # CONFIG_USB_SERIAL_IUU is not set | ||
1134 | # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set | ||
1135 | # CONFIG_USB_SERIAL_KEYSPAN is not set | ||
1136 | # CONFIG_USB_SERIAL_KLSI is not set | ||
1137 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | ||
1138 | # CONFIG_USB_SERIAL_MCT_U232 is not set | ||
1139 | # CONFIG_USB_SERIAL_MOS7720 is not set | ||
1140 | # CONFIG_USB_SERIAL_MOS7840 is not set | ||
1141 | # CONFIG_USB_SERIAL_MOTOROLA is not set | ||
1142 | # CONFIG_USB_SERIAL_NAVMAN is not set | ||
1143 | CONFIG_USB_SERIAL_PL2303=m | ||
1144 | # CONFIG_USB_SERIAL_OTI6858 is not set | ||
1145 | # CONFIG_USB_SERIAL_QCAUX is not set | ||
1146 | # CONFIG_USB_SERIAL_QUALCOMM is not set | ||
1147 | # CONFIG_USB_SERIAL_SPCP8X5 is not set | ||
1148 | # CONFIG_USB_SERIAL_HP4X is not set | ||
1149 | # CONFIG_USB_SERIAL_SAFE is not set | ||
1150 | # CONFIG_USB_SERIAL_SIEMENS_MPI is not set | ||
1151 | # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set | ||
1152 | # CONFIG_USB_SERIAL_SYMBOL is not set | ||
1153 | # CONFIG_USB_SERIAL_TI is not set | ||
1154 | # CONFIG_USB_SERIAL_CYBERJACK is not set | ||
1155 | # CONFIG_USB_SERIAL_XIRCOM is not set | ||
1156 | # CONFIG_USB_SERIAL_OPTION is not set | ||
1157 | # CONFIG_USB_SERIAL_OMNINET is not set | ||
1158 | # CONFIG_USB_SERIAL_OPTICON is not set | ||
1159 | # CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set | ||
1160 | # CONFIG_USB_SERIAL_ZIO is not set | ||
1161 | # CONFIG_USB_SERIAL_DEBUG is not set | ||
1162 | |||
1163 | # | ||
1164 | # USB Miscellaneous drivers | ||
1165 | # | ||
1166 | # CONFIG_USB_EMI62 is not set | ||
1167 | # CONFIG_USB_EMI26 is not set | ||
1168 | # CONFIG_USB_ADUTUX is not set | ||
1169 | # CONFIG_USB_SEVSEG is not set | ||
1170 | # CONFIG_USB_RIO500 is not set | ||
1171 | # CONFIG_USB_LEGOTOWER is not set | ||
1172 | # CONFIG_USB_LCD is not set | ||
1173 | # CONFIG_USB_LED is not set | ||
1174 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1175 | # CONFIG_USB_CYTHERM is not set | ||
1176 | # CONFIG_USB_IDMOUSE is not set | ||
1177 | # CONFIG_USB_FTDI_ELAN is not set | ||
1178 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1179 | # CONFIG_USB_LD is not set | ||
1180 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1181 | # CONFIG_USB_IOWARRIOR is not set | ||
1182 | # CONFIG_USB_TEST is not set | ||
1183 | # CONFIG_USB_ISIGHTFW is not set | ||
907 | # CONFIG_USB_GADGET is not set | 1184 | # CONFIG_USB_GADGET is not set |
908 | 1185 | ||
909 | # | 1186 | # |
910 | # OTG and related infrastructure | 1187 | # OTG and related infrastructure |
911 | # | 1188 | # |
1189 | # CONFIG_USB_GPIO_VBUS is not set | ||
1190 | # CONFIG_USB_ULPI is not set | ||
1191 | # CONFIG_NOP_USB_XCEIV is not set | ||
912 | CONFIG_MMC=y | 1192 | CONFIG_MMC=y |
913 | CONFIG_MMC_DEBUG=y | 1193 | CONFIG_MMC_DEBUG=y |
914 | CONFIG_MMC_UNSAFE_RESUME=y | 1194 | CONFIG_MMC_UNSAFE_RESUME=y |
@@ -928,18 +1208,80 @@ CONFIG_MMC_SDHCI=y | |||
928 | # CONFIG_MMC_SDHCI_PLTFM is not set | 1208 | # CONFIG_MMC_SDHCI_PLTFM is not set |
929 | CONFIG_MMC_SDHCI_S3C=y | 1209 | CONFIG_MMC_SDHCI_S3C=y |
930 | # CONFIG_MMC_SDHCI_S3C_DMA is not set | 1210 | # CONFIG_MMC_SDHCI_S3C_DMA is not set |
1211 | # CONFIG_MMC_SPI is not set | ||
931 | # CONFIG_MEMSTICK is not set | 1212 | # CONFIG_MEMSTICK is not set |
932 | # CONFIG_NEW_LEDS is not set | 1213 | # CONFIG_NEW_LEDS is not set |
933 | # CONFIG_ACCESSIBILITY is not set | 1214 | # CONFIG_ACCESSIBILITY is not set |
934 | CONFIG_RTC_LIB=y | 1215 | CONFIG_RTC_LIB=y |
935 | # CONFIG_RTC_CLASS is not set | 1216 | CONFIG_RTC_CLASS=y |
1217 | CONFIG_RTC_HCTOSYS=y | ||
1218 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
1219 | # CONFIG_RTC_DEBUG is not set | ||
1220 | |||
1221 | # | ||
1222 | # RTC interfaces | ||
1223 | # | ||
1224 | CONFIG_RTC_INTF_SYSFS=y | ||
1225 | CONFIG_RTC_INTF_PROC=y | ||
1226 | CONFIG_RTC_INTF_DEV=y | ||
1227 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
1228 | # CONFIG_RTC_DRV_TEST is not set | ||
1229 | |||
1230 | # | ||
1231 | # I2C RTC drivers | ||
1232 | # | ||
1233 | # CONFIG_RTC_DRV_DS1307 is not set | ||
1234 | # CONFIG_RTC_DRV_DS1374 is not set | ||
1235 | # CONFIG_RTC_DRV_DS1672 is not set | ||
1236 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
1237 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
1238 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
1239 | # CONFIG_RTC_DRV_X1205 is not set | ||
1240 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
1241 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
1242 | # CONFIG_RTC_DRV_M41T80 is not set | ||
1243 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1244 | # CONFIG_RTC_DRV_S35390A is not set | ||
1245 | # CONFIG_RTC_DRV_FM3130 is not set | ||
1246 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1247 | # CONFIG_RTC_DRV_RX8025 is not set | ||
1248 | |||
1249 | # | ||
1250 | # SPI RTC drivers | ||
1251 | # | ||
1252 | # CONFIG_RTC_DRV_M41T94 is not set | ||
1253 | # CONFIG_RTC_DRV_DS1305 is not set | ||
1254 | # CONFIG_RTC_DRV_DS1390 is not set | ||
1255 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
1256 | # CONFIG_RTC_DRV_R9701 is not set | ||
1257 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
1258 | # CONFIG_RTC_DRV_DS3234 is not set | ||
1259 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
1260 | |||
1261 | # | ||
1262 | # Platform RTC drivers | ||
1263 | # | ||
1264 | # CONFIG_RTC_DRV_CMOS is not set | ||
1265 | # CONFIG_RTC_DRV_DS1286 is not set | ||
1266 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1267 | # CONFIG_RTC_DRV_DS1553 is not set | ||
1268 | # CONFIG_RTC_DRV_DS1742 is not set | ||
1269 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1270 | # CONFIG_RTC_DRV_M48T86 is not set | ||
1271 | # CONFIG_RTC_DRV_M48T35 is not set | ||
1272 | # CONFIG_RTC_DRV_M48T59 is not set | ||
1273 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1274 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
1275 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1276 | # CONFIG_RTC_DRV_V3020 is not set | ||
1277 | |||
1278 | # | ||
1279 | # on-CPU RTC drivers | ||
1280 | # | ||
1281 | CONFIG_RTC_DRV_S3C=y | ||
936 | # CONFIG_DMADEVICES is not set | 1282 | # CONFIG_DMADEVICES is not set |
937 | # CONFIG_AUXDISPLAY is not set | 1283 | # CONFIG_AUXDISPLAY is not set |
938 | # CONFIG_UIO is not set | 1284 | # CONFIG_UIO is not set |
939 | |||
940 | # | ||
941 | # TI VLYNQ | ||
942 | # | ||
943 | # CONFIG_STAGING is not set | 1285 | # CONFIG_STAGING is not set |
944 | 1286 | ||
945 | # | 1287 | # |
@@ -1033,7 +1375,46 @@ CONFIG_ROMFS_ON_BLOCK=y | |||
1033 | # | 1375 | # |
1034 | # CONFIG_PARTITION_ADVANCED is not set | 1376 | # CONFIG_PARTITION_ADVANCED is not set |
1035 | CONFIG_MSDOS_PARTITION=y | 1377 | CONFIG_MSDOS_PARTITION=y |
1036 | # CONFIG_NLS is not set | 1378 | CONFIG_NLS=y |
1379 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1380 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
1381 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1382 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1383 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
1384 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1385 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1386 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1387 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1388 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1389 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1390 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1391 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1392 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1393 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1394 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1395 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1396 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1397 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1398 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1399 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1400 | # CONFIG_NLS_ISO8859_8 is not set | ||
1401 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1402 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1403 | # CONFIG_NLS_ASCII is not set | ||
1404 | # CONFIG_NLS_ISO8859_1 is not set | ||
1405 | # CONFIG_NLS_ISO8859_2 is not set | ||
1406 | # CONFIG_NLS_ISO8859_3 is not set | ||
1407 | # CONFIG_NLS_ISO8859_4 is not set | ||
1408 | # CONFIG_NLS_ISO8859_5 is not set | ||
1409 | # CONFIG_NLS_ISO8859_6 is not set | ||
1410 | # CONFIG_NLS_ISO8859_7 is not set | ||
1411 | # CONFIG_NLS_ISO8859_9 is not set | ||
1412 | # CONFIG_NLS_ISO8859_13 is not set | ||
1413 | # CONFIG_NLS_ISO8859_14 is not set | ||
1414 | # CONFIG_NLS_ISO8859_15 is not set | ||
1415 | # CONFIG_NLS_KOI8_R is not set | ||
1416 | # CONFIG_NLS_KOI8_U is not set | ||
1417 | # CONFIG_NLS_UTF8 is not set | ||
1037 | 1418 | ||
1038 | # | 1419 | # |
1039 | # Kernel hacking | 1420 | # Kernel hacking |
@@ -1096,6 +1477,7 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
1096 | CONFIG_TRACING_SUPPORT=y | 1477 | CONFIG_TRACING_SUPPORT=y |
1097 | CONFIG_FTRACE=y | 1478 | CONFIG_FTRACE=y |
1098 | # CONFIG_FUNCTION_TRACER is not set | 1479 | # CONFIG_FUNCTION_TRACER is not set |
1480 | # CONFIG_IRQSOFF_TRACER is not set | ||
1099 | # CONFIG_SCHED_TRACER is not set | 1481 | # CONFIG_SCHED_TRACER is not set |
1100 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 1482 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
1101 | # CONFIG_BOOT_TRACER is not set | 1483 | # CONFIG_BOOT_TRACER is not set |
@@ -1106,6 +1488,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
1106 | # CONFIG_KMEMTRACE is not set | 1488 | # CONFIG_KMEMTRACE is not set |
1107 | # CONFIG_WORKQUEUE_TRACER is not set | 1489 | # CONFIG_WORKQUEUE_TRACER is not set |
1108 | # CONFIG_BLK_DEV_IO_TRACE is not set | 1490 | # CONFIG_BLK_DEV_IO_TRACE is not set |
1491 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
1109 | # CONFIG_SAMPLES is not set | 1492 | # CONFIG_SAMPLES is not set |
1110 | CONFIG_HAVE_ARCH_KGDB=y | 1493 | CONFIG_HAVE_ARCH_KGDB=y |
1111 | # CONFIG_KGDB is not set | 1494 | # CONFIG_KGDB is not set |
diff --git a/arch/arm/configs/s5p6440_defconfig b/arch/arm/configs/s5p6440_defconfig index 619bfab3ab39..532e987beb4d 100644 --- a/arch/arm/configs/s5p6440_defconfig +++ b/arch/arm/configs/s5p6440_defconfig | |||
@@ -1,11 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Sat May 22 03:18:18 2010 | 4 | # Wed May 26 19:04:32 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
9 | CONFIG_HAVE_PROC_CPU=y | 11 | CONFIG_HAVE_PROC_CPU=y |
10 | CONFIG_NO_IOPORT=y | 12 | CONFIG_NO_IOPORT=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
@@ -33,6 +35,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
33 | CONFIG_LOCALVERSION="" | 35 | CONFIG_LOCALVERSION="" |
34 | CONFIG_LOCALVERSION_AUTO=y | 36 | CONFIG_LOCALVERSION_AUTO=y |
35 | CONFIG_HAVE_KERNEL_GZIP=y | 37 | CONFIG_HAVE_KERNEL_GZIP=y |
38 | CONFIG_HAVE_KERNEL_LZMA=y | ||
36 | CONFIG_HAVE_KERNEL_LZO=y | 39 | CONFIG_HAVE_KERNEL_LZO=y |
37 | CONFIG_KERNEL_GZIP=y | 40 | CONFIG_KERNEL_GZIP=y |
38 | # CONFIG_KERNEL_BZIP2 is not set | 41 | # CONFIG_KERNEL_BZIP2 is not set |
@@ -178,9 +181,11 @@ CONFIG_MMU=y | |||
178 | # CONFIG_ARCH_INTEGRATOR is not set | 181 | # CONFIG_ARCH_INTEGRATOR is not set |
179 | # CONFIG_ARCH_REALVIEW is not set | 182 | # CONFIG_ARCH_REALVIEW is not set |
180 | # CONFIG_ARCH_VERSATILE is not set | 183 | # CONFIG_ARCH_VERSATILE is not set |
184 | # CONFIG_ARCH_VEXPRESS is not set | ||
181 | # CONFIG_ARCH_AT91 is not set | 185 | # CONFIG_ARCH_AT91 is not set |
182 | # CONFIG_ARCH_BCMRING is not set | 186 | # CONFIG_ARCH_BCMRING is not set |
183 | # CONFIG_ARCH_CLPS711X is not set | 187 | # CONFIG_ARCH_CLPS711X is not set |
188 | # CONFIG_ARCH_CNS3XXX is not set | ||
184 | # CONFIG_ARCH_GEMINI is not set | 189 | # CONFIG_ARCH_GEMINI is not set |
185 | # CONFIG_ARCH_EBSA110 is not set | 190 | # CONFIG_ARCH_EBSA110 is not set |
186 | # CONFIG_ARCH_EP93XX is not set | 191 | # CONFIG_ARCH_EP93XX is not set |
@@ -216,7 +221,7 @@ CONFIG_MMU=y | |||
216 | # CONFIG_ARCH_S3C64XX is not set | 221 | # CONFIG_ARCH_S3C64XX is not set |
217 | CONFIG_ARCH_S5P6440=y | 222 | CONFIG_ARCH_S5P6440=y |
218 | # CONFIG_ARCH_S5P6442 is not set | 223 | # CONFIG_ARCH_S5P6442 is not set |
219 | # CONFIG_ARCH_S5PC1XX is not set | 224 | # CONFIG_ARCH_S5PC100 is not set |
220 | # CONFIG_ARCH_S5PV210 is not set | 225 | # CONFIG_ARCH_S5PV210 is not set |
221 | # CONFIG_ARCH_SHARK is not set | 226 | # CONFIG_ARCH_SHARK is not set |
222 | # CONFIG_ARCH_LH7A40X is not set | 227 | # CONFIG_ARCH_LH7A40X is not set |
@@ -225,6 +230,7 @@ CONFIG_ARCH_S5P6440=y | |||
225 | # CONFIG_ARCH_NOMADIK is not set | 230 | # CONFIG_ARCH_NOMADIK is not set |
226 | # CONFIG_ARCH_DAVINCI is not set | 231 | # CONFIG_ARCH_DAVINCI is not set |
227 | # CONFIG_ARCH_OMAP is not set | 232 | # CONFIG_ARCH_OMAP is not set |
233 | # CONFIG_PLAT_SPEAR is not set | ||
228 | CONFIG_PLAT_SAMSUNG=y | 234 | CONFIG_PLAT_SAMSUNG=y |
229 | 235 | ||
230 | # | 236 | # |
@@ -240,10 +246,15 @@ CONFIG_SAMSUNG_GPIOLIB_4BIT=y | |||
240 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | 246 | CONFIG_S3C_GPIO_CFG_S3C24XX=y |
241 | CONFIG_S3C_GPIO_CFG_S3C64XX=y | 247 | CONFIG_S3C_GPIO_CFG_S3C64XX=y |
242 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | 248 | CONFIG_S3C_GPIO_PULL_UPDOWN=y |
249 | CONFIG_S5P_GPIO_DRVSTR=y | ||
243 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | 250 | CONFIG_SAMSUNG_GPIO_EXTRA=0 |
244 | CONFIG_S3C_GPIO_SPACE=0 | 251 | CONFIG_S3C_GPIO_SPACE=0 |
245 | CONFIG_S3C_GPIO_TRACK=y | 252 | CONFIG_S3C_GPIO_TRACK=y |
246 | # CONFIG_S3C_ADC is not set | 253 | # CONFIG_S3C_ADC is not set |
254 | CONFIG_S3C_DEV_WDT=y | ||
255 | CONFIG_SAMSUNG_DEV_ADC=y | ||
256 | CONFIG_SAMSUNG_DEV_TS=y | ||
257 | CONFIG_S3C_PL330_DMA=y | ||
247 | 258 | ||
248 | # | 259 | # |
249 | # Power management | 260 | # Power management |
@@ -276,10 +287,12 @@ CONFIG_ARM_THUMB=y | |||
276 | # CONFIG_CPU_DCACHE_DISABLE is not set | 287 | # CONFIG_CPU_DCACHE_DISABLE is not set |
277 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 288 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
278 | CONFIG_ARM_L1_CACHE_SHIFT=5 | 289 | CONFIG_ARM_L1_CACHE_SHIFT=5 |
290 | CONFIG_ARM_DMA_MEM_BUFFERABLE=y | ||
279 | CONFIG_CPU_HAS_PMU=y | 291 | CONFIG_CPU_HAS_PMU=y |
280 | # CONFIG_ARM_ERRATA_411920 is not set | 292 | # CONFIG_ARM_ERRATA_411920 is not set |
281 | CONFIG_ARM_VIC=y | 293 | CONFIG_ARM_VIC=y |
282 | CONFIG_ARM_VIC_NR=2 | 294 | CONFIG_ARM_VIC_NR=2 |
295 | CONFIG_PL330=y | ||
283 | 296 | ||
284 | # | 297 | # |
285 | # Bus support | 298 | # Bus support |
@@ -326,6 +339,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
326 | CONFIG_ZBOOT_ROM_TEXT=0 | 339 | CONFIG_ZBOOT_ROM_TEXT=0 |
327 | CONFIG_ZBOOT_ROM_BSS=0 | 340 | CONFIG_ZBOOT_ROM_BSS=0 |
328 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" | 341 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" |
342 | # CONFIG_CMDLINE_FORCE is not set | ||
329 | # CONFIG_XIP_KERNEL is not set | 343 | # CONFIG_XIP_KERNEL is not set |
330 | # CONFIG_KEXEC is not set | 344 | # CONFIG_KEXEC is not set |
331 | 345 | ||
@@ -490,7 +504,9 @@ CONFIG_MOUSE_PS2_TRACKPOINT=y | |||
490 | CONFIG_INPUT_TOUCHSCREEN=y | 504 | CONFIG_INPUT_TOUCHSCREEN=y |
491 | # CONFIG_TOUCHSCREEN_AD7879 is not set | 505 | # CONFIG_TOUCHSCREEN_AD7879 is not set |
492 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | 506 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set |
507 | # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set | ||
493 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 508 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
509 | # CONFIG_TOUCHSCREEN_S3C2410 is not set | ||
494 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 510 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
495 | # CONFIG_TOUCHSCREEN_ELO is not set | 511 | # CONFIG_TOUCHSCREEN_ELO is not set |
496 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set | 512 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set |
@@ -546,6 +562,8 @@ CONFIG_SERIAL_S3C6400=y | |||
546 | CONFIG_SERIAL_CORE=y | 562 | CONFIG_SERIAL_CORE=y |
547 | CONFIG_SERIAL_CORE_CONSOLE=y | 563 | CONFIG_SERIAL_CORE_CONSOLE=y |
548 | # CONFIG_SERIAL_TIMBERDALE is not set | 564 | # CONFIG_SERIAL_TIMBERDALE is not set |
565 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
566 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
549 | CONFIG_UNIX98_PTYS=y | 567 | CONFIG_UNIX98_PTYS=y |
550 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 568 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
551 | CONFIG_LEGACY_PTYS=y | 569 | CONFIG_LEGACY_PTYS=y |
@@ -593,6 +611,7 @@ CONFIG_GPIOLIB=y | |||
593 | # CONFIG_HWMON is not set | 611 | # CONFIG_HWMON is not set |
594 | # CONFIG_THERMAL is not set | 612 | # CONFIG_THERMAL is not set |
595 | # CONFIG_WATCHDOG is not set | 613 | # CONFIG_WATCHDOG is not set |
614 | CONFIG_HAVE_S3C2410_WATCHDOG=y | ||
596 | CONFIG_SSB_POSSIBLE=y | 615 | CONFIG_SSB_POSSIBLE=y |
597 | 616 | ||
598 | # | 617 | # |
@@ -649,10 +668,6 @@ CONFIG_RTC_LIB=y | |||
649 | # CONFIG_DMADEVICES is not set | 668 | # CONFIG_DMADEVICES is not set |
650 | # CONFIG_AUXDISPLAY is not set | 669 | # CONFIG_AUXDISPLAY is not set |
651 | # CONFIG_UIO is not set | 670 | # CONFIG_UIO is not set |
652 | |||
653 | # | ||
654 | # TI VLYNQ | ||
655 | # | ||
656 | # CONFIG_STAGING is not set | 671 | # CONFIG_STAGING is not set |
657 | 672 | ||
658 | # | 673 | # |
@@ -850,6 +865,7 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
850 | CONFIG_TRACING_SUPPORT=y | 865 | CONFIG_TRACING_SUPPORT=y |
851 | CONFIG_FTRACE=y | 866 | CONFIG_FTRACE=y |
852 | # CONFIG_FUNCTION_TRACER is not set | 867 | # CONFIG_FUNCTION_TRACER is not set |
868 | # CONFIG_IRQSOFF_TRACER is not set | ||
853 | # CONFIG_SCHED_TRACER is not set | 869 | # CONFIG_SCHED_TRACER is not set |
854 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 870 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
855 | # CONFIG_BOOT_TRACER is not set | 871 | # CONFIG_BOOT_TRACER is not set |
@@ -860,6 +876,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
860 | # CONFIG_KMEMTRACE is not set | 876 | # CONFIG_KMEMTRACE is not set |
861 | # CONFIG_WORKQUEUE_TRACER is not set | 877 | # CONFIG_WORKQUEUE_TRACER is not set |
862 | # CONFIG_BLK_DEV_IO_TRACE is not set | 878 | # CONFIG_BLK_DEV_IO_TRACE is not set |
879 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
863 | # CONFIG_SAMPLES is not set | 880 | # CONFIG_SAMPLES is not set |
864 | CONFIG_HAVE_ARCH_KGDB=y | 881 | CONFIG_HAVE_ARCH_KGDB=y |
865 | # CONFIG_KGDB is not set | 882 | # CONFIG_KGDB is not set |
diff --git a/arch/arm/configs/s5p6442_defconfig b/arch/arm/configs/s5p6442_defconfig index d7ea27509cf4..068219b360f5 100644 --- a/arch/arm/configs/s5p6442_defconfig +++ b/arch/arm/configs/s5p6442_defconfig | |||
@@ -1,11 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Sat May 22 03:18:19 2010 | 4 | # Wed May 26 19:04:34 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
9 | CONFIG_HAVE_PROC_CPU=y | 11 | CONFIG_HAVE_PROC_CPU=y |
10 | CONFIG_NO_IOPORT=y | 12 | CONFIG_NO_IOPORT=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
@@ -33,6 +35,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
33 | CONFIG_LOCALVERSION="" | 35 | CONFIG_LOCALVERSION="" |
34 | CONFIG_LOCALVERSION_AUTO=y | 36 | CONFIG_LOCALVERSION_AUTO=y |
35 | CONFIG_HAVE_KERNEL_GZIP=y | 37 | CONFIG_HAVE_KERNEL_GZIP=y |
38 | CONFIG_HAVE_KERNEL_LZMA=y | ||
36 | CONFIG_HAVE_KERNEL_LZO=y | 39 | CONFIG_HAVE_KERNEL_LZO=y |
37 | CONFIG_KERNEL_GZIP=y | 40 | CONFIG_KERNEL_GZIP=y |
38 | # CONFIG_KERNEL_BZIP2 is not set | 41 | # CONFIG_KERNEL_BZIP2 is not set |
@@ -178,9 +181,11 @@ CONFIG_MMU=y | |||
178 | # CONFIG_ARCH_INTEGRATOR is not set | 181 | # CONFIG_ARCH_INTEGRATOR is not set |
179 | # CONFIG_ARCH_REALVIEW is not set | 182 | # CONFIG_ARCH_REALVIEW is not set |
180 | # CONFIG_ARCH_VERSATILE is not set | 183 | # CONFIG_ARCH_VERSATILE is not set |
184 | # CONFIG_ARCH_VEXPRESS is not set | ||
181 | # CONFIG_ARCH_AT91 is not set | 185 | # CONFIG_ARCH_AT91 is not set |
182 | # CONFIG_ARCH_BCMRING is not set | 186 | # CONFIG_ARCH_BCMRING is not set |
183 | # CONFIG_ARCH_CLPS711X is not set | 187 | # CONFIG_ARCH_CLPS711X is not set |
188 | # CONFIG_ARCH_CNS3XXX is not set | ||
184 | # CONFIG_ARCH_GEMINI is not set | 189 | # CONFIG_ARCH_GEMINI is not set |
185 | # CONFIG_ARCH_EBSA110 is not set | 190 | # CONFIG_ARCH_EBSA110 is not set |
186 | # CONFIG_ARCH_EP93XX is not set | 191 | # CONFIG_ARCH_EP93XX is not set |
@@ -216,7 +221,7 @@ CONFIG_MMU=y | |||
216 | # CONFIG_ARCH_S3C64XX is not set | 221 | # CONFIG_ARCH_S3C64XX is not set |
217 | # CONFIG_ARCH_S5P6440 is not set | 222 | # CONFIG_ARCH_S5P6440 is not set |
218 | CONFIG_ARCH_S5P6442=y | 223 | CONFIG_ARCH_S5P6442=y |
219 | # CONFIG_ARCH_S5PC1XX is not set | 224 | # CONFIG_ARCH_S5PC100 is not set |
220 | # CONFIG_ARCH_S5PV210 is not set | 225 | # CONFIG_ARCH_S5PV210 is not set |
221 | # CONFIG_ARCH_SHARK is not set | 226 | # CONFIG_ARCH_SHARK is not set |
222 | # CONFIG_ARCH_LH7A40X is not set | 227 | # CONFIG_ARCH_LH7A40X is not set |
@@ -225,6 +230,7 @@ CONFIG_ARCH_S5P6442=y | |||
225 | # CONFIG_ARCH_NOMADIK is not set | 230 | # CONFIG_ARCH_NOMADIK is not set |
226 | # CONFIG_ARCH_DAVINCI is not set | 231 | # CONFIG_ARCH_DAVINCI is not set |
227 | # CONFIG_ARCH_OMAP is not set | 232 | # CONFIG_ARCH_OMAP is not set |
233 | # CONFIG_PLAT_SPEAR is not set | ||
228 | CONFIG_PLAT_SAMSUNG=y | 234 | CONFIG_PLAT_SAMSUNG=y |
229 | 235 | ||
230 | # | 236 | # |
@@ -240,10 +246,12 @@ CONFIG_SAMSUNG_GPIOLIB_4BIT=y | |||
240 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | 246 | CONFIG_S3C_GPIO_CFG_S3C24XX=y |
241 | CONFIG_S3C_GPIO_CFG_S3C64XX=y | 247 | CONFIG_S3C_GPIO_CFG_S3C64XX=y |
242 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | 248 | CONFIG_S3C_GPIO_PULL_UPDOWN=y |
249 | CONFIG_S5P_GPIO_DRVSTR=y | ||
243 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | 250 | CONFIG_SAMSUNG_GPIO_EXTRA=0 |
244 | CONFIG_S3C_GPIO_SPACE=0 | 251 | CONFIG_S3C_GPIO_SPACE=0 |
245 | CONFIG_S3C_GPIO_TRACK=y | 252 | CONFIG_S3C_GPIO_TRACK=y |
246 | # CONFIG_S3C_ADC is not set | 253 | # CONFIG_S3C_ADC is not set |
254 | CONFIG_S3C_PL330_DMA=y | ||
247 | 255 | ||
248 | # | 256 | # |
249 | # Power management | 257 | # Power management |
@@ -276,10 +284,12 @@ CONFIG_ARM_THUMB=y | |||
276 | # CONFIG_CPU_DCACHE_DISABLE is not set | 284 | # CONFIG_CPU_DCACHE_DISABLE is not set |
277 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 285 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
278 | CONFIG_ARM_L1_CACHE_SHIFT=5 | 286 | CONFIG_ARM_L1_CACHE_SHIFT=5 |
287 | CONFIG_ARM_DMA_MEM_BUFFERABLE=y | ||
279 | CONFIG_CPU_HAS_PMU=y | 288 | CONFIG_CPU_HAS_PMU=y |
280 | # CONFIG_ARM_ERRATA_411920 is not set | 289 | # CONFIG_ARM_ERRATA_411920 is not set |
281 | CONFIG_ARM_VIC=y | 290 | CONFIG_ARM_VIC=y |
282 | CONFIG_ARM_VIC_NR=2 | 291 | CONFIG_ARM_VIC_NR=2 |
292 | CONFIG_PL330=y | ||
283 | 293 | ||
284 | # | 294 | # |
285 | # Bus support | 295 | # Bus support |
@@ -326,6 +336,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
326 | CONFIG_ZBOOT_ROM_TEXT=0 | 336 | CONFIG_ZBOOT_ROM_TEXT=0 |
327 | CONFIG_ZBOOT_ROM_BSS=0 | 337 | CONFIG_ZBOOT_ROM_BSS=0 |
328 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" | 338 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" |
339 | # CONFIG_CMDLINE_FORCE is not set | ||
329 | # CONFIG_XIP_KERNEL is not set | 340 | # CONFIG_XIP_KERNEL is not set |
330 | # CONFIG_KEXEC is not set | 341 | # CONFIG_KEXEC is not set |
331 | 342 | ||
@@ -471,6 +482,7 @@ CONFIG_INPUT_EVDEV=y | |||
471 | CONFIG_INPUT_TOUCHSCREEN=y | 482 | CONFIG_INPUT_TOUCHSCREEN=y |
472 | # CONFIG_TOUCHSCREEN_AD7879 is not set | 483 | # CONFIG_TOUCHSCREEN_AD7879 is not set |
473 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | 484 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set |
485 | # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set | ||
474 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 486 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
475 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 487 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
476 | # CONFIG_TOUCHSCREEN_ELO is not set | 488 | # CONFIG_TOUCHSCREEN_ELO is not set |
@@ -525,6 +537,8 @@ CONFIG_SERIAL_S5PV210=y | |||
525 | CONFIG_SERIAL_CORE=y | 537 | CONFIG_SERIAL_CORE=y |
526 | CONFIG_SERIAL_CORE_CONSOLE=y | 538 | CONFIG_SERIAL_CORE_CONSOLE=y |
527 | # CONFIG_SERIAL_TIMBERDALE is not set | 539 | # CONFIG_SERIAL_TIMBERDALE is not set |
540 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
541 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
528 | CONFIG_UNIX98_PTYS=y | 542 | CONFIG_UNIX98_PTYS=y |
529 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 543 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
530 | CONFIG_LEGACY_PTYS=y | 544 | CONFIG_LEGACY_PTYS=y |
@@ -624,10 +638,6 @@ CONFIG_RTC_LIB=y | |||
624 | # CONFIG_DMADEVICES is not set | 638 | # CONFIG_DMADEVICES is not set |
625 | # CONFIG_AUXDISPLAY is not set | 639 | # CONFIG_AUXDISPLAY is not set |
626 | # CONFIG_UIO is not set | 640 | # CONFIG_UIO is not set |
627 | |||
628 | # | ||
629 | # TI VLYNQ | ||
630 | # | ||
631 | # CONFIG_STAGING is not set | 641 | # CONFIG_STAGING is not set |
632 | 642 | ||
633 | # | 643 | # |
@@ -836,6 +846,7 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
836 | CONFIG_TRACING_SUPPORT=y | 846 | CONFIG_TRACING_SUPPORT=y |
837 | CONFIG_FTRACE=y | 847 | CONFIG_FTRACE=y |
838 | # CONFIG_FUNCTION_TRACER is not set | 848 | # CONFIG_FUNCTION_TRACER is not set |
849 | # CONFIG_IRQSOFF_TRACER is not set | ||
839 | # CONFIG_SCHED_TRACER is not set | 850 | # CONFIG_SCHED_TRACER is not set |
840 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 851 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
841 | # CONFIG_BOOT_TRACER is not set | 852 | # CONFIG_BOOT_TRACER is not set |
@@ -846,6 +857,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
846 | # CONFIG_KMEMTRACE is not set | 857 | # CONFIG_KMEMTRACE is not set |
847 | # CONFIG_WORKQUEUE_TRACER is not set | 858 | # CONFIG_WORKQUEUE_TRACER is not set |
848 | # CONFIG_BLK_DEV_IO_TRACE is not set | 859 | # CONFIG_BLK_DEV_IO_TRACE is not set |
860 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
849 | # CONFIG_SAMPLES is not set | 861 | # CONFIG_SAMPLES is not set |
850 | CONFIG_HAVE_ARCH_KGDB=y | 862 | CONFIG_HAVE_ARCH_KGDB=y |
851 | # CONFIG_KGDB is not set | 863 | # CONFIG_KGDB is not set |
diff --git a/arch/arm/configs/s5pc100_defconfig b/arch/arm/configs/s5pc100_defconfig index 2053be6c9af1..ebc6245b9fca 100644 --- a/arch/arm/configs/s5pc100_defconfig +++ b/arch/arm/configs/s5pc100_defconfig | |||
@@ -1,12 +1,14 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.30 | 3 | # Linux kernel version: 2.6.34 |
4 | # Wed Jul 1 15:53:07 2009 | 4 | # Wed May 26 19:04:35 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_MMU=y | 9 | CONFIG_GENERIC_TIME=y |
10 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
11 | CONFIG_HAVE_PROC_CPU=y | ||
10 | CONFIG_NO_IOPORT=y | 12 | CONFIG_NO_IOPORT=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_STACKTRACE_SUPPORT=y | 14 | CONFIG_STACKTRACE_SUPPORT=y |
@@ -18,7 +20,9 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 20 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
19 | CONFIG_GENERIC_HWEIGHT=y | 21 | CONFIG_GENERIC_HWEIGHT=y |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 22 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
23 | CONFIG_NEED_DMA_MAP_STATE=y | ||
21 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 24 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
25 | CONFIG_ARM_L1_CACHE_SHIFT_6=y | ||
22 | CONFIG_VECTORS_BASE=0xffff0000 | 26 | CONFIG_VECTORS_BASE=0xffff0000 |
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
24 | CONFIG_CONSTRUCTORS=y | 28 | CONFIG_CONSTRUCTORS=y |
@@ -31,6 +35,13 @@ CONFIG_BROKEN_ON_SMP=y | |||
31 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 35 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
32 | CONFIG_LOCALVERSION="" | 36 | CONFIG_LOCALVERSION="" |
33 | CONFIG_LOCALVERSION_AUTO=y | 37 | CONFIG_LOCALVERSION_AUTO=y |
38 | CONFIG_HAVE_KERNEL_GZIP=y | ||
39 | CONFIG_HAVE_KERNEL_LZMA=y | ||
40 | CONFIG_HAVE_KERNEL_LZO=y | ||
41 | CONFIG_KERNEL_GZIP=y | ||
42 | # CONFIG_KERNEL_BZIP2 is not set | ||
43 | # CONFIG_KERNEL_LZMA is not set | ||
44 | # CONFIG_KERNEL_LZO is not set | ||
34 | CONFIG_SWAP=y | 45 | CONFIG_SWAP=y |
35 | # CONFIG_SYSVIPC is not set | 46 | # CONFIG_SYSVIPC is not set |
36 | # CONFIG_BSD_PROCESS_ACCT is not set | 47 | # CONFIG_BSD_PROCESS_ACCT is not set |
@@ -38,14 +49,15 @@ CONFIG_SWAP=y | |||
38 | # | 49 | # |
39 | # RCU Subsystem | 50 | # RCU Subsystem |
40 | # | 51 | # |
41 | CONFIG_CLASSIC_RCU=y | 52 | CONFIG_TREE_RCU=y |
42 | # CONFIG_TREE_RCU is not set | 53 | # CONFIG_TREE_PREEMPT_RCU is not set |
43 | # CONFIG_PREEMPT_RCU is not set | 54 | # CONFIG_TINY_RCU is not set |
55 | # CONFIG_RCU_TRACE is not set | ||
56 | CONFIG_RCU_FANOUT=32 | ||
57 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
44 | # CONFIG_TREE_RCU_TRACE is not set | 58 | # CONFIG_TREE_RCU_TRACE is not set |
45 | # CONFIG_PREEMPT_RCU_TRACE is not set | ||
46 | # CONFIG_IKCONFIG is not set | 59 | # CONFIG_IKCONFIG is not set |
47 | CONFIG_LOG_BUF_SHIFT=17 | 60 | CONFIG_LOG_BUF_SHIFT=17 |
48 | # CONFIG_GROUP_SCHED is not set | ||
49 | # CONFIG_CGROUPS is not set | 61 | # CONFIG_CGROUPS is not set |
50 | CONFIG_SYSFS_DEPRECATED=y | 62 | CONFIG_SYSFS_DEPRECATED=y |
51 | CONFIG_SYSFS_DEPRECATED_V2=y | 63 | CONFIG_SYSFS_DEPRECATED_V2=y |
@@ -59,6 +71,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
59 | CONFIG_RD_GZIP=y | 71 | CONFIG_RD_GZIP=y |
60 | CONFIG_RD_BZIP2=y | 72 | CONFIG_RD_BZIP2=y |
61 | CONFIG_RD_LZMA=y | 73 | CONFIG_RD_LZMA=y |
74 | CONFIG_RD_LZO=y | ||
62 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 75 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
63 | CONFIG_SYSCTL=y | 76 | CONFIG_SYSCTL=y |
64 | CONFIG_ANON_INODES=y | 77 | CONFIG_ANON_INODES=y |
@@ -80,19 +93,21 @@ CONFIG_TIMERFD=y | |||
80 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
81 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
82 | CONFIG_AIO=y | 95 | CONFIG_AIO=y |
96 | CONFIG_HAVE_PERF_EVENTS=y | ||
97 | CONFIG_PERF_USE_VMALLOC=y | ||
83 | 98 | ||
84 | # | 99 | # |
85 | # Performance Counters | 100 | # Kernel Performance Events And Counters |
86 | # | 101 | # |
102 | # CONFIG_PERF_EVENTS is not set | ||
103 | # CONFIG_PERF_COUNTERS is not set | ||
87 | CONFIG_VM_EVENT_COUNTERS=y | 104 | CONFIG_VM_EVENT_COUNTERS=y |
88 | CONFIG_SLUB_DEBUG=y | 105 | CONFIG_SLUB_DEBUG=y |
89 | # CONFIG_STRIP_ASM_SYMS is not set | ||
90 | CONFIG_COMPAT_BRK=y | 106 | CONFIG_COMPAT_BRK=y |
91 | # CONFIG_SLAB is not set | 107 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | 108 | CONFIG_SLUB=y |
93 | # CONFIG_SLOB is not set | 109 | # CONFIG_SLOB is not set |
94 | # CONFIG_PROFILING is not set | 110 | # CONFIG_PROFILING is not set |
95 | # CONFIG_MARKERS is not set | ||
96 | CONFIG_HAVE_OPROFILE=y | 111 | CONFIG_HAVE_OPROFILE=y |
97 | # CONFIG_KPROBES is not set | 112 | # CONFIG_KPROBES is not set |
98 | CONFIG_HAVE_KPROBES=y | 113 | CONFIG_HAVE_KPROBES=y |
@@ -122,25 +137,56 @@ CONFIG_LBDAF=y | |||
122 | # IO Schedulers | 137 | # IO Schedulers |
123 | # | 138 | # |
124 | CONFIG_IOSCHED_NOOP=y | 139 | CONFIG_IOSCHED_NOOP=y |
125 | CONFIG_IOSCHED_AS=y | ||
126 | CONFIG_IOSCHED_DEADLINE=y | 140 | CONFIG_IOSCHED_DEADLINE=y |
127 | CONFIG_IOSCHED_CFQ=y | 141 | CONFIG_IOSCHED_CFQ=y |
128 | # CONFIG_DEFAULT_AS is not set | ||
129 | # CONFIG_DEFAULT_DEADLINE is not set | 142 | # CONFIG_DEFAULT_DEADLINE is not set |
130 | CONFIG_DEFAULT_CFQ=y | 143 | CONFIG_DEFAULT_CFQ=y |
131 | # CONFIG_DEFAULT_NOOP is not set | 144 | # CONFIG_DEFAULT_NOOP is not set |
132 | CONFIG_DEFAULT_IOSCHED="cfq" | 145 | CONFIG_DEFAULT_IOSCHED="cfq" |
146 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
147 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
148 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
149 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
150 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
151 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
152 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
153 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
154 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
155 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
156 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
157 | # CONFIG_INLINE_READ_LOCK is not set | ||
158 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
159 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
160 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
161 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
162 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
163 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
164 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
165 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
166 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
167 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
168 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
169 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
170 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
171 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
172 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
173 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
174 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
133 | # CONFIG_FREEZER is not set | 175 | # CONFIG_FREEZER is not set |
134 | 176 | ||
135 | # | 177 | # |
136 | # System Type | 178 | # System Type |
137 | # | 179 | # |
180 | CONFIG_MMU=y | ||
138 | # CONFIG_ARCH_AAEC2000 is not set | 181 | # CONFIG_ARCH_AAEC2000 is not set |
139 | # CONFIG_ARCH_INTEGRATOR is not set | 182 | # CONFIG_ARCH_INTEGRATOR is not set |
140 | # CONFIG_ARCH_REALVIEW is not set | 183 | # CONFIG_ARCH_REALVIEW is not set |
141 | # CONFIG_ARCH_VERSATILE is not set | 184 | # CONFIG_ARCH_VERSATILE is not set |
185 | # CONFIG_ARCH_VEXPRESS is not set | ||
142 | # CONFIG_ARCH_AT91 is not set | 186 | # CONFIG_ARCH_AT91 is not set |
187 | # CONFIG_ARCH_BCMRING is not set | ||
143 | # CONFIG_ARCH_CLPS711X is not set | 188 | # CONFIG_ARCH_CLPS711X is not set |
189 | # CONFIG_ARCH_CNS3XXX is not set | ||
144 | # CONFIG_ARCH_GEMINI is not set | 190 | # CONFIG_ARCH_GEMINI is not set |
145 | # CONFIG_ARCH_EBSA110 is not set | 191 | # CONFIG_ARCH_EBSA110 is not set |
146 | # CONFIG_ARCH_EP93XX is not set | 192 | # CONFIG_ARCH_EP93XX is not set |
@@ -156,6 +202,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
156 | # CONFIG_ARCH_IXP2000 is not set | 202 | # CONFIG_ARCH_IXP2000 is not set |
157 | # CONFIG_ARCH_IXP4XX is not set | 203 | # CONFIG_ARCH_IXP4XX is not set |
158 | # CONFIG_ARCH_L7200 is not set | 204 | # CONFIG_ARCH_L7200 is not set |
205 | # CONFIG_ARCH_DOVE is not set | ||
159 | # CONFIG_ARCH_KIRKWOOD is not set | 206 | # CONFIG_ARCH_KIRKWOOD is not set |
160 | # CONFIG_ARCH_LOKI is not set | 207 | # CONFIG_ARCH_LOKI is not set |
161 | # CONFIG_ARCH_MV78XX0 is not set | 208 | # CONFIG_ARCH_MV78XX0 is not set |
@@ -164,39 +211,64 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
164 | # CONFIG_ARCH_KS8695 is not set | 211 | # CONFIG_ARCH_KS8695 is not set |
165 | # CONFIG_ARCH_NS9XXX is not set | 212 | # CONFIG_ARCH_NS9XXX is not set |
166 | # CONFIG_ARCH_W90X900 is not set | 213 | # CONFIG_ARCH_W90X900 is not set |
214 | # CONFIG_ARCH_NUC93X is not set | ||
167 | # CONFIG_ARCH_PNX4008 is not set | 215 | # CONFIG_ARCH_PNX4008 is not set |
168 | # CONFIG_ARCH_PXA is not set | 216 | # CONFIG_ARCH_PXA is not set |
169 | # CONFIG_ARCH_MSM is not set | 217 | # CONFIG_ARCH_MSM is not set |
218 | # CONFIG_ARCH_SHMOBILE is not set | ||
170 | # CONFIG_ARCH_RPC is not set | 219 | # CONFIG_ARCH_RPC is not set |
171 | # CONFIG_ARCH_SA1100 is not set | 220 | # CONFIG_ARCH_SA1100 is not set |
172 | # CONFIG_ARCH_S3C2410 is not set | 221 | # CONFIG_ARCH_S3C2410 is not set |
173 | # CONFIG_ARCH_S3C64XX is not set | 222 | # CONFIG_ARCH_S3C64XX is not set |
223 | # CONFIG_ARCH_S5P6440 is not set | ||
224 | # CONFIG_ARCH_S5P6442 is not set | ||
174 | CONFIG_ARCH_S5PC100=y | 225 | CONFIG_ARCH_S5PC100=y |
226 | # CONFIG_ARCH_S5PV210 is not set | ||
175 | # CONFIG_ARCH_SHARK is not set | 227 | # CONFIG_ARCH_SHARK is not set |
176 | # CONFIG_ARCH_LH7A40X is not set | 228 | # CONFIG_ARCH_LH7A40X is not set |
177 | # CONFIG_ARCH_U300 is not set | 229 | # CONFIG_ARCH_U300 is not set |
230 | # CONFIG_ARCH_U8500 is not set | ||
231 | # CONFIG_ARCH_NOMADIK is not set | ||
178 | # CONFIG_ARCH_DAVINCI is not set | 232 | # CONFIG_ARCH_DAVINCI is not set |
179 | # CONFIG_ARCH_OMAP is not set | 233 | # CONFIG_ARCH_OMAP is not set |
180 | CONFIG_PLAT_S3C=y | 234 | # CONFIG_PLAT_SPEAR is not set |
235 | CONFIG_PLAT_SAMSUNG=y | ||
181 | 236 | ||
182 | # | 237 | # |
183 | # Boot options | 238 | # Boot options |
184 | # | 239 | # |
185 | # CONFIG_S3C_BOOT_ERROR_RESET is not set | 240 | # CONFIG_S3C_BOOT_ERROR_RESET is not set |
186 | CONFIG_S3C_BOOT_UART_FORCE_FIFO=y | 241 | CONFIG_S3C_BOOT_UART_FORCE_FIFO=y |
242 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 | ||
243 | CONFIG_SAMSUNG_CLKSRC=y | ||
244 | CONFIG_SAMSUNG_IRQ_VIC_TIMER=y | ||
245 | CONFIG_SAMSUNG_IRQ_UART=y | ||
246 | CONFIG_SAMSUNG_GPIOLIB_4BIT=y | ||
247 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | ||
248 | CONFIG_S3C_GPIO_CFG_S3C64XX=y | ||
249 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | ||
250 | CONFIG_S5P_GPIO_DRVSTR=y | ||
251 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | ||
252 | CONFIG_S3C_GPIO_SPACE=0 | ||
253 | CONFIG_S3C_GPIO_TRACK=y | ||
254 | # CONFIG_S3C_ADC is not set | ||
255 | CONFIG_S3C_DEV_HSMMC=y | ||
256 | CONFIG_S3C_DEV_HSMMC1=y | ||
257 | CONFIG_S3C_DEV_HSMMC2=y | ||
258 | CONFIG_S3C_DEV_I2C1=y | ||
259 | CONFIG_S3C_DEV_FB=y | ||
260 | CONFIG_S3C_PL330_DMA=y | ||
187 | 261 | ||
188 | # | 262 | # |
189 | # Power management | 263 | # Power management |
190 | # | 264 | # |
191 | CONFIG_S3C_LOWLEVEL_UART_PORT=0 | 265 | CONFIG_PLAT_S5P=y |
192 | CONFIG_S3C_GPIO_SPACE=0 | 266 | CONFIG_S5P_EXT_INT=y |
193 | CONFIG_S3C_GPIO_TRACK=y | ||
194 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | ||
195 | CONFIG_PLAT_S5PC1XX=y | ||
196 | CONFIG_CPU_S5PC100_INIT=y | ||
197 | CONFIG_CPU_S5PC100_CLOCK=y | ||
198 | CONFIG_S5PC100_SETUP_I2C0=y | ||
199 | CONFIG_CPU_S5PC100=y | 267 | CONFIG_CPU_S5PC100=y |
268 | CONFIG_S5PC100_SETUP_FB_24BPP=y | ||
269 | CONFIG_S5PC100_SETUP_I2C1=y | ||
270 | CONFIG_S5PC100_SETUP_SDHCI=y | ||
271 | CONFIG_S5PC100_SETUP_SDHCI_GPIO=y | ||
200 | CONFIG_MACH_SMDKC100=y | 272 | CONFIG_MACH_SMDKC100=y |
201 | 273 | ||
202 | # | 274 | # |
@@ -206,7 +278,7 @@ CONFIG_CPU_32v6K=y | |||
206 | CONFIG_CPU_V7=y | 278 | CONFIG_CPU_V7=y |
207 | CONFIG_CPU_32v7=y | 279 | CONFIG_CPU_32v7=y |
208 | CONFIG_CPU_ABRT_EV7=y | 280 | CONFIG_CPU_ABRT_EV7=y |
209 | CONFIG_CPU_PABRT_IFAR=y | 281 | CONFIG_CPU_PABRT_V7=y |
210 | CONFIG_CPU_CACHE_V7=y | 282 | CONFIG_CPU_CACHE_V7=y |
211 | CONFIG_CPU_CACHE_VIPT=y | 283 | CONFIG_CPU_CACHE_VIPT=y |
212 | CONFIG_CPU_COPY_V6=y | 284 | CONFIG_CPU_COPY_V6=y |
@@ -224,11 +296,15 @@ CONFIG_ARM_THUMB=y | |||
224 | # CONFIG_CPU_DCACHE_DISABLE is not set | 296 | # CONFIG_CPU_DCACHE_DISABLE is not set |
225 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 297 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
226 | CONFIG_HAS_TLS_REG=y | 298 | CONFIG_HAS_TLS_REG=y |
299 | CONFIG_ARM_L1_CACHE_SHIFT=6 | ||
300 | CONFIG_ARM_DMA_MEM_BUFFERABLE=y | ||
301 | CONFIG_CPU_HAS_PMU=y | ||
227 | # CONFIG_ARM_ERRATA_430973 is not set | 302 | # CONFIG_ARM_ERRATA_430973 is not set |
228 | # CONFIG_ARM_ERRATA_458693 is not set | 303 | # CONFIG_ARM_ERRATA_458693 is not set |
229 | # CONFIG_ARM_ERRATA_460075 is not set | 304 | # CONFIG_ARM_ERRATA_460075 is not set |
230 | CONFIG_ARM_VIC=y | 305 | CONFIG_ARM_VIC=y |
231 | CONFIG_ARM_VIC_NR=2 | 306 | CONFIG_ARM_VIC_NR=2 |
307 | CONFIG_PL330=y | ||
232 | 308 | ||
233 | # | 309 | # |
234 | # Bus support | 310 | # Bus support |
@@ -244,8 +320,11 @@ CONFIG_VMSPLIT_3G=y | |||
244 | # CONFIG_VMSPLIT_2G is not set | 320 | # CONFIG_VMSPLIT_2G is not set |
245 | # CONFIG_VMSPLIT_1G is not set | 321 | # CONFIG_VMSPLIT_1G is not set |
246 | CONFIG_PAGE_OFFSET=0xC0000000 | 322 | CONFIG_PAGE_OFFSET=0xC0000000 |
323 | CONFIG_PREEMPT_NONE=y | ||
324 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
247 | # CONFIG_PREEMPT is not set | 325 | # CONFIG_PREEMPT is not set |
248 | CONFIG_HZ=100 | 326 | CONFIG_HZ=100 |
327 | # CONFIG_THUMB2_KERNEL is not set | ||
249 | CONFIG_AEABI=y | 328 | CONFIG_AEABI=y |
250 | CONFIG_OABI_COMPAT=y | 329 | CONFIG_OABI_COMPAT=y |
251 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | 330 | # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set |
@@ -258,12 +337,11 @@ CONFIG_FLATMEM_MANUAL=y | |||
258 | CONFIG_FLATMEM=y | 337 | CONFIG_FLATMEM=y |
259 | CONFIG_FLAT_NODE_MEM_MAP=y | 338 | CONFIG_FLAT_NODE_MEM_MAP=y |
260 | CONFIG_PAGEFLAGS_EXTENDED=y | 339 | CONFIG_PAGEFLAGS_EXTENDED=y |
261 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 340 | CONFIG_SPLIT_PTLOCK_CPUS=999999 |
262 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 341 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
263 | CONFIG_ZONE_DMA_FLAG=0 | 342 | CONFIG_ZONE_DMA_FLAG=0 |
264 | CONFIG_VIRT_TO_BUS=y | 343 | CONFIG_VIRT_TO_BUS=y |
265 | CONFIG_HAVE_MLOCK=y | 344 | # CONFIG_KSM is not set |
266 | CONFIG_HAVE_MLOCKED_PAGE_BIT=y | ||
267 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 345 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
268 | CONFIG_ALIGNMENT_TRAP=y | 346 | CONFIG_ALIGNMENT_TRAP=y |
269 | # CONFIG_UACCESS_WITH_MEMCPY is not set | 347 | # CONFIG_UACCESS_WITH_MEMCPY is not set |
@@ -274,6 +352,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
274 | CONFIG_ZBOOT_ROM_TEXT=0 | 352 | CONFIG_ZBOOT_ROM_TEXT=0 |
275 | CONFIG_ZBOOT_ROM_BSS=0 | 353 | CONFIG_ZBOOT_ROM_BSS=0 |
276 | CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc console=ttySAC2,115200 mem=128M" | 354 | CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc console=ttySAC2,115200 mem=128M" |
355 | # CONFIG_CMDLINE_FORCE is not set | ||
277 | # CONFIG_XIP_KERNEL is not set | 356 | # CONFIG_XIP_KERNEL is not set |
278 | # CONFIG_KEXEC is not set | 357 | # CONFIG_KEXEC is not set |
279 | 358 | ||
@@ -317,6 +396,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y | |||
317 | # Generic Driver Options | 396 | # Generic Driver Options |
318 | # | 397 | # |
319 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 398 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
399 | # CONFIG_DEVTMPFS is not set | ||
320 | CONFIG_STANDALONE=y | 400 | CONFIG_STANDALONE=y |
321 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 401 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
322 | CONFIG_FW_LOADER=y | 402 | CONFIG_FW_LOADER=y |
@@ -331,6 +411,10 @@ CONFIG_BLK_DEV=y | |||
331 | # CONFIG_BLK_DEV_COW_COMMON is not set | 411 | # CONFIG_BLK_DEV_COW_COMMON is not set |
332 | CONFIG_BLK_DEV_LOOP=y | 412 | CONFIG_BLK_DEV_LOOP=y |
333 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 413 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
414 | |||
415 | # | ||
416 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
417 | # | ||
334 | CONFIG_BLK_DEV_RAM=y | 418 | CONFIG_BLK_DEV_RAM=y |
335 | CONFIG_BLK_DEV_RAM_COUNT=16 | 419 | CONFIG_BLK_DEV_RAM_COUNT=16 |
336 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 420 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
@@ -338,9 +422,12 @@ CONFIG_BLK_DEV_RAM_SIZE=8192 | |||
338 | # CONFIG_CDROM_PKTCDVD is not set | 422 | # CONFIG_CDROM_PKTCDVD is not set |
339 | # CONFIG_MG_DISK is not set | 423 | # CONFIG_MG_DISK is not set |
340 | CONFIG_MISC_DEVICES=y | 424 | CONFIG_MISC_DEVICES=y |
425 | # CONFIG_AD525X_DPOT is not set | ||
341 | # CONFIG_ICS932S401 is not set | 426 | # CONFIG_ICS932S401 is not set |
342 | # CONFIG_ENCLOSURE_SERVICES is not set | 427 | # CONFIG_ENCLOSURE_SERVICES is not set |
343 | # CONFIG_ISL29003 is not set | 428 | # CONFIG_ISL29003 is not set |
429 | # CONFIG_SENSORS_TSL2550 is not set | ||
430 | # CONFIG_DS1682 is not set | ||
344 | # CONFIG_C2PORT is not set | 431 | # CONFIG_C2PORT is not set |
345 | 432 | ||
346 | # | 433 | # |
@@ -350,18 +437,21 @@ CONFIG_EEPROM_AT24=y | |||
350 | # CONFIG_EEPROM_LEGACY is not set | 437 | # CONFIG_EEPROM_LEGACY is not set |
351 | # CONFIG_EEPROM_MAX6875 is not set | 438 | # CONFIG_EEPROM_MAX6875 is not set |
352 | # CONFIG_EEPROM_93CX6 is not set | 439 | # CONFIG_EEPROM_93CX6 is not set |
440 | # CONFIG_IWMC3200TOP is not set | ||
353 | CONFIG_HAVE_IDE=y | 441 | CONFIG_HAVE_IDE=y |
354 | # CONFIG_IDE is not set | 442 | # CONFIG_IDE is not set |
355 | 443 | ||
356 | # | 444 | # |
357 | # SCSI device support | 445 | # SCSI device support |
358 | # | 446 | # |
447 | CONFIG_SCSI_MOD=y | ||
359 | # CONFIG_RAID_ATTRS is not set | 448 | # CONFIG_RAID_ATTRS is not set |
360 | # CONFIG_SCSI is not set | 449 | # CONFIG_SCSI is not set |
361 | # CONFIG_SCSI_DMA is not set | 450 | # CONFIG_SCSI_DMA is not set |
362 | # CONFIG_SCSI_NETLINK is not set | 451 | # CONFIG_SCSI_NETLINK is not set |
363 | # CONFIG_ATA is not set | 452 | # CONFIG_ATA is not set |
364 | # CONFIG_MD is not set | 453 | # CONFIG_MD is not set |
454 | # CONFIG_PHONE is not set | ||
365 | 455 | ||
366 | # | 456 | # |
367 | # Input device support | 457 | # Input device support |
@@ -369,6 +459,7 @@ CONFIG_HAVE_IDE=y | |||
369 | CONFIG_INPUT=y | 459 | CONFIG_INPUT=y |
370 | # CONFIG_INPUT_FF_MEMLESS is not set | 460 | # CONFIG_INPUT_FF_MEMLESS is not set |
371 | # CONFIG_INPUT_POLLDEV is not set | 461 | # CONFIG_INPUT_POLLDEV is not set |
462 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
372 | 463 | ||
373 | # | 464 | # |
374 | # Userland interfaces | 465 | # Userland interfaces |
@@ -385,13 +476,19 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
385 | # Input Device Drivers | 476 | # Input Device Drivers |
386 | # | 477 | # |
387 | CONFIG_INPUT_KEYBOARD=y | 478 | CONFIG_INPUT_KEYBOARD=y |
479 | # CONFIG_KEYBOARD_ADP5588 is not set | ||
388 | CONFIG_KEYBOARD_ATKBD=y | 480 | CONFIG_KEYBOARD_ATKBD=y |
389 | # CONFIG_KEYBOARD_SUNKBD is not set | 481 | # CONFIG_QT2160 is not set |
390 | # CONFIG_KEYBOARD_LKKBD is not set | 482 | # CONFIG_KEYBOARD_LKKBD is not set |
391 | # CONFIG_KEYBOARD_XTKBD is not set | 483 | # CONFIG_KEYBOARD_GPIO is not set |
484 | # CONFIG_KEYBOARD_TCA6416 is not set | ||
485 | # CONFIG_KEYBOARD_MATRIX is not set | ||
486 | # CONFIG_KEYBOARD_MAX7359 is not set | ||
392 | # CONFIG_KEYBOARD_NEWTON is not set | 487 | # CONFIG_KEYBOARD_NEWTON is not set |
488 | # CONFIG_KEYBOARD_OPENCORES is not set | ||
393 | # CONFIG_KEYBOARD_STOWAWAY is not set | 489 | # CONFIG_KEYBOARD_STOWAWAY is not set |
394 | # CONFIG_KEYBOARD_GPIO is not set | 490 | # CONFIG_KEYBOARD_SUNKBD is not set |
491 | # CONFIG_KEYBOARD_XTKBD is not set | ||
395 | CONFIG_INPUT_MOUSE=y | 492 | CONFIG_INPUT_MOUSE=y |
396 | CONFIG_MOUSE_PS2=y | 493 | CONFIG_MOUSE_PS2=y |
397 | CONFIG_MOUSE_PS2_ALPS=y | 494 | CONFIG_MOUSE_PS2_ALPS=y |
@@ -399,6 +496,7 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y | |||
399 | CONFIG_MOUSE_PS2_SYNAPTICS=y | 496 | CONFIG_MOUSE_PS2_SYNAPTICS=y |
400 | CONFIG_MOUSE_PS2_TRACKPOINT=y | 497 | CONFIG_MOUSE_PS2_TRACKPOINT=y |
401 | # CONFIG_MOUSE_PS2_ELANTECH is not set | 498 | # CONFIG_MOUSE_PS2_ELANTECH is not set |
499 | # CONFIG_MOUSE_PS2_SENTELIC is not set | ||
402 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | 500 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set |
403 | # CONFIG_MOUSE_SERIAL is not set | 501 | # CONFIG_MOUSE_SERIAL is not set |
404 | # CONFIG_MOUSE_APPLETOUCH is not set | 502 | # CONFIG_MOUSE_APPLETOUCH is not set |
@@ -418,6 +516,7 @@ CONFIG_SERIO=y | |||
418 | CONFIG_SERIO_SERPORT=y | 516 | CONFIG_SERIO_SERPORT=y |
419 | CONFIG_SERIO_LIBPS2=y | 517 | CONFIG_SERIO_LIBPS2=y |
420 | # CONFIG_SERIO_RAW is not set | 518 | # CONFIG_SERIO_RAW is not set |
519 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
421 | # CONFIG_GAMEPORT is not set | 520 | # CONFIG_GAMEPORT is not set |
422 | 521 | ||
423 | # | 522 | # |
@@ -444,11 +543,16 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | |||
444 | # Non-8250 serial port support | 543 | # Non-8250 serial port support |
445 | # | 544 | # |
446 | CONFIG_SERIAL_SAMSUNG=y | 545 | CONFIG_SERIAL_SAMSUNG=y |
447 | CONFIG_SERIAL_SAMSUNG_UARTS=3 | 546 | CONFIG_SERIAL_SAMSUNG_UARTS_4=y |
547 | CONFIG_SERIAL_SAMSUNG_UARTS=4 | ||
448 | # CONFIG_SERIAL_SAMSUNG_DEBUG is not set | 548 | # CONFIG_SERIAL_SAMSUNG_DEBUG is not set |
449 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y | 549 | CONFIG_SERIAL_SAMSUNG_CONSOLE=y |
550 | CONFIG_SERIAL_S3C6400=y | ||
450 | CONFIG_SERIAL_CORE=y | 551 | CONFIG_SERIAL_CORE=y |
451 | CONFIG_SERIAL_CORE_CONSOLE=y | 552 | CONFIG_SERIAL_CORE_CONSOLE=y |
553 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
554 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
555 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
452 | CONFIG_UNIX98_PTYS=y | 556 | CONFIG_UNIX98_PTYS=y |
453 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 557 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
454 | CONFIG_LEGACY_PTYS=y | 558 | CONFIG_LEGACY_PTYS=y |
@@ -461,6 +565,7 @@ CONFIG_HW_RANDOM=y | |||
461 | # CONFIG_TCG_TPM is not set | 565 | # CONFIG_TCG_TPM is not set |
462 | CONFIG_I2C=y | 566 | CONFIG_I2C=y |
463 | CONFIG_I2C_BOARDINFO=y | 567 | CONFIG_I2C_BOARDINFO=y |
568 | CONFIG_I2C_COMPAT=y | ||
464 | CONFIG_I2C_CHARDEV=y | 569 | CONFIG_I2C_CHARDEV=y |
465 | CONFIG_I2C_HELPER_AUTO=y | 570 | CONFIG_I2C_HELPER_AUTO=y |
466 | 571 | ||
@@ -471,9 +576,11 @@ CONFIG_I2C_HELPER_AUTO=y | |||
471 | # | 576 | # |
472 | # I2C system bus drivers (mostly embedded / system-on-chip) | 577 | # I2C system bus drivers (mostly embedded / system-on-chip) |
473 | # | 578 | # |
579 | # CONFIG_I2C_DESIGNWARE is not set | ||
474 | # CONFIG_I2C_GPIO is not set | 580 | # CONFIG_I2C_GPIO is not set |
475 | # CONFIG_I2C_OCORES is not set | 581 | # CONFIG_I2C_OCORES is not set |
476 | # CONFIG_I2C_SIMTEC is not set | 582 | # CONFIG_I2C_SIMTEC is not set |
583 | # CONFIG_I2C_XILINX is not set | ||
477 | 584 | ||
478 | # | 585 | # |
479 | # External I2C/SMBus adapter drivers | 586 | # External I2C/SMBus adapter drivers |
@@ -486,20 +593,15 @@ CONFIG_I2C_HELPER_AUTO=y | |||
486 | # | 593 | # |
487 | # CONFIG_I2C_PCA_PLATFORM is not set | 594 | # CONFIG_I2C_PCA_PLATFORM is not set |
488 | # CONFIG_I2C_STUB is not set | 595 | # CONFIG_I2C_STUB is not set |
489 | |||
490 | # | ||
491 | # Miscellaneous I2C Chip support | ||
492 | # | ||
493 | # CONFIG_DS1682 is not set | ||
494 | # CONFIG_SENSORS_PCF8574 is not set | ||
495 | # CONFIG_PCF8575 is not set | ||
496 | # CONFIG_SENSORS_PCA9539 is not set | ||
497 | # CONFIG_SENSORS_TSL2550 is not set | ||
498 | # CONFIG_I2C_DEBUG_CORE is not set | 596 | # CONFIG_I2C_DEBUG_CORE is not set |
499 | # CONFIG_I2C_DEBUG_ALGO is not set | 597 | # CONFIG_I2C_DEBUG_ALGO is not set |
500 | # CONFIG_I2C_DEBUG_BUS is not set | 598 | # CONFIG_I2C_DEBUG_BUS is not set |
501 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
502 | # CONFIG_SPI is not set | 599 | # CONFIG_SPI is not set |
600 | |||
601 | # | ||
602 | # PPS support | ||
603 | # | ||
604 | # CONFIG_PPS is not set | ||
503 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | 605 | CONFIG_ARCH_REQUIRE_GPIOLIB=y |
504 | CONFIG_GPIOLIB=y | 606 | CONFIG_GPIOLIB=y |
505 | # CONFIG_DEBUG_GPIO is not set | 607 | # CONFIG_DEBUG_GPIO is not set |
@@ -508,13 +610,16 @@ CONFIG_GPIOLIB=y | |||
508 | # | 610 | # |
509 | # Memory mapped GPIO expanders: | 611 | # Memory mapped GPIO expanders: |
510 | # | 612 | # |
613 | # CONFIG_GPIO_IT8761E is not set | ||
511 | 614 | ||
512 | # | 615 | # |
513 | # I2C GPIO expanders: | 616 | # I2C GPIO expanders: |
514 | # | 617 | # |
618 | # CONFIG_GPIO_MAX7300 is not set | ||
515 | # CONFIG_GPIO_MAX732X is not set | 619 | # CONFIG_GPIO_MAX732X is not set |
516 | # CONFIG_GPIO_PCA953X is not set | 620 | # CONFIG_GPIO_PCA953X is not set |
517 | # CONFIG_GPIO_PCF857X is not set | 621 | # CONFIG_GPIO_PCF857X is not set |
622 | # CONFIG_GPIO_ADP5588 is not set | ||
518 | 623 | ||
519 | # | 624 | # |
520 | # PCI GPIO expanders: | 625 | # PCI GPIO expanders: |
@@ -523,10 +628,19 @@ CONFIG_GPIOLIB=y | |||
523 | # | 628 | # |
524 | # SPI GPIO expanders: | 629 | # SPI GPIO expanders: |
525 | # | 630 | # |
631 | |||
632 | # | ||
633 | # AC97 GPIO expanders: | ||
634 | # | ||
526 | # CONFIG_W1 is not set | 635 | # CONFIG_W1 is not set |
527 | # CONFIG_POWER_SUPPLY is not set | 636 | # CONFIG_POWER_SUPPLY is not set |
528 | CONFIG_HWMON=y | 637 | CONFIG_HWMON=y |
529 | # CONFIG_HWMON_VID is not set | 638 | # CONFIG_HWMON_VID is not set |
639 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
640 | |||
641 | # | ||
642 | # Native drivers | ||
643 | # | ||
530 | # CONFIG_SENSORS_AD7414 is not set | 644 | # CONFIG_SENSORS_AD7414 is not set |
531 | # CONFIG_SENSORS_AD7418 is not set | 645 | # CONFIG_SENSORS_AD7418 is not set |
532 | # CONFIG_SENSORS_ADM1021 is not set | 646 | # CONFIG_SENSORS_ADM1021 is not set |
@@ -535,10 +649,11 @@ CONFIG_HWMON=y | |||
535 | # CONFIG_SENSORS_ADM1029 is not set | 649 | # CONFIG_SENSORS_ADM1029 is not set |
536 | # CONFIG_SENSORS_ADM1031 is not set | 650 | # CONFIG_SENSORS_ADM1031 is not set |
537 | # CONFIG_SENSORS_ADM9240 is not set | 651 | # CONFIG_SENSORS_ADM9240 is not set |
652 | # CONFIG_SENSORS_ADT7411 is not set | ||
538 | # CONFIG_SENSORS_ADT7462 is not set | 653 | # CONFIG_SENSORS_ADT7462 is not set |
539 | # CONFIG_SENSORS_ADT7470 is not set | 654 | # CONFIG_SENSORS_ADT7470 is not set |
540 | # CONFIG_SENSORS_ADT7473 is not set | ||
541 | # CONFIG_SENSORS_ADT7475 is not set | 655 | # CONFIG_SENSORS_ADT7475 is not set |
656 | # CONFIG_SENSORS_ASC7621 is not set | ||
542 | # CONFIG_SENSORS_ATXP1 is not set | 657 | # CONFIG_SENSORS_ATXP1 is not set |
543 | # CONFIG_SENSORS_DS1621 is not set | 658 | # CONFIG_SENSORS_DS1621 is not set |
544 | # CONFIG_SENSORS_F71805F is not set | 659 | # CONFIG_SENSORS_F71805F is not set |
@@ -549,6 +664,7 @@ CONFIG_HWMON=y | |||
549 | # CONFIG_SENSORS_GL520SM is not set | 664 | # CONFIG_SENSORS_GL520SM is not set |
550 | # CONFIG_SENSORS_IT87 is not set | 665 | # CONFIG_SENSORS_IT87 is not set |
551 | # CONFIG_SENSORS_LM63 is not set | 666 | # CONFIG_SENSORS_LM63 is not set |
667 | # CONFIG_SENSORS_LM73 is not set | ||
552 | # CONFIG_SENSORS_LM75 is not set | 668 | # CONFIG_SENSORS_LM75 is not set |
553 | # CONFIG_SENSORS_LM77 is not set | 669 | # CONFIG_SENSORS_LM77 is not set |
554 | # CONFIG_SENSORS_LM78 is not set | 670 | # CONFIG_SENSORS_LM78 is not set |
@@ -573,8 +689,10 @@ CONFIG_HWMON=y | |||
573 | # CONFIG_SENSORS_SMSC47M192 is not set | 689 | # CONFIG_SENSORS_SMSC47M192 is not set |
574 | # CONFIG_SENSORS_SMSC47B397 is not set | 690 | # CONFIG_SENSORS_SMSC47B397 is not set |
575 | # CONFIG_SENSORS_ADS7828 is not set | 691 | # CONFIG_SENSORS_ADS7828 is not set |
692 | # CONFIG_SENSORS_AMC6821 is not set | ||
576 | # CONFIG_SENSORS_THMC50 is not set | 693 | # CONFIG_SENSORS_THMC50 is not set |
577 | # CONFIG_SENSORS_TMP401 is not set | 694 | # CONFIG_SENSORS_TMP401 is not set |
695 | # CONFIG_SENSORS_TMP421 is not set | ||
578 | # CONFIG_SENSORS_VT1211 is not set | 696 | # CONFIG_SENSORS_VT1211 is not set |
579 | # CONFIG_SENSORS_W83781D is not set | 697 | # CONFIG_SENSORS_W83781D is not set |
580 | # CONFIG_SENSORS_W83791D is not set | 698 | # CONFIG_SENSORS_W83791D is not set |
@@ -584,9 +702,8 @@ CONFIG_HWMON=y | |||
584 | # CONFIG_SENSORS_W83L786NG is not set | 702 | # CONFIG_SENSORS_W83L786NG is not set |
585 | # CONFIG_SENSORS_W83627HF is not set | 703 | # CONFIG_SENSORS_W83627HF is not set |
586 | # CONFIG_SENSORS_W83627EHF is not set | 704 | # CONFIG_SENSORS_W83627EHF is not set |
587 | # CONFIG_HWMON_DEBUG_CHIP is not set | 705 | # CONFIG_SENSORS_LIS3_I2C is not set |
588 | # CONFIG_THERMAL is not set | 706 | # CONFIG_THERMAL is not set |
589 | # CONFIG_THERMAL_HWMON is not set | ||
590 | # CONFIG_WATCHDOG is not set | 707 | # CONFIG_WATCHDOG is not set |
591 | CONFIG_SSB_POSSIBLE=y | 708 | CONFIG_SSB_POSSIBLE=y |
592 | 709 | ||
@@ -599,10 +716,12 @@ CONFIG_SSB_POSSIBLE=y | |||
599 | # Multifunction device drivers | 716 | # Multifunction device drivers |
600 | # | 717 | # |
601 | # CONFIG_MFD_CORE is not set | 718 | # CONFIG_MFD_CORE is not set |
719 | # CONFIG_MFD_88PM860X is not set | ||
602 | # CONFIG_MFD_SM501 is not set | 720 | # CONFIG_MFD_SM501 is not set |
603 | # CONFIG_MFD_ASIC3 is not set | 721 | # CONFIG_MFD_ASIC3 is not set |
604 | # CONFIG_HTC_EGPIO is not set | 722 | # CONFIG_HTC_EGPIO is not set |
605 | # CONFIG_HTC_PASIC3 is not set | 723 | # CONFIG_HTC_PASIC3 is not set |
724 | # CONFIG_HTC_I2CPLD is not set | ||
606 | # CONFIG_TPS65010 is not set | 725 | # CONFIG_TPS65010 is not set |
607 | # CONFIG_TWL4030_CORE is not set | 726 | # CONFIG_TWL4030_CORE is not set |
608 | # CONFIG_MFD_TMIO is not set | 727 | # CONFIG_MFD_TMIO is not set |
@@ -610,10 +729,15 @@ CONFIG_SSB_POSSIBLE=y | |||
610 | # CONFIG_MFD_TC6387XB is not set | 729 | # CONFIG_MFD_TC6387XB is not set |
611 | # CONFIG_MFD_TC6393XB is not set | 730 | # CONFIG_MFD_TC6393XB is not set |
612 | # CONFIG_PMIC_DA903X is not set | 731 | # CONFIG_PMIC_DA903X is not set |
732 | # CONFIG_PMIC_ADP5520 is not set | ||
733 | # CONFIG_MFD_MAX8925 is not set | ||
613 | # CONFIG_MFD_WM8400 is not set | 734 | # CONFIG_MFD_WM8400 is not set |
735 | # CONFIG_MFD_WM831X is not set | ||
614 | # CONFIG_MFD_WM8350_I2C is not set | 736 | # CONFIG_MFD_WM8350_I2C is not set |
737 | # CONFIG_MFD_WM8994 is not set | ||
615 | # CONFIG_MFD_PCF50633 is not set | 738 | # CONFIG_MFD_PCF50633 is not set |
616 | # CONFIG_AB3100_CORE is not set | 739 | # CONFIG_AB3100_CORE is not set |
740 | # CONFIG_REGULATOR is not set | ||
617 | # CONFIG_MEDIA_SUPPORT is not set | 741 | # CONFIG_MEDIA_SUPPORT is not set |
618 | 742 | ||
619 | # | 743 | # |
@@ -637,7 +761,6 @@ CONFIG_DUMMY_CONSOLE=y | |||
637 | # CONFIG_SOUND is not set | 761 | # CONFIG_SOUND is not set |
638 | CONFIG_HID_SUPPORT=y | 762 | CONFIG_HID_SUPPORT=y |
639 | CONFIG_HID=y | 763 | CONFIG_HID=y |
640 | CONFIG_HID_DEBUG=y | ||
641 | # CONFIG_HIDRAW is not set | 764 | # CONFIG_HIDRAW is not set |
642 | # CONFIG_HID_PID is not set | 765 | # CONFIG_HID_PID is not set |
643 | 766 | ||
@@ -680,13 +803,12 @@ CONFIG_SDIO_UART=y | |||
680 | CONFIG_MMC_SDHCI=y | 803 | CONFIG_MMC_SDHCI=y |
681 | # CONFIG_MMC_SDHCI_PLTFM is not set | 804 | # CONFIG_MMC_SDHCI_PLTFM is not set |
682 | # CONFIG_MEMSTICK is not set | 805 | # CONFIG_MEMSTICK is not set |
683 | # CONFIG_ACCESSIBILITY is not set | ||
684 | # CONFIG_NEW_LEDS is not set | 806 | # CONFIG_NEW_LEDS is not set |
807 | # CONFIG_ACCESSIBILITY is not set | ||
685 | CONFIG_RTC_LIB=y | 808 | CONFIG_RTC_LIB=y |
686 | # CONFIG_RTC_CLASS is not set | 809 | # CONFIG_RTC_CLASS is not set |
687 | # CONFIG_DMADEVICES is not set | 810 | # CONFIG_DMADEVICES is not set |
688 | # CONFIG_AUXDISPLAY is not set | 811 | # CONFIG_AUXDISPLAY is not set |
689 | # CONFIG_REGULATOR is not set | ||
690 | # CONFIG_UIO is not set | 812 | # CONFIG_UIO is not set |
691 | # CONFIG_STAGING is not set | 813 | # CONFIG_STAGING is not set |
692 | 814 | ||
@@ -710,6 +832,7 @@ CONFIG_FS_POSIX_ACL=y | |||
710 | # CONFIG_XFS_FS is not set | 832 | # CONFIG_XFS_FS is not set |
711 | # CONFIG_GFS2_FS is not set | 833 | # CONFIG_GFS2_FS is not set |
712 | # CONFIG_BTRFS_FS is not set | 834 | # CONFIG_BTRFS_FS is not set |
835 | # CONFIG_NILFS2_FS is not set | ||
713 | CONFIG_FILE_LOCKING=y | 836 | CONFIG_FILE_LOCKING=y |
714 | CONFIG_FSNOTIFY=y | 837 | CONFIG_FSNOTIFY=y |
715 | CONFIG_DNOTIFY=y | 838 | CONFIG_DNOTIFY=y |
@@ -758,6 +881,7 @@ CONFIG_MISC_FILESYSTEMS=y | |||
758 | # CONFIG_BEFS_FS is not set | 881 | # CONFIG_BEFS_FS is not set |
759 | # CONFIG_BFS_FS is not set | 882 | # CONFIG_BFS_FS is not set |
760 | # CONFIG_EFS_FS is not set | 883 | # CONFIG_EFS_FS is not set |
884 | # CONFIG_LOGFS is not set | ||
761 | CONFIG_CRAMFS=y | 885 | CONFIG_CRAMFS=y |
762 | # CONFIG_SQUASHFS is not set | 886 | # CONFIG_SQUASHFS is not set |
763 | # CONFIG_VXFS_FS is not set | 887 | # CONFIG_VXFS_FS is not set |
@@ -772,7 +896,6 @@ CONFIG_ROMFS_BACKED_BY_BLOCK=y | |||
772 | CONFIG_ROMFS_ON_BLOCK=y | 896 | CONFIG_ROMFS_ON_BLOCK=y |
773 | # CONFIG_SYSV_FS is not set | 897 | # CONFIG_SYSV_FS is not set |
774 | # CONFIG_UFS_FS is not set | 898 | # CONFIG_UFS_FS is not set |
775 | # CONFIG_NILFS2_FS is not set | ||
776 | 899 | ||
777 | # | 900 | # |
778 | # Partition Types | 901 | # Partition Types |
@@ -789,6 +912,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y | |||
789 | CONFIG_ENABLE_MUST_CHECK=y | 912 | CONFIG_ENABLE_MUST_CHECK=y |
790 | CONFIG_FRAME_WARN=1024 | 913 | CONFIG_FRAME_WARN=1024 |
791 | CONFIG_MAGIC_SYSRQ=y | 914 | CONFIG_MAGIC_SYSRQ=y |
915 | # CONFIG_STRIP_ASM_SYMS is not set | ||
792 | # CONFIG_UNUSED_SYMBOLS is not set | 916 | # CONFIG_UNUSED_SYMBOLS is not set |
793 | # CONFIG_DEBUG_FS is not set | 917 | # CONFIG_DEBUG_FS is not set |
794 | # CONFIG_HEADERS_CHECK is not set | 918 | # CONFIG_HEADERS_CHECK is not set |
@@ -826,11 +950,13 @@ CONFIG_DEBUG_MEMORY_INIT=y | |||
826 | # CONFIG_DEBUG_LIST is not set | 950 | # CONFIG_DEBUG_LIST is not set |
827 | # CONFIG_DEBUG_SG is not set | 951 | # CONFIG_DEBUG_SG is not set |
828 | # CONFIG_DEBUG_NOTIFIERS is not set | 952 | # CONFIG_DEBUG_NOTIFIERS is not set |
953 | # CONFIG_DEBUG_CREDENTIALS is not set | ||
829 | # CONFIG_BOOT_PRINTK_DELAY is not set | 954 | # CONFIG_BOOT_PRINTK_DELAY is not set |
830 | # CONFIG_RCU_TORTURE_TEST is not set | 955 | # CONFIG_RCU_TORTURE_TEST is not set |
831 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 956 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
832 | # CONFIG_BACKTRACE_SELF_TEST is not set | 957 | # CONFIG_BACKTRACE_SELF_TEST is not set |
833 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 958 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
959 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
834 | # CONFIG_FAULT_INJECTION is not set | 960 | # CONFIG_FAULT_INJECTION is not set |
835 | # CONFIG_LATENCYTOP is not set | 961 | # CONFIG_LATENCYTOP is not set |
836 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 962 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
@@ -839,6 +965,7 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
839 | CONFIG_TRACING_SUPPORT=y | 965 | CONFIG_TRACING_SUPPORT=y |
840 | CONFIG_FTRACE=y | 966 | CONFIG_FTRACE=y |
841 | # CONFIG_FUNCTION_TRACER is not set | 967 | # CONFIG_FUNCTION_TRACER is not set |
968 | # CONFIG_IRQSOFF_TRACER is not set | ||
842 | # CONFIG_SCHED_TRACER is not set | 969 | # CONFIG_SCHED_TRACER is not set |
843 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 970 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
844 | # CONFIG_BOOT_TRACER is not set | 971 | # CONFIG_BOOT_TRACER is not set |
@@ -849,6 +976,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
849 | # CONFIG_KMEMTRACE is not set | 976 | # CONFIG_KMEMTRACE is not set |
850 | # CONFIG_WORKQUEUE_TRACER is not set | 977 | # CONFIG_WORKQUEUE_TRACER is not set |
851 | # CONFIG_BLK_DEV_IO_TRACE is not set | 978 | # CONFIG_BLK_DEV_IO_TRACE is not set |
979 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
852 | # CONFIG_SAMPLES is not set | 980 | # CONFIG_SAMPLES is not set |
853 | CONFIG_HAVE_ARCH_KGDB=y | 981 | CONFIG_HAVE_ARCH_KGDB=y |
854 | # CONFIG_KGDB is not set | 982 | # CONFIG_KGDB is not set |
@@ -857,8 +985,9 @@ CONFIG_DEBUG_USER=y | |||
857 | CONFIG_DEBUG_ERRORS=y | 985 | CONFIG_DEBUG_ERRORS=y |
858 | # CONFIG_DEBUG_STACK_USAGE is not set | 986 | # CONFIG_DEBUG_STACK_USAGE is not set |
859 | CONFIG_DEBUG_LL=y | 987 | CONFIG_DEBUG_LL=y |
988 | # CONFIG_EARLY_PRINTK is not set | ||
860 | # CONFIG_DEBUG_ICEDCC is not set | 989 | # CONFIG_DEBUG_ICEDCC is not set |
861 | CONFIG_DEBUG_S3C_PORT=y | 990 | # CONFIG_OC_ETM is not set |
862 | CONFIG_DEBUG_S3C_UART=0 | 991 | CONFIG_DEBUG_S3C_UART=0 |
863 | 992 | ||
864 | # | 993 | # |
@@ -867,7 +996,11 @@ CONFIG_DEBUG_S3C_UART=0 | |||
867 | # CONFIG_KEYS is not set | 996 | # CONFIG_KEYS is not set |
868 | # CONFIG_SECURITY is not set | 997 | # CONFIG_SECURITY is not set |
869 | # CONFIG_SECURITYFS is not set | 998 | # CONFIG_SECURITYFS is not set |
870 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 999 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set |
1000 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1001 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1002 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1003 | CONFIG_DEFAULT_SECURITY="" | ||
871 | # CONFIG_CRYPTO is not set | 1004 | # CONFIG_CRYPTO is not set |
872 | # CONFIG_BINARY_PRINTF is not set | 1005 | # CONFIG_BINARY_PRINTF is not set |
873 | 1006 | ||
@@ -884,8 +1017,10 @@ CONFIG_CRC32=y | |||
884 | # CONFIG_CRC7 is not set | 1017 | # CONFIG_CRC7 is not set |
885 | # CONFIG_LIBCRC32C is not set | 1018 | # CONFIG_LIBCRC32C is not set |
886 | CONFIG_ZLIB_INFLATE=y | 1019 | CONFIG_ZLIB_INFLATE=y |
1020 | CONFIG_LZO_DECOMPRESS=y | ||
887 | CONFIG_DECOMPRESS_GZIP=y | 1021 | CONFIG_DECOMPRESS_GZIP=y |
888 | CONFIG_DECOMPRESS_BZIP2=y | 1022 | CONFIG_DECOMPRESS_BZIP2=y |
889 | CONFIG_DECOMPRESS_LZMA=y | 1023 | CONFIG_DECOMPRESS_LZMA=y |
1024 | CONFIG_DECOMPRESS_LZO=y | ||
890 | CONFIG_HAS_IOMEM=y | 1025 | CONFIG_HAS_IOMEM=y |
891 | CONFIG_HAS_DMA=y | 1026 | CONFIG_HAS_DMA=y |
diff --git a/arch/arm/configs/s5pc110_defconfig b/arch/arm/configs/s5pc110_defconfig index 796cb78498c3..c4de360b0f69 100644 --- a/arch/arm/configs/s5pc110_defconfig +++ b/arch/arm/configs/s5pc110_defconfig | |||
@@ -1,11 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Sat May 22 03:18:21 2010 | 4 | # Wed May 26 19:04:37 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
9 | CONFIG_HAVE_PROC_CPU=y | 11 | CONFIG_HAVE_PROC_CPU=y |
10 | CONFIG_NO_IOPORT=y | 12 | CONFIG_NO_IOPORT=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
@@ -35,6 +37,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
35 | CONFIG_LOCALVERSION="" | 37 | CONFIG_LOCALVERSION="" |
36 | CONFIG_LOCALVERSION_AUTO=y | 38 | CONFIG_LOCALVERSION_AUTO=y |
37 | CONFIG_HAVE_KERNEL_GZIP=y | 39 | CONFIG_HAVE_KERNEL_GZIP=y |
40 | CONFIG_HAVE_KERNEL_LZMA=y | ||
38 | CONFIG_HAVE_KERNEL_LZO=y | 41 | CONFIG_HAVE_KERNEL_LZO=y |
39 | CONFIG_KERNEL_GZIP=y | 42 | CONFIG_KERNEL_GZIP=y |
40 | # CONFIG_KERNEL_BZIP2 is not set | 43 | # CONFIG_KERNEL_BZIP2 is not set |
@@ -180,9 +183,11 @@ CONFIG_MMU=y | |||
180 | # CONFIG_ARCH_INTEGRATOR is not set | 183 | # CONFIG_ARCH_INTEGRATOR is not set |
181 | # CONFIG_ARCH_REALVIEW is not set | 184 | # CONFIG_ARCH_REALVIEW is not set |
182 | # CONFIG_ARCH_VERSATILE is not set | 185 | # CONFIG_ARCH_VERSATILE is not set |
186 | # CONFIG_ARCH_VEXPRESS is not set | ||
183 | # CONFIG_ARCH_AT91 is not set | 187 | # CONFIG_ARCH_AT91 is not set |
184 | # CONFIG_ARCH_BCMRING is not set | 188 | # CONFIG_ARCH_BCMRING is not set |
185 | # CONFIG_ARCH_CLPS711X is not set | 189 | # CONFIG_ARCH_CLPS711X is not set |
190 | # CONFIG_ARCH_CNS3XXX is not set | ||
186 | # CONFIG_ARCH_GEMINI is not set | 191 | # CONFIG_ARCH_GEMINI is not set |
187 | # CONFIG_ARCH_EBSA110 is not set | 192 | # CONFIG_ARCH_EBSA110 is not set |
188 | # CONFIG_ARCH_EP93XX is not set | 193 | # CONFIG_ARCH_EP93XX is not set |
@@ -218,7 +223,7 @@ CONFIG_MMU=y | |||
218 | # CONFIG_ARCH_S3C64XX is not set | 223 | # CONFIG_ARCH_S3C64XX is not set |
219 | # CONFIG_ARCH_S5P6440 is not set | 224 | # CONFIG_ARCH_S5P6440 is not set |
220 | # CONFIG_ARCH_S5P6442 is not set | 225 | # CONFIG_ARCH_S5P6442 is not set |
221 | # CONFIG_ARCH_S5PC1XX is not set | 226 | # CONFIG_ARCH_S5PC100 is not set |
222 | CONFIG_ARCH_S5PV210=y | 227 | CONFIG_ARCH_S5PV210=y |
223 | # CONFIG_ARCH_SHARK is not set | 228 | # CONFIG_ARCH_SHARK is not set |
224 | # CONFIG_ARCH_LH7A40X is not set | 229 | # CONFIG_ARCH_LH7A40X is not set |
@@ -227,6 +232,7 @@ CONFIG_ARCH_S5PV210=y | |||
227 | # CONFIG_ARCH_NOMADIK is not set | 232 | # CONFIG_ARCH_NOMADIK is not set |
228 | # CONFIG_ARCH_DAVINCI is not set | 233 | # CONFIG_ARCH_DAVINCI is not set |
229 | # CONFIG_ARCH_OMAP is not set | 234 | # CONFIG_ARCH_OMAP is not set |
235 | # CONFIG_PLAT_SPEAR is not set | ||
230 | CONFIG_PLAT_SAMSUNG=y | 236 | CONFIG_PLAT_SAMSUNG=y |
231 | 237 | ||
232 | # | 238 | # |
@@ -242,16 +248,22 @@ CONFIG_SAMSUNG_GPIOLIB_4BIT=y | |||
242 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | 248 | CONFIG_S3C_GPIO_CFG_S3C24XX=y |
243 | CONFIG_S3C_GPIO_CFG_S3C64XX=y | 249 | CONFIG_S3C_GPIO_CFG_S3C64XX=y |
244 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | 250 | CONFIG_S3C_GPIO_PULL_UPDOWN=y |
251 | CONFIG_S5P_GPIO_DRVSTR=y | ||
245 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | 252 | CONFIG_SAMSUNG_GPIO_EXTRA=0 |
246 | CONFIG_S3C_GPIO_SPACE=0 | 253 | CONFIG_S3C_GPIO_SPACE=0 |
247 | CONFIG_S3C_GPIO_TRACK=y | 254 | CONFIG_S3C_GPIO_TRACK=y |
248 | # CONFIG_S3C_ADC is not set | 255 | # CONFIG_S3C_ADC is not set |
256 | CONFIG_S3C_DEV_WDT=y | ||
257 | CONFIG_S3C_PL330_DMA=y | ||
249 | 258 | ||
250 | # | 259 | # |
251 | # Power management | 260 | # Power management |
252 | # | 261 | # |
253 | CONFIG_PLAT_S5P=y | 262 | CONFIG_PLAT_S5P=y |
263 | CONFIG_S5P_EXT_INT=y | ||
254 | CONFIG_CPU_S5PV210=y | 264 | CONFIG_CPU_S5PV210=y |
265 | # CONFIG_MACH_AQUILA is not set | ||
266 | # CONFIG_MACH_GONI is not set | ||
255 | # CONFIG_MACH_SMDKV210 is not set | 267 | # CONFIG_MACH_SMDKV210 is not set |
256 | CONFIG_MACH_SMDKC110=y | 268 | CONFIG_MACH_SMDKC110=y |
257 | 269 | ||
@@ -281,12 +293,14 @@ CONFIG_ARM_THUMB=y | |||
281 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 293 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
282 | CONFIG_HAS_TLS_REG=y | 294 | CONFIG_HAS_TLS_REG=y |
283 | CONFIG_ARM_L1_CACHE_SHIFT=6 | 295 | CONFIG_ARM_L1_CACHE_SHIFT=6 |
296 | CONFIG_ARM_DMA_MEM_BUFFERABLE=y | ||
284 | CONFIG_CPU_HAS_PMU=y | 297 | CONFIG_CPU_HAS_PMU=y |
285 | # CONFIG_ARM_ERRATA_430973 is not set | 298 | # CONFIG_ARM_ERRATA_430973 is not set |
286 | # CONFIG_ARM_ERRATA_458693 is not set | 299 | # CONFIG_ARM_ERRATA_458693 is not set |
287 | # CONFIG_ARM_ERRATA_460075 is not set | 300 | # CONFIG_ARM_ERRATA_460075 is not set |
288 | CONFIG_ARM_VIC=y | 301 | CONFIG_ARM_VIC=y |
289 | CONFIG_ARM_VIC_NR=2 | 302 | CONFIG_ARM_VIC_NR=2 |
303 | CONFIG_PL330=y | ||
290 | 304 | ||
291 | # | 305 | # |
292 | # Bus support | 306 | # Bus support |
@@ -335,6 +349,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
335 | CONFIG_ZBOOT_ROM_TEXT=0 | 349 | CONFIG_ZBOOT_ROM_TEXT=0 |
336 | CONFIG_ZBOOT_ROM_BSS=0 | 350 | CONFIG_ZBOOT_ROM_BSS=0 |
337 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" | 351 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" |
352 | # CONFIG_CMDLINE_FORCE is not set | ||
338 | # CONFIG_XIP_KERNEL is not set | 353 | # CONFIG_XIP_KERNEL is not set |
339 | # CONFIG_KEXEC is not set | 354 | # CONFIG_KEXEC is not set |
340 | 355 | ||
@@ -481,6 +496,7 @@ CONFIG_INPUT_EVDEV=y | |||
481 | CONFIG_INPUT_TOUCHSCREEN=y | 496 | CONFIG_INPUT_TOUCHSCREEN=y |
482 | # CONFIG_TOUCHSCREEN_AD7879 is not set | 497 | # CONFIG_TOUCHSCREEN_AD7879 is not set |
483 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | 498 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set |
499 | # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set | ||
484 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 500 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
485 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 501 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
486 | # CONFIG_TOUCHSCREEN_ELO is not set | 502 | # CONFIG_TOUCHSCREEN_ELO is not set |
@@ -536,6 +552,8 @@ CONFIG_SERIAL_S5PV210=y | |||
536 | CONFIG_SERIAL_CORE=y | 552 | CONFIG_SERIAL_CORE=y |
537 | CONFIG_SERIAL_CORE_CONSOLE=y | 553 | CONFIG_SERIAL_CORE_CONSOLE=y |
538 | # CONFIG_SERIAL_TIMBERDALE is not set | 554 | # CONFIG_SERIAL_TIMBERDALE is not set |
555 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
556 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
539 | CONFIG_UNIX98_PTYS=y | 557 | CONFIG_UNIX98_PTYS=y |
540 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 558 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
541 | CONFIG_LEGACY_PTYS=y | 559 | CONFIG_LEGACY_PTYS=y |
@@ -583,6 +601,7 @@ CONFIG_GPIOLIB=y | |||
583 | # CONFIG_HWMON is not set | 601 | # CONFIG_HWMON is not set |
584 | # CONFIG_THERMAL is not set | 602 | # CONFIG_THERMAL is not set |
585 | # CONFIG_WATCHDOG is not set | 603 | # CONFIG_WATCHDOG is not set |
604 | CONFIG_HAVE_S3C2410_WATCHDOG=y | ||
586 | CONFIG_SSB_POSSIBLE=y | 605 | CONFIG_SSB_POSSIBLE=y |
587 | 606 | ||
588 | # | 607 | # |
@@ -635,10 +654,6 @@ CONFIG_RTC_LIB=y | |||
635 | # CONFIG_DMADEVICES is not set | 654 | # CONFIG_DMADEVICES is not set |
636 | # CONFIG_AUXDISPLAY is not set | 655 | # CONFIG_AUXDISPLAY is not set |
637 | # CONFIG_UIO is not set | 656 | # CONFIG_UIO is not set |
638 | |||
639 | # | ||
640 | # TI VLYNQ | ||
641 | # | ||
642 | # CONFIG_STAGING is not set | 657 | # CONFIG_STAGING is not set |
643 | 658 | ||
644 | # | 659 | # |
@@ -847,6 +862,8 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
847 | CONFIG_TRACING_SUPPORT=y | 862 | CONFIG_TRACING_SUPPORT=y |
848 | CONFIG_FTRACE=y | 863 | CONFIG_FTRACE=y |
849 | # CONFIG_FUNCTION_TRACER is not set | 864 | # CONFIG_FUNCTION_TRACER is not set |
865 | # CONFIG_IRQSOFF_TRACER is not set | ||
866 | # CONFIG_PREEMPT_TRACER is not set | ||
850 | # CONFIG_SCHED_TRACER is not set | 867 | # CONFIG_SCHED_TRACER is not set |
851 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 868 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
852 | # CONFIG_BOOT_TRACER is not set | 869 | # CONFIG_BOOT_TRACER is not set |
@@ -857,6 +874,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
857 | # CONFIG_KMEMTRACE is not set | 874 | # CONFIG_KMEMTRACE is not set |
858 | # CONFIG_WORKQUEUE_TRACER is not set | 875 | # CONFIG_WORKQUEUE_TRACER is not set |
859 | # CONFIG_BLK_DEV_IO_TRACE is not set | 876 | # CONFIG_BLK_DEV_IO_TRACE is not set |
877 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
860 | # CONFIG_SAMPLES is not set | 878 | # CONFIG_SAMPLES is not set |
861 | CONFIG_HAVE_ARCH_KGDB=y | 879 | CONFIG_HAVE_ARCH_KGDB=y |
862 | # CONFIG_KGDB is not set | 880 | # CONFIG_KGDB is not set |
diff --git a/arch/arm/configs/s5pv210_defconfig b/arch/arm/configs/s5pv210_defconfig index 6831dab97d96..e2f5bce29828 100644 --- a/arch/arm/configs/s5pv210_defconfig +++ b/arch/arm/configs/s5pv210_defconfig | |||
@@ -1,11 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34 | 3 | # Linux kernel version: 2.6.34 |
4 | # Sat May 22 03:18:22 2010 | 4 | # Wed May 26 19:04:39 2010 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
8 | CONFIG_GENERIC_GPIO=y | 8 | CONFIG_GENERIC_GPIO=y |
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_ARCH_USES_GETTIMEOFFSET=y | ||
9 | CONFIG_HAVE_PROC_CPU=y | 11 | CONFIG_HAVE_PROC_CPU=y |
10 | CONFIG_NO_IOPORT=y | 12 | CONFIG_NO_IOPORT=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 13 | CONFIG_GENERIC_HARDIRQS=y |
@@ -35,6 +37,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
35 | CONFIG_LOCALVERSION="" | 37 | CONFIG_LOCALVERSION="" |
36 | CONFIG_LOCALVERSION_AUTO=y | 38 | CONFIG_LOCALVERSION_AUTO=y |
37 | CONFIG_HAVE_KERNEL_GZIP=y | 39 | CONFIG_HAVE_KERNEL_GZIP=y |
40 | CONFIG_HAVE_KERNEL_LZMA=y | ||
38 | CONFIG_HAVE_KERNEL_LZO=y | 41 | CONFIG_HAVE_KERNEL_LZO=y |
39 | CONFIG_KERNEL_GZIP=y | 42 | CONFIG_KERNEL_GZIP=y |
40 | # CONFIG_KERNEL_BZIP2 is not set | 43 | # CONFIG_KERNEL_BZIP2 is not set |
@@ -180,9 +183,11 @@ CONFIG_MMU=y | |||
180 | # CONFIG_ARCH_INTEGRATOR is not set | 183 | # CONFIG_ARCH_INTEGRATOR is not set |
181 | # CONFIG_ARCH_REALVIEW is not set | 184 | # CONFIG_ARCH_REALVIEW is not set |
182 | # CONFIG_ARCH_VERSATILE is not set | 185 | # CONFIG_ARCH_VERSATILE is not set |
186 | # CONFIG_ARCH_VEXPRESS is not set | ||
183 | # CONFIG_ARCH_AT91 is not set | 187 | # CONFIG_ARCH_AT91 is not set |
184 | # CONFIG_ARCH_BCMRING is not set | 188 | # CONFIG_ARCH_BCMRING is not set |
185 | # CONFIG_ARCH_CLPS711X is not set | 189 | # CONFIG_ARCH_CLPS711X is not set |
190 | # CONFIG_ARCH_CNS3XXX is not set | ||
186 | # CONFIG_ARCH_GEMINI is not set | 191 | # CONFIG_ARCH_GEMINI is not set |
187 | # CONFIG_ARCH_EBSA110 is not set | 192 | # CONFIG_ARCH_EBSA110 is not set |
188 | # CONFIG_ARCH_EP93XX is not set | 193 | # CONFIG_ARCH_EP93XX is not set |
@@ -218,7 +223,7 @@ CONFIG_MMU=y | |||
218 | # CONFIG_ARCH_S3C64XX is not set | 223 | # CONFIG_ARCH_S3C64XX is not set |
219 | # CONFIG_ARCH_S5P6440 is not set | 224 | # CONFIG_ARCH_S5P6440 is not set |
220 | # CONFIG_ARCH_S5P6442 is not set | 225 | # CONFIG_ARCH_S5P6442 is not set |
221 | # CONFIG_ARCH_S5PC1XX is not set | 226 | # CONFIG_ARCH_S5PC100 is not set |
222 | CONFIG_ARCH_S5PV210=y | 227 | CONFIG_ARCH_S5PV210=y |
223 | # CONFIG_ARCH_SHARK is not set | 228 | # CONFIG_ARCH_SHARK is not set |
224 | # CONFIG_ARCH_LH7A40X is not set | 229 | # CONFIG_ARCH_LH7A40X is not set |
@@ -227,6 +232,7 @@ CONFIG_ARCH_S5PV210=y | |||
227 | # CONFIG_ARCH_NOMADIK is not set | 232 | # CONFIG_ARCH_NOMADIK is not set |
228 | # CONFIG_ARCH_DAVINCI is not set | 233 | # CONFIG_ARCH_DAVINCI is not set |
229 | # CONFIG_ARCH_OMAP is not set | 234 | # CONFIG_ARCH_OMAP is not set |
235 | # CONFIG_PLAT_SPEAR is not set | ||
230 | CONFIG_PLAT_SAMSUNG=y | 236 | CONFIG_PLAT_SAMSUNG=y |
231 | 237 | ||
232 | # | 238 | # |
@@ -242,16 +248,24 @@ CONFIG_SAMSUNG_GPIOLIB_4BIT=y | |||
242 | CONFIG_S3C_GPIO_CFG_S3C24XX=y | 248 | CONFIG_S3C_GPIO_CFG_S3C24XX=y |
243 | CONFIG_S3C_GPIO_CFG_S3C64XX=y | 249 | CONFIG_S3C_GPIO_CFG_S3C64XX=y |
244 | CONFIG_S3C_GPIO_PULL_UPDOWN=y | 250 | CONFIG_S3C_GPIO_PULL_UPDOWN=y |
251 | CONFIG_S5P_GPIO_DRVSTR=y | ||
245 | CONFIG_SAMSUNG_GPIO_EXTRA=0 | 252 | CONFIG_SAMSUNG_GPIO_EXTRA=0 |
246 | CONFIG_S3C_GPIO_SPACE=0 | 253 | CONFIG_S3C_GPIO_SPACE=0 |
247 | CONFIG_S3C_GPIO_TRACK=y | 254 | CONFIG_S3C_GPIO_TRACK=y |
248 | # CONFIG_S3C_ADC is not set | 255 | # CONFIG_S3C_ADC is not set |
256 | CONFIG_S3C_DEV_WDT=y | ||
257 | CONFIG_SAMSUNG_DEV_ADC=y | ||
258 | CONFIG_SAMSUNG_DEV_TS=y | ||
259 | CONFIG_S3C_PL330_DMA=y | ||
249 | 260 | ||
250 | # | 261 | # |
251 | # Power management | 262 | # Power management |
252 | # | 263 | # |
253 | CONFIG_PLAT_S5P=y | 264 | CONFIG_PLAT_S5P=y |
265 | CONFIG_S5P_EXT_INT=y | ||
254 | CONFIG_CPU_S5PV210=y | 266 | CONFIG_CPU_S5PV210=y |
267 | # CONFIG_MACH_AQUILA is not set | ||
268 | # CONFIG_MACH_GONI is not set | ||
255 | CONFIG_MACH_SMDKV210=y | 269 | CONFIG_MACH_SMDKV210=y |
256 | # CONFIG_MACH_SMDKC110 is not set | 270 | # CONFIG_MACH_SMDKC110 is not set |
257 | 271 | ||
@@ -281,12 +295,14 @@ CONFIG_ARM_THUMB=y | |||
281 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 295 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
282 | CONFIG_HAS_TLS_REG=y | 296 | CONFIG_HAS_TLS_REG=y |
283 | CONFIG_ARM_L1_CACHE_SHIFT=6 | 297 | CONFIG_ARM_L1_CACHE_SHIFT=6 |
298 | CONFIG_ARM_DMA_MEM_BUFFERABLE=y | ||
284 | CONFIG_CPU_HAS_PMU=y | 299 | CONFIG_CPU_HAS_PMU=y |
285 | # CONFIG_ARM_ERRATA_430973 is not set | 300 | # CONFIG_ARM_ERRATA_430973 is not set |
286 | # CONFIG_ARM_ERRATA_458693 is not set | 301 | # CONFIG_ARM_ERRATA_458693 is not set |
287 | # CONFIG_ARM_ERRATA_460075 is not set | 302 | # CONFIG_ARM_ERRATA_460075 is not set |
288 | CONFIG_ARM_VIC=y | 303 | CONFIG_ARM_VIC=y |
289 | CONFIG_ARM_VIC_NR=2 | 304 | CONFIG_ARM_VIC_NR=2 |
305 | CONFIG_PL330=y | ||
290 | 306 | ||
291 | # | 307 | # |
292 | # Bus support | 308 | # Bus support |
@@ -335,6 +351,7 @@ CONFIG_ALIGNMENT_TRAP=y | |||
335 | CONFIG_ZBOOT_ROM_TEXT=0 | 351 | CONFIG_ZBOOT_ROM_TEXT=0 |
336 | CONFIG_ZBOOT_ROM_BSS=0 | 352 | CONFIG_ZBOOT_ROM_BSS=0 |
337 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" | 353 | CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" |
354 | # CONFIG_CMDLINE_FORCE is not set | ||
338 | # CONFIG_XIP_KERNEL is not set | 355 | # CONFIG_XIP_KERNEL is not set |
339 | # CONFIG_KEXEC is not set | 356 | # CONFIG_KEXEC is not set |
340 | 357 | ||
@@ -481,7 +498,9 @@ CONFIG_INPUT_EVDEV=y | |||
481 | CONFIG_INPUT_TOUCHSCREEN=y | 498 | CONFIG_INPUT_TOUCHSCREEN=y |
482 | # CONFIG_TOUCHSCREEN_AD7879 is not set | 499 | # CONFIG_TOUCHSCREEN_AD7879 is not set |
483 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | 500 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set |
501 | # CONFIG_TOUCHSCREEN_HAMPSHIRE is not set | ||
484 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | 502 | # CONFIG_TOUCHSCREEN_FUJITSU is not set |
503 | # CONFIG_TOUCHSCREEN_S3C2410 is not set | ||
485 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 504 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
486 | # CONFIG_TOUCHSCREEN_ELO is not set | 505 | # CONFIG_TOUCHSCREEN_ELO is not set |
487 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set | 506 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set |
@@ -536,6 +555,8 @@ CONFIG_SERIAL_S5PV210=y | |||
536 | CONFIG_SERIAL_CORE=y | 555 | CONFIG_SERIAL_CORE=y |
537 | CONFIG_SERIAL_CORE_CONSOLE=y | 556 | CONFIG_SERIAL_CORE_CONSOLE=y |
538 | # CONFIG_SERIAL_TIMBERDALE is not set | 557 | # CONFIG_SERIAL_TIMBERDALE is not set |
558 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
559 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
539 | CONFIG_UNIX98_PTYS=y | 560 | CONFIG_UNIX98_PTYS=y |
540 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 561 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
541 | CONFIG_LEGACY_PTYS=y | 562 | CONFIG_LEGACY_PTYS=y |
@@ -583,6 +604,7 @@ CONFIG_GPIOLIB=y | |||
583 | # CONFIG_HWMON is not set | 604 | # CONFIG_HWMON is not set |
584 | # CONFIG_THERMAL is not set | 605 | # CONFIG_THERMAL is not set |
585 | # CONFIG_WATCHDOG is not set | 606 | # CONFIG_WATCHDOG is not set |
607 | CONFIG_HAVE_S3C2410_WATCHDOG=y | ||
586 | CONFIG_SSB_POSSIBLE=y | 608 | CONFIG_SSB_POSSIBLE=y |
587 | 609 | ||
588 | # | 610 | # |
@@ -635,10 +657,6 @@ CONFIG_RTC_LIB=y | |||
635 | # CONFIG_DMADEVICES is not set | 657 | # CONFIG_DMADEVICES is not set |
636 | # CONFIG_AUXDISPLAY is not set | 658 | # CONFIG_AUXDISPLAY is not set |
637 | # CONFIG_UIO is not set | 659 | # CONFIG_UIO is not set |
638 | |||
639 | # | ||
640 | # TI VLYNQ | ||
641 | # | ||
642 | # CONFIG_STAGING is not set | 660 | # CONFIG_STAGING is not set |
643 | 661 | ||
644 | # | 662 | # |
@@ -847,6 +865,8 @@ CONFIG_HAVE_FUNCTION_TRACER=y | |||
847 | CONFIG_TRACING_SUPPORT=y | 865 | CONFIG_TRACING_SUPPORT=y |
848 | CONFIG_FTRACE=y | 866 | CONFIG_FTRACE=y |
849 | # CONFIG_FUNCTION_TRACER is not set | 867 | # CONFIG_FUNCTION_TRACER is not set |
868 | # CONFIG_IRQSOFF_TRACER is not set | ||
869 | # CONFIG_PREEMPT_TRACER is not set | ||
850 | # CONFIG_SCHED_TRACER is not set | 870 | # CONFIG_SCHED_TRACER is not set |
851 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | 871 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set |
852 | # CONFIG_BOOT_TRACER is not set | 872 | # CONFIG_BOOT_TRACER is not set |
@@ -857,6 +877,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
857 | # CONFIG_KMEMTRACE is not set | 877 | # CONFIG_KMEMTRACE is not set |
858 | # CONFIG_WORKQUEUE_TRACER is not set | 878 | # CONFIG_WORKQUEUE_TRACER is not set |
859 | # CONFIG_BLK_DEV_IO_TRACE is not set | 879 | # CONFIG_BLK_DEV_IO_TRACE is not set |
880 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
860 | # CONFIG_SAMPLES is not set | 881 | # CONFIG_SAMPLES is not set |
861 | CONFIG_HAVE_ARCH_KGDB=y | 882 | CONFIG_HAVE_ARCH_KGDB=y |
862 | # CONFIG_KGDB is not set | 883 | # CONFIG_KGDB is not set |
diff --git a/arch/arm/include/asm/scatterlist.h b/arch/arm/include/asm/scatterlist.h index bcda59f39941..2f87870d9347 100644 --- a/arch/arm/include/asm/scatterlist.h +++ b/arch/arm/include/asm/scatterlist.h | |||
@@ -3,9 +3,6 @@ | |||
3 | 3 | ||
4 | #include <asm/memory.h> | 4 | #include <asm/memory.h> |
5 | #include <asm/types.h> | 5 | #include <asm/types.h> |
6 | |||
7 | #include <asm-generic/scatterlist.h> | 6 | #include <asm-generic/scatterlist.h> |
8 | 7 | ||
9 | #undef ARCH_HAS_SG_CHAIN | ||
10 | |||
11 | #endif /* _ASMARM_SCATTERLIST_H */ | 8 | #endif /* _ASMARM_SCATTERLIST_H */ |
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index abd04932917b..2ec3095ffb7b 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/i2c.h> | 17 | #include <linux/i2c.h> |
18 | #include <linux/i2c/at24.h> | 18 | #include <linux/i2c/at24.h> |
19 | #include <linux/i2c/pca953x.h> | 19 | #include <linux/i2c/pca953x.h> |
20 | #include <linux/mfd/tps6507x.h> | ||
20 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
21 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
22 | #include <linux/mtd/mtd.h> | 23 | #include <linux/mtd/mtd.h> |
@@ -24,6 +25,8 @@ | |||
24 | #include <linux/mtd/partitions.h> | 25 | #include <linux/mtd/partitions.h> |
25 | #include <linux/mtd/physmap.h> | 26 | #include <linux/mtd/physmap.h> |
26 | #include <linux/regulator/machine.h> | 27 | #include <linux/regulator/machine.h> |
28 | #include <linux/mfd/tps6507x.h> | ||
29 | #include <linux/input/tps6507x-ts.h> | ||
27 | 30 | ||
28 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
@@ -533,10 +536,24 @@ struct regulator_init_data tps65070_regulator_data[] = { | |||
533 | }, | 536 | }, |
534 | }; | 537 | }; |
535 | 538 | ||
539 | static struct touchscreen_init_data tps6507x_touchscreen_data = { | ||
540 | .poll_period = 30, /* ms between touch samples */ | ||
541 | .min_pressure = 0x30, /* minimum pressure to trigger touch */ | ||
542 | .vref = 0, /* turn off vref when not using A/D */ | ||
543 | .vendor = 0, /* /sys/class/input/input?/id/vendor */ | ||
544 | .product = 65070, /* /sys/class/input/input?/id/product */ | ||
545 | .version = 0x100, /* /sys/class/input/input?/id/version */ | ||
546 | }; | ||
547 | |||
548 | static struct tps6507x_board tps_board = { | ||
549 | .tps6507x_pmic_init_data = &tps65070_regulator_data[0], | ||
550 | .tps6507x_ts_init_data = &tps6507x_touchscreen_data, | ||
551 | }; | ||
552 | |||
536 | static struct i2c_board_info __initdata da850evm_tps65070_info[] = { | 553 | static struct i2c_board_info __initdata da850evm_tps65070_info[] = { |
537 | { | 554 | { |
538 | I2C_BOARD_INFO("tps6507x", 0x48), | 555 | I2C_BOARD_INFO("tps6507x", 0x48), |
539 | .platform_data = &tps65070_regulator_data[0], | 556 | .platform_data = &tps_board, |
540 | }, | 557 | }, |
541 | }; | 558 | }; |
542 | 559 | ||
diff --git a/arch/arm/mach-davinci/include/mach/mmc.h b/arch/arm/mach-davinci/include/mach/mmc.h index 5a85e24f3673..d4f1e9675069 100644 --- a/arch/arm/mach-davinci/include/mach/mmc.h +++ b/arch/arm/mach-davinci/include/mach/mmc.h | |||
@@ -22,6 +22,9 @@ struct davinci_mmc_config { | |||
22 | 22 | ||
23 | /* Version of the MMC/SD controller */ | 23 | /* Version of the MMC/SD controller */ |
24 | u8 version; | 24 | u8 version; |
25 | |||
26 | /* Number of sg segments */ | ||
27 | u8 nr_sg; | ||
25 | }; | 28 | }; |
26 | void davinci_setup_mmc(int module, struct davinci_mmc_config *config); | 29 | void davinci_setup_mmc(int module, struct davinci_mmc_config *config); |
27 | 30 | ||
diff --git a/arch/arm/mach-msm/dma.c b/arch/arm/mach-msm/dma.c index d029d1f5f9e2..02cae5e2951c 100644 --- a/arch/arm/mach-msm/dma.c +++ b/arch/arm/mach-msm/dma.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/completion.h> | ||
20 | #include <mach/dma.h> | 21 | #include <mach/dma.h> |
21 | 22 | ||
22 | #define MSM_DMOV_CHANNEL_COUNT 16 | 23 | #define MSM_DMOV_CHANNEL_COUNT 16 |
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c index 33a8d35498a7..62b5e40165df 100644 --- a/arch/arm/mach-mx3/mach-mx31moboard.c +++ b/arch/arm/mach-mx3/mach-mx31moboard.c | |||
@@ -220,11 +220,54 @@ static struct mc13783_regulator_init_data moboard_regulators[] = { | |||
220 | }, | 220 | }, |
221 | }; | 221 | }; |
222 | 222 | ||
223 | static struct mc13783_led_platform_data moboard_led[] = { | ||
224 | { | ||
225 | .id = MC13783_LED_R1, | ||
226 | .name = "coreboard-led-4:red", | ||
227 | .max_current = 2, | ||
228 | }, | ||
229 | { | ||
230 | .id = MC13783_LED_G1, | ||
231 | .name = "coreboard-led-4:green", | ||
232 | .max_current = 2, | ||
233 | }, | ||
234 | { | ||
235 | .id = MC13783_LED_B1, | ||
236 | .name = "coreboard-led-4:blue", | ||
237 | .max_current = 2, | ||
238 | }, | ||
239 | { | ||
240 | .id = MC13783_LED_R2, | ||
241 | .name = "coreboard-led-5:red", | ||
242 | .max_current = 3, | ||
243 | }, | ||
244 | { | ||
245 | .id = MC13783_LED_G2, | ||
246 | .name = "coreboard-led-5:green", | ||
247 | .max_current = 3, | ||
248 | }, | ||
249 | { | ||
250 | .id = MC13783_LED_B2, | ||
251 | .name = "coreboard-led-5:blue", | ||
252 | .max_current = 3, | ||
253 | }, | ||
254 | }; | ||
255 | |||
256 | static struct mc13783_leds_platform_data moboard_leds = { | ||
257 | .num_leds = ARRAY_SIZE(moboard_led), | ||
258 | .led = moboard_led, | ||
259 | .flags = MC13783_LED_SLEWLIMTC, | ||
260 | .abmode = MC13783_LED_AB_DISABLED, | ||
261 | .tc1_period = MC13783_LED_PERIOD_10MS, | ||
262 | .tc2_period = MC13783_LED_PERIOD_10MS, | ||
263 | }; | ||
264 | |||
223 | static struct mc13783_platform_data moboard_pmic = { | 265 | static struct mc13783_platform_data moboard_pmic = { |
224 | .regulators = moboard_regulators, | 266 | .regulators = moboard_regulators, |
225 | .num_regulators = ARRAY_SIZE(moboard_regulators), | 267 | .num_regulators = ARRAY_SIZE(moboard_regulators), |
268 | .leds = &moboard_leds, | ||
226 | .flags = MC13783_USE_REGULATOR | MC13783_USE_RTC | | 269 | .flags = MC13783_USE_REGULATOR | MC13783_USE_RTC | |
227 | MC13783_USE_ADC, | 270 | MC13783_USE_ADC | MC13783_USE_LED, |
228 | }; | 271 | }; |
229 | 272 | ||
230 | static struct spi_board_info moboard_spi_board_info[] __initdata = { | 273 | static struct spi_board_info moboard_spi_board_info[] __initdata = { |
diff --git a/arch/arm/mach-nomadik/clock.c b/arch/arm/mach-nomadik/clock.c index 2c471fc451d7..f035f4185274 100644 --- a/arch/arm/mach-nomadik/clock.c +++ b/arch/arm/mach-nomadik/clock.c | |||
@@ -32,7 +32,10 @@ void clk_disable(struct clk *clk) | |||
32 | } | 32 | } |
33 | EXPORT_SYMBOL(clk_disable); | 33 | EXPORT_SYMBOL(clk_disable); |
34 | 34 | ||
35 | /* We have a fixed clock alone, for now */ | 35 | static struct clk clk_24 = { |
36 | .rate = 2400000, | ||
37 | }; | ||
38 | |||
36 | static struct clk clk_48 = { | 39 | static struct clk clk_48 = { |
37 | .rate = 48 * 1000 * 1000, | 40 | .rate = 48 * 1000 * 1000, |
38 | }; | 41 | }; |
@@ -50,6 +53,8 @@ static struct clk clk_default; | |||
50 | } | 53 | } |
51 | 54 | ||
52 | static struct clk_lookup lookups[] = { | 55 | static struct clk_lookup lookups[] = { |
56 | CLK(&clk_24, "mtu0"), | ||
57 | CLK(&clk_24, "mtu1"), | ||
53 | CLK(&clk_48, "uart0"), | 58 | CLK(&clk_48, "uart0"), |
54 | CLK(&clk_48, "uart1"), | 59 | CLK(&clk_48, "uart1"), |
55 | CLK(&clk_default, "gpio.0"), | 60 | CLK(&clk_default, "gpio.0"), |
@@ -59,10 +64,8 @@ static struct clk_lookup lookups[] = { | |||
59 | CLK(&clk_default, "rng"), | 64 | CLK(&clk_default, "rng"), |
60 | }; | 65 | }; |
61 | 66 | ||
62 | static int __init clk_init(void) | 67 | int __init clk_init(void) |
63 | { | 68 | { |
64 | clkdev_add_table(lookups, ARRAY_SIZE(lookups)); | 69 | clkdev_add_table(lookups, ARRAY_SIZE(lookups)); |
65 | return 0; | 70 | return 0; |
66 | } | 71 | } |
67 | |||
68 | arch_initcall(clk_init); | ||
diff --git a/arch/arm/mach-nomadik/clock.h b/arch/arm/mach-nomadik/clock.h index 5563985a2cc7..78da2e7c3985 100644 --- a/arch/arm/mach-nomadik/clock.h +++ b/arch/arm/mach-nomadik/clock.h | |||
@@ -11,3 +11,5 @@ | |||
11 | struct clk { | 11 | struct clk { |
12 | unsigned long rate; | 12 | unsigned long rate; |
13 | }; | 13 | }; |
14 | |||
15 | int __init clk_init(void); | ||
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c index 91c3c901b469..ac58e3b03b1a 100644 --- a/arch/arm/mach-nomadik/cpu-8815.c +++ b/arch/arm/mach-nomadik/cpu-8815.c | |||
@@ -31,6 +31,8 @@ | |||
31 | #include <asm/cacheflush.h> | 31 | #include <asm/cacheflush.h> |
32 | #include <asm/hardware/cache-l2x0.h> | 32 | #include <asm/hardware/cache-l2x0.h> |
33 | 33 | ||
34 | #include "clock.h" | ||
35 | |||
34 | #define __MEM_4K_RESOURCE(x) \ | 36 | #define __MEM_4K_RESOURCE(x) \ |
35 | .res = {.start = (x), .end = (x) + SZ_4K - 1, .flags = IORESOURCE_MEM} | 37 | .res = {.start = (x), .end = (x) + SZ_4K - 1, .flags = IORESOURCE_MEM} |
36 | 38 | ||
@@ -143,6 +145,12 @@ void __init cpu8815_init_irq(void) | |||
143 | /* This modified VIC cell has two register blocks, at 0 and 0x20 */ | 145 | /* This modified VIC cell has two register blocks, at 0 and 0x20 */ |
144 | vic_init(io_p2v(NOMADIK_IC_BASE + 0x00), IRQ_VIC_START + 0, ~0, 0); | 146 | vic_init(io_p2v(NOMADIK_IC_BASE + 0x00), IRQ_VIC_START + 0, ~0, 0); |
145 | vic_init(io_p2v(NOMADIK_IC_BASE + 0x20), IRQ_VIC_START + 32, ~0, 0); | 147 | vic_init(io_p2v(NOMADIK_IC_BASE + 0x20), IRQ_VIC_START + 32, ~0, 0); |
148 | |||
149 | /* | ||
150 | * Init clocks here so that they are available for system timer | ||
151 | * initialization. | ||
152 | */ | ||
153 | clk_init(); | ||
146 | } | 154 | } |
147 | 155 | ||
148 | /* | 156 | /* |
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index e7d629b3c76a..f474a80b8867 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c | |||
@@ -137,9 +137,7 @@ static void ads7846_dev_init(void) | |||
137 | } | 137 | } |
138 | 138 | ||
139 | gpio_direction_input(ts_gpio); | 139 | gpio_direction_input(ts_gpio); |
140 | 140 | gpio_set_debounce(ts_gpio, 310); | |
141 | omap_set_gpio_debounce(ts_gpio, 1); | ||
142 | omap_set_gpio_debounce_time(ts_gpio, 0xa); | ||
143 | } | 141 | } |
144 | 142 | ||
145 | static int ads7846_get_pendown_state(void) | 143 | static int ads7846_get_pendown_state(void) |
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index 5fcb52e71298..fefd7e6e9779 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c | |||
@@ -209,8 +209,7 @@ static void ads7846_dev_init(void) | |||
209 | } | 209 | } |
210 | 210 | ||
211 | gpio_direction_input(ts_gpio); | 211 | gpio_direction_input(ts_gpio); |
212 | omap_set_gpio_debounce(ts_gpio, 1); | 212 | gpio_set_debounce(ts_gpio, 310); |
213 | omap_set_gpio_debounce_time(ts_gpio, 0xa); | ||
214 | } | 213 | } |
215 | 214 | ||
216 | static int ads7846_get_pendown_state(void) | 215 | static int ads7846_get_pendown_state(void) |
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 81bba194b030..b95261013812 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c | |||
@@ -579,9 +579,7 @@ static void ads7846_dev_init(void) | |||
579 | printk(KERN_ERR "can't get ads7846 pen down GPIO\n"); | 579 | printk(KERN_ERR "can't get ads7846 pen down GPIO\n"); |
580 | 580 | ||
581 | gpio_direction_input(OMAP3_EVM_TS_GPIO); | 581 | gpio_direction_input(OMAP3_EVM_TS_GPIO); |
582 | 582 | gpio_set_debounce(OMAP3_EVM_TS_GPIO, 310); | |
583 | omap_set_gpio_debounce(OMAP3_EVM_TS_GPIO, 1); | ||
584 | omap_set_gpio_debounce_time(OMAP3_EVM_TS_GPIO, 0xa); | ||
585 | } | 583 | } |
586 | 584 | ||
587 | static int ads7846_get_pendown_state(void) | 585 | static int ads7846_get_pendown_state(void) |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 395d049bf010..db06dc910ba7 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -130,8 +130,8 @@ static struct platform_device pandora_keys_gpio = { | |||
130 | static void __init pandora_keys_gpio_init(void) | 130 | static void __init pandora_keys_gpio_init(void) |
131 | { | 131 | { |
132 | /* set debounce time for GPIO banks 4 and 6 */ | 132 | /* set debounce time for GPIO banks 4 and 6 */ |
133 | omap_set_gpio_debounce_time(32 * 3, GPIO_DEBOUNCE_TIME); | 133 | gpio_set_debounce(32 * 3, GPIO_DEBOUNCE_TIME); |
134 | omap_set_gpio_debounce_time(32 * 5, GPIO_DEBOUNCE_TIME); | 134 | gpio_set_debounce(32 * 5, GPIO_DEBOUNCE_TIME); |
135 | } | 135 | } |
136 | 136 | ||
137 | static int board_keymap[] = { | 137 | static int board_keymap[] = { |
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index 2504d41f923e..2f5f8233dd5b 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | |||
@@ -328,8 +328,7 @@ static void __init omap3_ads7846_init(void) | |||
328 | } | 328 | } |
329 | 329 | ||
330 | gpio_direction_input(OMAP3_TS_GPIO); | 330 | gpio_direction_input(OMAP3_TS_GPIO); |
331 | omap_set_gpio_debounce(OMAP3_TS_GPIO, 1); | 331 | gpio_set_debounce(OMAP3_TS_GPIO, 310); |
332 | omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa); | ||
333 | } | 332 | } |
334 | 333 | ||
335 | static struct ads7846_platform_data ads7846_config = { | 334 | static struct ads7846_platform_data ads7846_config = { |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index 685f34a9634b..fe0de1698edc 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
@@ -240,22 +240,23 @@ error_fail: | |||
240 | 240 | ||
241 | #define ORION_BLINK_HALF_PERIOD 100 /* ms */ | 241 | #define ORION_BLINK_HALF_PERIOD 100 /* ms */ |
242 | 242 | ||
243 | static int dns323_gpio_blink_set(unsigned gpio, | 243 | static int dns323_gpio_blink_set(unsigned gpio, int state, |
244 | unsigned long *delay_on, unsigned long *delay_off) | 244 | unsigned long *delay_on, unsigned long *delay_off) |
245 | { | 245 | { |
246 | static int value = 0; | ||
247 | 246 | ||
248 | if (!*delay_on && !*delay_off) | 247 | if (delay_on && delay_off && !*delay_on && !*delay_off) |
249 | *delay_on = *delay_off = ORION_BLINK_HALF_PERIOD; | 248 | *delay_on = *delay_off = ORION_BLINK_HALF_PERIOD; |
250 | 249 | ||
251 | if (ORION_BLINK_HALF_PERIOD == *delay_on | 250 | switch(state) { |
252 | && ORION_BLINK_HALF_PERIOD == *delay_off) { | 251 | case GPIO_LED_NO_BLINK_LOW: |
253 | value = !value; | 252 | case GPIO_LED_NO_BLINK_HIGH: |
254 | orion_gpio_set_blink(gpio, value); | 253 | orion_gpio_set_blink(gpio, 0); |
255 | return 0; | 254 | gpio_set_value(gpio, state); |
255 | break; | ||
256 | case GPIO_LED_BLINK: | ||
257 | orion_gpio_set_blink(gpio, 1); | ||
256 | } | 258 | } |
257 | 259 | return 0; | |
258 | return -EINVAL; | ||
259 | } | 260 | } |
260 | 261 | ||
261 | static struct gpio_led dns323_leds[] = { | 262 | static struct gpio_led dns323_leds[] = { |
@@ -263,6 +264,7 @@ static struct gpio_led dns323_leds[] = { | |||
263 | .name = "power:blue", | 264 | .name = "power:blue", |
264 | .gpio = DNS323_GPIO_LED_POWER2, | 265 | .gpio = DNS323_GPIO_LED_POWER2, |
265 | .default_trigger = "timer", | 266 | .default_trigger = "timer", |
267 | .active_low = 1, | ||
266 | }, { | 268 | }, { |
267 | .name = "right:amber", | 269 | .name = "right:amber", |
268 | .gpio = DNS323_GPIO_LED_RIGHT_AMBER, | 270 | .gpio = DNS323_GPIO_LED_RIGHT_AMBER, |
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c index 033b567e50bb..ce1104d1bc17 100644 --- a/arch/arm/mach-pxa/palmtc.c +++ b/arch/arm/mach-pxa/palmtc.c | |||
@@ -263,11 +263,11 @@ const struct matrix_keymap_data palmtc_keymap_data = { | |||
263 | .keymap_size = ARRAY_SIZE(palmtc_matrix_keys), | 263 | .keymap_size = ARRAY_SIZE(palmtc_matrix_keys), |
264 | }; | 264 | }; |
265 | 265 | ||
266 | const static unsigned int palmtc_keypad_row_gpios[] = { | 266 | static const unsigned int palmtc_keypad_row_gpios[] = { |
267 | 0, 9, 10, 11 | 267 | 0, 9, 10, 11 |
268 | }; | 268 | }; |
269 | 269 | ||
270 | const static unsigned int palmtc_keypad_col_gpios[] = { | 270 | static const unsigned int palmtc_keypad_col_gpios[] = { |
271 | 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 79, 80 | 271 | 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 79, 80 |
272 | }; | 272 | }; |
273 | 273 | ||
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 4d2413ed0ffa..c1048a35f187 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -818,6 +818,9 @@ static struct i2c_board_info akita_i2c_board_info[] = { | |||
818 | .type = "max7310", | 818 | .type = "max7310", |
819 | .addr = 0x18, | 819 | .addr = 0x18, |
820 | .platform_data = &akita_ioexp, | 820 | .platform_data = &akita_ioexp, |
821 | }, { | ||
822 | .type = "wm8750", | ||
823 | .addr = 0x1b, | ||
821 | }, | 824 | }, |
822 | }; | 825 | }; |
823 | 826 | ||
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c index 45799c608d8f..9e39faa283b9 100644 --- a/arch/arm/mach-s3c2440/mach-gta02.c +++ b/arch/arm/mach-s3c2440/mach-gta02.c | |||
@@ -49,7 +49,6 @@ | |||
49 | #include <linux/io.h> | 49 | #include <linux/io.h> |
50 | 50 | ||
51 | #include <linux/i2c.h> | 51 | #include <linux/i2c.h> |
52 | #include <linux/backlight.h> | ||
53 | #include <linux/regulator/machine.h> | 52 | #include <linux/regulator/machine.h> |
54 | 53 | ||
55 | #include <linux/mfd/pcf50633/core.h> | 54 | #include <linux/mfd/pcf50633/core.h> |
@@ -57,6 +56,7 @@ | |||
57 | #include <linux/mfd/pcf50633/adc.h> | 56 | #include <linux/mfd/pcf50633/adc.h> |
58 | #include <linux/mfd/pcf50633/gpio.h> | 57 | #include <linux/mfd/pcf50633/gpio.h> |
59 | #include <linux/mfd/pcf50633/pmic.h> | 58 | #include <linux/mfd/pcf50633/pmic.h> |
59 | #include <linux/mfd/pcf50633/backlight.h> | ||
60 | 60 | ||
61 | #include <asm/mach/arch.h> | 61 | #include <asm/mach/arch.h> |
62 | #include <asm/mach/map.h> | 62 | #include <asm/mach/map.h> |
@@ -254,6 +254,12 @@ static char *gta02_batteries[] = { | |||
254 | "battery", | 254 | "battery", |
255 | }; | 255 | }; |
256 | 256 | ||
257 | static struct pcf50633_bl_platform_data gta02_backlight_data = { | ||
258 | .default_brightness = 0x3f, | ||
259 | .default_brightness_limit = 0, | ||
260 | .ramp_time = 5, | ||
261 | }; | ||
262 | |||
257 | struct pcf50633_platform_data gta02_pcf_pdata = { | 263 | struct pcf50633_platform_data gta02_pcf_pdata = { |
258 | .resumers = { | 264 | .resumers = { |
259 | [0] = PCF50633_INT1_USBINS | | 265 | [0] = PCF50633_INT1_USBINS | |
@@ -271,6 +277,8 @@ struct pcf50633_platform_data gta02_pcf_pdata = { | |||
271 | 277 | ||
272 | .charger_reference_current_ma = 1000, | 278 | .charger_reference_current_ma = 1000, |
273 | 279 | ||
280 | .backlight_data = >a02_backlight_data, | ||
281 | |||
274 | .reg_init_data = { | 282 | .reg_init_data = { |
275 | [PCF50633_REGULATOR_AUTO] = { | 283 | [PCF50633_REGULATOR_AUTO] = { |
276 | .constraints = { | 284 | .constraints = { |
@@ -478,71 +486,6 @@ static struct s3c2410_udc_mach_info gta02_udc_cfg = { | |||
478 | 486 | ||
479 | }; | 487 | }; |
480 | 488 | ||
481 | |||
482 | |||
483 | static void gta02_bl_set_intensity(int intensity) | ||
484 | { | ||
485 | struct pcf50633 *pcf = gta02_pcf; | ||
486 | int old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT); | ||
487 | |||
488 | /* We map 8-bit intensity to 6-bit intensity in hardware. */ | ||
489 | intensity >>= 2; | ||
490 | |||
491 | /* | ||
492 | * This can happen during, eg, print of panic on blanked console, | ||
493 | * but we can't service i2c without interrupts active, so abort. | ||
494 | */ | ||
495 | if (in_atomic()) { | ||
496 | printk(KERN_ERR "gta02_bl_set_intensity called while atomic\n"); | ||
497 | return; | ||
498 | } | ||
499 | |||
500 | old_intensity = pcf50633_reg_read(pcf, PCF50633_REG_LEDOUT); | ||
501 | if (intensity == old_intensity) | ||
502 | return; | ||
503 | |||
504 | /* We can't do this anywhere else. */ | ||
505 | pcf50633_reg_write(pcf, PCF50633_REG_LEDDIM, 5); | ||
506 | |||
507 | if (!(pcf50633_reg_read(pcf, PCF50633_REG_LEDENA) & 3)) | ||
508 | old_intensity = 0; | ||
509 | |||
510 | /* | ||
511 | * The PCF50633 cannot handle LEDOUT = 0 (datasheet p60) | ||
512 | * if seen, you have to re-enable the LED unit. | ||
513 | */ | ||
514 | if (!intensity || !old_intensity) | ||
515 | pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 0); | ||
516 | |||
517 | /* Illegal to set LEDOUT to 0. */ | ||
518 | if (!intensity) | ||
519 | pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f, 2); | ||
520 | else | ||
521 | pcf50633_reg_set_bit_mask(pcf, PCF50633_REG_LEDOUT, 0x3f, | ||
522 | intensity); | ||
523 | |||
524 | if (intensity) | ||
525 | pcf50633_reg_write(pcf, PCF50633_REG_LEDENA, 2); | ||
526 | |||
527 | } | ||
528 | |||
529 | static struct generic_bl_info gta02_bl_info = { | ||
530 | .name = "gta02-bl", | ||
531 | .max_intensity = 0xff, | ||
532 | .default_intensity = 0xff, | ||
533 | .set_bl_intensity = gta02_bl_set_intensity, | ||
534 | }; | ||
535 | |||
536 | static struct platform_device gta02_bl_dev = { | ||
537 | .name = "generic-bl", | ||
538 | .id = 1, | ||
539 | .dev = { | ||
540 | .platform_data = >a02_bl_info, | ||
541 | }, | ||
542 | }; | ||
543 | |||
544 | |||
545 | |||
546 | /* USB */ | 489 | /* USB */ |
547 | static struct s3c2410_hcd_info gta02_usb_info __initdata = { | 490 | static struct s3c2410_hcd_info gta02_usb_info __initdata = { |
548 | .port[0] = { | 491 | .port[0] = { |
@@ -579,7 +522,6 @@ static struct platform_device *gta02_devices[] __initdata = { | |||
579 | /* These guys DO need to be children of PMU. */ | 522 | /* These guys DO need to be children of PMU. */ |
580 | 523 | ||
581 | static struct platform_device *gta02_devices_pmu_children[] = { | 524 | static struct platform_device *gta02_devices_pmu_children[] = { |
582 | >a02_bl_dev, | ||
583 | }; | 525 | }; |
584 | 526 | ||
585 | 527 | ||
diff --git a/arch/arm/mach-s3c64xx/clock.c b/arch/arm/mach-s3c64xx/clock.c index 7a4138beb665..fbd85a9b7bbf 100644 --- a/arch/arm/mach-s3c64xx/clock.c +++ b/arch/arm/mach-s3c64xx/clock.c | |||
@@ -259,6 +259,12 @@ static struct clk init_clocks[] = { | |||
259 | .enable = s3c64xx_hclk_ctrl, | 259 | .enable = s3c64xx_hclk_ctrl, |
260 | .ctrlbit = S3C_CLKCON_HCLK_HSMMC2, | 260 | .ctrlbit = S3C_CLKCON_HCLK_HSMMC2, |
261 | }, { | 261 | }, { |
262 | .name = "otg", | ||
263 | .id = -1, | ||
264 | .parent = &clk_h, | ||
265 | .enable = s3c64xx_hclk_ctrl, | ||
266 | .ctrlbit = S3C_CLKCON_HCLK_USB, | ||
267 | }, { | ||
262 | .name = "timers", | 268 | .name = "timers", |
263 | .id = -1, | 269 | .id = -1, |
264 | .parent = &clk_p, | 270 | .parent = &clk_p, |
diff --git a/arch/arm/mach-s5p6440/include/mach/irqs.h b/arch/arm/mach-s5p6440/include/mach/irqs.h index a4b9b40d18f2..911854d9ad42 100644 --- a/arch/arm/mach-s5p6440/include/mach/irqs.h +++ b/arch/arm/mach-s5p6440/include/mach/irqs.h | |||
@@ -72,7 +72,14 @@ | |||
72 | #define S5P_IRQ_EINT_BASE (S5P_IRQ_VIC1(31) + 6) | 72 | #define S5P_IRQ_EINT_BASE (S5P_IRQ_VIC1(31) + 6) |
73 | 73 | ||
74 | #define S5P_EINT(x) ((x) + S5P_IRQ_EINT_BASE) | 74 | #define S5P_EINT(x) ((x) + S5P_IRQ_EINT_BASE) |
75 | #define IRQ_EINT(x) S5P_EINT(x) | 75 | |
76 | #define S5P_EINT_BASE1 (S5P_IRQ_EINT_BASE) | ||
77 | /* | ||
78 | * S5P6440 has 0-15 external interrupts in group 0. Only these can be used | ||
79 | * to wake up from sleep. If request is beyond this range, by mistake, a large | ||
80 | * return value for an irq number should be indication of something amiss. | ||
81 | */ | ||
82 | #define S5P_EINT_BASE2 (0xf0000000) | ||
76 | 83 | ||
77 | /* | 84 | /* |
78 | * Next the external interrupt groups. These are similar to the IRQ_EINT(x) | 85 | * Next the external interrupt groups. These are similar to the IRQ_EINT(x) |
diff --git a/arch/arm/mach-s5p6442/include/mach/irqs.h b/arch/arm/mach-s5p6442/include/mach/irqs.h index da665809f6e4..02c23749c023 100644 --- a/arch/arm/mach-s5p6442/include/mach/irqs.h +++ b/arch/arm/mach-s5p6442/include/mach/irqs.h | |||
@@ -77,8 +77,9 @@ | |||
77 | 77 | ||
78 | #define S5P_IRQ_EINT_BASE (IRQ_VIC_END + 1) | 78 | #define S5P_IRQ_EINT_BASE (IRQ_VIC_END + 1) |
79 | 79 | ||
80 | #define IRQ_EINT(x) ((x) < 16 ? S5P_IRQ_VIC0(x) : \ | 80 | #define S5P_EINT_BASE1 (S5P_IRQ_VIC0(0)) |
81 | (S5P_IRQ_EINT_BASE + (x)-16)) | 81 | #define S5P_EINT_BASE2 (S5P_IRQ_EINT_BASE) |
82 | |||
82 | /* Set the default NR_IRQS */ | 83 | /* Set the default NR_IRQS */ |
83 | 84 | ||
84 | #define NR_IRQS (IRQ_EINT(31) + 1) | 85 | #define NR_IRQS (IRQ_EINT(31) + 1) |
diff --git a/arch/arm/mach-s5pc100/include/mach/irqs.h b/arch/arm/mach-s5pc100/include/mach/irqs.h index 15066df3ced9..28aa551dc3a8 100644 --- a/arch/arm/mach-s5pc100/include/mach/irqs.h +++ b/arch/arm/mach-s5pc100/include/mach/irqs.h | |||
@@ -100,9 +100,6 @@ | |||
100 | #define S5P_EINT_BASE1 (S5P_IRQ_VIC0(0)) | 100 | #define S5P_EINT_BASE1 (S5P_IRQ_VIC0(0)) |
101 | #define S5P_EINT_BASE2 (IRQ_VIC_END + 1) | 101 | #define S5P_EINT_BASE2 (IRQ_VIC_END + 1) |
102 | 102 | ||
103 | #define IRQ_EINT(x) ((x) < 16 ? S5P_IRQ_VIC0(x) : \ | ||
104 | (S5P_EINT_BASE2 + (x) - 16)) | ||
105 | |||
106 | #define S3C_IRQ_GPIO_BASE (IRQ_EINT(31) + 1) | 103 | #define S3C_IRQ_GPIO_BASE (IRQ_EINT(31) + 1) |
107 | #define S3C_IRQ_GPIO(x) (S3C_IRQ_GPIO_BASE + (x)) | 104 | #define S3C_IRQ_GPIO(x) (S3C_IRQ_GPIO_BASE + (x)) |
108 | 105 | ||
diff --git a/arch/arm/mach-s5pc100/include/mach/regs-gpio.h b/arch/arm/mach-s5pc100/include/mach/regs-gpio.h index 763edebdd577..dd6295e1251d 100644 --- a/arch/arm/mach-s5pc100/include/mach/regs-gpio.h +++ b/arch/arm/mach-s5pc100/include/mach/regs-gpio.h | |||
@@ -60,12 +60,9 @@ | |||
60 | #define S5PC100EINT30PEND (S5P_VA_GPIO + 0xF40) | 60 | #define S5PC100EINT30PEND (S5P_VA_GPIO + 0xF40) |
61 | #define S5P_EINT_PEND(x) (S5PC100EINT30PEND + ((x) * 0x4)) | 61 | #define S5P_EINT_PEND(x) (S5PC100EINT30PEND + ((x) * 0x4)) |
62 | 62 | ||
63 | #define eint_offset(irq) ((irq) < IRQ_EINT16_31 ? ((irq) - IRQ_EINT(0)) : \ | 63 | #define EINT_REG_NR(x) (EINT_OFFSET(x) >> 3) |
64 | (((irq) - S5P_EINT_BASE2))) | ||
65 | 64 | ||
66 | #define EINT_REG_NR(x) (eint_offset(x) >> 3) | 65 | #define eint_irq_to_bit(irq) (1 << (EINT_OFFSET(irq) & 0x7)) |
67 | |||
68 | #define eint_irq_to_bit(irq) (1 << (eint_offset(irq) & 0x7)) | ||
69 | 66 | ||
70 | /* values for S5P_EXTINT0 */ | 67 | /* values for S5P_EXTINT0 */ |
71 | #define S5P_EXTINT_LOWLEV (0x00) | 68 | #define S5P_EXTINT_LOWLEV (0x00) |
diff --git a/arch/arm/mach-s5pv210/include/mach/irqs.h b/arch/arm/mach-s5pv210/include/mach/irqs.h index 92fc6c7fc064..96895378ea27 100644 --- a/arch/arm/mach-s5pv210/include/mach/irqs.h +++ b/arch/arm/mach-s5pv210/include/mach/irqs.h | |||
@@ -118,22 +118,12 @@ | |||
118 | #define IRQ_MDNIE3 S5P_IRQ_VIC3(8) | 118 | #define IRQ_MDNIE3 S5P_IRQ_VIC3(8) |
119 | #define IRQ_VIC_END S5P_IRQ_VIC3(31) | 119 | #define IRQ_VIC_END S5P_IRQ_VIC3(31) |
120 | 120 | ||
121 | #define S5P_EINT_16_31_BASE (IRQ_VIC_END + 1) | 121 | #define S5P_EINT_BASE1 (S5P_IRQ_VIC0(0)) |
122 | 122 | #define S5P_EINT_BASE2 (IRQ_VIC_END + 1) | |
123 | #define EINT_MODE S3C_GPIO_SFN(0xf) | ||
124 | |||
125 | #define IRQ_EINT(x) ((x) < 16 ? ((x) + S5P_IRQ_VIC0(0)) \ | ||
126 | : ((x) + S5P_EINT_16_31_BASE)) | ||
127 | 123 | ||
128 | /* Set the default NR_IRQS */ | 124 | /* Set the default NR_IRQS */ |
129 | |||
130 | #define NR_IRQS (IRQ_EINT(31) + 1) | 125 | #define NR_IRQS (IRQ_EINT(31) + 1) |
131 | 126 | ||
132 | #define EINT_GPIO_0(x) S5PV210_GPH0(x) | ||
133 | #define EINT_GPIO_1(x) S5PV210_GPH1(x) | ||
134 | #define EINT_GPIO_2(x) S5PV210_GPH2(x) | ||
135 | #define EINT_GPIO_3(x) S5PV210_GPH3(x) | ||
136 | |||
137 | /* Compatibility */ | 127 | /* Compatibility */ |
138 | #define IRQ_LCD_FIFO IRQ_LCD0 | 128 | #define IRQ_LCD_FIFO IRQ_LCD0 |
139 | #define IRQ_LCD_VSYNC IRQ_LCD1 | 129 | #define IRQ_LCD_VSYNC IRQ_LCD1 |
diff --git a/arch/arm/mach-s5pv210/include/mach/regs-gpio.h b/arch/arm/mach-s5pv210/include/mach/regs-gpio.h index 6d068091c36c..49e029b4978a 100644 --- a/arch/arm/mach-s5pv210/include/mach/regs-gpio.h +++ b/arch/arm/mach-s5pv210/include/mach/regs-gpio.h | |||
@@ -27,12 +27,9 @@ | |||
27 | #define S5PV210_EINT30PEND (S5P_VA_GPIO + 0xF40) | 27 | #define S5PV210_EINT30PEND (S5P_VA_GPIO + 0xF40) |
28 | #define S5P_EINT_PEND(x) (S5PV210_EINT30PEND + ((x) * 0x4)) | 28 | #define S5P_EINT_PEND(x) (S5PV210_EINT30PEND + ((x) * 0x4)) |
29 | 29 | ||
30 | #define eint_offset(irq) ((irq) < IRQ_EINT16_31 ? ((irq) - IRQ_EINT(0)) \ | 30 | #define EINT_REG_NR(x) (EINT_OFFSET(x) >> 3) |
31 | : ((irq) - S5P_EINT_16_31_BASE)) | ||
32 | 31 | ||
33 | #define EINT_REG_NR(x) (eint_offset(x) >> 3) | 32 | #define eint_irq_to_bit(irq) (1 << (EINT_OFFSET(irq) & 0x7)) |
34 | |||
35 | #define eint_irq_to_bit(irq) (1 << (eint_offset(irq) & 0x7)) | ||
36 | 33 | ||
37 | /* values for S5P_EXTINT0 */ | 34 | /* values for S5P_EXTINT0 */ |
38 | #define S5P_EXTINT_LOWLEV (0x00) | 35 | #define S5P_EXTINT_LOWLEV (0x00) |
@@ -41,4 +38,11 @@ | |||
41 | #define S5P_EXTINT_RISEEDGE (0x03) | 38 | #define S5P_EXTINT_RISEEDGE (0x03) |
42 | #define S5P_EXTINT_BOTHEDGE (0x04) | 39 | #define S5P_EXTINT_BOTHEDGE (0x04) |
43 | 40 | ||
41 | #define EINT_MODE S3C_GPIO_SFN(0xf) | ||
42 | |||
43 | #define EINT_GPIO_0(x) S5PV210_GPH0(x) | ||
44 | #define EINT_GPIO_1(x) S5PV210_GPH1(x) | ||
45 | #define EINT_GPIO_2(x) S5PV210_GPH2(x) | ||
46 | #define EINT_GPIO_3(x) S5PV210_GPH3(x) | ||
47 | |||
44 | #endif /* __ASM_ARCH_REGS_GPIO_H */ | 48 | #endif /* __ASM_ARCH_REGS_GPIO_H */ |
diff --git a/arch/arm/mach-u300/i2c.c b/arch/arm/mach-u300/i2c.c index c73ed06b6065..f0394baa11fa 100644 --- a/arch/arm/mach-u300/i2c.c +++ b/arch/arm/mach-u300/i2c.c | |||
@@ -9,7 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/i2c.h> | 11 | #include <linux/i2c.h> |
12 | #include <linux/mfd/ab3100.h> | 12 | #include <linux/mfd/abx500.h> |
13 | #include <linux/regulator/machine.h> | 13 | #include <linux/regulator/machine.h> |
14 | #include <linux/amba/bus.h> | 14 | #include <linux/amba/bus.h> |
15 | #include <mach/irqs.h> | 15 | #include <mach/irqs.h> |
@@ -46,6 +46,7 @@ | |||
46 | /* BUCK SLEEP 0xAC: 1.05V, Not used, SLEEP_A and B, Not used */ | 46 | /* BUCK SLEEP 0xAC: 1.05V, Not used, SLEEP_A and B, Not used */ |
47 | #define BUCK_SLEEP_SETTING 0xAC | 47 | #define BUCK_SLEEP_SETTING 0xAC |
48 | 48 | ||
49 | #ifdef CONFIG_AB3100_CORE | ||
49 | static struct regulator_consumer_supply supply_ldo_c[] = { | 50 | static struct regulator_consumer_supply supply_ldo_c[] = { |
50 | { | 51 | { |
51 | .dev_name = "ab3100-codec", | 52 | .dev_name = "ab3100-codec", |
@@ -253,14 +254,68 @@ static struct ab3100_platform_data ab3100_plf_data = { | |||
253 | LDO_D_SETTING, | 254 | LDO_D_SETTING, |
254 | }, | 255 | }, |
255 | }; | 256 | }; |
257 | #endif | ||
258 | |||
259 | #ifdef CONFIG_AB3550_CORE | ||
260 | static struct abx500_init_settings ab3550_init_settings[] = { | ||
261 | { | ||
262 | .bank = 0, | ||
263 | .reg = AB3550_IMR1, | ||
264 | .setting = 0xff | ||
265 | }, | ||
266 | { | ||
267 | .bank = 0, | ||
268 | .reg = AB3550_IMR2, | ||
269 | .setting = 0xff | ||
270 | }, | ||
271 | { | ||
272 | .bank = 0, | ||
273 | .reg = AB3550_IMR3, | ||
274 | .setting = 0xff | ||
275 | }, | ||
276 | { | ||
277 | .bank = 0, | ||
278 | .reg = AB3550_IMR4, | ||
279 | .setting = 0xff | ||
280 | }, | ||
281 | { | ||
282 | .bank = 0, | ||
283 | .reg = AB3550_IMR5, | ||
284 | /* The two most significant bits are not used */ | ||
285 | .setting = 0x3f | ||
286 | }, | ||
287 | }; | ||
288 | |||
289 | static struct ab3550_platform_data ab3550_plf_data = { | ||
290 | .irq = { | ||
291 | .base = IRQ_AB3550_BASE, | ||
292 | .count = (IRQ_AB3550_END - IRQ_AB3550_BASE + 1), | ||
293 | }, | ||
294 | .dev_data = { | ||
295 | }, | ||
296 | .init_settings = ab3550_init_settings, | ||
297 | .init_settings_sz = ARRAY_SIZE(ab3550_init_settings), | ||
298 | }; | ||
299 | #endif | ||
256 | 300 | ||
257 | static struct i2c_board_info __initdata bus0_i2c_board_info[] = { | 301 | static struct i2c_board_info __initdata bus0_i2c_board_info[] = { |
302 | #if defined(CONFIG_AB3550_CORE) | ||
303 | { | ||
304 | .type = "ab3550", | ||
305 | .addr = 0x4A, | ||
306 | .irq = IRQ_U300_IRQ0_EXT, | ||
307 | .platform_data = &ab3550_plf_data, | ||
308 | }, | ||
309 | #elif defined(CONFIG_AB3100_CORE) | ||
258 | { | 310 | { |
259 | .type = "ab3100", | 311 | .type = "ab3100", |
260 | .addr = 0x48, | 312 | .addr = 0x48, |
261 | .irq = IRQ_U300_IRQ0_EXT, | 313 | .irq = IRQ_U300_IRQ0_EXT, |
262 | .platform_data = &ab3100_plf_data, | 314 | .platform_data = &ab3100_plf_data, |
263 | }, | 315 | }, |
316 | #else | ||
317 | { }, | ||
318 | #endif | ||
264 | }; | 319 | }; |
265 | 320 | ||
266 | static struct i2c_board_info __initdata bus1_i2c_board_info[] = { | 321 | static struct i2c_board_info __initdata bus1_i2c_board_info[] = { |
diff --git a/arch/arm/mach-u300/include/mach/irqs.h b/arch/arm/mach-u300/include/mach/irqs.h index a6867b12773e..09b1b28fa8fd 100644 --- a/arch/arm/mach-u300/include/mach/irqs.h +++ b/arch/arm/mach-u300/include/mach/irqs.h | |||
@@ -109,6 +109,13 @@ | |||
109 | #define U300_NR_IRQS 48 | 109 | #define U300_NR_IRQS 48 |
110 | #endif | 110 | #endif |
111 | 111 | ||
112 | #ifdef CONFIG_AB3550_CORE | ||
113 | #define IRQ_AB3550_BASE (U300_NR_IRQS) | ||
114 | #define IRQ_AB3550_END (IRQ_AB3550_BASE + 37) | ||
115 | |||
116 | #define NR_IRQS (IRQ_AB3550_END + 1) | ||
117 | #else | ||
112 | #define NR_IRQS U300_NR_IRQS | 118 | #define NR_IRQS U300_NR_IRQS |
119 | #endif | ||
113 | 120 | ||
114 | #endif | 121 | #endif |
diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile index c7bc4199e3a8..4556aea9c3c5 100644 --- a/arch/arm/mach-ux500/Makefile +++ b/arch/arm/mach-ux500/Makefile | |||
@@ -7,4 +7,5 @@ obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o devices-db5500.o | |||
7 | obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o | 7 | obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o |
8 | obj-$(CONFIG_MACH_U8500_MOP) += board-mop500.o | 8 | obj-$(CONFIG_MACH_U8500_MOP) += board-mop500.o |
9 | obj-$(CONFIG_MACH_U5500) += board-u5500.o | 9 | obj-$(CONFIG_MACH_U5500) += board-u5500.o |
10 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o localtimer.o | 10 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
11 | obj-$(CONFIG_LOCAL_TIMERS) += localtimer.o | ||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 072196c57263..bb8d7b771817 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -50,7 +50,7 @@ struct pl022_config_chip ab4500_chip_info = { | |||
50 | 50 | ||
51 | static struct spi_board_info u8500_spi_devices[] = { | 51 | static struct spi_board_info u8500_spi_devices[] = { |
52 | { | 52 | { |
53 | .modalias = "ab4500", | 53 | .modalias = "ab8500", |
54 | .controller_data = &ab4500_chip_info, | 54 | .controller_data = &ab4500_chip_info, |
55 | .max_speed_hz = 12000000, | 55 | .max_speed_hz = 12000000, |
56 | .bus_num = 0, | 56 | .bus_num = 0, |
diff --git a/arch/arm/mach-ux500/clock.c b/arch/arm/mach-ux500/clock.c index 1b2c9890e8b4..fe84b9021c7a 100644 --- a/arch/arm/mach-ux500/clock.c +++ b/arch/arm/mach-ux500/clock.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <asm/clkdev.h> | 17 | #include <asm/clkdev.h> |
18 | 18 | ||
19 | #include <plat/mtu.h> | ||
19 | #include <mach/hardware.h> | 20 | #include <mach/hardware.h> |
20 | #include "clock.h" | 21 | #include "clock.h" |
21 | 22 | ||
@@ -59,6 +60,9 @@ | |||
59 | #define PRCM_DMACLK_MGT 0x074 | 60 | #define PRCM_DMACLK_MGT 0x074 |
60 | #define PRCM_B2R2CLK_MGT 0x078 | 61 | #define PRCM_B2R2CLK_MGT 0x078 |
61 | #define PRCM_TVCLK_MGT 0x07C | 62 | #define PRCM_TVCLK_MGT 0x07C |
63 | #define PRCM_TCR 0x1C8 | ||
64 | #define PRCM_TCR_STOPPED (1 << 16) | ||
65 | #define PRCM_TCR_DOZE_MODE (1 << 17) | ||
62 | #define PRCM_UNIPROCLK_MGT 0x278 | 66 | #define PRCM_UNIPROCLK_MGT 0x278 |
63 | #define PRCM_SSPCLK_MGT 0x280 | 67 | #define PRCM_SSPCLK_MGT 0x280 |
64 | #define PRCM_RNGCLK_MGT 0x284 | 68 | #define PRCM_RNGCLK_MGT 0x284 |
@@ -120,10 +124,95 @@ void clk_disable(struct clk *clk) | |||
120 | } | 124 | } |
121 | EXPORT_SYMBOL(clk_disable); | 125 | EXPORT_SYMBOL(clk_disable); |
122 | 126 | ||
127 | /* | ||
128 | * The MTU has a separate, rather complex muxing setup | ||
129 | * with alternative parents (peripheral cluster or | ||
130 | * ULP or fixed 32768 Hz) depending on settings | ||
131 | */ | ||
132 | static unsigned long clk_mtu_get_rate(struct clk *clk) | ||
133 | { | ||
134 | void __iomem *addr = __io_address(U8500_PRCMU_BASE) | ||
135 | + PRCM_TCR; | ||
136 | u32 tcr = readl(addr); | ||
137 | int mtu = (int) clk->data; | ||
138 | /* | ||
139 | * One of these is selected eventually | ||
140 | * TODO: Replace the constant with a reference | ||
141 | * to the ULP source once this is modeled. | ||
142 | */ | ||
143 | unsigned long clk32k = 32768; | ||
144 | unsigned long mturate; | ||
145 | unsigned long retclk; | ||
146 | |||
147 | /* Get the rate from the parent as a default */ | ||
148 | if (clk->parent_periph) | ||
149 | mturate = clk_get_rate(clk->parent_periph); | ||
150 | else if (clk->parent_cluster) | ||
151 | mturate = clk_get_rate(clk->parent_cluster); | ||
152 | else | ||
153 | /* We need to be connected SOMEWHERE */ | ||
154 | BUG(); | ||
155 | |||
156 | /* | ||
157 | * Are we in doze mode? | ||
158 | * In this mode the parent peripheral or the fixed 32768 Hz | ||
159 | * clock is fed into the block. | ||
160 | */ | ||
161 | if (!(tcr & PRCM_TCR_DOZE_MODE)) { | ||
162 | /* | ||
163 | * Here we're using the clock input from the APE ULP | ||
164 | * clock domain. But first: are the timers stopped? | ||
165 | */ | ||
166 | if (tcr & PRCM_TCR_STOPPED) { | ||
167 | clk32k = 0; | ||
168 | mturate = 0; | ||
169 | } else { | ||
170 | /* Else default mode: 0 and 2.4 MHz */ | ||
171 | clk32k = 0; | ||
172 | if (cpu_is_u5500()) | ||
173 | /* DB5500 divides by 8 */ | ||
174 | mturate /= 8; | ||
175 | else if (cpu_is_u8500ed()) { | ||
176 | /* | ||
177 | * This clocking setting must not be used | ||
178 | * in the ED chip, it is simply not | ||
179 | * connected anywhere! | ||
180 | */ | ||
181 | mturate = 0; | ||
182 | BUG(); | ||
183 | } else | ||
184 | /* | ||
185 | * In this mode the ulp38m4 clock is divided | ||
186 | * by a factor 16, on the DB8500 typically | ||
187 | * 38400000 / 16 ~ 2.4 MHz. | ||
188 | * TODO: Replace the constant with a reference | ||
189 | * to the ULP source once this is modeled. | ||
190 | */ | ||
191 | mturate = 38400000 / 16; | ||
192 | } | ||
193 | } | ||
194 | |||
195 | /* Return the clock selected for this MTU */ | ||
196 | if (tcr & (1 << mtu)) | ||
197 | retclk = clk32k; | ||
198 | else | ||
199 | retclk = mturate; | ||
200 | |||
201 | pr_info("MTU%d clock rate: %lu Hz\n", mtu, retclk); | ||
202 | return retclk; | ||
203 | } | ||
204 | |||
123 | unsigned long clk_get_rate(struct clk *clk) | 205 | unsigned long clk_get_rate(struct clk *clk) |
124 | { | 206 | { |
125 | unsigned long rate; | 207 | unsigned long rate; |
126 | 208 | ||
209 | /* | ||
210 | * If there is a custom getrate callback for this clock, | ||
211 | * it will take precedence. | ||
212 | */ | ||
213 | if (clk->get_rate) | ||
214 | return clk->get_rate(clk); | ||
215 | |||
127 | if (clk->ops && clk->ops->get_rate) | 216 | if (clk->ops && clk->ops->get_rate) |
128 | return clk->ops->get_rate(clk); | 217 | return clk->ops->get_rate(clk); |
129 | 218 | ||
@@ -341,8 +430,9 @@ static DEFINE_PRCC_CLK(5, usb_v1, 0, 0, NULL); | |||
341 | 430 | ||
342 | /* Peripheral Cluster #6 */ | 431 | /* Peripheral Cluster #6 */ |
343 | 432 | ||
344 | static DEFINE_PRCC_CLK(6, mtu1_v1, 8, -1, NULL); | 433 | /* MTU ID in data */ |
345 | static DEFINE_PRCC_CLK(6, mtu0_v1, 7, -1, NULL); | 434 | static DEFINE_PRCC_CLK_CUSTOM(6, mtu1_v1, 8, -1, NULL, clk_mtu_get_rate, 1); |
435 | static DEFINE_PRCC_CLK_CUSTOM(6, mtu0_v1, 7, -1, NULL, clk_mtu_get_rate, 0); | ||
346 | static DEFINE_PRCC_CLK(6, cfgreg_v1, 6, 6, NULL); | 436 | static DEFINE_PRCC_CLK(6, cfgreg_v1, 6, 6, NULL); |
347 | static DEFINE_PRCC_CLK(6, dmc_ed, 6, 6, NULL); | 437 | static DEFINE_PRCC_CLK(6, dmc_ed, 6, 6, NULL); |
348 | static DEFINE_PRCC_CLK(6, hash1, 5, -1, NULL); | 438 | static DEFINE_PRCC_CLK(6, hash1, 5, -1, NULL); |
@@ -357,8 +447,9 @@ static DEFINE_PRCC_CLK(6, rng_v1, 0, 0, &clk_rngclk); | |||
357 | /* Peripheral Cluster #7 */ | 447 | /* Peripheral Cluster #7 */ |
358 | 448 | ||
359 | static DEFINE_PRCC_CLK(7, tzpc0_ed, 4, -1, NULL); | 449 | static DEFINE_PRCC_CLK(7, tzpc0_ed, 4, -1, NULL); |
360 | static DEFINE_PRCC_CLK(7, mtu1_ed, 3, -1, NULL); | 450 | /* MTU ID in data */ |
361 | static DEFINE_PRCC_CLK(7, mtu0_ed, 2, -1, NULL); | 451 | static DEFINE_PRCC_CLK_CUSTOM(7, mtu1_ed, 3, -1, NULL, clk_mtu_get_rate, 1); |
452 | static DEFINE_PRCC_CLK_CUSTOM(7, mtu0_ed, 2, -1, NULL, clk_mtu_get_rate, 0); | ||
362 | static DEFINE_PRCC_CLK(7, wdg_ed, 1, -1, NULL); | 453 | static DEFINE_PRCC_CLK(7, wdg_ed, 1, -1, NULL); |
363 | static DEFINE_PRCC_CLK(7, cfgreg_ed, 0, -1, NULL); | 454 | static DEFINE_PRCC_CLK(7, cfgreg_ed, 0, -1, NULL); |
364 | 455 | ||
@@ -411,7 +502,7 @@ static struct clk_lookup u8500_common_clks[] = { | |||
411 | CLK(apetraceclk, "apetrace", NULL), | 502 | CLK(apetraceclk, "apetrace", NULL), |
412 | CLK(mcdeclk, "mcde", NULL), | 503 | CLK(mcdeclk, "mcde", NULL), |
413 | CLK(ipi2clk, "ipi2", NULL), | 504 | CLK(ipi2clk, "ipi2", NULL), |
414 | CLK(dmaclk, "dma40", NULL), | 505 | CLK(dmaclk, "dma40.0", NULL), |
415 | CLK(b2r2clk, "b2r2", NULL), | 506 | CLK(b2r2clk, "b2r2", NULL), |
416 | CLK(tvclk, "tv", NULL), | 507 | CLK(tvclk, "tv", NULL), |
417 | }; | 508 | }; |
@@ -503,15 +594,17 @@ static struct clk_lookup u8500_v1_clks[] = { | |||
503 | CLK(uiccclk, "uicc", NULL), | 594 | CLK(uiccclk, "uicc", NULL), |
504 | }; | 595 | }; |
505 | 596 | ||
506 | static int __init clk_init(void) | 597 | int __init clk_init(void) |
507 | { | 598 | { |
508 | if (cpu_is_u8500ed()) { | 599 | if (cpu_is_u8500ed()) { |
509 | clk_prcmu_ops.enable = clk_prcmu_ed_enable; | 600 | clk_prcmu_ops.enable = clk_prcmu_ed_enable; |
510 | clk_prcmu_ops.disable = clk_prcmu_ed_disable; | 601 | clk_prcmu_ops.disable = clk_prcmu_ed_disable; |
602 | clk_per6clk.rate = 100000000; | ||
511 | } else if (cpu_is_u5500()) { | 603 | } else if (cpu_is_u5500()) { |
512 | /* Clock tree for U5500 not implemented yet */ | 604 | /* Clock tree for U5500 not implemented yet */ |
513 | clk_prcc_ops.enable = clk_prcc_ops.disable = NULL; | 605 | clk_prcc_ops.enable = clk_prcc_ops.disable = NULL; |
514 | clk_prcmu_ops.enable = clk_prcmu_ops.disable = NULL; | 606 | clk_prcmu_ops.enable = clk_prcmu_ops.disable = NULL; |
607 | clk_per6clk.rate = 26000000; | ||
515 | } | 608 | } |
516 | 609 | ||
517 | clkdev_add_table(u8500_common_clks, ARRAY_SIZE(u8500_common_clks)); | 610 | clkdev_add_table(u8500_common_clks, ARRAY_SIZE(u8500_common_clks)); |
@@ -522,4 +615,3 @@ static int __init clk_init(void) | |||
522 | 615 | ||
523 | return 0; | 616 | return 0; |
524 | } | 617 | } |
525 | arch_initcall(clk_init); | ||
diff --git a/arch/arm/mach-ux500/clock.h b/arch/arm/mach-ux500/clock.h index e4f99b65026f..a05802501527 100644 --- a/arch/arm/mach-ux500/clock.h +++ b/arch/arm/mach-ux500/clock.h | |||
@@ -28,6 +28,9 @@ struct clkops { | |||
28 | * @ops: pointer to clkops struct used to control this clock | 28 | * @ops: pointer to clkops struct used to control this clock |
29 | * @name: name, for debugging | 29 | * @name: name, for debugging |
30 | * @enabled: refcount. positive if enabled, zero if disabled | 30 | * @enabled: refcount. positive if enabled, zero if disabled |
31 | * @get_rate: custom callback for getting the clock rate | ||
32 | * @data: custom per-clock data for example for the get_rate | ||
33 | * callback | ||
31 | * @rate: fixed rate for clocks which don't implement | 34 | * @rate: fixed rate for clocks which don't implement |
32 | * ops->getrate | 35 | * ops->getrate |
33 | * @prcmu_cg_off: address offset of the combined enable/disable register | 36 | * @prcmu_cg_off: address offset of the combined enable/disable register |
@@ -67,6 +70,8 @@ struct clk { | |||
67 | const struct clkops *ops; | 70 | const struct clkops *ops; |
68 | const char *name; | 71 | const char *name; |
69 | unsigned int enabled; | 72 | unsigned int enabled; |
73 | unsigned long (*get_rate)(struct clk *); | ||
74 | void *data; | ||
70 | 75 | ||
71 | unsigned long rate; | 76 | unsigned long rate; |
72 | struct list_head list; | 77 | struct list_head list; |
@@ -117,9 +122,26 @@ struct clk clk_##_name = { \ | |||
117 | .parent_periph = _kernclk \ | 122 | .parent_periph = _kernclk \ |
118 | } | 123 | } |
119 | 124 | ||
125 | #define DEFINE_PRCC_CLK_CUSTOM(_pclust, _name, _bus_en, _kernel_en, _kernclk, _callback, _data) \ | ||
126 | struct clk clk_##_name = { \ | ||
127 | .name = #_name, \ | ||
128 | .ops = &clk_prcc_ops, \ | ||
129 | .cluster = _pclust, \ | ||
130 | .prcc_bus = _bus_en, \ | ||
131 | .prcc_kernel = _kernel_en, \ | ||
132 | .parent_cluster = &clk_per##_pclust##clk, \ | ||
133 | .parent_periph = _kernclk, \ | ||
134 | .get_rate = _callback, \ | ||
135 | .data = (void *) _data \ | ||
136 | } | ||
137 | |||
138 | |||
120 | #define CLK(_clk, _devname, _conname) \ | 139 | #define CLK(_clk, _devname, _conname) \ |
121 | { \ | 140 | { \ |
122 | .clk = &clk_##_clk, \ | 141 | .clk = &clk_##_clk, \ |
123 | .dev_id = _devname, \ | 142 | .dev_id = _devname, \ |
124 | .con_id = _conname, \ | 143 | .con_id = _conname, \ |
125 | } | 144 | } |
145 | |||
146 | int __init clk_db8500_ed_fixup(void); | ||
147 | int __init clk_init(void); | ||
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index d04299f3b6b5..f21c444edd99 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -32,6 +32,7 @@ static struct platform_device *platform_devs[] __initdata = { | |||
32 | &u8500_gpio_devs[6], | 32 | &u8500_gpio_devs[6], |
33 | &u8500_gpio_devs[7], | 33 | &u8500_gpio_devs[7], |
34 | &u8500_gpio_devs[8], | 34 | &u8500_gpio_devs[8], |
35 | &u8500_dma40_device, | ||
35 | }; | 36 | }; |
36 | 37 | ||
37 | /* minimum static i/o mapping required to boot U8500 platforms */ | 38 | /* minimum static i/o mapping required to boot U8500 platforms */ |
@@ -71,6 +72,9 @@ void __init u8500_init_devices(void) | |||
71 | { | 72 | { |
72 | ux500_init_devices(); | 73 | ux500_init_devices(); |
73 | 74 | ||
75 | if (cpu_is_u8500ed()) | ||
76 | dma40_u8500ed_fixup(); | ||
77 | |||
74 | /* Register the platform devices */ | 78 | /* Register the platform devices */ |
75 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | 79 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); |
76 | 80 | ||
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index d81ad023963c..e0fd747e447a 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -62,6 +62,12 @@ void __init ux500_init_irq(void) | |||
62 | { | 62 | { |
63 | gic_dist_init(0, __io_address(UX500_GIC_DIST_BASE), 29); | 63 | gic_dist_init(0, __io_address(UX500_GIC_DIST_BASE), 29); |
64 | gic_cpu_init(0, __io_address(UX500_GIC_CPU_BASE)); | 64 | gic_cpu_init(0, __io_address(UX500_GIC_CPU_BASE)); |
65 | |||
66 | /* | ||
67 | * Init clocks here so that they are available for system timer | ||
68 | * initialization. | ||
69 | */ | ||
70 | clk_init(); | ||
65 | } | 71 | } |
66 | 72 | ||
67 | #ifdef CONFIG_CACHE_L2X0 | 73 | #ifdef CONFIG_CACHE_L2X0 |
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index 20334236afce..822903421943 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -12,9 +12,13 @@ | |||
12 | #include <linux/gpio.h> | 12 | #include <linux/gpio.h> |
13 | #include <linux/amba/bus.h> | 13 | #include <linux/amba/bus.h> |
14 | 14 | ||
15 | #include <plat/ste_dma40.h> | ||
16 | |||
15 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
16 | #include <mach/setup.h> | 18 | #include <mach/setup.h> |
17 | 19 | ||
20 | #include "ste-dma40-db8500.h" | ||
21 | |||
18 | static struct nmk_gpio_platform_data u8500_gpio_data[] = { | 22 | static struct nmk_gpio_platform_data u8500_gpio_data[] = { |
19 | GPIO_DATA("GPIO-0-31", 0), | 23 | GPIO_DATA("GPIO-0-31", 0), |
20 | GPIO_DATA("GPIO-32-63", 32), /* 37..63 not routed to pin */ | 24 | GPIO_DATA("GPIO-32-63", 32), /* 37..63 not routed to pin */ |
@@ -105,3 +109,108 @@ struct platform_device u8500_i2c4_device = { | |||
105 | .resource = u8500_i2c4_resources, | 109 | .resource = u8500_i2c4_resources, |
106 | .num_resources = ARRAY_SIZE(u8500_i2c4_resources), | 110 | .num_resources = ARRAY_SIZE(u8500_i2c4_resources), |
107 | }; | 111 | }; |
112 | |||
113 | static struct resource dma40_resources[] = { | ||
114 | [0] = { | ||
115 | .start = U8500_DMA_BASE, | ||
116 | .end = U8500_DMA_BASE + SZ_4K - 1, | ||
117 | .flags = IORESOURCE_MEM, | ||
118 | .name = "base", | ||
119 | }, | ||
120 | [1] = { | ||
121 | .start = U8500_DMA_LCPA_BASE, | ||
122 | .end = U8500_DMA_LCPA_BASE + SZ_4K - 1, | ||
123 | .flags = IORESOURCE_MEM, | ||
124 | .name = "lcpa", | ||
125 | }, | ||
126 | [2] = { | ||
127 | .start = U8500_DMA_LCLA_BASE, | ||
128 | .end = U8500_DMA_LCLA_BASE + 16 * 1024 - 1, | ||
129 | .flags = IORESOURCE_MEM, | ||
130 | .name = "lcla", | ||
131 | }, | ||
132 | [3] = { | ||
133 | .start = IRQ_DMA, | ||
134 | .end = IRQ_DMA, | ||
135 | .flags = IORESOURCE_IRQ} | ||
136 | }; | ||
137 | |||
138 | /* Default configuration for physcial memcpy */ | ||
139 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { | ||
140 | .channel_type = (STEDMA40_CHANNEL_IN_PHY_MODE | | ||
141 | STEDMA40_LOW_PRIORITY_CHANNEL | | ||
142 | STEDMA40_PCHAN_BASIC_MODE), | ||
143 | .dir = STEDMA40_MEM_TO_MEM, | ||
144 | |||
145 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
146 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
147 | .src_info.psize = STEDMA40_PSIZE_PHY_1, | ||
148 | |||
149 | .dst_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
150 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
151 | .dst_info.psize = STEDMA40_PSIZE_PHY_1, | ||
152 | |||
153 | }; | ||
154 | /* Default configuration for logical memcpy */ | ||
155 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { | ||
156 | .channel_type = (STEDMA40_CHANNEL_IN_LOG_MODE | | ||
157 | STEDMA40_LOW_PRIORITY_CHANNEL | | ||
158 | STEDMA40_LCHAN_SRC_LOG_DST_LOG | | ||
159 | STEDMA40_NO_TIM_FOR_LINK), | ||
160 | .dir = STEDMA40_MEM_TO_MEM, | ||
161 | |||
162 | .src_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
163 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
164 | .src_info.psize = STEDMA40_PSIZE_LOG_1, | ||
165 | |||
166 | .dst_info.endianess = STEDMA40_LITTLE_ENDIAN, | ||
167 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
168 | .dst_info.psize = STEDMA40_PSIZE_LOG_1, | ||
169 | |||
170 | }; | ||
171 | |||
172 | /* | ||
173 | * Mapping between destination event lines and physical device address. | ||
174 | * The event line is tied to a device and therefor the address is constant. | ||
175 | */ | ||
176 | static const dma_addr_t dma40_tx_map[STEDMA40_NR_DEV]; | ||
177 | |||
178 | /* Mapping between source event lines and physical device address */ | ||
179 | static const dma_addr_t dma40_rx_map[STEDMA40_NR_DEV]; | ||
180 | |||
181 | /* Reserved event lines for memcpy only */ | ||
182 | static int dma40_memcpy_event[] = { | ||
183 | STEDMA40_MEMCPY_TX_1, | ||
184 | STEDMA40_MEMCPY_TX_2, | ||
185 | STEDMA40_MEMCPY_TX_3, | ||
186 | STEDMA40_MEMCPY_TX_4, | ||
187 | }; | ||
188 | |||
189 | static struct stedma40_platform_data dma40_plat_data = { | ||
190 | .dev_len = STEDMA40_NR_DEV, | ||
191 | .dev_rx = dma40_rx_map, | ||
192 | .dev_tx = dma40_tx_map, | ||
193 | .memcpy = dma40_memcpy_event, | ||
194 | .memcpy_len = ARRAY_SIZE(dma40_memcpy_event), | ||
195 | .memcpy_conf_phy = &dma40_memcpy_conf_phy, | ||
196 | .memcpy_conf_log = &dma40_memcpy_conf_log, | ||
197 | .llis_per_log = 8, | ||
198 | }; | ||
199 | |||
200 | struct platform_device u8500_dma40_device = { | ||
201 | .dev = { | ||
202 | .platform_data = &dma40_plat_data, | ||
203 | }, | ||
204 | .name = "dma40", | ||
205 | .id = 0, | ||
206 | .num_resources = ARRAY_SIZE(dma40_resources), | ||
207 | .resource = dma40_resources | ||
208 | }; | ||
209 | |||
210 | void dma40_u8500ed_fixup(void) | ||
211 | { | ||
212 | dma40_plat_data.memcpy = NULL; | ||
213 | dma40_plat_data.memcpy_len = 0; | ||
214 | dma40_resources[0].start = U8500_DMA_BASE_ED; | ||
215 | dma40_resources[0].end = U8500_DMA_BASE_ED + SZ_4K - 1; | ||
216 | } | ||
diff --git a/arch/arm/mach-ux500/include/mach/db8500-regs.h b/arch/arm/mach-ux500/include/mach/db8500-regs.h index 9169e1e382a3..85fc6a80b386 100644 --- a/arch/arm/mach-ux500/include/mach/db8500-regs.h +++ b/arch/arm/mach-ux500/include/mach/db8500-regs.h | |||
@@ -7,6 +7,18 @@ | |||
7 | #ifndef __MACH_DB8500_REGS_H | 7 | #ifndef __MACH_DB8500_REGS_H |
8 | #define __MACH_DB8500_REGS_H | 8 | #define __MACH_DB8500_REGS_H |
9 | 9 | ||
10 | /* Base address and bank offsets for ESRAM */ | ||
11 | #define U8500_ESRAM_BASE 0x40000000 | ||
12 | #define U8500_ESRAM_BANK_SIZE 0x00020000 | ||
13 | #define U8500_ESRAM_BANK0 U8500_ESRAM_BASE | ||
14 | #define U8500_ESRAM_BANK1 (U8500_ESRAM_BASE + U8500_ESRAM_BANK_SIZE) | ||
15 | #define U8500_ESRAM_BANK2 (U8500_ESRAM_BANK1 + U8500_ESRAM_BANK_SIZE) | ||
16 | #define U8500_ESRAM_BANK3 (U8500_ESRAM_BANK2 + U8500_ESRAM_BANK_SIZE) | ||
17 | #define U8500_ESRAM_BANK4 (U8500_ESRAM_BANK3 + U8500_ESRAM_BANK_SIZE) | ||
18 | /* Use bank 4 for DMA LCLA and LCPA */ | ||
19 | #define U8500_DMA_LCLA_BASE U8500_ESRAM_BANK4 | ||
20 | #define U8500_DMA_LCPA_BASE (U8500_ESRAM_BANK4 + 0x4000) | ||
21 | |||
10 | #define U8500_PER3_BASE 0x80000000 | 22 | #define U8500_PER3_BASE 0x80000000 |
11 | #define U8500_STM_BASE 0x80100000 | 23 | #define U8500_STM_BASE 0x80100000 |
12 | #define U8500_STM_REG_BASE (U8500_STM_BASE + 0xF000) | 24 | #define U8500_STM_REG_BASE (U8500_STM_BASE + 0xF000) |
diff --git a/arch/arm/mach-ux500/include/mach/devices.h b/arch/arm/mach-ux500/include/mach/devices.h index 0422af00a56e..c2b2f2574947 100644 --- a/arch/arm/mach-ux500/include/mach/devices.h +++ b/arch/arm/mach-ux500/include/mach/devices.h | |||
@@ -25,5 +25,8 @@ extern struct platform_device ux500_i2c3_device; | |||
25 | 25 | ||
26 | extern struct platform_device u8500_i2c0_device; | 26 | extern struct platform_device u8500_i2c0_device; |
27 | extern struct platform_device u8500_i2c4_device; | 27 | extern struct platform_device u8500_i2c4_device; |
28 | extern struct platform_device u8500_dma40_device; | ||
29 | |||
30 | void dma40_u8500ed_fixup(void); | ||
28 | 31 | ||
29 | #endif | 32 | #endif |
diff --git a/arch/arm/mach-ux500/ste-dma40-db8500.h b/arch/arm/mach-ux500/ste-dma40-db8500.h new file mode 100644 index 000000000000..e7016278dfa9 --- /dev/null +++ b/arch/arm/mach-ux500/ste-dma40-db8500.h | |||
@@ -0,0 +1,154 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ux500/ste_dma40_db8500.h | ||
3 | * DB8500-SoC-specific configuration for DMA40 | ||
4 | * | ||
5 | * Copyright (C) ST-Ericsson 2007-2010 | ||
6 | * License terms: GNU General Public License (GPL) version 2 | ||
7 | * Author: Per Friden <per.friden@stericsson.com> | ||
8 | * Author: Jonas Aaberg <jonas.aberg@stericsson.com> | ||
9 | */ | ||
10 | #ifndef STE_DMA40_DB8500_H | ||
11 | #define STE_DMA40_DB8500_H | ||
12 | |||
13 | #define STEDMA40_NR_DEV 64 | ||
14 | |||
15 | enum dma_src_dev_type { | ||
16 | STEDMA40_DEV_SPI0_RX = 0, | ||
17 | STEDMA40_DEV_SD_MMC0_RX = 1, | ||
18 | STEDMA40_DEV_SD_MMC1_RX = 2, | ||
19 | STEDMA40_DEV_SD_MMC2_RX = 3, | ||
20 | STEDMA40_DEV_I2C1_RX = 4, | ||
21 | STEDMA40_DEV_I2C3_RX = 5, | ||
22 | STEDMA40_DEV_I2C2_RX = 6, | ||
23 | STEDMA40_DEV_I2C4_RX = 7, /* Only on V1 */ | ||
24 | STEDMA40_DEV_SSP0_RX = 8, | ||
25 | STEDMA40_DEV_SSP1_RX = 9, | ||
26 | STEDMA40_DEV_MCDE_RX = 10, | ||
27 | STEDMA40_DEV_UART2_RX = 11, | ||
28 | STEDMA40_DEV_UART1_RX = 12, | ||
29 | STEDMA40_DEV_UART0_RX = 13, | ||
30 | STEDMA40_DEV_MSP2_RX = 14, | ||
31 | STEDMA40_DEV_I2C0_RX = 15, | ||
32 | STEDMA40_DEV_USB_OTG_IEP_8 = 16, | ||
33 | STEDMA40_DEV_USB_OTG_IEP_1_9 = 17, | ||
34 | STEDMA40_DEV_USB_OTG_IEP_2_10 = 18, | ||
35 | STEDMA40_DEV_USB_OTG_IEP_3_11 = 19, | ||
36 | STEDMA40_DEV_SLIM0_CH0_RX_HSI_RX_CH0 = 20, | ||
37 | STEDMA40_DEV_SLIM0_CH1_RX_HSI_RX_CH1 = 21, | ||
38 | STEDMA40_DEV_SLIM0_CH2_RX_HSI_RX_CH2 = 22, | ||
39 | STEDMA40_DEV_SLIM0_CH3_RX_HSI_RX_CH3 = 23, | ||
40 | STEDMA40_DEV_SRC_SXA0_RX_TX = 24, | ||
41 | STEDMA40_DEV_SRC_SXA1_RX_TX = 25, | ||
42 | STEDMA40_DEV_SRC_SXA2_RX_TX = 26, | ||
43 | STEDMA40_DEV_SRC_SXA3_RX_TX = 27, | ||
44 | STEDMA40_DEV_SD_MM2_RX = 28, | ||
45 | STEDMA40_DEV_SD_MM0_RX = 29, | ||
46 | STEDMA40_DEV_MSP1_RX = 30, | ||
47 | /* | ||
48 | * This channel is either SlimBus or MSP, | ||
49 | * never both at the same time. | ||
50 | */ | ||
51 | STEDMA40_SLIM0_CH0_RX = 31, | ||
52 | STEDMA40_DEV_MSP0_RX = 31, | ||
53 | STEDMA40_DEV_SD_MM1_RX = 32, | ||
54 | STEDMA40_DEV_SPI2_RX = 33, | ||
55 | STEDMA40_DEV_I2C3_RX2 = 34, | ||
56 | STEDMA40_DEV_SPI1_RX = 35, | ||
57 | STEDMA40_DEV_USB_OTG_IEP_4_12 = 36, | ||
58 | STEDMA40_DEV_USB_OTG_IEP_5_13 = 37, | ||
59 | STEDMA40_DEV_USB_OTG_IEP_6_14 = 38, | ||
60 | STEDMA40_DEV_USB_OTG_IEP_7_15 = 39, | ||
61 | STEDMA40_DEV_SPI3_RX = 40, | ||
62 | STEDMA40_DEV_SD_MM3_RX = 41, | ||
63 | STEDMA40_DEV_SD_MM4_RX = 42, | ||
64 | STEDMA40_DEV_SD_MM5_RX = 43, | ||
65 | STEDMA40_DEV_SRC_SXA4_RX_TX = 44, | ||
66 | STEDMA40_DEV_SRC_SXA5_RX_TX = 45, | ||
67 | STEDMA40_DEV_SRC_SXA6_RX_TX = 46, | ||
68 | STEDMA40_DEV_SRC_SXA7_RX_TX = 47, | ||
69 | STEDMA40_DEV_CAC1_RX = 48, | ||
70 | /* RX channels 49 and 50 are unused */ | ||
71 | STEDMA40_DEV_MSHC_RX = 51, | ||
72 | STEDMA40_DEV_SLIM1_CH0_RX_HSI_RX_CH4 = 52, | ||
73 | STEDMA40_DEV_SLIM1_CH1_RX_HSI_RX_CH5 = 53, | ||
74 | STEDMA40_DEV_SLIM1_CH2_RX_HSI_RX_CH6 = 54, | ||
75 | STEDMA40_DEV_SLIM1_CH3_RX_HSI_RX_CH7 = 55, | ||
76 | /* RX channels 56 thru 60 are unused */ | ||
77 | STEDMA40_DEV_CAC0_RX = 61, | ||
78 | /* RX channels 62 and 63 are unused */ | ||
79 | }; | ||
80 | |||
81 | enum dma_dest_dev_type { | ||
82 | STEDMA40_DEV_SPI0_TX = 0, | ||
83 | STEDMA40_DEV_SD_MMC0_TX = 1, | ||
84 | STEDMA40_DEV_SD_MMC1_TX = 2, | ||
85 | STEDMA40_DEV_SD_MMC2_TX = 3, | ||
86 | STEDMA40_DEV_I2C1_TX = 4, | ||
87 | STEDMA40_DEV_I2C3_TX = 5, | ||
88 | STEDMA40_DEV_I2C2_TX = 6, | ||
89 | STEDMA50_DEV_I2C4_TX = 7, /* Only on V1 */ | ||
90 | STEDMA40_DEV_SSP0_TX = 8, | ||
91 | STEDMA40_DEV_SSP1_TX = 9, | ||
92 | /* TX channel 10 is unused */ | ||
93 | STEDMA40_DEV_UART2_TX = 11, | ||
94 | STEDMA40_DEV_UART1_TX = 12, | ||
95 | STEDMA40_DEV_UART0_TX= 13, | ||
96 | STEDMA40_DEV_MSP2_TX = 14, | ||
97 | STEDMA40_DEV_I2C0_TX = 15, | ||
98 | STEDMA40_DEV_USB_OTG_OEP_8 = 16, | ||
99 | STEDMA40_DEV_USB_OTG_OEP_1_9 = 17, | ||
100 | STEDMA40_DEV_USB_OTG_OEP_2_10= 18, | ||
101 | STEDMA40_DEV_USB_OTG_OEP_3_11 = 19, | ||
102 | STEDMA40_DEV_SLIM0_CH0_TX_HSI_TX_CH0 = 20, | ||
103 | STEDMA40_DEV_SLIM0_CH1_TX_HSI_TX_CH1 = 21, | ||
104 | STEDMA40_DEV_SLIM0_CH2_TX_HSI_TX_CH2 = 22, | ||
105 | STEDMA40_DEV_SLIM0_CH3_TX_HSI_TX_CH3 = 23, | ||
106 | STEDMA40_DEV_DST_SXA0_RX_TX = 24, | ||
107 | STEDMA40_DEV_DST_SXA1_RX_TX = 25, | ||
108 | STEDMA40_DEV_DST_SXA2_RX_TX = 26, | ||
109 | STEDMA40_DEV_DST_SXA3_RX_TX = 27, | ||
110 | STEDMA40_DEV_SD_MM2_TX = 28, | ||
111 | STEDMA40_DEV_SD_MM0_TX = 29, | ||
112 | STEDMA40_DEV_MSP1_TX = 30, | ||
113 | /* | ||
114 | * This channel is either SlimBus or MSP, | ||
115 | * never both at the same time. | ||
116 | */ | ||
117 | STEDMA40_SLIM0_CH0_TX = 31, | ||
118 | STEDMA40_DEV_MSP0_TX = 31, | ||
119 | STEDMA40_DEV_SD_MM1_TX = 32, | ||
120 | STEDMA40_DEV_SPI2_TX = 33, | ||
121 | /* Secondary I2C3 channel */ | ||
122 | STEDMA40_DEV_I2C3_TX2 = 34, | ||
123 | STEDMA40_DEV_SPI1_TX = 35, | ||
124 | STEDMA40_DEV_USB_OTG_OEP_4_12 = 36, | ||
125 | STEDMA40_DEV_USB_OTG_OEP_5_13 = 37, | ||
126 | STEDMA40_DEV_USB_OTG_OEP_6_14 = 38, | ||
127 | STEDMA40_DEV_USB_OTG_OEP_7_15 = 39, | ||
128 | STEDMA40_DEV_SPI3_TX = 40, | ||
129 | STEDMA40_DEV_SD_MM3_TX = 41, | ||
130 | STEDMA40_DEV_SD_MM4_TX = 42, | ||
131 | STEDMA40_DEV_SD_MM5_TX = 43, | ||
132 | STEDMA40_DEV_DST_SXA4_RX_TX = 44, | ||
133 | STEDMA40_DEV_DST_SXA5_RX_TX = 45, | ||
134 | STEDMA40_DEV_DST_SXA6_RX_TX = 46, | ||
135 | STEDMA40_DEV_DST_SXA7_RX_TX = 47, | ||
136 | STEDMA40_DEV_CAC1_TX = 48, | ||
137 | STEDMA40_DEV_CAC1_TX_HAC1_TX = 49, | ||
138 | STEDMA40_DEV_HAC1_TX = 50, | ||
139 | STEDMA40_MEMXCPY_TX_0 = 51, | ||
140 | STEDMA40_DEV_SLIM1_CH0_TX_HSI_TX_CH4 = 52, | ||
141 | STEDMA40_DEV_SLIM1_CH1_TX_HSI_TX_CH5 = 53, | ||
142 | STEDMA40_DEV_SLIM1_CH2_TX_HSI_TX_CH6 = 54, | ||
143 | STEDMA40_DEV_SLIM1_CH3_TX_HSI_TX_CH7 = 55, | ||
144 | STEDMA40_MEMCPY_TX_1 = 56, | ||
145 | STEDMA40_MEMCPY_TX_2 = 57, | ||
146 | STEDMA40_MEMCPY_TX_3 = 58, | ||
147 | STEDMA40_MEMCPY_TX_4 = 59, | ||
148 | STEDMA40_MEMCPY_TX_5 = 60, | ||
149 | STEDMA40_DEV_CAC0_TX = 61, | ||
150 | STEDMA40_DEV_CAC0_TX_HAC0_TX = 62, | ||
151 | STEDMA40_DEV_HAC0_TX = 63, | ||
152 | }; | ||
153 | |||
154 | #endif | ||
diff --git a/arch/arm/mm/copypage-feroceon.c b/arch/arm/mm/copypage-feroceon.c index 5eb4fd93893d..ac163de7dc01 100644 --- a/arch/arm/mm/copypage-feroceon.c +++ b/arch/arm/mm/copypage-feroceon.c | |||
@@ -18,7 +18,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom) | |||
18 | { | 18 | { |
19 | asm("\ | 19 | asm("\ |
20 | stmfd sp!, {r4-r9, lr} \n\ | 20 | stmfd sp!, {r4-r9, lr} \n\ |
21 | mov ip, %0 \n\ | 21 | mov ip, %2 \n\ |
22 | 1: mov lr, r1 \n\ | 22 | 1: mov lr, r1 \n\ |
23 | ldmia r1!, {r2 - r9} \n\ | 23 | ldmia r1!, {r2 - r9} \n\ |
24 | pld [lr, #32] \n\ | 24 | pld [lr, #32] \n\ |
@@ -64,7 +64,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom) | |||
64 | mcr p15, 0, ip, c7, c10, 4 @ drain WB\n\ | 64 | mcr p15, 0, ip, c7, c10, 4 @ drain WB\n\ |
65 | ldmfd sp!, {r4-r9, pc}" | 65 | ldmfd sp!, {r4-r9, pc}" |
66 | : | 66 | : |
67 | : "I" (PAGE_SIZE)); | 67 | : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE)); |
68 | } | 68 | } |
69 | 69 | ||
70 | void feroceon_copy_user_highpage(struct page *to, struct page *from, | 70 | void feroceon_copy_user_highpage(struct page *to, struct page *from, |
diff --git a/arch/arm/mm/copypage-v4wb.c b/arch/arm/mm/copypage-v4wb.c index 7c2eb55cd4a9..cb589cbb2b6c 100644 --- a/arch/arm/mm/copypage-v4wb.c +++ b/arch/arm/mm/copypage-v4wb.c | |||
@@ -27,7 +27,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom) | |||
27 | { | 27 | { |
28 | asm("\ | 28 | asm("\ |
29 | stmfd sp!, {r4, lr} @ 2\n\ | 29 | stmfd sp!, {r4, lr} @ 2\n\ |
30 | mov r2, %0 @ 1\n\ | 30 | mov r2, %2 @ 1\n\ |
31 | ldmia r1!, {r3, r4, ip, lr} @ 4\n\ | 31 | ldmia r1!, {r3, r4, ip, lr} @ 4\n\ |
32 | 1: mcr p15, 0, r0, c7, c6, 1 @ 1 invalidate D line\n\ | 32 | 1: mcr p15, 0, r0, c7, c6, 1 @ 1 invalidate D line\n\ |
33 | stmia r0!, {r3, r4, ip, lr} @ 4\n\ | 33 | stmia r0!, {r3, r4, ip, lr} @ 4\n\ |
@@ -44,7 +44,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom) | |||
44 | mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB\n\ | 44 | mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB\n\ |
45 | ldmfd sp!, {r4, pc} @ 3" | 45 | ldmfd sp!, {r4, pc} @ 3" |
46 | : | 46 | : |
47 | : "I" (PAGE_SIZE / 64)); | 47 | : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64)); |
48 | } | 48 | } |
49 | 49 | ||
50 | void v4wb_copy_user_highpage(struct page *to, struct page *from, | 50 | void v4wb_copy_user_highpage(struct page *to, struct page *from, |
diff --git a/arch/arm/mm/copypage-v4wt.c b/arch/arm/mm/copypage-v4wt.c index 172e6a55458e..30c7d048a324 100644 --- a/arch/arm/mm/copypage-v4wt.c +++ b/arch/arm/mm/copypage-v4wt.c | |||
@@ -25,7 +25,7 @@ v4wt_copy_user_page(void *kto, const void *kfrom) | |||
25 | { | 25 | { |
26 | asm("\ | 26 | asm("\ |
27 | stmfd sp!, {r4, lr} @ 2\n\ | 27 | stmfd sp!, {r4, lr} @ 2\n\ |
28 | mov r2, %0 @ 1\n\ | 28 | mov r2, %2 @ 1\n\ |
29 | ldmia r1!, {r3, r4, ip, lr} @ 4\n\ | 29 | ldmia r1!, {r3, r4, ip, lr} @ 4\n\ |
30 | 1: stmia r0!, {r3, r4, ip, lr} @ 4\n\ | 30 | 1: stmia r0!, {r3, r4, ip, lr} @ 4\n\ |
31 | ldmia r1!, {r3, r4, ip, lr} @ 4+1\n\ | 31 | ldmia r1!, {r3, r4, ip, lr} @ 4+1\n\ |
@@ -40,7 +40,7 @@ v4wt_copy_user_page(void *kto, const void *kfrom) | |||
40 | mcr p15, 0, r2, c7, c7, 0 @ flush ID cache\n\ | 40 | mcr p15, 0, r2, c7, c7, 0 @ flush ID cache\n\ |
41 | ldmfd sp!, {r4, pc} @ 3" | 41 | ldmfd sp!, {r4, pc} @ 3" |
42 | : | 42 | : |
43 | : "I" (PAGE_SIZE / 64)); | 43 | : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64)); |
44 | } | 44 | } |
45 | 45 | ||
46 | void v4wt_copy_user_highpage(struct page *to, struct page *from, | 46 | void v4wt_copy_user_highpage(struct page *to, struct page *from, |
diff --git a/arch/arm/mm/copypage-xsc3.c b/arch/arm/mm/copypage-xsc3.c index 747ad4140fc7..f9cde0702f1e 100644 --- a/arch/arm/mm/copypage-xsc3.c +++ b/arch/arm/mm/copypage-xsc3.c | |||
@@ -34,7 +34,7 @@ xsc3_mc_copy_user_page(void *kto, const void *kfrom) | |||
34 | { | 34 | { |
35 | asm("\ | 35 | asm("\ |
36 | stmfd sp!, {r4, r5, lr} \n\ | 36 | stmfd sp!, {r4, r5, lr} \n\ |
37 | mov lr, %0 \n\ | 37 | mov lr, %2 \n\ |
38 | \n\ | 38 | \n\ |
39 | pld [r1, #0] \n\ | 39 | pld [r1, #0] \n\ |
40 | pld [r1, #32] \n\ | 40 | pld [r1, #32] \n\ |
@@ -67,7 +67,7 @@ xsc3_mc_copy_user_page(void *kto, const void *kfrom) | |||
67 | \n\ | 67 | \n\ |
68 | ldmfd sp!, {r4, r5, pc}" | 68 | ldmfd sp!, {r4, r5, pc}" |
69 | : | 69 | : |
70 | : "I" (PAGE_SIZE / 64 - 1)); | 70 | : "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64 - 1)); |
71 | } | 71 | } |
72 | 72 | ||
73 | void xsc3_mc_copy_user_highpage(struct page *to, struct page *from, | 73 | void xsc3_mc_copy_user_highpage(struct page *to, struct page *from, |
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 92f5801f99c1..cbfb2edcf7d1 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -393,6 +393,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr, | |||
393 | if (addr < TASK_SIZE) | 393 | if (addr < TASK_SIZE) |
394 | return do_page_fault(addr, fsr, regs); | 394 | return do_page_fault(addr, fsr, regs); |
395 | 395 | ||
396 | if (user_mode(regs)) | ||
397 | goto bad_area; | ||
398 | |||
396 | index = pgd_index(addr); | 399 | index = pgd_index(addr); |
397 | 400 | ||
398 | /* | 401 | /* |
diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c index 77b030f5ec09..086816b205b8 100644 --- a/arch/arm/mm/highmem.c +++ b/arch/arm/mm/highmem.c | |||
@@ -48,7 +48,16 @@ void *kmap_atomic(struct page *page, enum km_type type) | |||
48 | 48 | ||
49 | debug_kmap_atomic(type); | 49 | debug_kmap_atomic(type); |
50 | 50 | ||
51 | kmap = kmap_high_get(page); | 51 | #ifdef CONFIG_DEBUG_HIGHMEM |
52 | /* | ||
53 | * There is no cache coherency issue when non VIVT, so force the | ||
54 | * dedicated kmap usage for better debugging purposes in that case. | ||
55 | */ | ||
56 | if (!cache_is_vivt()) | ||
57 | kmap = NULL; | ||
58 | else | ||
59 | #endif | ||
60 | kmap = kmap_high_get(page); | ||
52 | if (kmap) | 61 | if (kmap) |
53 | return kmap; | 62 | return kmap; |
54 | 63 | ||
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 1ba6cf5a2c02..f6a999465323 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -678,10 +678,10 @@ void __init mem_init(void) | |||
678 | void free_initmem(void) | 678 | void free_initmem(void) |
679 | { | 679 | { |
680 | #ifdef CONFIG_HAVE_TCM | 680 | #ifdef CONFIG_HAVE_TCM |
681 | extern char *__tcm_start, *__tcm_end; | 681 | extern char __tcm_start, __tcm_end; |
682 | 682 | ||
683 | totalram_pages += free_area(__phys_to_pfn(__pa(__tcm_start)), | 683 | totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)), |
684 | __phys_to_pfn(__pa(__tcm_end)), | 684 | __phys_to_pfn(__pa(&__tcm_end)), |
685 | "TCM link"); | 685 | "TCM link"); |
686 | #endif | 686 | #endif |
687 | 687 | ||
diff --git a/arch/arm/plat-nomadik/timer.c b/arch/arm/plat-nomadik/timer.c index 0ff3798769ab..08aaa4a7f65f 100644 --- a/arch/arm/plat-nomadik/timer.c +++ b/arch/arm/plat-nomadik/timer.c | |||
@@ -13,7 +13,9 @@ | |||
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/clockchips.h> | 15 | #include <linux/clockchips.h> |
16 | #include <linux/clk.h> | ||
16 | #include <linux/jiffies.h> | 17 | #include <linux/jiffies.h> |
18 | #include <linux/err.h> | ||
17 | #include <asm/mach/time.h> | 19 | #include <asm/mach/time.h> |
18 | 20 | ||
19 | #include <plat/mtu.h> | 21 | #include <plat/mtu.h> |
@@ -124,13 +126,25 @@ static struct irqaction nmdk_timer_irq = { | |||
124 | void __init nmdk_timer_init(void) | 126 | void __init nmdk_timer_init(void) |
125 | { | 127 | { |
126 | unsigned long rate; | 128 | unsigned long rate; |
127 | u32 cr = MTU_CRn_32BITS;; | 129 | struct clk *clk0; |
130 | struct clk *clk1; | ||
131 | u32 cr; | ||
132 | |||
133 | clk0 = clk_get_sys("mtu0", NULL); | ||
134 | BUG_ON(IS_ERR(clk0)); | ||
135 | |||
136 | clk1 = clk_get_sys("mtu1", NULL); | ||
137 | BUG_ON(IS_ERR(clk1)); | ||
138 | |||
139 | clk_enable(clk0); | ||
140 | clk_enable(clk1); | ||
128 | 141 | ||
129 | /* | 142 | /* |
130 | * Tick rate is 2.4MHz for Nomadik and 110MHz for ux500: | 143 | * Tick rate is 2.4MHz for Nomadik and 110MHz for ux500: |
131 | * use a divide-by-16 counter if it's more than 16MHz | 144 | * use a divide-by-16 counter if it's more than 16MHz |
132 | */ | 145 | */ |
133 | rate = CLOCK_TICK_RATE; | 146 | cr = MTU_CRn_32BITS;; |
147 | rate = clk_get_rate(clk0); | ||
134 | if (rate > 16 << 20) { | 148 | if (rate > 16 << 20) { |
135 | rate /= 16; | 149 | rate /= 16; |
136 | cr |= MTU_CRn_PRESCALE_16; | 150 | cr |= MTU_CRn_PRESCALE_16; |
@@ -153,6 +167,14 @@ void __init nmdk_timer_init(void) | |||
153 | nmdk_clksrc.name); | 167 | nmdk_clksrc.name); |
154 | 168 | ||
155 | /* Timer 1 is used for events, fix according to rate */ | 169 | /* Timer 1 is used for events, fix according to rate */ |
170 | cr = MTU_CRn_32BITS; | ||
171 | rate = clk_get_rate(clk1); | ||
172 | if (rate > 16 << 20) { | ||
173 | rate /= 16; | ||
174 | cr |= MTU_CRn_PRESCALE_16; | ||
175 | } else { | ||
176 | cr |= MTU_CRn_PRESCALE_1; | ||
177 | } | ||
156 | writel(cr | MTU_CRn_ONESHOT, mtu_base + MTU_CR(1)); /* off, currently */ | 178 | writel(cr | MTU_CRn_ONESHOT, mtu_base + MTU_CR(1)); /* off, currently */ |
157 | nmdk_clkevt.mult = div_sc(rate, NSEC_PER_SEC, nmdk_clkevt.shift); | 179 | nmdk_clkevt.mult = div_sc(rate, NSEC_PER_SEC, nmdk_clkevt.shift); |
158 | nmdk_clkevt.max_delta_ns = | 180 | nmdk_clkevt.max_delta_ns = |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index dc2ac42d6319..393e9219a5b6 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -624,79 +624,58 @@ do { \ | |||
624 | __raw_writel(l, base + reg); \ | 624 | __raw_writel(l, base + reg); \ |
625 | } while(0) | 625 | } while(0) |
626 | 626 | ||
627 | void omap_set_gpio_debounce(int gpio, int enable) | 627 | /** |
628 | * _set_gpio_debounce - low level gpio debounce time | ||
629 | * @bank: the gpio bank we're acting upon | ||
630 | * @gpio: the gpio number on this @gpio | ||
631 | * @debounce: debounce time to use | ||
632 | * | ||
633 | * OMAP's debounce time is in 31us steps so we need | ||
634 | * to convert and round up to the closest unit. | ||
635 | */ | ||
636 | static void _set_gpio_debounce(struct gpio_bank *bank, unsigned gpio, | ||
637 | unsigned debounce) | ||
628 | { | 638 | { |
629 | struct gpio_bank *bank; | 639 | void __iomem *reg = bank->base; |
630 | void __iomem *reg; | 640 | u32 val; |
631 | unsigned long flags; | 641 | u32 l; |
632 | u32 val, l = 1 << get_gpio_index(gpio); | 642 | |
643 | if (debounce < 32) | ||
644 | debounce = 0x01; | ||
645 | else if (debounce > 7936) | ||
646 | debounce = 0xff; | ||
647 | else | ||
648 | debounce = (debounce / 0x1f) - 1; | ||
633 | 649 | ||
634 | if (cpu_class_is_omap1()) | 650 | l = 1 << get_gpio_index(gpio); |
635 | return; | ||
636 | 651 | ||
637 | bank = get_gpio_bank(gpio); | 652 | if (cpu_is_omap44xx()) |
638 | reg = bank->base; | 653 | reg += OMAP4_GPIO_DEBOUNCINGTIME; |
654 | else | ||
655 | reg += OMAP24XX_GPIO_DEBOUNCE_VAL; | ||
656 | |||
657 | __raw_writel(debounce, reg); | ||
639 | 658 | ||
659 | reg = bank->base; | ||
640 | if (cpu_is_omap44xx()) | 660 | if (cpu_is_omap44xx()) |
641 | reg += OMAP4_GPIO_DEBOUNCENABLE; | 661 | reg += OMAP4_GPIO_DEBOUNCENABLE; |
642 | else | 662 | else |
643 | reg += OMAP24XX_GPIO_DEBOUNCE_EN; | 663 | reg += OMAP24XX_GPIO_DEBOUNCE_EN; |
644 | 664 | ||
645 | if (!(bank->mod_usage & l)) { | ||
646 | printk(KERN_ERR "GPIO %d not requested\n", gpio); | ||
647 | return; | ||
648 | } | ||
649 | |||
650 | spin_lock_irqsave(&bank->lock, flags); | ||
651 | val = __raw_readl(reg); | 665 | val = __raw_readl(reg); |
652 | 666 | ||
653 | if (enable && !(val & l)) | 667 | if (debounce) { |
654 | val |= l; | 668 | val |= l; |
655 | else if (!enable && (val & l)) | 669 | if (cpu_is_omap34xx() || cpu_is_omap44xx()) |
656 | val &= ~l; | ||
657 | else | ||
658 | goto done; | ||
659 | |||
660 | if (cpu_is_omap34xx() || cpu_is_omap44xx()) { | ||
661 | bank->dbck_enable_mask = val; | ||
662 | if (enable) | ||
663 | clk_enable(bank->dbck); | 670 | clk_enable(bank->dbck); |
664 | else | 671 | } else { |
672 | val &= ~l; | ||
673 | if (cpu_is_omap34xx() || cpu_is_omap44xx()) | ||
665 | clk_disable(bank->dbck); | 674 | clk_disable(bank->dbck); |
666 | } | 675 | } |
667 | 676 | ||
668 | __raw_writel(val, reg); | 677 | __raw_writel(val, reg); |
669 | done: | ||
670 | spin_unlock_irqrestore(&bank->lock, flags); | ||
671 | } | 678 | } |
672 | EXPORT_SYMBOL(omap_set_gpio_debounce); | ||
673 | |||
674 | void omap_set_gpio_debounce_time(int gpio, int enc_time) | ||
675 | { | ||
676 | struct gpio_bank *bank; | ||
677 | void __iomem *reg; | ||
678 | |||
679 | if (cpu_class_is_omap1()) | ||
680 | return; | ||
681 | |||
682 | bank = get_gpio_bank(gpio); | ||
683 | reg = bank->base; | ||
684 | |||
685 | if (!bank->mod_usage) { | ||
686 | printk(KERN_ERR "GPIO not requested\n"); | ||
687 | return; | ||
688 | } | ||
689 | |||
690 | enc_time &= 0xff; | ||
691 | |||
692 | if (cpu_is_omap44xx()) | ||
693 | reg += OMAP4_GPIO_DEBOUNCINGTIME; | ||
694 | else | ||
695 | reg += OMAP24XX_GPIO_DEBOUNCE_VAL; | ||
696 | |||
697 | __raw_writel(enc_time, reg); | ||
698 | } | ||
699 | EXPORT_SYMBOL(omap_set_gpio_debounce_time); | ||
700 | 679 | ||
701 | #ifdef CONFIG_ARCH_OMAP2PLUS | 680 | #ifdef CONFIG_ARCH_OMAP2PLUS |
702 | static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio, | 681 | static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio, |
@@ -1656,6 +1635,20 @@ static int gpio_output(struct gpio_chip *chip, unsigned offset, int value) | |||
1656 | return 0; | 1635 | return 0; |
1657 | } | 1636 | } |
1658 | 1637 | ||
1638 | static int gpio_debounce(struct gpio_chip *chip, unsigned offset, | ||
1639 | unsigned debounce) | ||
1640 | { | ||
1641 | struct gpio_bank *bank; | ||
1642 | unsigned long flags; | ||
1643 | |||
1644 | bank = container_of(chip, struct gpio_bank, chip); | ||
1645 | spin_lock_irqsave(&bank->lock, flags); | ||
1646 | _set_gpio_debounce(bank, offset, debounce); | ||
1647 | spin_unlock_irqrestore(&bank->lock, flags); | ||
1648 | |||
1649 | return 0; | ||
1650 | } | ||
1651 | |||
1659 | static void gpio_set(struct gpio_chip *chip, unsigned offset, int value) | 1652 | static void gpio_set(struct gpio_chip *chip, unsigned offset, int value) |
1660 | { | 1653 | { |
1661 | struct gpio_bank *bank; | 1654 | struct gpio_bank *bank; |
@@ -1909,6 +1902,7 @@ static int __init _omap_gpio_init(void) | |||
1909 | bank->chip.direction_input = gpio_input; | 1902 | bank->chip.direction_input = gpio_input; |
1910 | bank->chip.get = gpio_get; | 1903 | bank->chip.get = gpio_get; |
1911 | bank->chip.direction_output = gpio_output; | 1904 | bank->chip.direction_output = gpio_output; |
1905 | bank->chip.set_debounce = gpio_debounce; | ||
1912 | bank->chip.set = gpio_set; | 1906 | bank->chip.set = gpio_set; |
1913 | bank->chip.to_irq = gpio_2irq; | 1907 | bank->chip.to_irq = gpio_2irq; |
1914 | if (bank_is_mpuio(bank)) { | 1908 | if (bank_is_mpuio(bank)) { |
diff --git a/arch/arm/plat-s5p/Kconfig b/arch/arm/plat-s5p/Kconfig index 5cb2dd1da632..11d6a1bbd90d 100644 --- a/arch/arm/plat-s5p/Kconfig +++ b/arch/arm/plat-s5p/Kconfig | |||
@@ -29,3 +29,4 @@ config S5P_EXT_INT | |||
29 | bool | 29 | bool |
30 | help | 30 | help |
31 | Use the external interrupts (other than GPIO interrupts.) | 31 | Use the external interrupts (other than GPIO interrupts.) |
32 | Note: Do not choose this for S5P6440. | ||
diff --git a/arch/arm/plat-s5p/clock.c b/arch/arm/plat-s5p/clock.c index 24a931fd8d3b..b5e255265f20 100644 --- a/arch/arm/plat-s5p/clock.c +++ b/arch/arm/plat-s5p/clock.c | |||
@@ -148,6 +148,7 @@ static struct clk *s5p_clks[] __initdata = { | |||
148 | &clk_fout_vpll, | 148 | &clk_fout_vpll, |
149 | &clk_arm, | 149 | &clk_arm, |
150 | &clk_vpll, | 150 | &clk_vpll, |
151 | &clk_xusbxti, | ||
151 | }; | 152 | }; |
152 | 153 | ||
153 | void __init s5p_register_clocks(unsigned long xtal_freq) | 154 | void __init s5p_register_clocks(unsigned long xtal_freq) |
diff --git a/arch/arm/plat-s5p/include/plat/irqs.h b/arch/arm/plat-s5p/include/plat/irqs.h index 9ff3d718be39..3fb3a3a17465 100644 --- a/arch/arm/plat-s5p/include/plat/irqs.h +++ b/arch/arm/plat-s5p/include/plat/irqs.h | |||
@@ -87,4 +87,11 @@ | |||
87 | #define IRQ_TIMER3 S5P_TIMER_IRQ(3) | 87 | #define IRQ_TIMER3 S5P_TIMER_IRQ(3) |
88 | #define IRQ_TIMER4 S5P_TIMER_IRQ(4) | 88 | #define IRQ_TIMER4 S5P_TIMER_IRQ(4) |
89 | 89 | ||
90 | #define IRQ_EINT(x) ((x) < 16 ? ((x) + S5P_EINT_BASE1) \ | ||
91 | : ((x) - 16 + S5P_EINT_BASE2)) | ||
92 | |||
93 | #define EINT_OFFSET(irq) ((irq) < S5P_EINT_BASE2 ? \ | ||
94 | ((irq) - S5P_EINT_BASE1) : \ | ||
95 | ((irq) + 16 - S5P_EINT_BASE2)) | ||
96 | |||
90 | #endif /* __ASM_PLAT_S5P_IRQS_H */ | 97 | #endif /* __ASM_PLAT_S5P_IRQS_H */ |
diff --git a/arch/arm/plat-s5p/irq-eint.c b/arch/arm/plat-s5p/irq-eint.c index eaa70aa0127b..e56c8075df97 100644 --- a/arch/arm/plat-s5p/irq-eint.c +++ b/arch/arm/plat-s5p/irq-eint.c | |||
@@ -60,7 +60,7 @@ static void s5p_irq_eint_maskack(unsigned int irq) | |||
60 | 60 | ||
61 | static int s5p_irq_eint_set_type(unsigned int irq, unsigned int type) | 61 | static int s5p_irq_eint_set_type(unsigned int irq, unsigned int type) |
62 | { | 62 | { |
63 | int offs = eint_offset(irq); | 63 | int offs = EINT_OFFSET(irq); |
64 | int shift; | 64 | int shift; |
65 | u32 ctrl, mask; | 65 | u32 ctrl, mask; |
66 | u32 newvalue = 0; | 66 | u32 newvalue = 0; |
@@ -139,17 +139,16 @@ static struct irq_chip s5p_irq_eint = { | |||
139 | */ | 139 | */ |
140 | static inline void s5p_irq_demux_eint(unsigned int start) | 140 | static inline void s5p_irq_demux_eint(unsigned int start) |
141 | { | 141 | { |
142 | u32 status; | 142 | u32 status = __raw_readl(S5P_EINT_PEND(EINT_REG_NR(start))); |
143 | u32 mask = __raw_readl(S5P_EINT_MASK(EINT_REG_NR(start))); | 143 | u32 mask = __raw_readl(S5P_EINT_MASK(EINT_REG_NR(start))); |
144 | unsigned int irq; | 144 | unsigned int irq; |
145 | 145 | ||
146 | status = __raw_readl(S5P_EINT_PEND(EINT_REG_NR(start))); | ||
147 | status &= ~mask; | 146 | status &= ~mask; |
148 | status &= 0xff; | 147 | status &= 0xff; |
149 | 148 | ||
150 | while (status) { | 149 | while (status) { |
151 | irq = fls(status); | 150 | irq = fls(status) - 1; |
152 | generic_handle_irq(irq - 1 + start); | 151 | generic_handle_irq(irq + start); |
153 | status &= ~(1 << irq); | 152 | status &= ~(1 << irq); |
154 | } | 153 | } |
155 | } | 154 | } |
@@ -162,12 +161,18 @@ static void s5p_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc) | |||
162 | 161 | ||
163 | static inline void s5p_irq_vic_eint_mask(unsigned int irq) | 162 | static inline void s5p_irq_vic_eint_mask(unsigned int irq) |
164 | { | 163 | { |
164 | void __iomem *base = get_irq_chip_data(irq); | ||
165 | |||
165 | s5p_irq_eint_mask(irq); | 166 | s5p_irq_eint_mask(irq); |
167 | writel(1 << EINT_OFFSET(irq), base + VIC_INT_ENABLE_CLEAR); | ||
166 | } | 168 | } |
167 | 169 | ||
168 | static void s5p_irq_vic_eint_unmask(unsigned int irq) | 170 | static void s5p_irq_vic_eint_unmask(unsigned int irq) |
169 | { | 171 | { |
172 | void __iomem *base = get_irq_chip_data(irq); | ||
173 | |||
170 | s5p_irq_eint_unmask(irq); | 174 | s5p_irq_eint_unmask(irq); |
175 | writel(1 << EINT_OFFSET(irq), base + VIC_INT_ENABLE); | ||
171 | } | 176 | } |
172 | 177 | ||
173 | static inline void s5p_irq_vic_eint_ack(unsigned int irq) | 178 | static inline void s5p_irq_vic_eint_ack(unsigned int irq) |
diff --git a/arch/arm/plat-samsung/include/plat/gpio-cfg.h b/arch/arm/plat-samsung/include/plat/gpio-cfg.h index 34efdd2b032c..db4112c6f2be 100644 --- a/arch/arm/plat-samsung/include/plat/gpio-cfg.h +++ b/arch/arm/plat-samsung/include/plat/gpio-cfg.h | |||
@@ -43,6 +43,11 @@ struct s3c_gpio_chip; | |||
43 | * layouts. Provide an point to vector control routine and provide any | 43 | * layouts. Provide an point to vector control routine and provide any |
44 | * per-bank configuration information that other systems such as the | 44 | * per-bank configuration information that other systems such as the |
45 | * external interrupt code will need. | 45 | * external interrupt code will need. |
46 | * | ||
47 | * @sa s3c_gpio_cfgpin | ||
48 | * @sa s3c_gpio_getcfg | ||
49 | * @sa s3c_gpio_setpull | ||
50 | * @sa s3c_gpio_getpull | ||
46 | */ | 51 | */ |
47 | struct s3c_gpio_cfg { | 52 | struct s3c_gpio_cfg { |
48 | unsigned int cfg_eint; | 53 | unsigned int cfg_eint; |
@@ -70,11 +75,25 @@ struct s3c_gpio_cfg { | |||
70 | /** | 75 | /** |
71 | * s3c_gpio_cfgpin() - Change the GPIO function of a pin. | 76 | * s3c_gpio_cfgpin() - Change the GPIO function of a pin. |
72 | * @pin pin The pin number to configure. | 77 | * @pin pin The pin number to configure. |
73 | * @pin to The configuration for the pin's function. | 78 | * @to to The configuration for the pin's function. |
74 | * | 79 | * |
75 | * Configure which function is actually connected to the external | 80 | * Configure which function is actually connected to the external |
76 | * pin, such as an gpio input, output or some form of special function | 81 | * pin, such as an gpio input, output or some form of special function |
77 | * connected to an internal peripheral block. | 82 | * connected to an internal peripheral block. |
83 | * | ||
84 | * The @to parameter can be one of the generic S3C_GPIO_INPUT, S3C_GPIO_OUTPUT | ||
85 | * or S3C_GPIO_SFN() to indicate one of the possible values that the helper | ||
86 | * will then generate the correct bit mask and shift for the configuration. | ||
87 | * | ||
88 | * If a bank of GPIOs all needs to be set to special-function 2, then | ||
89 | * the following code will work: | ||
90 | * | ||
91 | * for (gpio = start; gpio < end; gpio++) | ||
92 | * s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); | ||
93 | * | ||
94 | * The @to parameter can also be a specific value already shifted to the | ||
95 | * correct position in the control register, although these are discouraged | ||
96 | * in newer kernels and are only being kept for compatibility. | ||
78 | */ | 97 | */ |
79 | extern int s3c_gpio_cfgpin(unsigned int pin, unsigned int to); | 98 | extern int s3c_gpio_cfgpin(unsigned int pin, unsigned int to); |
80 | 99 | ||
@@ -108,6 +127,8 @@ extern unsigned s3c_gpio_getcfg(unsigned int pin); | |||
108 | * This function sets the state of the pull-{up,down} resistor for the | 127 | * This function sets the state of the pull-{up,down} resistor for the |
109 | * specified pin. It will return 0 if successfull, or a negative error | 128 | * specified pin. It will return 0 if successfull, or a negative error |
110 | * code if the pin cannot support the requested pull setting. | 129 | * code if the pin cannot support the requested pull setting. |
130 | * | ||
131 | * @pull is one of S3C_GPIO_PULL_NONE, S3C_GPIO_PULL_DOWN or S3C_GPIO_PULL_UP. | ||
111 | */ | 132 | */ |
112 | extern int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull); | 133 | extern int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull); |
113 | 134 | ||
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index 66dc2d03b7fc..d66cead97d28 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S | |||
@@ -277,7 +277,7 @@ ENTRY(vfp_put_double) | |||
277 | #ifdef CONFIG_VFPv3 | 277 | #ifdef CONFIG_VFPv3 |
278 | @ d16 - d31 registers | 278 | @ d16 - d31 registers |
279 | .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | 279 | .irp dr,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 |
280 | 1: mcrr p11, 3, r1, r2, c\dr @ fmdrr r1, r2, d\dr | 280 | 1: mcrr p11, 3, r0, r1, c\dr @ fmdrr r0, r1, d\dr |
281 | mov pc, lr | 281 | mov pc, lr |
282 | .org 1b + 8 | 282 | .org 1b + 8 |
283 | .endr | 283 | .endr |
diff --git a/arch/avr32/include/asm/scatterlist.h b/arch/avr32/include/asm/scatterlist.h index 377320e3bd17..06394e5ead6c 100644 --- a/arch/avr32/include/asm/scatterlist.h +++ b/arch/avr32/include/asm/scatterlist.h | |||
@@ -1,25 +1,7 @@ | |||
1 | #ifndef __ASM_AVR32_SCATTERLIST_H | 1 | #ifndef __ASM_AVR32_SCATTERLIST_H |
2 | #define __ASM_AVR32_SCATTERLIST_H | 2 | #define __ASM_AVR32_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | dma_addr_t dma_address; | ||
13 | unsigned int length; | ||
14 | }; | ||
15 | |||
16 | /* These macros should be used after a pci_map_sg call has been done | ||
17 | * to get bus addresses of each of the SG entries and their lengths. | ||
18 | * You should only work with the number of sg entries pci_map_sg | ||
19 | * returns. | ||
20 | */ | ||
21 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
22 | #define sg_dma_len(sg) ((sg)->length) | ||
23 | 5 | ||
24 | #define ISA_DMA_THRESHOLD (0xffffffff) | 6 | #define ISA_DMA_THRESHOLD (0xffffffff) |
25 | 7 | ||
diff --git a/arch/blackfin/include/asm/scatterlist.h b/arch/blackfin/include/asm/scatterlist.h index 04f448711cd0..64d41d34ab0b 100644 --- a/arch/blackfin/include/asm/scatterlist.h +++ b/arch/blackfin/include/asm/scatterlist.h | |||
@@ -1,27 +1,7 @@ | |||
1 | #ifndef _BLACKFIN_SCATTERLIST_H | 1 | #ifndef _BLACKFIN_SCATTERLIST_H |
2 | #define _BLACKFIN_SCATTERLIST_H | 2 | #define _BLACKFIN_SCATTERLIST_H |
3 | 3 | ||
4 | #include <linux/mm.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | dma_addr_t dma_address; | ||
13 | unsigned int length; | ||
14 | }; | ||
15 | |||
16 | /* | ||
17 | * These macros should be used after a pci_map_sg call has been done | ||
18 | * to get bus addresses of each of the SG entries and their lengths. | ||
19 | * You should only work with the number of sg entries pci_map_sg | ||
20 | * returns, or alternatively stop on the first sg_dma_len(sg) which | ||
21 | * is 0. | ||
22 | */ | ||
23 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
24 | #define sg_dma_len(sg) ((sg)->length) | ||
25 | 5 | ||
26 | #define ISA_DMA_THRESHOLD (0xffffffff) | 6 | #define ISA_DMA_THRESHOLD (0xffffffff) |
27 | 7 | ||
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c index 43eb969405d1..6ec77685df52 100644 --- a/arch/blackfin/kernel/ptrace.c +++ b/arch/blackfin/kernel/ptrace.c | |||
@@ -292,28 +292,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
292 | break; | 292 | break; |
293 | } | 293 | } |
294 | 294 | ||
295 | #ifdef CONFIG_BINFMT_ELF_FDPIC | ||
296 | case PTRACE_GETFDPIC: { | ||
297 | unsigned long tmp = 0; | ||
298 | |||
299 | switch (addr) { | ||
300 | case_PTRACE_GETFDPIC_EXEC: | ||
301 | case PTRACE_GETFDPIC_EXEC: | ||
302 | tmp = child->mm->context.exec_fdpic_loadmap; | ||
303 | break; | ||
304 | case_PTRACE_GETFDPIC_INTERP: | ||
305 | case PTRACE_GETFDPIC_INTERP: | ||
306 | tmp = child->mm->context.interp_fdpic_loadmap; | ||
307 | break; | ||
308 | default: | ||
309 | break; | ||
310 | } | ||
311 | |||
312 | ret = put_user(tmp, datap); | ||
313 | break; | ||
314 | } | ||
315 | #endif | ||
316 | |||
317 | /* when I and D space are separate, this will have to be fixed. */ | 295 | /* when I and D space are separate, this will have to be fixed. */ |
318 | case PTRACE_POKEDATA: | 296 | case PTRACE_POKEDATA: |
319 | pr_debug("ptrace: PTRACE_PEEKDATA\n"); | 297 | pr_debug("ptrace: PTRACE_PEEKDATA\n"); |
@@ -357,8 +335,14 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
357 | case PTRACE_PEEKUSR: | 335 | case PTRACE_PEEKUSR: |
358 | switch (addr) { | 336 | switch (addr) { |
359 | #ifdef CONFIG_BINFMT_ELF_FDPIC /* backwards compat */ | 337 | #ifdef CONFIG_BINFMT_ELF_FDPIC /* backwards compat */ |
360 | case PT_FDPIC_EXEC: goto case_PTRACE_GETFDPIC_EXEC; | 338 | case PT_FDPIC_EXEC: |
361 | case PT_FDPIC_INTERP: goto case_PTRACE_GETFDPIC_INTERP; | 339 | request = PTRACE_GETFDPIC; |
340 | addr = PTRACE_GETFDPIC_EXEC; | ||
341 | goto case_default; | ||
342 | case PT_FDPIC_INTERP: | ||
343 | request = PTRACE_GETFDPIC; | ||
344 | addr = PTRACE_GETFDPIC_INTERP; | ||
345 | goto case_default; | ||
362 | #endif | 346 | #endif |
363 | default: | 347 | default: |
364 | ret = get_reg(child, addr, datap); | 348 | ret = get_reg(child, addr, datap); |
@@ -385,6 +369,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
385 | 0, sizeof(struct pt_regs), | 369 | 0, sizeof(struct pt_regs), |
386 | (const void __user *)data); | 370 | (const void __user *)data); |
387 | 371 | ||
372 | case_default: | ||
388 | default: | 373 | default: |
389 | ret = ptrace_request(child, request, addr, data); | 374 | ret = ptrace_request(child, request, addr, data); |
390 | break; | 375 | break; |
diff --git a/arch/cris/arch-v10/drivers/ds1302.c b/arch/cris/arch-v10/drivers/ds1302.c index 77630df94343..884275629ef7 100644 --- a/arch/cris/arch-v10/drivers/ds1302.c +++ b/arch/cris/arch-v10/drivers/ds1302.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/miscdevice.h> | 20 | #include <linux/miscdevice.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/smp_lock.h> | ||
22 | #include <linux/bcd.h> | 23 | #include <linux/bcd.h> |
23 | #include <linux/capability.h> | 24 | #include <linux/capability.h> |
24 | 25 | ||
@@ -238,9 +239,7 @@ static unsigned char days_in_mo[] = | |||
238 | 239 | ||
239 | /* ioctl that supports RTC_RD_TIME and RTC_SET_TIME (read and set time/date). */ | 240 | /* ioctl that supports RTC_RD_TIME and RTC_SET_TIME (read and set time/date). */ |
240 | 241 | ||
241 | static int | 242 | static int rtc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
242 | rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, | ||
243 | unsigned long arg) | ||
244 | { | 243 | { |
245 | unsigned long flags; | 244 | unsigned long flags; |
246 | 245 | ||
@@ -354,6 +353,17 @@ rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, | |||
354 | } | 353 | } |
355 | } | 354 | } |
356 | 355 | ||
356 | static long rtc_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | ||
357 | { | ||
358 | int ret; | ||
359 | |||
360 | lock_kernel(); | ||
361 | ret = rtc_ioctl(file, cmd, arg); | ||
362 | unlock_kernel(); | ||
363 | |||
364 | return ret; | ||
365 | } | ||
366 | |||
357 | static void | 367 | static void |
358 | print_rtc_status(void) | 368 | print_rtc_status(void) |
359 | { | 369 | { |
@@ -375,8 +385,8 @@ print_rtc_status(void) | |||
375 | /* The various file operations we support. */ | 385 | /* The various file operations we support. */ |
376 | 386 | ||
377 | static const struct file_operations rtc_fops = { | 387 | static const struct file_operations rtc_fops = { |
378 | .owner = THIS_MODULE, | 388 | .owner = THIS_MODULE, |
379 | .ioctl = rtc_ioctl, | 389 | .unlocked_ioctl = rtc_unlocked_ioctl, |
380 | }; | 390 | }; |
381 | 391 | ||
382 | /* Probe for the chip by writing something to its RAM and try reading it back. */ | 392 | /* Probe for the chip by writing something to its RAM and try reading it back. */ |
diff --git a/arch/cris/arch-v10/drivers/pcf8563.c b/arch/cris/arch-v10/drivers/pcf8563.c index 1e90c1a9c849..7dcb1f85f42b 100644 --- a/arch/cris/arch-v10/drivers/pcf8563.c +++ b/arch/cris/arch-v10/drivers/pcf8563.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/delay.h> | 27 | #include <linux/delay.h> |
28 | #include <linux/bcd.h> | 28 | #include <linux/bcd.h> |
29 | #include <linux/mutex.h> | 29 | #include <linux/mutex.h> |
30 | #include <linux/smp_lock.h> | ||
30 | 31 | ||
31 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
32 | #include <asm/system.h> | 33 | #include <asm/system.h> |
@@ -53,7 +54,7 @@ static DEFINE_MUTEX(rtc_lock); /* Protect state etc */ | |||
53 | static const unsigned char days_in_month[] = | 54 | static const unsigned char days_in_month[] = |
54 | { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; | 55 | { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; |
55 | 56 | ||
56 | int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); | 57 | static long pcf8563_unlocked_ioctl(struct file *, unsigned int, unsigned long); |
57 | 58 | ||
58 | /* Cache VL bit value read at driver init since writing the RTC_SECOND | 59 | /* Cache VL bit value read at driver init since writing the RTC_SECOND |
59 | * register clears the VL status. | 60 | * register clears the VL status. |
@@ -62,7 +63,7 @@ static int voltage_low; | |||
62 | 63 | ||
63 | static const struct file_operations pcf8563_fops = { | 64 | static const struct file_operations pcf8563_fops = { |
64 | .owner = THIS_MODULE, | 65 | .owner = THIS_MODULE, |
65 | .ioctl = pcf8563_ioctl, | 66 | .unlocked_ioctl = pcf8563_unlocked_ioctl, |
66 | }; | 67 | }; |
67 | 68 | ||
68 | unsigned char | 69 | unsigned char |
@@ -212,8 +213,7 @@ pcf8563_exit(void) | |||
212 | * ioctl calls for this driver. Why return -ENOTTY upon error? Because | 213 | * ioctl calls for this driver. Why return -ENOTTY upon error? Because |
213 | * POSIX says so! | 214 | * POSIX says so! |
214 | */ | 215 | */ |
215 | int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, | 216 | static int pcf8563_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
216 | unsigned long arg) | ||
217 | { | 217 | { |
218 | /* Some sanity checks. */ | 218 | /* Some sanity checks. */ |
219 | if (_IOC_TYPE(cmd) != RTC_MAGIC) | 219 | if (_IOC_TYPE(cmd) != RTC_MAGIC) |
@@ -339,6 +339,17 @@ int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, | |||
339 | return 0; | 339 | return 0; |
340 | } | 340 | } |
341 | 341 | ||
342 | static long pcf8563_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | ||
343 | { | ||
344 | int ret; | ||
345 | |||
346 | lock_kernel(); | ||
347 | return pcf8563_ioctl(filp, cmd, arg); | ||
348 | unlock_kernel(); | ||
349 | |||
350 | return ret; | ||
351 | } | ||
352 | |||
342 | static int __init pcf8563_register(void) | 353 | static int __init pcf8563_register(void) |
343 | { | 354 | { |
344 | if (pcf8563_init() < 0) { | 355 | if (pcf8563_init() < 0) { |
diff --git a/arch/cris/arch-v10/kernel/irq.c b/arch/cris/arch-v10/kernel/irq.c index 1a61efc13982..a0c0df8be9c8 100644 --- a/arch/cris/arch-v10/kernel/irq.c +++ b/arch/cris/arch-v10/kernel/irq.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | 19 | ||
20 | #define mask_irq(irq_nr) (*R_VECT_MASK_CLR = 1 << (irq_nr)); | 20 | #define crisv10_mask_irq(irq_nr) (*R_VECT_MASK_CLR = 1 << (irq_nr)); |
21 | #define unmask_irq(irq_nr) (*R_VECT_MASK_SET = 1 << (irq_nr)); | 21 | #define crisv10_unmask_irq(irq_nr) (*R_VECT_MASK_SET = 1 << (irq_nr)); |
22 | 22 | ||
23 | /* don't use set_int_vector, it bypasses the linux interrupt handlers. it is | 23 | /* don't use set_int_vector, it bypasses the linux interrupt handlers. it is |
24 | * global just so that the kernel gdb can use it. | 24 | * global just so that the kernel gdb can use it. |
@@ -116,12 +116,12 @@ static unsigned int startup_crisv10_irq(unsigned int irq) | |||
116 | 116 | ||
117 | static void enable_crisv10_irq(unsigned int irq) | 117 | static void enable_crisv10_irq(unsigned int irq) |
118 | { | 118 | { |
119 | unmask_irq(irq); | 119 | crisv10_unmask_irq(irq); |
120 | } | 120 | } |
121 | 121 | ||
122 | static void disable_crisv10_irq(unsigned int irq) | 122 | static void disable_crisv10_irq(unsigned int irq) |
123 | { | 123 | { |
124 | mask_irq(irq); | 124 | crisv10_mask_irq(irq); |
125 | } | 125 | } |
126 | 126 | ||
127 | static void ack_crisv10_irq(unsigned int irq) | 127 | static void ack_crisv10_irq(unsigned int irq) |
diff --git a/arch/cris/arch-v10/lib/dmacopy.c b/arch/cris/arch-v10/lib/dmacopy.c index e5fb44f505c5..49f5b8ca5b47 100644 --- a/arch/cris/arch-v10/lib/dmacopy.c +++ b/arch/cris/arch-v10/lib/dmacopy.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* $Id: dmacopy.c,v 1.1 2001/12/17 13:59:27 bjornw Exp $ | 1 | /* |
2 | * | ||
3 | * memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax | 2 | * memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax |
4 | */ | 3 | */ |
5 | 4 | ||
@@ -13,11 +12,11 @@ void *dma_memcpy(void *pdst, | |||
13 | unsigned int pn) | 12 | unsigned int pn) |
14 | { | 13 | { |
15 | static etrax_dma_descr indma, outdma; | 14 | static etrax_dma_descr indma, outdma; |
16 | 15 | ||
17 | D(printk("dma_memcpy %d bytes... ", pn)); | 16 | D(printk(KERN_DEBUG "dma_memcpy %d bytes... ", pn)); |
18 | 17 | ||
19 | #if 0 | 18 | #if 0 |
20 | *R_GEN_CONFIG = genconfig_shadow = | 19 | *R_GEN_CONFIG = genconfig_shadow = |
21 | (genconfig_shadow & ~0x3c0000) | | 20 | (genconfig_shadow & ~0x3c0000) | |
22 | IO_STATE(R_GEN_CONFIG, dma6, intdma7) | | 21 | IO_STATE(R_GEN_CONFIG, dma6, intdma7) | |
23 | IO_STATE(R_GEN_CONFIG, dma7, intdma6); | 22 | IO_STATE(R_GEN_CONFIG, dma7, intdma6); |
@@ -32,11 +31,11 @@ void *dma_memcpy(void *pdst, | |||
32 | *R_DMA_CH7_FIRST = &outdma; | 31 | *R_DMA_CH7_FIRST = &outdma; |
33 | *R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, start); | 32 | *R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, start); |
34 | *R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, start); | 33 | *R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, start); |
35 | |||
36 | while(*R_DMA_CH7_CMD == 1) /* wait for completion */ ; | ||
37 | 34 | ||
38 | D(printk("done\n")); | 35 | while (*R_DMA_CH7_CMD == 1) |
36 | /* wait for completion */; | ||
39 | 37 | ||
38 | D(printk(KERN_DEBUG "done\n")); | ||
40 | } | 39 | } |
41 | 40 | ||
42 | 41 | ||
diff --git a/arch/cris/arch-v10/lib/hw_settings.S b/arch/cris/arch-v10/lib/hw_settings.S index 56905aaa7b6e..c09f19f478a5 100644 --- a/arch/cris/arch-v10/lib/hw_settings.S +++ b/arch/cris/arch-v10/lib/hw_settings.S | |||
@@ -1,13 +1,11 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: hw_settings.S,v 1.1 2001/12/17 13:59:27 bjornw Exp $ | ||
3 | * | ||
4 | * This table is used by some tools to extract hardware parameters. | 2 | * This table is used by some tools to extract hardware parameters. |
5 | * The table should be included in the kernel and the decompressor. | 3 | * The table should be included in the kernel and the decompressor. |
6 | * Don't forget to update the tools if you change this table. | 4 | * Don't forget to update the tools if you change this table. |
7 | * | 5 | * |
8 | * Copyright (C) 2001 Axis Communications AB | 6 | * Copyright (C) 2001 Axis Communications AB |
9 | * | 7 | * |
10 | * Authors: Mikael Starvik (starvik@axis.com) | 8 | * Authors: Mikael Starvik (starvik@axis.com) |
11 | */ | 9 | */ |
12 | 10 | ||
13 | #define PA_SET_VALUE ((CONFIG_ETRAX_DEF_R_PORT_PA_DIR << 8) | \ | 11 | #define PA_SET_VALUE ((CONFIG_ETRAX_DEF_R_PORT_PA_DIR << 8) | \ |
@@ -15,13 +13,13 @@ | |||
15 | #define PB_SET_VALUE ((CONFIG_ETRAX_DEF_R_PORT_PB_CONFIG << 16) | \ | 13 | #define PB_SET_VALUE ((CONFIG_ETRAX_DEF_R_PORT_PB_CONFIG << 16) | \ |
16 | (CONFIG_ETRAX_DEF_R_PORT_PB_DIR << 8) | \ | 14 | (CONFIG_ETRAX_DEF_R_PORT_PB_DIR << 8) | \ |
17 | (CONFIG_ETRAX_DEF_R_PORT_PB_DATA)) | 15 | (CONFIG_ETRAX_DEF_R_PORT_PB_DATA)) |
18 | 16 | ||
19 | .ascii "HW_PARAM_MAGIC" ; Magic number | 17 | .ascii "HW_PARAM_MAGIC" ; Magic number |
20 | .dword 0xc0004000 ; Kernel start address | 18 | .dword 0xc0004000 ; Kernel start address |
21 | 19 | ||
22 | ; Debug port | 20 | ; Debug port |
23 | #ifdef CONFIG_ETRAX_DEBUG_PORT0 | 21 | #ifdef CONFIG_ETRAX_DEBUG_PORT0 |
24 | .dword 0 | 22 | .dword 0 |
25 | #elif defined(CONFIG_ETRAX_DEBUG_PORT1) | 23 | #elif defined(CONFIG_ETRAX_DEBUG_PORT1) |
26 | .dword 1 | 24 | .dword 1 |
27 | #elif defined(CONFIG_ETRAX_DEBUG_PORT2) | 25 | #elif defined(CONFIG_ETRAX_DEBUG_PORT2) |
@@ -30,7 +28,7 @@ | |||
30 | .dword 3 | 28 | .dword 3 |
31 | #else | 29 | #else |
32 | .dword 4 ; No debug | 30 | .dword 4 ; No debug |
33 | #endif | 31 | #endif |
34 | 32 | ||
35 | ; SDRAM or EDO DRAM? | 33 | ; SDRAM or EDO DRAM? |
36 | #ifdef CONFIG_ETRAX_SDRAM | 34 | #ifdef CONFIG_ETRAX_SDRAM |
@@ -39,7 +37,7 @@ | |||
39 | .dword 0 | 37 | .dword 0 |
40 | #endif | 38 | #endif |
41 | 39 | ||
42 | ; Register values | 40 | ; Register values |
43 | .dword R_WAITSTATES | 41 | .dword R_WAITSTATES |
44 | .dword CONFIG_ETRAX_DEF_R_WAITSTATES | 42 | .dword CONFIG_ETRAX_DEF_R_WAITSTATES |
45 | .dword R_BUS_CONFIG | 43 | .dword R_BUS_CONFIG |
@@ -56,7 +54,7 @@ | |||
56 | .dword CONFIG_ETRAX_DEF_R_DRAM_TIMING | 54 | .dword CONFIG_ETRAX_DEF_R_DRAM_TIMING |
57 | #endif | 55 | #endif |
58 | .dword R_PORT_PA_SET | 56 | .dword R_PORT_PA_SET |
59 | .dword PA_SET_VALUE | 57 | .dword PA_SET_VALUE |
60 | .dword R_PORT_PB_SET | 58 | .dword R_PORT_PB_SET |
61 | .dword PB_SET_VALUE | 59 | .dword PB_SET_VALUE |
62 | .dword 0 ; No more register values | 60 | .dword 0 ; No more register values |
diff --git a/arch/cris/arch-v32/drivers/Kconfig b/arch/cris/arch-v32/drivers/Kconfig index b9e328e688be..a2dd740c5907 100644 --- a/arch/cris/arch-v32/drivers/Kconfig +++ b/arch/cris/arch-v32/drivers/Kconfig | |||
@@ -360,24 +360,10 @@ config ETRAX_SER4_DSR_BIT | |||
360 | string "Ser 4 DSR bit (empty = not used)" | 360 | string "Ser 4 DSR bit (empty = not used)" |
361 | depends on ETRAX_SERIAL_PORT4 | 361 | depends on ETRAX_SERIAL_PORT4 |
362 | 362 | ||
363 | config ETRAX_SER3_CD_BIT | 363 | config ETRAX_SER4_CD_BIT |
364 | string "Ser 4 CD bit (empty = not used)" | 364 | string "Ser 4 CD bit (empty = not used)" |
365 | depends on ETRAX_SERIAL_PORT4 | 365 | depends on ETRAX_SERIAL_PORT4 |
366 | 366 | ||
367 | config ETRAX_RS485 | ||
368 | bool "RS-485 support" | ||
369 | depends on ETRAXFS_SERIAL | ||
370 | help | ||
371 | Enables support for RS-485 serial communication. For a primer on | ||
372 | RS-485, see <http://www.hw.cz/english/docs/rs485/rs485.html>. | ||
373 | |||
374 | config ETRAX_RS485_DISABLE_RECEIVER | ||
375 | bool "Disable serial receiver" | ||
376 | depends on ETRAX_RS485 | ||
377 | help | ||
378 | It is necessary to disable the serial receiver to avoid serial | ||
379 | loopback. Not all products are able to do this in software only. | ||
380 | |||
381 | config ETRAX_SYNCHRONOUS_SERIAL | 367 | config ETRAX_SYNCHRONOUS_SERIAL |
382 | bool "Synchronous serial-port support" | 368 | bool "Synchronous serial-port support" |
383 | depends on ETRAX_ARCH_V32 | 369 | depends on ETRAX_ARCH_V32 |
diff --git a/arch/cris/arch-v32/drivers/i2c.c b/arch/cris/arch-v32/drivers/i2c.c index 506826399ae7..2fd6a740d895 100644 --- a/arch/cris/arch-v32/drivers/i2c.c +++ b/arch/cris/arch-v32/drivers/i2c.c | |||
@@ -649,10 +649,10 @@ i2c_release(struct inode *inode, struct file *filp) | |||
649 | /* Main device API. ioctl's to write or read to/from i2c registers. | 649 | /* Main device API. ioctl's to write or read to/from i2c registers. |
650 | */ | 650 | */ |
651 | 651 | ||
652 | static int | 652 | static long |
653 | i2c_ioctl(struct inode *inode, struct file *file, | 653 | i2c_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
654 | unsigned int cmd, unsigned long arg) | ||
655 | { | 654 | { |
655 | int ret; | ||
656 | if(_IOC_TYPE(cmd) != ETRAXI2C_IOCTYPE) { | 656 | if(_IOC_TYPE(cmd) != ETRAXI2C_IOCTYPE) { |
657 | return -ENOTTY; | 657 | return -ENOTTY; |
658 | } | 658 | } |
@@ -665,9 +665,13 @@ i2c_ioctl(struct inode *inode, struct file *file, | |||
665 | I2C_ARGREG(arg), | 665 | I2C_ARGREG(arg), |
666 | I2C_ARGVALUE(arg))); | 666 | I2C_ARGVALUE(arg))); |
667 | 667 | ||
668 | return i2c_writereg(I2C_ARGSLAVE(arg), | 668 | lock_kernel(); |
669 | ret = i2c_writereg(I2C_ARGSLAVE(arg), | ||
669 | I2C_ARGREG(arg), | 670 | I2C_ARGREG(arg), |
670 | I2C_ARGVALUE(arg)); | 671 | I2C_ARGVALUE(arg)); |
672 | unlock_kernel(); | ||
673 | return ret; | ||
674 | |||
671 | case I2C_READREG: | 675 | case I2C_READREG: |
672 | { | 676 | { |
673 | unsigned char val; | 677 | unsigned char val; |
@@ -675,7 +679,9 @@ i2c_ioctl(struct inode *inode, struct file *file, | |||
675 | D(printk("i2cr %d %d ", | 679 | D(printk("i2cr %d %d ", |
676 | I2C_ARGSLAVE(arg), | 680 | I2C_ARGSLAVE(arg), |
677 | I2C_ARGREG(arg))); | 681 | I2C_ARGREG(arg))); |
682 | lock_kernel(); | ||
678 | val = i2c_readreg(I2C_ARGSLAVE(arg), I2C_ARGREG(arg)); | 683 | val = i2c_readreg(I2C_ARGSLAVE(arg), I2C_ARGREG(arg)); |
684 | unlock_kernel(); | ||
679 | D(printk("= %d\n", val)); | 685 | D(printk("= %d\n", val)); |
680 | return val; | 686 | return val; |
681 | } | 687 | } |
@@ -688,10 +694,10 @@ i2c_ioctl(struct inode *inode, struct file *file, | |||
688 | } | 694 | } |
689 | 695 | ||
690 | static const struct file_operations i2c_fops = { | 696 | static const struct file_operations i2c_fops = { |
691 | .owner = THIS_MODULE, | 697 | .owner = THIS_MODULE, |
692 | .ioctl = i2c_ioctl, | 698 | .unlocked_ioctl = i2c_ioctl, |
693 | .open = i2c_open, | 699 | .open = i2c_open, |
694 | .release = i2c_release, | 700 | .release = i2c_release, |
695 | }; | 701 | }; |
696 | 702 | ||
697 | static int __init i2c_init(void) | 703 | static int __init i2c_init(void) |
diff --git a/arch/cris/arch-v32/drivers/pcf8563.c b/arch/cris/arch-v32/drivers/pcf8563.c index f4478506e52c..bef6eb53b153 100644 --- a/arch/cris/arch-v32/drivers/pcf8563.c +++ b/arch/cris/arch-v32/drivers/pcf8563.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/fs.h> | 25 | #include <linux/fs.h> |
26 | #include <linux/ioctl.h> | 26 | #include <linux/ioctl.h> |
27 | #include <linux/smp_lock.h> | ||
27 | #include <linux/delay.h> | 28 | #include <linux/delay.h> |
28 | #include <linux/bcd.h> | 29 | #include <linux/bcd.h> |
29 | #include <linux/mutex.h> | 30 | #include <linux/mutex.h> |
@@ -49,7 +50,7 @@ static DEFINE_MUTEX(rtc_lock); /* Protect state etc */ | |||
49 | static const unsigned char days_in_month[] = | 50 | static const unsigned char days_in_month[] = |
50 | { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; | 51 | { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; |
51 | 52 | ||
52 | int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); | 53 | static long pcf8563_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); |
53 | 54 | ||
54 | /* Cache VL bit value read at driver init since writing the RTC_SECOND | 55 | /* Cache VL bit value read at driver init since writing the RTC_SECOND |
55 | * register clears the VL status. | 56 | * register clears the VL status. |
@@ -57,8 +58,8 @@ int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); | |||
57 | static int voltage_low; | 58 | static int voltage_low; |
58 | 59 | ||
59 | static const struct file_operations pcf8563_fops = { | 60 | static const struct file_operations pcf8563_fops = { |
60 | .owner = THIS_MODULE, | 61 | .owner = THIS_MODULE, |
61 | .ioctl = pcf8563_ioctl | 62 | .unlocked_ioctl = pcf8563_unlocked_ioctl, |
62 | }; | 63 | }; |
63 | 64 | ||
64 | unsigned char | 65 | unsigned char |
@@ -208,8 +209,7 @@ pcf8563_exit(void) | |||
208 | * ioctl calls for this driver. Why return -ENOTTY upon error? Because | 209 | * ioctl calls for this driver. Why return -ENOTTY upon error? Because |
209 | * POSIX says so! | 210 | * POSIX says so! |
210 | */ | 211 | */ |
211 | int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, | 212 | static int pcf8563_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) |
212 | unsigned long arg) | ||
213 | { | 213 | { |
214 | /* Some sanity checks. */ | 214 | /* Some sanity checks. */ |
215 | if (_IOC_TYPE(cmd) != RTC_MAGIC) | 215 | if (_IOC_TYPE(cmd) != RTC_MAGIC) |
@@ -335,6 +335,17 @@ int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, | |||
335 | return 0; | 335 | return 0; |
336 | } | 336 | } |
337 | 337 | ||
338 | static long pcf8563_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | ||
339 | { | ||
340 | int ret; | ||
341 | |||
342 | lock_kernel(); | ||
343 | return pcf8563_ioctl(filp, cmd, arg); | ||
344 | unlock_kernel(); | ||
345 | |||
346 | return ret; | ||
347 | } | ||
348 | |||
338 | static int __init pcf8563_register(void) | 349 | static int __init pcf8563_register(void) |
339 | { | 350 | { |
340 | if (pcf8563_init() < 0) { | 351 | if (pcf8563_init() < 0) { |
diff --git a/arch/cris/arch-v32/kernel/crisksyms.c b/arch/cris/arch-v32/kernel/crisksyms.c index 64933e2c0f5b..bde8d1a10cad 100644 --- a/arch/cris/arch-v32/kernel/crisksyms.c +++ b/arch/cris/arch-v32/kernel/crisksyms.c | |||
@@ -24,5 +24,5 @@ EXPORT_SYMBOL(crisv32_io_get_name); | |||
24 | EXPORT_SYMBOL(crisv32_io_get); | 24 | EXPORT_SYMBOL(crisv32_io_get); |
25 | 25 | ||
26 | /* Functions masking/unmasking interrupts */ | 26 | /* Functions masking/unmasking interrupts */ |
27 | EXPORT_SYMBOL(mask_irq); | 27 | EXPORT_SYMBOL(crisv32_mask_irq); |
28 | EXPORT_SYMBOL(unmask_irq); | 28 | EXPORT_SYMBOL(crisv32_unmask_irq); |
diff --git a/arch/cris/arch-v32/kernel/irq.c b/arch/cris/arch-v32/kernel/irq.c index b6241198fb98..0b1febe44aa3 100644 --- a/arch/cris/arch-v32/kernel/irq.c +++ b/arch/cris/arch-v32/kernel/irq.c | |||
@@ -280,8 +280,7 @@ out: | |||
280 | return cpu; | 280 | return cpu; |
281 | } | 281 | } |
282 | 282 | ||
283 | void | 283 | void crisv32_mask_irq(int irq) |
284 | mask_irq(int irq) | ||
285 | { | 284 | { |
286 | int cpu; | 285 | int cpu; |
287 | 286 | ||
@@ -289,8 +288,7 @@ mask_irq(int irq) | |||
289 | block_irq(irq, cpu); | 288 | block_irq(irq, cpu); |
290 | } | 289 | } |
291 | 290 | ||
292 | void | 291 | void crisv32_unmask_irq(int irq) |
293 | unmask_irq(int irq) | ||
294 | { | 292 | { |
295 | unblock_irq(irq, irq_cpu(irq)); | 293 | unblock_irq(irq, irq_cpu(irq)); |
296 | } | 294 | } |
@@ -298,23 +296,23 @@ unmask_irq(int irq) | |||
298 | 296 | ||
299 | static unsigned int startup_crisv32_irq(unsigned int irq) | 297 | static unsigned int startup_crisv32_irq(unsigned int irq) |
300 | { | 298 | { |
301 | unmask_irq(irq); | 299 | crisv32_unmask_irq(irq); |
302 | return 0; | 300 | return 0; |
303 | } | 301 | } |
304 | 302 | ||
305 | static void shutdown_crisv32_irq(unsigned int irq) | 303 | static void shutdown_crisv32_irq(unsigned int irq) |
306 | { | 304 | { |
307 | mask_irq(irq); | 305 | crisv32_mask_irq(irq); |
308 | } | 306 | } |
309 | 307 | ||
310 | static void enable_crisv32_irq(unsigned int irq) | 308 | static void enable_crisv32_irq(unsigned int irq) |
311 | { | 309 | { |
312 | unmask_irq(irq); | 310 | crisv32_unmask_irq(irq); |
313 | } | 311 | } |
314 | 312 | ||
315 | static void disable_crisv32_irq(unsigned int irq) | 313 | static void disable_crisv32_irq(unsigned int irq) |
316 | { | 314 | { |
317 | mask_irq(irq); | 315 | crisv32_mask_irq(irq); |
318 | } | 316 | } |
319 | 317 | ||
320 | static void ack_crisv32_irq(unsigned int irq) | 318 | static void ack_crisv32_irq(unsigned int irq) |
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c index 058adddf4e4b..84fed3b4b079 100644 --- a/arch/cris/arch-v32/kernel/smp.c +++ b/arch/cris/arch-v32/kernel/smp.c | |||
@@ -168,8 +168,8 @@ void __init smp_callin(void) | |||
168 | 168 | ||
169 | /* Enable IRQ and idle */ | 169 | /* Enable IRQ and idle */ |
170 | REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask); | 170 | REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask); |
171 | unmask_irq(IPI_INTR_VECT); | 171 | crisv32_unmask_irq(IPI_INTR_VECT); |
172 | unmask_irq(TIMER0_INTR_VECT); | 172 | crisv32_unmask_irq(TIMER0_INTR_VECT); |
173 | preempt_disable(); | 173 | preempt_disable(); |
174 | notify_cpu_starting(cpu); | 174 | notify_cpu_starting(cpu); |
175 | local_irq_enable(); | 175 | local_irq_enable(); |
diff --git a/arch/cris/include/arch-v10/arch/irq.h b/arch/cris/include/arch-v10/arch/irq.h index 6248004eca1c..7d345947b3ee 100644 --- a/arch/cris/include/arch-v10/arch/irq.h +++ b/arch/cris/include/arch-v10/arch/irq.h | |||
@@ -93,15 +93,16 @@ void set_break_vector(int n, irqvectptr addr); | |||
93 | "push $r10\n\t" /* push orig_r10 */ \ | 93 | "push $r10\n\t" /* push orig_r10 */ \ |
94 | "clear.d [$sp=$sp-4]\n\t" /* frametype - this is a normal stackframe */ | 94 | "clear.d [$sp=$sp-4]\n\t" /* frametype - this is a normal stackframe */ |
95 | 95 | ||
96 | /* BLOCK_IRQ and UNBLOCK_IRQ do the same as mask_irq and unmask_irq */ | 96 | /* BLOCK_IRQ and UNBLOCK_IRQ do the same as |
97 | * crisv10_mask_irq and crisv10_unmask_irq */ | ||
97 | 98 | ||
98 | #define BLOCK_IRQ(mask,nr) \ | 99 | #define BLOCK_IRQ(mask,nr) \ |
99 | "move.d " #mask ",$r0\n\t" \ | 100 | "move.d " #mask ",$r0\n\t" \ |
100 | "move.d $r0,[0xb00000d8]\n\t" | 101 | "move.d $r0,[0xb00000d8]\n\t" |
101 | 102 | ||
102 | #define UNBLOCK_IRQ(mask) \ | 103 | #define UNBLOCK_IRQ(mask) \ |
103 | "move.d " #mask ",$r0\n\t" \ | 104 | "move.d " #mask ",$r0\n\t" \ |
104 | "move.d $r0,[0xb00000dc]\n\t" | 105 | "move.d $r0,[0xb00000dc]\n\t" |
105 | 106 | ||
106 | #define IRQ_NAME2(nr) nr##_interrupt(void) | 107 | #define IRQ_NAME2(nr) nr##_interrupt(void) |
107 | #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr) | 108 | #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr) |
diff --git a/arch/cris/include/arch-v32/arch/irq.h b/arch/cris/include/arch-v32/arch/irq.h index 9e4c9fbdfddf..b31e9984f849 100644 --- a/arch/cris/include/arch-v32/arch/irq.h +++ b/arch/cris/include/arch-v32/arch/irq.h | |||
@@ -23,8 +23,8 @@ struct etrax_interrupt_vector { | |||
23 | 23 | ||
24 | extern struct etrax_interrupt_vector *etrax_irv; /* head.S */ | 24 | extern struct etrax_interrupt_vector *etrax_irv; /* head.S */ |
25 | 25 | ||
26 | void mask_irq(int irq); | 26 | void crisv32_mask_irq(int irq); |
27 | void unmask_irq(int irq); | 27 | void crisv32_unmask_irq(int irq); |
28 | 28 | ||
29 | void set_exception_vector(int n, irqvectptr addr); | 29 | void set_exception_vector(int n, irqvectptr addr); |
30 | 30 | ||
diff --git a/arch/cris/include/asm/param.h b/arch/cris/include/asm/param.h index 0e47994e40be..484fcf8667c0 100644 --- a/arch/cris/include/asm/param.h +++ b/arch/cris/include/asm/param.h | |||
@@ -2,22 +2,9 @@ | |||
2 | #define _ASMCRIS_PARAM_H | 2 | #define _ASMCRIS_PARAM_H |
3 | 3 | ||
4 | /* Currently we assume that HZ=100 is good for CRIS. */ | 4 | /* Currently we assume that HZ=100 is good for CRIS. */ |
5 | #ifdef __KERNEL__ | ||
6 | # define HZ CONFIG_HZ /* Internal kernel timer frequency */ | ||
7 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | ||
8 | # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ | ||
9 | #endif | ||
10 | |||
11 | #ifndef HZ | ||
12 | #define HZ 100 | ||
13 | #endif | ||
14 | 5 | ||
15 | #define EXEC_PAGESIZE 8192 | 6 | #define EXEC_PAGESIZE 8192 |
16 | 7 | ||
17 | #ifndef NOGROUP | 8 | #include <asm-generic/param.h> |
18 | #define NOGROUP (-1) | ||
19 | #endif | ||
20 | |||
21 | #define MAXHOSTNAMELEN 64 /* max length of hostname */ | ||
22 | 9 | ||
23 | #endif | 10 | #endif /* _ASMCRIS_PARAM_H */ |
diff --git a/arch/cris/include/asm/scatterlist.h b/arch/cris/include/asm/scatterlist.h index faff53ad1f96..249a7842ff5f 100644 --- a/arch/cris/include/asm/scatterlist.h +++ b/arch/cris/include/asm/scatterlist.h | |||
@@ -1,22 +1,7 @@ | |||
1 | #ifndef __ASM_CRIS_SCATTERLIST_H | 1 | #ifndef __ASM_CRIS_SCATTERLIST_H |
2 | #define __ASM_CRIS_SCATTERLIST_H | 2 | #define __ASM_CRIS_SCATTERLIST_H |
3 | 3 | ||
4 | struct scatterlist { | 4 | #include <asm-generic/scatterlist.h> |
5 | #ifdef CONFIG_DEBUG_SG | ||
6 | unsigned long sg_magic; | ||
7 | #endif | ||
8 | char * address; /* Location data is to be transferred to */ | ||
9 | unsigned int length; | ||
10 | |||
11 | /* The following is i386 highmem junk - not used by us */ | ||
12 | unsigned long page_link; | ||
13 | unsigned int offset;/* for highmem, page offset */ | ||
14 | |||
15 | }; | ||
16 | |||
17 | #define sg_dma_address(sg) ((sg)->address) | ||
18 | #define sg_dma_len(sg) ((sg)->length) | ||
19 | /* i386 junk */ | ||
20 | 5 | ||
21 | #define ISA_DMA_THRESHOLD (0x1fffffff) | 6 | #define ISA_DMA_THRESHOLD (0x1fffffff) |
22 | 7 | ||
diff --git a/arch/frv/include/asm/cache.h b/arch/frv/include/asm/cache.h index 7dc0f0f85b7c..2797163b8f4f 100644 --- a/arch/frv/include/asm/cache.h +++ b/arch/frv/include/asm/cache.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #define L1_CACHE_SHIFT (CONFIG_FRV_L1_CACHE_SHIFT) | 17 | #define L1_CACHE_SHIFT (CONFIG_FRV_L1_CACHE_SHIFT) |
18 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | 18 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) |
19 | 19 | ||
20 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | ||
21 | |||
22 | #define __cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) | 20 | #define __cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) |
23 | #define ____cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) | 21 | #define ____cacheline_aligned __attribute__((aligned(L1_CACHE_BYTES))) |
24 | 22 | ||
diff --git a/arch/frv/include/asm/mem-layout.h b/arch/frv/include/asm/mem-layout.h index 2947764fc0e0..ccae981876fa 100644 --- a/arch/frv/include/asm/mem-layout.h +++ b/arch/frv/include/asm/mem-layout.h | |||
@@ -35,8 +35,8 @@ | |||
35 | * the slab must be aligned such that load- and store-double instructions don't | 35 | * the slab must be aligned such that load- and store-double instructions don't |
36 | * fault if used | 36 | * fault if used |
37 | */ | 37 | */ |
38 | #define ARCH_KMALLOC_MINALIGN 8 | 38 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES |
39 | #define ARCH_SLAB_MINALIGN 8 | 39 | #define ARCH_SLAB_MINALIGN L1_CACHE_BYTES |
40 | 40 | ||
41 | /*****************************************************************************/ | 41 | /*****************************************************************************/ |
42 | /* | 42 | /* |
diff --git a/arch/frv/include/asm/scatterlist.h b/arch/frv/include/asm/scatterlist.h index 4bca8a28546c..1614bfd7e3a4 100644 --- a/arch/frv/include/asm/scatterlist.h +++ b/arch/frv/include/asm/scatterlist.h | |||
@@ -1,45 +1,7 @@ | |||
1 | #ifndef _ASM_SCATTERLIST_H | 1 | #ifndef _ASM_SCATTERLIST_H |
2 | #define _ASM_SCATTERLIST_H | 2 | #define _ASM_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | /* | ||
7 | * Drivers must set either ->address or (preferred) page and ->offset | ||
8 | * to indicate where data must be transferred to/from. | ||
9 | * | ||
10 | * Using page is recommended since it handles highmem data as well as | ||
11 | * low mem. ->address is restricted to data which has a virtual mapping, and | ||
12 | * it will go away in the future. Updating to page can be automated very | ||
13 | * easily -- something like | ||
14 | * | ||
15 | * sg->address = some_ptr; | ||
16 | * | ||
17 | * can be rewritten as | ||
18 | * | ||
19 | * sg_set_buf(sg, some_ptr, length); | ||
20 | * | ||
21 | * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens | ||
22 | */ | ||
23 | struct scatterlist { | ||
24 | #ifdef CONFIG_DEBUG_SG | ||
25 | unsigned long sg_magic; | ||
26 | #endif | ||
27 | unsigned long page_link; | ||
28 | unsigned int offset; /* for highmem, page offset */ | ||
29 | |||
30 | dma_addr_t dma_address; | ||
31 | unsigned int length; | ||
32 | }; | ||
33 | |||
34 | /* | ||
35 | * These macros should be used after a pci_map_sg call has been done | ||
36 | * to get bus addresses of each of the SG entries and their lengths. | ||
37 | * You should only work with the number of sg entries pci_map_sg | ||
38 | * returns, or alternatively stop on the first sg_dma_len(sg) which | ||
39 | * is 0. | ||
40 | */ | ||
41 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
42 | #define sg_dma_len(sg) ((sg)->length) | ||
43 | 5 | ||
44 | #define ISA_DMA_THRESHOLD (0xffffffffUL) | 6 | #define ISA_DMA_THRESHOLD (0xffffffffUL) |
45 | 7 | ||
diff --git a/arch/frv/kernel/break.S b/arch/frv/kernel/break.S index bd0bdf908d93..cbb6958a3147 100644 --- a/arch/frv/kernel/break.S +++ b/arch/frv/kernel/break.S | |||
@@ -21,7 +21,7 @@ | |||
21 | # | 21 | # |
22 | # the break handler has its own stack | 22 | # the break handler has its own stack |
23 | # | 23 | # |
24 | .section .bss.stack | 24 | .section .bss..stack |
25 | .globl __break_user_context | 25 | .globl __break_user_context |
26 | .balign THREAD_SIZE | 26 | .balign THREAD_SIZE |
27 | __break_stack: | 27 | __break_stack: |
@@ -63,7 +63,7 @@ __break_trace_through_exceptions: | |||
63 | # entry point for Break Exceptions/Interrupts | 63 | # entry point for Break Exceptions/Interrupts |
64 | # | 64 | # |
65 | ############################################################################### | 65 | ############################################################################### |
66 | .section .text.break | 66 | .section .text..break |
67 | .balign 4 | 67 | .balign 4 |
68 | .globl __entry_break | 68 | .globl __entry_break |
69 | __entry_break: | 69 | __entry_break: |
diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S index 189397ec012a..63d579bf1c29 100644 --- a/arch/frv/kernel/entry.S +++ b/arch/frv/kernel/entry.S | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | #define nr_syscalls ((syscall_table_size)/4) | 39 | #define nr_syscalls ((syscall_table_size)/4) |
40 | 40 | ||
41 | .section .text.entry | 41 | .section .text..entry |
42 | .balign 4 | 42 | .balign 4 |
43 | 43 | ||
44 | .macro LEDS val | 44 | .macro LEDS val |
diff --git a/arch/frv/kernel/gdb-stub.c b/arch/frv/kernel/gdb-stub.c index 84d103c33c9c..a4dba6b20bd0 100644 --- a/arch/frv/kernel/gdb-stub.c +++ b/arch/frv/kernel/gdb-stub.c | |||
@@ -1789,6 +1789,12 @@ void gdbstub(int sigval) | |||
1789 | flush_cache = 1; | 1789 | flush_cache = 1; |
1790 | break; | 1790 | break; |
1791 | 1791 | ||
1792 | /* pNN: Read value of reg N and return it */ | ||
1793 | case 'p': | ||
1794 | /* return no value, indicating that we don't support | ||
1795 | * this command and that gdb should use 'g' instead */ | ||
1796 | break; | ||
1797 | |||
1792 | /* PNN,=RRRRRRRR: Write value R to reg N return OK */ | 1798 | /* PNN,=RRRRRRRR: Write value R to reg N return OK */ |
1793 | case 'P': | 1799 | case 'P': |
1794 | ptr = &input_buffer[1]; | 1800 | ptr = &input_buffer[1]; |
diff --git a/arch/frv/kernel/head.S b/arch/frv/kernel/head.S index b825ef3f2d54..e9a8cc63ac94 100644 --- a/arch/frv/kernel/head.S +++ b/arch/frv/kernel/head.S | |||
@@ -542,7 +542,7 @@ __head_end: | |||
542 | .size _boot, .-_boot | 542 | .size _boot, .-_boot |
543 | 543 | ||
544 | # provide a point for GDB to place a break | 544 | # provide a point for GDB to place a break |
545 | .section .text.start,"ax" | 545 | .section .text..start,"ax" |
546 | .globl _start | 546 | .globl _start |
547 | .balign 4 | 547 | .balign 4 |
548 | _start: | 548 | _start: |
diff --git a/arch/frv/kernel/ptrace.c b/arch/frv/kernel/ptrace.c index 60eeed3694c0..fac028936a04 100644 --- a/arch/frv/kernel/ptrace.c +++ b/arch/frv/kernel/ptrace.c | |||
@@ -344,26 +344,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
344 | 0, sizeof(child->thread.user->f), | 344 | 0, sizeof(child->thread.user->f), |
345 | (const void __user *)data); | 345 | (const void __user *)data); |
346 | 346 | ||
347 | case PTRACE_GETFDPIC: | ||
348 | tmp = 0; | ||
349 | switch (addr) { | ||
350 | case PTRACE_GETFDPIC_EXEC: | ||
351 | tmp = child->mm->context.exec_fdpic_loadmap; | ||
352 | break; | ||
353 | case PTRACE_GETFDPIC_INTERP: | ||
354 | tmp = child->mm->context.interp_fdpic_loadmap; | ||
355 | break; | ||
356 | default: | ||
357 | break; | ||
358 | } | ||
359 | |||
360 | ret = 0; | ||
361 | if (put_user(tmp, (unsigned long *) data)) { | ||
362 | ret = -EFAULT; | ||
363 | break; | ||
364 | } | ||
365 | break; | ||
366 | |||
367 | default: | 347 | default: |
368 | ret = ptrace_request(child, request, addr, data); | 348 | ret = ptrace_request(child, request, addr, data); |
369 | break; | 349 | break; |
diff --git a/arch/frv/kernel/sysctl.c b/arch/frv/kernel/sysctl.c index 71abd1510a59..6c155d69da29 100644 --- a/arch/frv/kernel/sysctl.c +++ b/arch/frv/kernel/sysctl.c | |||
@@ -46,8 +46,9 @@ static void frv_change_dcache_mode(unsigned long newmode) | |||
46 | /* | 46 | /* |
47 | * handle requests to dynamically switch the write caching mode delivered by /proc | 47 | * handle requests to dynamically switch the write caching mode delivered by /proc |
48 | */ | 48 | */ |
49 | static int procctl_frv_cachemode(ctl_table *table, int write, struct file *filp, | 49 | static int procctl_frv_cachemode(ctl_table *table, int write, |
50 | void __user *buffer, size_t *lenp, loff_t *ppos) | 50 | void __user *buffer, size_t *lenp, |
51 | loff_t *ppos) | ||
51 | { | 52 | { |
52 | unsigned long hsr0; | 53 | unsigned long hsr0; |
53 | char buff[8]; | 54 | char buff[8]; |
@@ -84,7 +85,7 @@ static int procctl_frv_cachemode(ctl_table *table, int write, struct file *filp, | |||
84 | } | 85 | } |
85 | 86 | ||
86 | /* read the state */ | 87 | /* read the state */ |
87 | if (filp->f_pos > 0) { | 88 | if (*ppos > 0) { |
88 | *lenp = 0; | 89 | *lenp = 0; |
89 | return 0; | 90 | return 0; |
90 | } | 91 | } |
@@ -110,7 +111,7 @@ static int procctl_frv_cachemode(ctl_table *table, int write, struct file *filp, | |||
110 | return -EFAULT; | 111 | return -EFAULT; |
111 | 112 | ||
112 | *lenp = len; | 113 | *lenp = len; |
113 | filp->f_pos = len; | 114 | *ppos = len; |
114 | return 0; | 115 | return 0; |
115 | 116 | ||
116 | } /* end procctl_frv_cachemode() */ | 117 | } /* end procctl_frv_cachemode() */ |
@@ -120,8 +121,9 @@ static int procctl_frv_cachemode(ctl_table *table, int write, struct file *filp, | |||
120 | * permit the mm_struct the nominated process is using have its MMU context ID pinned | 121 | * permit the mm_struct the nominated process is using have its MMU context ID pinned |
121 | */ | 122 | */ |
122 | #ifdef CONFIG_MMU | 123 | #ifdef CONFIG_MMU |
123 | static int procctl_frv_pin_cxnr(ctl_table *table, int write, struct file *filp, | 124 | static int procctl_frv_pin_cxnr(ctl_table *table, int write, |
124 | void __user *buffer, size_t *lenp, loff_t *ppos) | 125 | void __user *buffer, size_t *lenp, |
126 | loff_t *ppos) | ||
125 | { | 127 | { |
126 | pid_t pid; | 128 | pid_t pid; |
127 | char buff[16], *p; | 129 | char buff[16], *p; |
@@ -150,7 +152,7 @@ static int procctl_frv_pin_cxnr(ctl_table *table, int write, struct file *filp, | |||
150 | } | 152 | } |
151 | 153 | ||
152 | /* read the currently pinned CXN */ | 154 | /* read the currently pinned CXN */ |
153 | if (filp->f_pos > 0) { | 155 | if (*ppos > 0) { |
154 | *lenp = 0; | 156 | *lenp = 0; |
155 | return 0; | 157 | return 0; |
156 | } | 158 | } |
@@ -163,7 +165,7 @@ static int procctl_frv_pin_cxnr(ctl_table *table, int write, struct file *filp, | |||
163 | return -EFAULT; | 165 | return -EFAULT; |
164 | 166 | ||
165 | *lenp = len; | 167 | *lenp = len; |
166 | filp->f_pos = len; | 168 | *ppos = len; |
167 | return 0; | 169 | return 0; |
168 | 170 | ||
169 | } /* end procctl_frv_pin_cxnr() */ | 171 | } /* end procctl_frv_pin_cxnr() */ |
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S index cbe811fccfcc..8b973f3cc90e 100644 --- a/arch/frv/kernel/vmlinux.lds.S +++ b/arch/frv/kernel/vmlinux.lds.S | |||
@@ -57,10 +57,10 @@ SECTIONS | |||
57 | _text = .; | 57 | _text = .; |
58 | _stext = .; | 58 | _stext = .; |
59 | .text : { | 59 | .text : { |
60 | *(.text.start) | 60 | *(.text..start) |
61 | *(.text.entry) | 61 | *(.text..entry) |
62 | *(.text.break) | 62 | *(.text..break) |
63 | *(.text.tlbmiss) | 63 | *(.text..tlbmiss) |
64 | TEXT_TEXT | 64 | TEXT_TEXT |
65 | SCHED_TEXT | 65 | SCHED_TEXT |
66 | LOCK_TEXT | 66 | LOCK_TEXT |
@@ -114,7 +114,7 @@ SECTIONS | |||
114 | 114 | ||
115 | .sbss : { *(.sbss .sbss.*) } | 115 | .sbss : { *(.sbss .sbss.*) } |
116 | .bss : { *(.bss .bss.*) } | 116 | .bss : { *(.bss .bss.*) } |
117 | .bss.stack : { *(.bss) } | 117 | .bss..stack : { *(.bss) } |
118 | 118 | ||
119 | __bss_stop = .; | 119 | __bss_stop = .; |
120 | _end = . ; | 120 | _end = . ; |
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c index 30f5d100a81c..a325d57a83d5 100644 --- a/arch/frv/mm/fault.c +++ b/arch/frv/mm/fault.c | |||
@@ -257,10 +257,10 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear | |||
257 | */ | 257 | */ |
258 | out_of_memory: | 258 | out_of_memory: |
259 | up_read(&mm->mmap_sem); | 259 | up_read(&mm->mmap_sem); |
260 | printk("VM: killing process %s\n", current->comm); | 260 | if (!user_mode(__frame)) |
261 | if (user_mode(__frame)) | 261 | goto no_context; |
262 | do_group_exit(SIGKILL); | 262 | pagefault_out_of_memory(); |
263 | goto no_context; | 263 | return; |
264 | 264 | ||
265 | do_sigbus: | 265 | do_sigbus: |
266 | up_read(&mm->mmap_sem); | 266 | up_read(&mm->mmap_sem); |
diff --git a/arch/frv/mm/tlb-miss.S b/arch/frv/mm/tlb-miss.S index 7f392bc651a3..f3ac019bb18b 100644 --- a/arch/frv/mm/tlb-miss.S +++ b/arch/frv/mm/tlb-miss.S | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <asm/pgtable.h> | 15 | #include <asm/pgtable.h> |
16 | #include <asm/spr-regs.h> | 16 | #include <asm/spr-regs.h> |
17 | 17 | ||
18 | .section .text.tlbmiss | 18 | .section .text..tlbmiss |
19 | .balign 4 | 19 | .balign 4 |
20 | 20 | ||
21 | .globl __entry_insn_mmu_miss | 21 | .globl __entry_insn_mmu_miss |
diff --git a/arch/h8300/boot/compressed/head.S b/arch/h8300/boot/compressed/head.S index 985a81a2435a..10e9a2d1cc6c 100644 --- a/arch/h8300/boot/compressed/head.S +++ b/arch/h8300/boot/compressed/head.S | |||
@@ -9,7 +9,7 @@ | |||
9 | 9 | ||
10 | #define SRAM_START 0xff4000 | 10 | #define SRAM_START 0xff4000 |
11 | 11 | ||
12 | .section .text.startup | 12 | .section .text..startup |
13 | .global startup | 13 | .global startup |
14 | startup: | 14 | startup: |
15 | mov.l #SRAM_START+0x8000, sp | 15 | mov.l #SRAM_START+0x8000, sp |
diff --git a/arch/h8300/boot/compressed/vmlinux.lds b/arch/h8300/boot/compressed/vmlinux.lds index 65e2a0d1ae39..a0a3a0ed54ef 100644 --- a/arch/h8300/boot/compressed/vmlinux.lds +++ b/arch/h8300/boot/compressed/vmlinux.lds | |||
@@ -4,7 +4,7 @@ SECTIONS | |||
4 | { | 4 | { |
5 | __stext = . ; | 5 | __stext = . ; |
6 | __text = .; | 6 | __text = .; |
7 | *(.text.startup) | 7 | *(.text..startup) |
8 | *(.text) | 8 | *(.text) |
9 | __etext = . ; | 9 | __etext = . ; |
10 | } | 10 | } |
diff --git a/arch/h8300/include/asm/scatterlist.h b/arch/h8300/include/asm/scatterlist.h index d3ecdd87ac90..de08a4a2cc1c 100644 --- a/arch/h8300/include/asm/scatterlist.h +++ b/arch/h8300/include/asm/scatterlist.h | |||
@@ -1,17 +1,7 @@ | |||
1 | #ifndef _H8300_SCATTERLIST_H | 1 | #ifndef _H8300_SCATTERLIST_H |
2 | #define _H8300_SCATTERLIST_H | 2 | #define _H8300_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | dma_addr_t dma_address; | ||
13 | unsigned int length; | ||
14 | }; | ||
15 | 5 | ||
16 | #define ISA_DMA_THRESHOLD (0xffffffff) | 6 | #define ISA_DMA_THRESHOLD (0xffffffff) |
17 | 7 | ||
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 9676100b83ee..95610820041e 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -56,6 +56,9 @@ config MMU | |||
56 | config NEED_DMA_MAP_STATE | 56 | config NEED_DMA_MAP_STATE |
57 | def_bool y | 57 | def_bool y |
58 | 58 | ||
59 | config NEED_SG_DMA_LENGTH | ||
60 | def_bool y | ||
61 | |||
59 | config SWIOTLB | 62 | config SWIOTLB |
60 | bool | 63 | bool |
61 | 64 | ||
@@ -495,6 +498,14 @@ config HAVE_ARCH_NODEDATA_EXTENSION | |||
495 | def_bool y | 498 | def_bool y |
496 | depends on NUMA | 499 | depends on NUMA |
497 | 500 | ||
501 | config USE_PERCPU_NUMA_NODE_ID | ||
502 | def_bool y | ||
503 | depends on NUMA | ||
504 | |||
505 | config HAVE_MEMORYLESS_NODES | ||
506 | def_bool y | ||
507 | depends on NUMA | ||
508 | |||
498 | config ARCH_PROC_KCORE_TEXT | 509 | config ARCH_PROC_KCORE_TEXT |
499 | def_bool y | 510 | def_bool y |
500 | depends on PROC_KCORE | 511 | depends on PROC_KCORE |
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index 21adbd7f90f8..837dc82a013e 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h | |||
@@ -94,7 +94,6 @@ ia64_acpi_release_global_lock (unsigned int *lock) | |||
94 | #define acpi_noirq 0 /* ACPI always enabled on IA64 */ | 94 | #define acpi_noirq 0 /* ACPI always enabled on IA64 */ |
95 | #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ | 95 | #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ |
96 | #define acpi_strict 1 /* no ACPI spec workarounds on IA64 */ | 96 | #define acpi_strict 1 /* no ACPI spec workarounds on IA64 */ |
97 | #define acpi_ht 0 /* no HT-only mode on IA64 */ | ||
98 | #endif | 97 | #endif |
99 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ | 98 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ |
100 | static inline void disable_acpi(void) { } | 99 | static inline void disable_acpi(void) { } |
diff --git a/arch/ia64/include/asm/asmmacro.h b/arch/ia64/include/asm/asmmacro.h index c1642fd64029..3ab6d75aa3db 100644 --- a/arch/ia64/include/asm/asmmacro.h +++ b/arch/ia64/include/asm/asmmacro.h | |||
@@ -70,12 +70,12 @@ name: | |||
70 | * path (ivt.S - TLB miss processing) or in places where it might not be | 70 | * path (ivt.S - TLB miss processing) or in places where it might not be |
71 | * safe to use a "tpa" instruction (mca_asm.S - error recovery). | 71 | * safe to use a "tpa" instruction (mca_asm.S - error recovery). |
72 | */ | 72 | */ |
73 | .section ".data.patch.vtop", "a" // declare section & section attributes | 73 | .section ".data..patch.vtop", "a" // declare section & section attributes |
74 | .previous | 74 | .previous |
75 | 75 | ||
76 | #define LOAD_PHYSICAL(pr, reg, obj) \ | 76 | #define LOAD_PHYSICAL(pr, reg, obj) \ |
77 | [1:](pr)movl reg = obj; \ | 77 | [1:](pr)movl reg = obj; \ |
78 | .xdata4 ".data.patch.vtop", 1b-. | 78 | .xdata4 ".data..patch.vtop", 1b-. |
79 | 79 | ||
80 | /* | 80 | /* |
81 | * For now, we always put in the McKinley E9 workaround. On CPUs that don't need it, | 81 | * For now, we always put in the McKinley E9 workaround. On CPUs that don't need it, |
@@ -84,11 +84,11 @@ name: | |||
84 | #define DO_MCKINLEY_E9_WORKAROUND | 84 | #define DO_MCKINLEY_E9_WORKAROUND |
85 | 85 | ||
86 | #ifdef DO_MCKINLEY_E9_WORKAROUND | 86 | #ifdef DO_MCKINLEY_E9_WORKAROUND |
87 | .section ".data.patch.mckinley_e9", "a" | 87 | .section ".data..patch.mckinley_e9", "a" |
88 | .previous | 88 | .previous |
89 | /* workaround for Itanium 2 Errata 9: */ | 89 | /* workaround for Itanium 2 Errata 9: */ |
90 | # define FSYS_RETURN \ | 90 | # define FSYS_RETURN \ |
91 | .xdata4 ".data.patch.mckinley_e9", 1f-.; \ | 91 | .xdata4 ".data..patch.mckinley_e9", 1f-.; \ |
92 | 1:{ .mib; \ | 92 | 1:{ .mib; \ |
93 | nop.m 0; \ | 93 | nop.m 0; \ |
94 | mov r16=ar.pfs; \ | 94 | mov r16=ar.pfs; \ |
@@ -107,11 +107,11 @@ name: | |||
107 | * If physical stack register size is different from DEF_NUM_STACK_REG, | 107 | * If physical stack register size is different from DEF_NUM_STACK_REG, |
108 | * dynamically patch the kernel for correct size. | 108 | * dynamically patch the kernel for correct size. |
109 | */ | 109 | */ |
110 | .section ".data.patch.phys_stack_reg", "a" | 110 | .section ".data..patch.phys_stack_reg", "a" |
111 | .previous | 111 | .previous |
112 | #define LOAD_PHYS_STACK_REG_SIZE(reg) \ | 112 | #define LOAD_PHYS_STACK_REG_SIZE(reg) \ |
113 | [1:] adds reg=IA64_NUM_PHYS_STACK_REG*8+8,r0; \ | 113 | [1:] adds reg=IA64_NUM_PHYS_STACK_REG*8+8,r0; \ |
114 | .xdata4 ".data.patch.phys_stack_reg", 1b-. | 114 | .xdata4 ".data..patch.phys_stack_reg", 1b-. |
115 | 115 | ||
116 | /* | 116 | /* |
117 | * Up until early 2004, use of .align within a function caused bad unwind info. | 117 | * Up until early 2004, use of .align within a function caused bad unwind info. |
diff --git a/arch/ia64/include/asm/cache.h b/arch/ia64/include/asm/cache.h index e7482bd628ff..988254a7d349 100644 --- a/arch/ia64/include/asm/cache.h +++ b/arch/ia64/include/asm/cache.h | |||
@@ -24,6 +24,6 @@ | |||
24 | # define SMP_CACHE_BYTES (1 << 3) | 24 | # define SMP_CACHE_BYTES (1 << 3) |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 27 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
28 | 28 | ||
29 | #endif /* _ASM_IA64_CACHE_H */ | 29 | #endif /* _ASM_IA64_CACHE_H */ |
diff --git a/arch/ia64/include/asm/percpu.h b/arch/ia64/include/asm/percpu.h index 1bd408265694..14aa1c58912b 100644 --- a/arch/ia64/include/asm/percpu.h +++ b/arch/ia64/include/asm/percpu.h | |||
@@ -31,7 +31,7 @@ extern void *per_cpu_init(void); | |||
31 | 31 | ||
32 | #endif /* SMP */ | 32 | #endif /* SMP */ |
33 | 33 | ||
34 | #define PER_CPU_BASE_SECTION ".data.percpu" | 34 | #define PER_CPU_BASE_SECTION ".data..percpu" |
35 | 35 | ||
36 | /* | 36 | /* |
37 | * Be extremely careful when taking the address of this variable! Due to virtual | 37 | * Be extremely careful when taking the address of this variable! Due to virtual |
diff --git a/arch/ia64/include/asm/scatterlist.h b/arch/ia64/include/asm/scatterlist.h index d8e98961dec7..f299a4fb25c8 100644 --- a/arch/ia64/include/asm/scatterlist.h +++ b/arch/ia64/include/asm/scatterlist.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_IA64_SCATTERLIST_H | 1 | #ifndef _ASM_IA64_SCATTERLIST_H |
2 | #define _ASM_IA64_SCATTERLIST_H | 2 | #define _ASM_IA64_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm-generic/scatterlist.h> | ||
4 | /* | 5 | /* |
5 | * It used to be that ISA_DMA_THRESHOLD had something to do with the | 6 | * It used to be that ISA_DMA_THRESHOLD had something to do with the |
6 | * DMA-limits of ISA-devices. Nowadays, its only remaining use (apart | 7 | * DMA-limits of ISA-devices. Nowadays, its only remaining use (apart |
@@ -10,7 +11,6 @@ | |||
10 | * that's 4GB - 1. | 11 | * that's 4GB - 1. |
11 | */ | 12 | */ |
12 | #define ISA_DMA_THRESHOLD 0xffffffff | 13 | #define ISA_DMA_THRESHOLD 0xffffffff |
13 | 14 | #define ARCH_HAS_SG_CHAIN | |
14 | #include <asm-generic/scatterlist.h> | ||
15 | 15 | ||
16 | #endif /* _ASM_IA64_SCATTERLIST_H */ | 16 | #endif /* _ASM_IA64_SCATTERLIST_H */ |
diff --git a/arch/ia64/include/asm/topology.h b/arch/ia64/include/asm/topology.h index d323071d0f91..09f646753d1a 100644 --- a/arch/ia64/include/asm/topology.h +++ b/arch/ia64/include/asm/topology.h | |||
@@ -26,11 +26,6 @@ | |||
26 | #define RECLAIM_DISTANCE 15 | 26 | #define RECLAIM_DISTANCE 15 |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * Returns the number of the node containing CPU 'cpu' | ||
30 | */ | ||
31 | #define cpu_to_node(cpu) (int)(cpu_to_node_map[cpu]) | ||
32 | |||
33 | /* | ||
34 | * Returns a bitmask of CPUs on Node 'node'. | 29 | * Returns a bitmask of CPUs on Node 'node'. |
35 | */ | 30 | */ |
36 | #define cpumask_of_node(node) ((node) == -1 ? \ | 31 | #define cpumask_of_node(node) ((node) == -1 ? \ |
diff --git a/arch/ia64/kernel/Makefile.gate b/arch/ia64/kernel/Makefile.gate index ab9b03a9adcc..ceeffc509764 100644 --- a/arch/ia64/kernel/Makefile.gate +++ b/arch/ia64/kernel/Makefile.gate | |||
@@ -21,7 +21,7 @@ GATECFLAGS_gate-syms.o = -r | |||
21 | $(obj)/gate-syms.o: $(obj)/gate.lds $(obj)/gate.o FORCE | 21 | $(obj)/gate-syms.o: $(obj)/gate.lds $(obj)/gate.o FORCE |
22 | $(call if_changed,gate) | 22 | $(call if_changed,gate) |
23 | 23 | ||
24 | # gate-data.o contains the gate DSO image as data in section .data.gate. | 24 | # gate-data.o contains the gate DSO image as data in section .data..gate. |
25 | # We must build gate.so before we can assemble it. | 25 | # We must build gate.so before we can assemble it. |
26 | # Note: kbuild does not track this dependency due to usage of .incbin | 26 | # Note: kbuild does not track this dependency due to usage of .incbin |
27 | $(obj)/gate-data.o: $(obj)/gate.so | 27 | $(obj)/gate-data.o: $(obj)/gate.so |
diff --git a/arch/ia64/kernel/gate-data.S b/arch/ia64/kernel/gate-data.S index 258c0a3238fb..b3ef1c72e132 100644 --- a/arch/ia64/kernel/gate-data.S +++ b/arch/ia64/kernel/gate-data.S | |||
@@ -1,3 +1,3 @@ | |||
1 | .section .data.gate, "aw" | 1 | .section .data..gate, "aw" |
2 | 2 | ||
3 | .incbin "arch/ia64/kernel/gate.so" | 3 | .incbin "arch/ia64/kernel/gate.so" |
diff --git a/arch/ia64/kernel/gate.S b/arch/ia64/kernel/gate.S index cf5e0a105e16..245d3e1ec7e1 100644 --- a/arch/ia64/kernel/gate.S +++ b/arch/ia64/kernel/gate.S | |||
@@ -21,18 +21,18 @@ | |||
21 | * to targets outside the shared object) and to avoid multi-phase kernel builds, we | 21 | * to targets outside the shared object) and to avoid multi-phase kernel builds, we |
22 | * simply create minimalistic "patch lists" in special ELF sections. | 22 | * simply create minimalistic "patch lists" in special ELF sections. |
23 | */ | 23 | */ |
24 | .section ".data.patch.fsyscall_table", "a" | 24 | .section ".data..patch.fsyscall_table", "a" |
25 | .previous | 25 | .previous |
26 | #define LOAD_FSYSCALL_TABLE(reg) \ | 26 | #define LOAD_FSYSCALL_TABLE(reg) \ |
27 | [1:] movl reg=0; \ | 27 | [1:] movl reg=0; \ |
28 | .xdata4 ".data.patch.fsyscall_table", 1b-. | 28 | .xdata4 ".data..patch.fsyscall_table", 1b-. |
29 | 29 | ||
30 | .section ".data.patch.brl_fsys_bubble_down", "a" | 30 | .section ".data..patch.brl_fsys_bubble_down", "a" |
31 | .previous | 31 | .previous |
32 | #define BRL_COND_FSYS_BUBBLE_DOWN(pr) \ | 32 | #define BRL_COND_FSYS_BUBBLE_DOWN(pr) \ |
33 | [1:](pr)brl.cond.sptk 0; \ | 33 | [1:](pr)brl.cond.sptk 0; \ |
34 | ;; \ | 34 | ;; \ |
35 | .xdata4 ".data.patch.brl_fsys_bubble_down", 1b-. | 35 | .xdata4 ".data..patch.brl_fsys_bubble_down", 1b-. |
36 | 36 | ||
37 | GLOBAL_ENTRY(__kernel_syscall_via_break) | 37 | GLOBAL_ENTRY(__kernel_syscall_via_break) |
38 | .prologue | 38 | .prologue |
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S index 88c64ed47c36..d32b0855110a 100644 --- a/arch/ia64/kernel/gate.lds.S +++ b/arch/ia64/kernel/gate.lds.S | |||
@@ -33,21 +33,21 @@ SECTIONS | |||
33 | */ | 33 | */ |
34 | . = GATE_ADDR + 0x600; | 34 | . = GATE_ADDR + 0x600; |
35 | 35 | ||
36 | .data.patch : { | 36 | .data..patch : { |
37 | __paravirt_start_gate_mckinley_e9_patchlist = .; | 37 | __paravirt_start_gate_mckinley_e9_patchlist = .; |
38 | *(.data.patch.mckinley_e9) | 38 | *(.data..patch.mckinley_e9) |
39 | __paravirt_end_gate_mckinley_e9_patchlist = .; | 39 | __paravirt_end_gate_mckinley_e9_patchlist = .; |
40 | 40 | ||
41 | __paravirt_start_gate_vtop_patchlist = .; | 41 | __paravirt_start_gate_vtop_patchlist = .; |
42 | *(.data.patch.vtop) | 42 | *(.data..patch.vtop) |
43 | __paravirt_end_gate_vtop_patchlist = .; | 43 | __paravirt_end_gate_vtop_patchlist = .; |
44 | 44 | ||
45 | __paravirt_start_gate_fsyscall_patchlist = .; | 45 | __paravirt_start_gate_fsyscall_patchlist = .; |
46 | *(.data.patch.fsyscall_table) | 46 | *(.data..patch.fsyscall_table) |
47 | __paravirt_end_gate_fsyscall_patchlist = .; | 47 | __paravirt_end_gate_fsyscall_patchlist = .; |
48 | 48 | ||
49 | __paravirt_start_gate_brl_fsys_bubble_down_patchlist = .; | 49 | __paravirt_start_gate_brl_fsys_bubble_down_patchlist = .; |
50 | *(.data.patch.brl_fsys_bubble_down) | 50 | *(.data..patch.brl_fsys_bubble_down) |
51 | __paravirt_end_gate_brl_fsys_bubble_down_patchlist = .; | 51 | __paravirt_end_gate_brl_fsys_bubble_down_patchlist = .; |
52 | } :readable | 52 | } :readable |
53 | 53 | ||
diff --git a/arch/ia64/kernel/init_task.c b/arch/ia64/kernel/init_task.c index e253ab8fcbc8..f9efe9739d3f 100644 --- a/arch/ia64/kernel/init_task.c +++ b/arch/ia64/kernel/init_task.c | |||
@@ -23,7 +23,7 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
23 | * Initial task structure. | 23 | * Initial task structure. |
24 | * | 24 | * |
25 | * We need to make sure that this is properly aligned due to the way process stacks are | 25 | * We need to make sure that this is properly aligned due to the way process stacks are |
26 | * handled. This is done by having a special ".data.init_task" section... | 26 | * handled. This is done by having a special ".data..init_task" section... |
27 | */ | 27 | */ |
28 | #define init_thread_info init_task_mem.s.thread_info | 28 | #define init_thread_info init_task_mem.s.thread_info |
29 | 29 | ||
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S index 179fd122e837..d93e396bf599 100644 --- a/arch/ia64/kernel/ivt.S +++ b/arch/ia64/kernel/ivt.S | |||
@@ -82,7 +82,7 @@ | |||
82 | mov r19=n;; /* prepare to save predicates */ \ | 82 | mov r19=n;; /* prepare to save predicates */ \ |
83 | br.sptk.many dispatch_to_fault_handler | 83 | br.sptk.many dispatch_to_fault_handler |
84 | 84 | ||
85 | .section .text.ivt,"ax" | 85 | .section .text..ivt,"ax" |
86 | 86 | ||
87 | .align 32768 // align on 32KB boundary | 87 | .align 32768 // align on 32KB boundary |
88 | .global ia64_ivt | 88 | .global ia64_ivt |
diff --git a/arch/ia64/kernel/minstate.h b/arch/ia64/kernel/minstate.h index 292e214a3b84..d56753a11636 100644 --- a/arch/ia64/kernel/minstate.h +++ b/arch/ia64/kernel/minstate.h | |||
@@ -16,7 +16,7 @@ | |||
16 | #define ACCOUNT_SYS_ENTER | 16 | #define ACCOUNT_SYS_ENTER |
17 | #endif | 17 | #endif |
18 | 18 | ||
19 | .section ".data.patch.rse", "a" | 19 | .section ".data..patch.rse", "a" |
20 | .previous | 20 | .previous |
21 | 21 | ||
22 | /* | 22 | /* |
@@ -215,7 +215,7 @@ | |||
215 | (pUStk) extr.u r17=r18,3,6; \ | 215 | (pUStk) extr.u r17=r18,3,6; \ |
216 | (pUStk) sub r16=r18,r22; \ | 216 | (pUStk) sub r16=r18,r22; \ |
217 | [1:](pKStk) br.cond.sptk.many 1f; \ | 217 | [1:](pKStk) br.cond.sptk.many 1f; \ |
218 | .xdata4 ".data.patch.rse",1b-. \ | 218 | .xdata4 ".data..patch.rse",1b-. \ |
219 | ;; \ | 219 | ;; \ |
220 | cmp.ge p6,p7 = 33,r17; \ | 220 | cmp.ge p6,p7 = 33,r17; \ |
221 | ;; \ | 221 | ;; \ |
diff --git a/arch/ia64/kernel/paravirtentry.S b/arch/ia64/kernel/paravirtentry.S index 6158560d7f17..92d880c4d3d1 100644 --- a/arch/ia64/kernel/paravirtentry.S +++ b/arch/ia64/kernel/paravirtentry.S | |||
@@ -28,7 +28,7 @@ | |||
28 | #include "entry.h" | 28 | #include "entry.h" |
29 | 29 | ||
30 | #define DATA8(sym, init_value) \ | 30 | #define DATA8(sym, init_value) \ |
31 | .pushsection .data.read_mostly ; \ | 31 | .pushsection .data..read_mostly ; \ |
32 | .align 8 ; \ | 32 | .align 8 ; \ |
33 | .global sym ; \ | 33 | .global sym ; \ |
34 | sym: ; \ | 34 | sym: ; \ |
diff --git a/arch/ia64/kernel/pci-swiotlb.c b/arch/ia64/kernel/pci-swiotlb.c index 3095654f9ab3..d9485d952ed0 100644 --- a/arch/ia64/kernel/pci-swiotlb.c +++ b/arch/ia64/kernel/pci-swiotlb.c | |||
@@ -31,8 +31,6 @@ struct dma_map_ops swiotlb_dma_ops = { | |||
31 | .unmap_sg = swiotlb_unmap_sg_attrs, | 31 | .unmap_sg = swiotlb_unmap_sg_attrs, |
32 | .sync_single_for_cpu = swiotlb_sync_single_for_cpu, | 32 | .sync_single_for_cpu = swiotlb_sync_single_for_cpu, |
33 | .sync_single_for_device = swiotlb_sync_single_for_device, | 33 | .sync_single_for_device = swiotlb_sync_single_for_device, |
34 | .sync_single_range_for_cpu = swiotlb_sync_single_range_for_cpu, | ||
35 | .sync_single_range_for_device = swiotlb_sync_single_range_for_device, | ||
36 | .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, | 34 | .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, |
37 | .sync_sg_for_device = swiotlb_sync_sg_for_device, | 35 | .sync_sg_for_device = swiotlb_sync_sg_for_device, |
38 | .dma_supported = swiotlb_dma_supported, | 36 | .dma_supported = swiotlb_dma_supported, |
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index 0dec7f702448..7c7909f9bc93 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
@@ -638,7 +638,7 @@ ptrace_attach_sync_user_rbs (struct task_struct *child) | |||
638 | */ | 638 | */ |
639 | 639 | ||
640 | read_lock(&tasklist_lock); | 640 | read_lock(&tasklist_lock); |
641 | if (child->signal) { | 641 | if (child->sighand) { |
642 | spin_lock_irq(&child->sighand->siglock); | 642 | spin_lock_irq(&child->sighand->siglock); |
643 | if (child->state == TASK_STOPPED && | 643 | if (child->state == TASK_STOPPED && |
644 | !test_and_set_tsk_thread_flag(child, TIF_RESTORE_RSE)) { | 644 | !test_and_set_tsk_thread_flag(child, TIF_RESTORE_RSE)) { |
@@ -662,7 +662,7 @@ ptrace_attach_sync_user_rbs (struct task_struct *child) | |||
662 | * job control stop, so that SIGCONT can be used to wake it up. | 662 | * job control stop, so that SIGCONT can be used to wake it up. |
663 | */ | 663 | */ |
664 | read_lock(&tasklist_lock); | 664 | read_lock(&tasklist_lock); |
665 | if (child->signal) { | 665 | if (child->sighand) { |
666 | spin_lock_irq(&child->sighand->siglock); | 666 | spin_lock_irq(&child->sighand->siglock); |
667 | if (child->state == TASK_TRACED && | 667 | if (child->state == TASK_TRACED && |
668 | (child->signal->flags & SIGNAL_STOP_STOPPED)) { | 668 | (child->signal->flags & SIGNAL_STOP_STOPPED)) { |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index e5230b2ff2c5..6a1380e90f87 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -390,6 +390,14 @@ smp_callin (void) | |||
390 | 390 | ||
391 | fix_b0_for_bsp(); | 391 | fix_b0_for_bsp(); |
392 | 392 | ||
393 | #ifdef CONFIG_NUMA | ||
394 | /* | ||
395 | * numa_node_id() works after this. | ||
396 | */ | ||
397 | set_numa_node(cpu_to_node_map[cpuid]); | ||
398 | set_numa_mem(local_memory_node(cpu_to_node_map[cpuid])); | ||
399 | #endif | ||
400 | |||
393 | ipi_call_lock_irq(); | 401 | ipi_call_lock_irq(); |
394 | spin_lock(&vector_lock); | 402 | spin_lock(&vector_lock); |
395 | /* Setup the per cpu irq handling data structures */ | 403 | /* Setup the per cpu irq handling data structures */ |
@@ -632,6 +640,9 @@ void __devinit smp_prepare_boot_cpu(void) | |||
632 | { | 640 | { |
633 | cpu_set(smp_processor_id(), cpu_online_map); | 641 | cpu_set(smp_processor_id(), cpu_online_map); |
634 | cpu_set(smp_processor_id(), cpu_callin_map); | 642 | cpu_set(smp_processor_id(), cpu_callin_map); |
643 | #ifdef CONFIG_NUMA | ||
644 | set_numa_node(cpu_to_node_map[smp_processor_id()]); | ||
645 | #endif | ||
635 | per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; | 646 | per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; |
636 | paravirt_post_smp_prepare_boot_cpu(); | 647 | paravirt_post_smp_prepare_boot_cpu(); |
637 | } | 648 | } |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 1295ba327f6f..e07218a2577f 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | #define IVT_TEXT \ | 9 | #define IVT_TEXT \ |
10 | VMLINUX_SYMBOL(__start_ivt_text) = .; \ | 10 | VMLINUX_SYMBOL(__start_ivt_text) = .; \ |
11 | *(.text.ivt) \ | 11 | *(.text..ivt) \ |
12 | VMLINUX_SYMBOL(__end_ivt_text) = .; | 12 | VMLINUX_SYMBOL(__end_ivt_text) = .; |
13 | 13 | ||
14 | OUTPUT_FORMAT("elf64-ia64-little") | 14 | OUTPUT_FORMAT("elf64-ia64-little") |
@@ -54,8 +54,8 @@ SECTIONS | |||
54 | .text2 : AT(ADDR(.text2) - LOAD_OFFSET) | 54 | .text2 : AT(ADDR(.text2) - LOAD_OFFSET) |
55 | { *(.text2) } | 55 | { *(.text2) } |
56 | #ifdef CONFIG_SMP | 56 | #ifdef CONFIG_SMP |
57 | .text.lock : AT(ADDR(.text.lock) - LOAD_OFFSET) | 57 | .text..lock : AT(ADDR(.text..lock) - LOAD_OFFSET) |
58 | { *(.text.lock) } | 58 | { *(.text..lock) } |
59 | #endif | 59 | #endif |
60 | _etext = .; | 60 | _etext = .; |
61 | 61 | ||
@@ -75,10 +75,10 @@ SECTIONS | |||
75 | __stop___mca_table = .; | 75 | __stop___mca_table = .; |
76 | } | 76 | } |
77 | 77 | ||
78 | .data.patch.phys_stack_reg : AT(ADDR(.data.patch.phys_stack_reg) - LOAD_OFFSET) | 78 | .data..patch.phys_stack_reg : AT(ADDR(.data..patch.phys_stack_reg) - LOAD_OFFSET) |
79 | { | 79 | { |
80 | __start___phys_stack_reg_patchlist = .; | 80 | __start___phys_stack_reg_patchlist = .; |
81 | *(.data.patch.phys_stack_reg) | 81 | *(.data..patch.phys_stack_reg) |
82 | __end___phys_stack_reg_patchlist = .; | 82 | __end___phys_stack_reg_patchlist = .; |
83 | } | 83 | } |
84 | 84 | ||
@@ -110,24 +110,24 @@ SECTIONS | |||
110 | INIT_TEXT_SECTION(PAGE_SIZE) | 110 | INIT_TEXT_SECTION(PAGE_SIZE) |
111 | INIT_DATA_SECTION(16) | 111 | INIT_DATA_SECTION(16) |
112 | 112 | ||
113 | .data.patch.vtop : AT(ADDR(.data.patch.vtop) - LOAD_OFFSET) | 113 | .data..patch.vtop : AT(ADDR(.data..patch.vtop) - LOAD_OFFSET) |
114 | { | 114 | { |
115 | __start___vtop_patchlist = .; | 115 | __start___vtop_patchlist = .; |
116 | *(.data.patch.vtop) | 116 | *(.data..patch.vtop) |
117 | __end___vtop_patchlist = .; | 117 | __end___vtop_patchlist = .; |
118 | } | 118 | } |
119 | 119 | ||
120 | .data.patch.rse : AT(ADDR(.data.patch.rse) - LOAD_OFFSET) | 120 | .data..patch.rse : AT(ADDR(.data..patch.rse) - LOAD_OFFSET) |
121 | { | 121 | { |
122 | __start___rse_patchlist = .; | 122 | __start___rse_patchlist = .; |
123 | *(.data.patch.rse) | 123 | *(.data..patch.rse) |
124 | __end___rse_patchlist = .; | 124 | __end___rse_patchlist = .; |
125 | } | 125 | } |
126 | 126 | ||
127 | .data.patch.mckinley_e9 : AT(ADDR(.data.patch.mckinley_e9) - LOAD_OFFSET) | 127 | .data..patch.mckinley_e9 : AT(ADDR(.data..patch.mckinley_e9) - LOAD_OFFSET) |
128 | { | 128 | { |
129 | __start___mckinley_e9_bundles = .; | 129 | __start___mckinley_e9_bundles = .; |
130 | *(.data.patch.mckinley_e9) | 130 | *(.data..patch.mckinley_e9) |
131 | __end___mckinley_e9_bundles = .; | 131 | __end___mckinley_e9_bundles = .; |
132 | } | 132 | } |
133 | 133 | ||
@@ -175,17 +175,17 @@ SECTIONS | |||
175 | . = ALIGN(PAGE_SIZE); | 175 | . = ALIGN(PAGE_SIZE); |
176 | __init_end = .; | 176 | __init_end = .; |
177 | 177 | ||
178 | .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) | 178 | .data..page_aligned : AT(ADDR(.data..page_aligned) - LOAD_OFFSET) |
179 | { | 179 | { |
180 | PAGE_ALIGNED_DATA(PAGE_SIZE) | 180 | PAGE_ALIGNED_DATA(PAGE_SIZE) |
181 | . = ALIGN(PAGE_SIZE); | 181 | . = ALIGN(PAGE_SIZE); |
182 | __start_gate_section = .; | 182 | __start_gate_section = .; |
183 | *(.data.gate) | 183 | *(.data..gate) |
184 | __stop_gate_section = .; | 184 | __stop_gate_section = .; |
185 | #ifdef CONFIG_XEN | 185 | #ifdef CONFIG_XEN |
186 | . = ALIGN(PAGE_SIZE); | 186 | . = ALIGN(PAGE_SIZE); |
187 | __xen_start_gate_section = .; | 187 | __xen_start_gate_section = .; |
188 | *(.data.gate.xen) | 188 | *(.data..gate.xen) |
189 | __xen_stop_gate_section = .; | 189 | __xen_stop_gate_section = .; |
190 | #endif | 190 | #endif |
191 | } | 191 | } |
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index d5f4e9161201..21b701374f72 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -144,6 +144,7 @@ int kvm_arch_hardware_enable(void *garbage) | |||
144 | VP_INIT_ENV : VP_INIT_ENV_INITALIZE, | 144 | VP_INIT_ENV : VP_INIT_ENV_INITALIZE, |
145 | __pa(kvm_vm_buffer), KVM_VM_BUFFER_BASE, &tmp_base); | 145 | __pa(kvm_vm_buffer), KVM_VM_BUFFER_BASE, &tmp_base); |
146 | if (status != 0) { | 146 | if (status != 0) { |
147 | spin_unlock(&vp_lock); | ||
147 | printk(KERN_WARNING"kvm: Failed to Enable VT Support!!!!\n"); | 148 | printk(KERN_WARNING"kvm: Failed to Enable VT Support!!!!\n"); |
148 | return -EINVAL; | 149 | return -EINVAL; |
149 | } | 150 | } |
diff --git a/arch/ia64/kvm/vmm_ivt.S b/arch/ia64/kvm/vmm_ivt.S index 40920c630649..24018484c6e9 100644 --- a/arch/ia64/kvm/vmm_ivt.S +++ b/arch/ia64/kvm/vmm_ivt.S | |||
@@ -104,7 +104,7 @@ GLOBAL_ENTRY(kvm_vmm_panic) | |||
104 | br.call.sptk.many b6=vmm_panic_handler; | 104 | br.call.sptk.many b6=vmm_panic_handler; |
105 | END(kvm_vmm_panic) | 105 | END(kvm_vmm_panic) |
106 | 106 | ||
107 | .section .text.ivt,"ax" | 107 | .section .text..ivt,"ax" |
108 | 108 | ||
109 | .align 32768 // align on 32KB boundary | 109 | .align 32768 // align on 32KB boundary |
110 | .global kvm_ia64_ivt | 110 | .global kvm_ia64_ivt |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 64aff520b899..aa2533ae7e9e 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -335,8 +335,11 @@ pcibios_setup_root_windows(struct pci_bus *bus, struct pci_controller *ctrl) | |||
335 | } | 335 | } |
336 | 336 | ||
337 | struct pci_bus * __devinit | 337 | struct pci_bus * __devinit |
338 | pci_acpi_scan_root(struct acpi_device *device, int domain, int bus) | 338 | pci_acpi_scan_root(struct acpi_pci_root *root) |
339 | { | 339 | { |
340 | struct acpi_device *device = root->device; | ||
341 | int domain = root->segment; | ||
342 | int bus = root->secondary.start; | ||
340 | struct pci_controller *controller; | 343 | struct pci_controller *controller; |
341 | unsigned int windows = 0; | 344 | unsigned int windows = 0; |
342 | struct pci_bus *pbus; | 345 | struct pci_bus *pbus; |
diff --git a/arch/ia64/scripts/unwcheck.py b/arch/ia64/scripts/unwcheck.py index c27849889e19..2bfd941ff7c7 100644 --- a/arch/ia64/scripts/unwcheck.py +++ b/arch/ia64/scripts/unwcheck.py | |||
@@ -1,4 +1,4 @@ | |||
1 | #!/usr/bin/env python | 1 | #!/usr/bin/python |
2 | # | 2 | # |
3 | # Usage: unwcheck.py FILE | 3 | # Usage: unwcheck.py FILE |
4 | # | 4 | # |
diff --git a/arch/ia64/xen/gate-data.S b/arch/ia64/xen/gate-data.S index 7d4830afc91d..6f95b6b32a4e 100644 --- a/arch/ia64/xen/gate-data.S +++ b/arch/ia64/xen/gate-data.S | |||
@@ -1,3 +1,3 @@ | |||
1 | .section .data.gate.xen, "aw" | 1 | .section .data..gate.xen, "aw" |
2 | 2 | ||
3 | .incbin "arch/ia64/xen/gate.so" | 3 | .incbin "arch/ia64/xen/gate.so" |
diff --git a/arch/ia64/xen/xensetup.S b/arch/ia64/xen/xensetup.S index aff8346ea193..b820ed02ab9f 100644 --- a/arch/ia64/xen/xensetup.S +++ b/arch/ia64/xen/xensetup.S | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <xen/interface/elfnote.h> | 15 | #include <xen/interface/elfnote.h> |
16 | 16 | ||
17 | .section .data.read_mostly | 17 | .section .data..read_mostly |
18 | .align 8 | 18 | .align 8 |
19 | .global xen_domain_type | 19 | .global xen_domain_type |
20 | xen_domain_type: | 20 | xen_domain_type: |
diff --git a/arch/m32r/include/asm/scatterlist.h b/arch/m32r/include/asm/scatterlist.h index 1ed372c73d0b..aeeddd8dac17 100644 --- a/arch/m32r/include/asm/scatterlist.h +++ b/arch/m32r/include/asm/scatterlist.h | |||
@@ -1,20 +1,7 @@ | |||
1 | #ifndef _ASM_M32R_SCATTERLIST_H | 1 | #ifndef _ASM_M32R_SCATTERLIST_H |
2 | #define _ASM_M32R_SCATTERLIST_H | 2 | #define _ASM_M32R_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | char * address; /* Location data is to be transferred to, NULL for | ||
11 | * highmem page */ | ||
12 | unsigned long page_link; | ||
13 | unsigned int offset;/* for highmem, page offset */ | ||
14 | |||
15 | dma_addr_t dma_address; | ||
16 | unsigned int length; | ||
17 | }; | ||
18 | 5 | ||
19 | #define ISA_DMA_THRESHOLD (0x1fffffff) | 6 | #define ISA_DMA_THRESHOLD (0x1fffffff) |
20 | 7 | ||
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c index 28ee389e5f5a..b8ec002aef8e 100644 --- a/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c | |||
@@ -188,7 +188,6 @@ good_area: | |||
188 | if ((error_code & ACE_INSTRUCTION) && !(vma->vm_flags & VM_EXEC)) | 188 | if ((error_code & ACE_INSTRUCTION) && !(vma->vm_flags & VM_EXEC)) |
189 | goto bad_area; | 189 | goto bad_area; |
190 | 190 | ||
191 | survive: | ||
192 | /* | 191 | /* |
193 | * If for any reason at all we couldn't handle the fault, | 192 | * If for any reason at all we couldn't handle the fault, |
194 | * make sure we exit gracefully rather than endlessly redo | 193 | * make sure we exit gracefully rather than endlessly redo |
@@ -271,15 +270,10 @@ no_context: | |||
271 | */ | 270 | */ |
272 | out_of_memory: | 271 | out_of_memory: |
273 | up_read(&mm->mmap_sem); | 272 | up_read(&mm->mmap_sem); |
274 | if (is_global_init(tsk)) { | 273 | if (!(error_code & ACE_USERMODE)) |
275 | yield(); | 274 | goto no_context; |
276 | down_read(&mm->mmap_sem); | 275 | pagefault_out_of_memory(); |
277 | goto survive; | 276 | return; |
278 | } | ||
279 | printk("VM: killing process %s\n", tsk->comm); | ||
280 | if (error_code & ACE_USERMODE) | ||
281 | do_group_exit(SIGKILL); | ||
282 | goto no_context; | ||
283 | 277 | ||
284 | do_sigbus: | 278 | do_sigbus: |
285 | up_read(&mm->mmap_sem); | 279 | up_read(&mm->mmap_sem); |
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index b5da298ba61d..2e3737b92ffc 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -7,6 +7,7 @@ config M68K | |||
7 | default y | 7 | default y |
8 | select HAVE_AOUT | 8 | select HAVE_AOUT |
9 | select HAVE_IDE | 9 | select HAVE_IDE |
10 | select GENERIC_ATOMIC64 | ||
10 | 11 | ||
11 | config MMU | 12 | config MMU |
12 | bool | 13 | bool |
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index d2cc35d98532..b1577f741fa8 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c | |||
@@ -97,10 +97,6 @@ static void amiga_get_model(char *model); | |||
97 | static void amiga_get_hardware_list(struct seq_file *m); | 97 | static void amiga_get_hardware_list(struct seq_file *m); |
98 | /* amiga specific timer functions */ | 98 | /* amiga specific timer functions */ |
99 | static unsigned long amiga_gettimeoffset(void); | 99 | static unsigned long amiga_gettimeoffset(void); |
100 | static int a3000_hwclk(int, struct rtc_time *); | ||
101 | static int a2000_hwclk(int, struct rtc_time *); | ||
102 | static int amiga_set_clock_mmss(unsigned long); | ||
103 | static unsigned int amiga_get_ss(void); | ||
104 | extern void amiga_mksound(unsigned int count, unsigned int ticks); | 100 | extern void amiga_mksound(unsigned int count, unsigned int ticks); |
105 | static void amiga_reset(void); | 101 | static void amiga_reset(void); |
106 | extern void amiga_init_sound(void); | 102 | extern void amiga_init_sound(void); |
@@ -138,10 +134,6 @@ static struct { | |||
138 | } | 134 | } |
139 | }; | 135 | }; |
140 | 136 | ||
141 | static struct resource rtc_resource = { | ||
142 | .start = 0x00dc0000, .end = 0x00dcffff | ||
143 | }; | ||
144 | |||
145 | static struct resource ram_resource[NUM_MEMINFO]; | 137 | static struct resource ram_resource[NUM_MEMINFO]; |
146 | 138 | ||
147 | 139 | ||
@@ -387,15 +379,6 @@ void __init config_amiga(void) | |||
387 | mach_get_model = amiga_get_model; | 379 | mach_get_model = amiga_get_model; |
388 | mach_get_hardware_list = amiga_get_hardware_list; | 380 | mach_get_hardware_list = amiga_get_hardware_list; |
389 | mach_gettimeoffset = amiga_gettimeoffset; | 381 | mach_gettimeoffset = amiga_gettimeoffset; |
390 | if (AMIGAHW_PRESENT(A3000_CLK)) { | ||
391 | mach_hwclk = a3000_hwclk; | ||
392 | rtc_resource.name = "A3000 RTC"; | ||
393 | request_resource(&iomem_resource, &rtc_resource); | ||
394 | } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ { | ||
395 | mach_hwclk = a2000_hwclk; | ||
396 | rtc_resource.name = "A2000 RTC"; | ||
397 | request_resource(&iomem_resource, &rtc_resource); | ||
398 | } | ||
399 | 382 | ||
400 | /* | 383 | /* |
401 | * default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI | 384 | * default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI |
@@ -404,8 +387,6 @@ void __init config_amiga(void) | |||
404 | */ | 387 | */ |
405 | mach_max_dma_address = 0xffffffff; | 388 | mach_max_dma_address = 0xffffffff; |
406 | 389 | ||
407 | mach_set_clock_mmss = amiga_set_clock_mmss; | ||
408 | mach_get_ss = amiga_get_ss; | ||
409 | mach_reset = amiga_reset; | 390 | mach_reset = amiga_reset; |
410 | #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE) | 391 | #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE) |
411 | mach_beep = amiga_mksound; | 392 | mach_beep = amiga_mksound; |
@@ -530,161 +511,6 @@ static unsigned long amiga_gettimeoffset(void) | |||
530 | return ticks + offset; | 511 | return ticks + offset; |
531 | } | 512 | } |
532 | 513 | ||
533 | static int a3000_hwclk(int op, struct rtc_time *t) | ||
534 | { | ||
535 | tod_3000.cntrl1 = TOD3000_CNTRL1_HOLD; | ||
536 | |||
537 | if (!op) { /* read */ | ||
538 | t->tm_sec = tod_3000.second1 * 10 + tod_3000.second2; | ||
539 | t->tm_min = tod_3000.minute1 * 10 + tod_3000.minute2; | ||
540 | t->tm_hour = tod_3000.hour1 * 10 + tod_3000.hour2; | ||
541 | t->tm_mday = tod_3000.day1 * 10 + tod_3000.day2; | ||
542 | t->tm_wday = tod_3000.weekday; | ||
543 | t->tm_mon = tod_3000.month1 * 10 + tod_3000.month2 - 1; | ||
544 | t->tm_year = tod_3000.year1 * 10 + tod_3000.year2; | ||
545 | if (t->tm_year <= 69) | ||
546 | t->tm_year += 100; | ||
547 | } else { | ||
548 | tod_3000.second1 = t->tm_sec / 10; | ||
549 | tod_3000.second2 = t->tm_sec % 10; | ||
550 | tod_3000.minute1 = t->tm_min / 10; | ||
551 | tod_3000.minute2 = t->tm_min % 10; | ||
552 | tod_3000.hour1 = t->tm_hour / 10; | ||
553 | tod_3000.hour2 = t->tm_hour % 10; | ||
554 | tod_3000.day1 = t->tm_mday / 10; | ||
555 | tod_3000.day2 = t->tm_mday % 10; | ||
556 | if (t->tm_wday != -1) | ||
557 | tod_3000.weekday = t->tm_wday; | ||
558 | tod_3000.month1 = (t->tm_mon + 1) / 10; | ||
559 | tod_3000.month2 = (t->tm_mon + 1) % 10; | ||
560 | if (t->tm_year >= 100) | ||
561 | t->tm_year -= 100; | ||
562 | tod_3000.year1 = t->tm_year / 10; | ||
563 | tod_3000.year2 = t->tm_year % 10; | ||
564 | } | ||
565 | |||
566 | tod_3000.cntrl1 = TOD3000_CNTRL1_FREE; | ||
567 | |||
568 | return 0; | ||
569 | } | ||
570 | |||
571 | static int a2000_hwclk(int op, struct rtc_time *t) | ||
572 | { | ||
573 | int cnt = 5; | ||
574 | |||
575 | tod_2000.cntrl1 = TOD2000_CNTRL1_HOLD; | ||
576 | |||
577 | while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt) { | ||
578 | tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD; | ||
579 | udelay(70); | ||
580 | tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD; | ||
581 | --cnt; | ||
582 | } | ||
583 | |||
584 | if (!cnt) | ||
585 | printk(KERN_INFO "hwclk: timed out waiting for RTC (0x%x)\n", | ||
586 | tod_2000.cntrl1); | ||
587 | |||
588 | if (!op) { /* read */ | ||
589 | t->tm_sec = tod_2000.second1 * 10 + tod_2000.second2; | ||
590 | t->tm_min = tod_2000.minute1 * 10 + tod_2000.minute2; | ||
591 | t->tm_hour = (tod_2000.hour1 & 3) * 10 + tod_2000.hour2; | ||
592 | t->tm_mday = tod_2000.day1 * 10 + tod_2000.day2; | ||
593 | t->tm_wday = tod_2000.weekday; | ||
594 | t->tm_mon = tod_2000.month1 * 10 + tod_2000.month2 - 1; | ||
595 | t->tm_year = tod_2000.year1 * 10 + tod_2000.year2; | ||
596 | if (t->tm_year <= 69) | ||
597 | t->tm_year += 100; | ||
598 | |||
599 | if (!(tod_2000.cntrl3 & TOD2000_CNTRL3_24HMODE)) { | ||
600 | if (!(tod_2000.hour1 & TOD2000_HOUR1_PM) && t->tm_hour == 12) | ||
601 | t->tm_hour = 0; | ||
602 | else if ((tod_2000.hour1 & TOD2000_HOUR1_PM) && t->tm_hour != 12) | ||
603 | t->tm_hour += 12; | ||
604 | } | ||
605 | } else { | ||
606 | tod_2000.second1 = t->tm_sec / 10; | ||
607 | tod_2000.second2 = t->tm_sec % 10; | ||
608 | tod_2000.minute1 = t->tm_min / 10; | ||
609 | tod_2000.minute2 = t->tm_min % 10; | ||
610 | if (tod_2000.cntrl3 & TOD2000_CNTRL3_24HMODE) | ||
611 | tod_2000.hour1 = t->tm_hour / 10; | ||
612 | else if (t->tm_hour >= 12) | ||
613 | tod_2000.hour1 = TOD2000_HOUR1_PM + | ||
614 | (t->tm_hour - 12) / 10; | ||
615 | else | ||
616 | tod_2000.hour1 = t->tm_hour / 10; | ||
617 | tod_2000.hour2 = t->tm_hour % 10; | ||
618 | tod_2000.day1 = t->tm_mday / 10; | ||
619 | tod_2000.day2 = t->tm_mday % 10; | ||
620 | if (t->tm_wday != -1) | ||
621 | tod_2000.weekday = t->tm_wday; | ||
622 | tod_2000.month1 = (t->tm_mon + 1) / 10; | ||
623 | tod_2000.month2 = (t->tm_mon + 1) % 10; | ||
624 | if (t->tm_year >= 100) | ||
625 | t->tm_year -= 100; | ||
626 | tod_2000.year1 = t->tm_year / 10; | ||
627 | tod_2000.year2 = t->tm_year % 10; | ||
628 | } | ||
629 | |||
630 | tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD; | ||
631 | |||
632 | return 0; | ||
633 | } | ||
634 | |||
635 | static int amiga_set_clock_mmss(unsigned long nowtime) | ||
636 | { | ||
637 | short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; | ||
638 | |||
639 | if (AMIGAHW_PRESENT(A3000_CLK)) { | ||
640 | tod_3000.cntrl1 = TOD3000_CNTRL1_HOLD; | ||
641 | |||
642 | tod_3000.second1 = real_seconds / 10; | ||
643 | tod_3000.second2 = real_seconds % 10; | ||
644 | tod_3000.minute1 = real_minutes / 10; | ||
645 | tod_3000.minute2 = real_minutes % 10; | ||
646 | |||
647 | tod_3000.cntrl1 = TOD3000_CNTRL1_FREE; | ||
648 | } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ { | ||
649 | int cnt = 5; | ||
650 | |||
651 | tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD; | ||
652 | |||
653 | while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt) { | ||
654 | tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD; | ||
655 | udelay(70); | ||
656 | tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD; | ||
657 | --cnt; | ||
658 | } | ||
659 | |||
660 | if (!cnt) | ||
661 | printk(KERN_INFO "set_clock_mmss: timed out waiting for RTC (0x%x)\n", tod_2000.cntrl1); | ||
662 | |||
663 | tod_2000.second1 = real_seconds / 10; | ||
664 | tod_2000.second2 = real_seconds % 10; | ||
665 | tod_2000.minute1 = real_minutes / 10; | ||
666 | tod_2000.minute2 = real_minutes % 10; | ||
667 | |||
668 | tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD; | ||
669 | } | ||
670 | |||
671 | return 0; | ||
672 | } | ||
673 | |||
674 | static unsigned int amiga_get_ss(void) | ||
675 | { | ||
676 | unsigned int s; | ||
677 | |||
678 | if (AMIGAHW_PRESENT(A3000_CLK)) { | ||
679 | tod_3000.cntrl1 = TOD3000_CNTRL1_HOLD; | ||
680 | s = tod_3000.second1 * 10 + tod_3000.second2; | ||
681 | tod_3000.cntrl1 = TOD3000_CNTRL1_FREE; | ||
682 | } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ { | ||
683 | s = tod_2000.second1 * 10 + tod_2000.second2; | ||
684 | } | ||
685 | return s; | ||
686 | } | ||
687 | |||
688 | static NORET_TYPE void amiga_reset(void) | 514 | static NORET_TYPE void amiga_reset(void) |
689 | ATTRIB_NORET; | 515 | ATTRIB_NORET; |
690 | 516 | ||
diff --git a/arch/m68k/amiga/platform.c b/arch/m68k/amiga/platform.c index 38f18bf14737..7fd8b41723ea 100644 --- a/arch/m68k/amiga/platform.c +++ b/arch/m68k/amiga/platform.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/zorro.h> | 11 | #include <linux/zorro.h> |
12 | 12 | ||
13 | #include <asm/amigahw.h> | 13 | #include <asm/amigahw.h> |
14 | #include <asm/amigayle.h> | ||
14 | 15 | ||
15 | 16 | ||
16 | #ifdef CONFIG_ZORRO | 17 | #ifdef CONFIG_ZORRO |
@@ -55,11 +56,77 @@ static int __init amiga_init_bus(void) | |||
55 | 56 | ||
56 | subsys_initcall(amiga_init_bus); | 57 | subsys_initcall(amiga_init_bus); |
57 | 58 | ||
58 | #endif /* CONFIG_ZORRO */ | 59 | |
60 | static int z_dev_present(zorro_id id) | ||
61 | { | ||
62 | unsigned int i; | ||
63 | |||
64 | for (i = 0; i < zorro_num_autocon; i++) | ||
65 | if (zorro_autocon[i].rom.er_Manufacturer == ZORRO_MANUF(id) && | ||
66 | zorro_autocon[i].rom.er_Product == ZORRO_PROD(id)) | ||
67 | return 1; | ||
68 | |||
69 | return 0; | ||
70 | } | ||
71 | |||
72 | #else /* !CONFIG_ZORRO */ | ||
73 | |||
74 | static inline int z_dev_present(zorro_id id) { return 0; } | ||
75 | |||
76 | #endif /* !CONFIG_ZORRO */ | ||
77 | |||
78 | |||
79 | static const struct resource a3000_scsi_resource __initconst = { | ||
80 | .start = 0xdd0000, | ||
81 | .end = 0xdd00ff, | ||
82 | .flags = IORESOURCE_MEM, | ||
83 | }; | ||
84 | |||
85 | |||
86 | static const struct resource a4000t_scsi_resource __initconst = { | ||
87 | .start = 0xdd0000, | ||
88 | .end = 0xdd0fff, | ||
89 | .flags = IORESOURCE_MEM, | ||
90 | }; | ||
91 | |||
92 | |||
93 | static const struct resource a1200_ide_resource __initconst = { | ||
94 | .start = 0xda0000, | ||
95 | .end = 0xda1fff, | ||
96 | .flags = IORESOURCE_MEM, | ||
97 | }; | ||
98 | |||
99 | static const struct gayle_ide_platform_data a1200_ide_pdata __initconst = { | ||
100 | .base = 0xda0000, | ||
101 | .irqport = 0xda9000, | ||
102 | .explicit_ack = 1, | ||
103 | }; | ||
104 | |||
105 | |||
106 | static const struct resource a4000_ide_resource __initconst = { | ||
107 | .start = 0xdd2000, | ||
108 | .end = 0xdd3fff, | ||
109 | .flags = IORESOURCE_MEM, | ||
110 | }; | ||
111 | |||
112 | static const struct gayle_ide_platform_data a4000_ide_pdata __initconst = { | ||
113 | .base = 0xdd2020, | ||
114 | .irqport = 0xdd3020, | ||
115 | .explicit_ack = 0, | ||
116 | }; | ||
117 | |||
118 | |||
119 | static const struct resource amiga_rtc_resource __initconst = { | ||
120 | .start = 0x00dc0000, | ||
121 | .end = 0x00dcffff, | ||
122 | .flags = IORESOURCE_MEM, | ||
123 | }; | ||
59 | 124 | ||
60 | 125 | ||
61 | static int __init amiga_init_devices(void) | 126 | static int __init amiga_init_devices(void) |
62 | { | 127 | { |
128 | struct platform_device *pdev; | ||
129 | |||
63 | if (!MACH_IS_AMIGA) | 130 | if (!MACH_IS_AMIGA) |
64 | return -ENODEV; | 131 | return -ENODEV; |
65 | 132 | ||
@@ -77,6 +144,53 @@ static int __init amiga_init_devices(void) | |||
77 | if (AMIGAHW_PRESENT(AMI_FLOPPY)) | 144 | if (AMIGAHW_PRESENT(AMI_FLOPPY)) |
78 | platform_device_register_simple("amiga-floppy", -1, NULL, 0); | 145 | platform_device_register_simple("amiga-floppy", -1, NULL, 0); |
79 | 146 | ||
147 | if (AMIGAHW_PRESENT(A3000_SCSI)) | ||
148 | platform_device_register_simple("amiga-a3000-scsi", -1, | ||
149 | &a3000_scsi_resource, 1); | ||
150 | |||
151 | if (AMIGAHW_PRESENT(A4000_SCSI)) | ||
152 | platform_device_register_simple("amiga-a4000t-scsi", -1, | ||
153 | &a4000t_scsi_resource, 1); | ||
154 | |||
155 | if (AMIGAHW_PRESENT(A1200_IDE) || | ||
156 | z_dev_present(ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE)) { | ||
157 | pdev = platform_device_register_simple("amiga-gayle-ide", -1, | ||
158 | &a1200_ide_resource, 1); | ||
159 | platform_device_add_data(pdev, &a1200_ide_pdata, | ||
160 | sizeof(a1200_ide_pdata)); | ||
161 | } | ||
162 | |||
163 | if (AMIGAHW_PRESENT(A4000_IDE)) { | ||
164 | pdev = platform_device_register_simple("amiga-gayle-ide", -1, | ||
165 | &a4000_ide_resource, 1); | ||
166 | platform_device_add_data(pdev, &a4000_ide_pdata, | ||
167 | sizeof(a4000_ide_pdata)); | ||
168 | } | ||
169 | |||
170 | |||
171 | /* other I/O hardware */ | ||
172 | if (AMIGAHW_PRESENT(AMI_KEYBOARD)) | ||
173 | platform_device_register_simple("amiga-keyboard", -1, NULL, 0); | ||
174 | |||
175 | if (AMIGAHW_PRESENT(AMI_MOUSE)) | ||
176 | platform_device_register_simple("amiga-mouse", -1, NULL, 0); | ||
177 | |||
178 | if (AMIGAHW_PRESENT(AMI_SERIAL)) | ||
179 | platform_device_register_simple("amiga-serial", -1, NULL, 0); | ||
180 | |||
181 | if (AMIGAHW_PRESENT(AMI_PARALLEL)) | ||
182 | platform_device_register_simple("amiga-parallel", -1, NULL, 0); | ||
183 | |||
184 | |||
185 | /* real time clocks */ | ||
186 | if (AMIGAHW_PRESENT(A2000_CLK)) | ||
187 | platform_device_register_simple("rtc-msm6242", -1, | ||
188 | &amiga_rtc_resource, 1); | ||
189 | |||
190 | if (AMIGAHW_PRESENT(A3000_CLK)) | ||
191 | platform_device_register_simple("rtc-rp5c01", -1, | ||
192 | &amiga_rtc_resource, 1); | ||
193 | |||
80 | return 0; | 194 | return 0; |
81 | } | 195 | } |
82 | 196 | ||
diff --git a/arch/m68k/include/asm/amigayle.h b/arch/m68k/include/asm/amigayle.h index bb5a6aa329f3..a01453d9c231 100644 --- a/arch/m68k/include/asm/amigayle.h +++ b/arch/m68k/include/asm/amigayle.h | |||
@@ -104,4 +104,10 @@ struct GAYLE { | |||
104 | #define GAYLE_CFG_250NS 0x00 | 104 | #define GAYLE_CFG_250NS 0x00 |
105 | #define GAYLE_CFG_720NS 0x0c | 105 | #define GAYLE_CFG_720NS 0x0c |
106 | 106 | ||
107 | struct gayle_ide_platform_data { | ||
108 | unsigned long base; | ||
109 | unsigned long irqport; | ||
110 | int explicit_ack; /* A1200 IDE needs explicit ack */ | ||
111 | }; | ||
112 | |||
107 | #endif /* asm-m68k/amigayle.h */ | 113 | #endif /* asm-m68k/amigayle.h */ |
diff --git a/arch/m68k/include/asm/atomic.h b/arch/m68k/include/asm/atomic.h index 8d29145ebb27..eab36dcacf6c 100644 --- a/arch/m68k/include/asm/atomic.h +++ b/arch/m68k/include/asm/atomic.h | |||
@@ -3,3 +3,5 @@ | |||
3 | #else | 3 | #else |
4 | #include "atomic_mm.h" | 4 | #include "atomic_mm.h" |
5 | #endif | 5 | #endif |
6 | |||
7 | #include <asm-generic/atomic64.h> | ||
diff --git a/arch/m68k/include/asm/cache.h b/arch/m68k/include/asm/cache.h index fed3fd30de7e..ecafbe1718c3 100644 --- a/arch/m68k/include/asm/cache.h +++ b/arch/m68k/include/asm/cache.h | |||
@@ -8,4 +8,6 @@ | |||
8 | #define L1_CACHE_SHIFT 4 | 8 | #define L1_CACHE_SHIFT 4 |
9 | #define L1_CACHE_BYTES (1<< L1_CACHE_SHIFT) | 9 | #define L1_CACHE_BYTES (1<< L1_CACHE_SHIFT) |
10 | 10 | ||
11 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | ||
12 | |||
11 | #endif | 13 | #endif |
diff --git a/arch/m68k/include/asm/scatterlist.h b/arch/m68k/include/asm/scatterlist.h index e27ad902b1cf..175da06c6b95 100644 --- a/arch/m68k/include/asm/scatterlist.h +++ b/arch/m68k/include/asm/scatterlist.h | |||
@@ -1,23 +1,9 @@ | |||
1 | #ifndef _M68K_SCATTERLIST_H | 1 | #ifndef _M68K_SCATTERLIST_H |
2 | #define _M68K_SCATTERLIST_H | 2 | #define _M68K_SCATTERLIST_H |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | unsigned int length; | ||
13 | |||
14 | dma_addr_t dma_address; /* A place to hang host-specific addresses at. */ | ||
15 | }; | ||
16 | 5 | ||
17 | /* This is bogus and should go away. */ | 6 | /* This is bogus and should go away. */ |
18 | #define ISA_DMA_THRESHOLD (0x00ffffff) | 7 | #define ISA_DMA_THRESHOLD (0x00ffffff) |
19 | 8 | ||
20 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
21 | #define sg_dma_len(sg) ((sg)->length) | ||
22 | |||
23 | #endif /* !(_M68K_SCATTERLIST_H) */ | 9 | #endif /* !(_M68K_SCATTERLIST_H) */ |
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S index 9f1784f586b9..a91b2713451d 100644 --- a/arch/m68knommu/kernel/vmlinux.lds.S +++ b/arch/m68knommu/kernel/vmlinux.lds.S | |||
@@ -57,7 +57,7 @@ SECTIONS { | |||
57 | .romvec : { | 57 | .romvec : { |
58 | __rom_start = . ; | 58 | __rom_start = . ; |
59 | _romvec = .; | 59 | _romvec = .; |
60 | *(.data.initvect) | 60 | *(.data..initvect) |
61 | } > romvec | 61 | } > romvec |
62 | #endif | 62 | #endif |
63 | 63 | ||
@@ -68,7 +68,7 @@ SECTIONS { | |||
68 | TEXT_TEXT | 68 | TEXT_TEXT |
69 | SCHED_TEXT | 69 | SCHED_TEXT |
70 | LOCK_TEXT | 70 | LOCK_TEXT |
71 | *(.text.lock) | 71 | *(.text..lock) |
72 | 72 | ||
73 | . = ALIGN(16); /* Exception table */ | 73 | . = ALIGN(16); /* Exception table */ |
74 | __start___ex_table = .; | 74 | __start___ex_table = .; |
diff --git a/arch/m68knommu/platform/68360/head-ram.S b/arch/m68knommu/platform/68360/head-ram.S index 2ef06242398b..8eb94fb6b971 100644 --- a/arch/m68knommu/platform/68360/head-ram.S +++ b/arch/m68knommu/platform/68360/head-ram.S | |||
@@ -280,7 +280,7 @@ _dprbase: | |||
280 | * and then overwritten as needed. | 280 | * and then overwritten as needed. |
281 | */ | 281 | */ |
282 | 282 | ||
283 | .section ".data.initvect","awx" | 283 | .section ".data..initvect","awx" |
284 | .long RAMEND /* Reset: Initial Stack Pointer - 0. */ | 284 | .long RAMEND /* Reset: Initial Stack Pointer - 0. */ |
285 | .long _start /* Reset: Initial Program Counter - 1. */ | 285 | .long _start /* Reset: Initial Program Counter - 1. */ |
286 | .long buserr /* Bus Error - 2. */ | 286 | .long buserr /* Bus Error - 2. */ |
diff --git a/arch/m68knommu/platform/68360/head-rom.S b/arch/m68knommu/platform/68360/head-rom.S index 62ecf4144b3b..97510e55b802 100644 --- a/arch/m68knommu/platform/68360/head-rom.S +++ b/arch/m68knommu/platform/68360/head-rom.S | |||
@@ -291,7 +291,7 @@ _dprbase: | |||
291 | * and then overwritten as needed. | 291 | * and then overwritten as needed. |
292 | */ | 292 | */ |
293 | 293 | ||
294 | .section ".data.initvect","awx" | 294 | .section ".data..initvect","awx" |
295 | .long RAMEND /* Reset: Initial Stack Pointer - 0. */ | 295 | .long RAMEND /* Reset: Initial Stack Pointer - 0. */ |
296 | .long _start /* Reset: Initial Program Counter - 1. */ | 296 | .long _start /* Reset: Initial Program Counter - 1. */ |
297 | .long buserr /* Bus Error - 2. */ | 297 | .long buserr /* Bus Error - 2. */ |
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h index de493f86d28f..464ff32bee3d 100644 --- a/arch/microblaze/include/asm/page.h +++ b/arch/microblaze/include/asm/page.h | |||
@@ -34,6 +34,8 @@ | |||
34 | /* MS be sure that SLAB allocates aligned objects */ | 34 | /* MS be sure that SLAB allocates aligned objects */ |
35 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | 35 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES |
36 | 36 | ||
37 | #define ARCH_SLAB_MINALIGN L1_CACHE_BYTES | ||
38 | |||
37 | #define PAGE_UP(addr) (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1))) | 39 | #define PAGE_UP(addr) (((addr)+((PAGE_SIZE)-1))&(~((PAGE_SIZE)-1))) |
38 | #define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1))) | 40 | #define PAGE_DOWN(addr) ((addr)&(~((PAGE_SIZE)-1))) |
39 | 41 | ||
diff --git a/arch/microblaze/include/asm/scatterlist.h b/arch/microblaze/include/asm/scatterlist.h index 35d786fe93ae..dc4a8900cc80 100644 --- a/arch/microblaze/include/asm/scatterlist.h +++ b/arch/microblaze/include/asm/scatterlist.h | |||
@@ -1 +1,3 @@ | |||
1 | #include <asm-generic/scatterlist.h> | 1 | #include <asm-generic/scatterlist.h> |
2 | |||
3 | #define ISA_DMA_THRESHOLD (~0UL) | ||
diff --git a/arch/microblaze/kernel/dma.c b/arch/microblaze/kernel/dma.c index 9dcd90b5df55..79c74659f204 100644 --- a/arch/microblaze/kernel/dma.c +++ b/arch/microblaze/kernel/dma.c | |||
@@ -90,7 +90,6 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, | |||
90 | /* FIXME this part of code is untested */ | 90 | /* FIXME this part of code is untested */ |
91 | for_each_sg(sgl, sg, nents, i) { | 91 | for_each_sg(sgl, sg, nents, i) { |
92 | sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev); | 92 | sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev); |
93 | sg->dma_length = sg->length; | ||
94 | __dma_sync_page(page_to_phys(sg_page(sg)), sg->offset, | 93 | __dma_sync_page(page_to_phys(sg_page(sg)), sg->offset, |
95 | sg->length, direction); | 94 | sg->length, direction); |
96 | } | 95 | } |
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c index 9cb782b8e036..23be25fec4d6 100644 --- a/arch/microblaze/pci/pci-common.c +++ b/arch/microblaze/pci/pci-common.c | |||
@@ -1277,6 +1277,7 @@ void pcibios_allocate_bus_resources(struct pci_bus *bus) | |||
1277 | printk(KERN_WARNING "PCI: Cannot allocate resource region " | 1277 | printk(KERN_WARNING "PCI: Cannot allocate resource region " |
1278 | "%d of PCI bridge %d, will remap\n", i, bus->number); | 1278 | "%d of PCI bridge %d, will remap\n", i, bus->number); |
1279 | clear_resource: | 1279 | clear_resource: |
1280 | res->start = res->end = 0; | ||
1280 | res->flags = 0; | 1281 | res->flags = 0; |
1281 | } | 1282 | } |
1282 | 1283 | ||
diff --git a/arch/mips/include/asm/scatterlist.h b/arch/mips/include/asm/scatterlist.h index 83d69fe17c9f..9af65e79be36 100644 --- a/arch/mips/include/asm/scatterlist.h +++ b/arch/mips/include/asm/scatterlist.h | |||
@@ -1,27 +1,7 @@ | |||
1 | #ifndef __ASM_SCATTERLIST_H | 1 | #ifndef __ASM_SCATTERLIST_H |
2 | #define __ASM_SCATTERLIST_H | 2 | #define __ASM_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <asm-generic/scatterlist.h> |
5 | |||
6 | struct scatterlist { | ||
7 | #ifdef CONFIG_DEBUG_SG | ||
8 | unsigned long sg_magic; | ||
9 | #endif | ||
10 | unsigned long page_link; | ||
11 | unsigned int offset; | ||
12 | dma_addr_t dma_address; | ||
13 | unsigned int length; | ||
14 | }; | ||
15 | |||
16 | /* | ||
17 | * These macros should be used after a pci_map_sg call has been done | ||
18 | * to get bus addresses of each of the SG entries and their lengths. | ||
19 | * You should only work with the number of sg entries pci_map_sg | ||
20 | * returns, or alternatively stop on the first sg_dma_len(sg) which | ||
21 | * is 0. | ||
22 | */ | ||
23 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
24 | #define sg_dma_len(sg) ((sg)->length) | ||
25 | 5 | ||
26 | #define ISA_DMA_THRESHOLD (0x00ffffffUL) | 6 | #define ISA_DMA_THRESHOLD (0x00ffffffUL) |
27 | 7 | ||
diff --git a/arch/mips/lasat/image/head.S b/arch/mips/lasat/image/head.S index efb95f2609c2..e0ecda92c40a 100644 --- a/arch/mips/lasat/image/head.S +++ b/arch/mips/lasat/image/head.S | |||
@@ -1,7 +1,7 @@ | |||
1 | #include <asm/lasat/head.h> | 1 | #include <asm/lasat/head.h> |
2 | 2 | ||
3 | .text | 3 | .text |
4 | .section .text.start, "ax" | 4 | .section .text..start, "ax" |
5 | .set noreorder | 5 | .set noreorder |
6 | .set mips3 | 6 | .set mips3 |
7 | 7 | ||
diff --git a/arch/mips/lasat/image/romscript.normal b/arch/mips/lasat/image/romscript.normal index 988f8ad189cb..0864c963e188 100644 --- a/arch/mips/lasat/image/romscript.normal +++ b/arch/mips/lasat/image/romscript.normal | |||
@@ -4,7 +4,7 @@ SECTIONS | |||
4 | { | 4 | { |
5 | .text : | 5 | .text : |
6 | { | 6 | { |
7 | *(.text.start) | 7 | *(.text..start) |
8 | } | 8 | } |
9 | 9 | ||
10 | /* Data in ROM */ | 10 | /* Data in ROM */ |
diff --git a/arch/mn10300/include/asm/scatterlist.h b/arch/mn10300/include/asm/scatterlist.h index 67535901b9ff..7bd00b9e030d 100644 --- a/arch/mn10300/include/asm/scatterlist.h +++ b/arch/mn10300/include/asm/scatterlist.h | |||
@@ -11,45 +11,8 @@ | |||
11 | #ifndef _ASM_SCATTERLIST_H | 11 | #ifndef _ASM_SCATTERLIST_H |
12 | #define _ASM_SCATTERLIST_H | 12 | #define _ASM_SCATTERLIST_H |
13 | 13 | ||
14 | #include <asm/types.h> | 14 | #include <asm-generic/scatterlist.h> |
15 | |||
16 | /* | ||
17 | * Drivers must set either ->address or (preferred) page and ->offset | ||
18 | * to indicate where data must be transferred to/from. | ||
19 | * | ||
20 | * Using page is recommended since it handles highmem data as well as | ||
21 | * low mem. ->address is restricted to data which has a virtual mapping, and | ||
22 | * it will go away in the future. Updating to page can be automated very | ||
23 | * easily -- something like | ||
24 | * | ||
25 | * sg->address = some_ptr; | ||
26 | * | ||
27 | * can be rewritten as | ||
28 | * | ||
29 | * sg_set_page(virt_to_page(some_ptr)); | ||
30 | * sg->offset = (unsigned long) some_ptr & ~PAGE_MASK; | ||
31 | * | ||
32 | * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens | ||
33 | */ | ||
34 | struct scatterlist { | ||
35 | #ifdef CONFIG_DEBUG_SG | ||
36 | unsigned long sg_magic; | ||
37 | #endif | ||
38 | unsigned long page_link; | ||
39 | unsigned int offset; /* for highmem, page offset */ | ||
40 | dma_addr_t dma_address; | ||
41 | unsigned int length; | ||
42 | }; | ||
43 | 15 | ||
44 | #define ISA_DMA_THRESHOLD (0x00ffffff) | 16 | #define ISA_DMA_THRESHOLD (0x00ffffff) |
45 | 17 | ||
46 | /* | ||
47 | * These macros should be used after a pci_map_sg call has been done | ||
48 | * to get bus addresses of each of the SG entries and their lengths. | ||
49 | * You should only work with the number of sg entries pci_map_sg | ||
50 | * returns. | ||
51 | */ | ||
52 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
53 | #define sg_dma_len(sg) ((sg)->length) | ||
54 | |||
55 | #endif /* _ASM_SCATTERLIST_H */ | 18 | #endif /* _ASM_SCATTERLIST_H */ |
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c index 53bb17d0f068..81f153fa51b4 100644 --- a/arch/mn10300/mm/fault.c +++ b/arch/mn10300/mm/fault.c | |||
@@ -338,11 +338,10 @@ no_context: | |||
338 | */ | 338 | */ |
339 | out_of_memory: | 339 | out_of_memory: |
340 | up_read(&mm->mmap_sem); | 340 | up_read(&mm->mmap_sem); |
341 | monitor_signal(regs); | 341 | if ((fault_code & MMUFCR_xFC_ACCESS) != MMUFCR_xFC_ACCESS_USR) |
342 | printk(KERN_ALERT "VM: killing process %s\n", tsk->comm); | 342 | goto no_context; |
343 | if ((fault_code & MMUFCR_xFC_ACCESS) == MMUFCR_xFC_ACCESS_USR) | 343 | pagefault_out_of_memory(); |
344 | do_exit(SIGKILL); | 344 | return; |
345 | goto no_context; | ||
346 | 345 | ||
347 | do_sigbus: | 346 | do_sigbus: |
348 | up_read(&mm->mmap_sem); | 347 | up_read(&mm->mmap_sem); |
diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.c b/arch/mn10300/unit-asb2305/pci-asb2305.c index d6119b879a98..45b40ac6c464 100644 --- a/arch/mn10300/unit-asb2305/pci-asb2305.c +++ b/arch/mn10300/unit-asb2305/pci-asb2305.c | |||
@@ -117,6 +117,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list) | |||
117 | * Invalidate the resource to prevent | 117 | * Invalidate the resource to prevent |
118 | * child resource allocations in this | 118 | * child resource allocations in this |
119 | * range. */ | 119 | * range. */ |
120 | r->start = r->end = 0; | ||
120 | r->flags = 0; | 121 | r->flags = 0; |
121 | } | 122 | } |
122 | } | 123 | } |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 9c4da3d63bfb..05a366a5c4d5 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -98,6 +98,9 @@ config STACKTRACE_SUPPORT | |||
98 | config NEED_DMA_MAP_STATE | 98 | config NEED_DMA_MAP_STATE |
99 | def_bool y | 99 | def_bool y |
100 | 100 | ||
101 | config NEED_SG_DMA_LENGTH | ||
102 | def_bool y | ||
103 | |||
101 | config ISA_DMA_API | 104 | config ISA_DMA_API |
102 | bool | 105 | bool |
103 | 106 | ||
diff --git a/arch/parisc/include/asm/cache.h b/arch/parisc/include/asm/cache.h index 32c2cca74345..45effe6978fa 100644 --- a/arch/parisc/include/asm/cache.h +++ b/arch/parisc/include/asm/cache.h | |||
@@ -28,7 +28,7 @@ | |||
28 | 28 | ||
29 | #define SMP_CACHE_BYTES L1_CACHE_BYTES | 29 | #define SMP_CACHE_BYTES L1_CACHE_BYTES |
30 | 30 | ||
31 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 31 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
32 | 32 | ||
33 | void parisc_cache_init(void); /* initializes cache-flushing */ | 33 | void parisc_cache_init(void); /* initializes cache-flushing */ |
34 | void disable_sr_hashing_asm(int); /* low level support for above */ | 34 | void disable_sr_hashing_asm(int); /* low level support for above */ |
diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h index 477277739da5..4556d820128a 100644 --- a/arch/parisc/include/asm/cacheflush.h +++ b/arch/parisc/include/asm/cacheflush.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _PARISC_CACHEFLUSH_H | 2 | #define _PARISC_CACHEFLUSH_H |
3 | 3 | ||
4 | #include <linux/mm.h> | 4 | #include <linux/mm.h> |
5 | #include <linux/uaccess.h> | ||
5 | 6 | ||
6 | /* The usual comment is "Caches aren't brain-dead on the <architecture>". | 7 | /* The usual comment is "Caches aren't brain-dead on the <architecture>". |
7 | * Unfortunately, that doesn't apply to PA-RISC. */ | 8 | * Unfortunately, that doesn't apply to PA-RISC. */ |
@@ -125,11 +126,20 @@ static inline void *kmap(struct page *page) | |||
125 | 126 | ||
126 | #define kunmap(page) kunmap_parisc(page_address(page)) | 127 | #define kunmap(page) kunmap_parisc(page_address(page)) |
127 | 128 | ||
128 | #define kmap_atomic(page, idx) page_address(page) | 129 | static inline void *kmap_atomic(struct page *page, enum km_type idx) |
130 | { | ||
131 | pagefault_disable(); | ||
132 | return page_address(page); | ||
133 | } | ||
129 | 134 | ||
130 | #define kunmap_atomic(addr, idx) kunmap_parisc(addr) | 135 | static inline void kunmap_atomic(void *addr, enum km_type idx) |
136 | { | ||
137 | kunmap_parisc(addr); | ||
138 | pagefault_enable(); | ||
139 | } | ||
131 | 140 | ||
132 | #define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn)) | 141 | #define kmap_atomic_prot(page, idx, prot) kmap_atomic(page, idx) |
142 | #define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx)) | ||
133 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) | 143 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) |
134 | #endif | 144 | #endif |
135 | 145 | ||
diff --git a/arch/parisc/include/asm/scatterlist.h b/arch/parisc/include/asm/scatterlist.h index 62269b31ebf4..2c3b79b54b28 100644 --- a/arch/parisc/include/asm/scatterlist.h +++ b/arch/parisc/include/asm/scatterlist.h | |||
@@ -3,25 +3,9 @@ | |||
3 | 3 | ||
4 | #include <asm/page.h> | 4 | #include <asm/page.h> |
5 | #include <asm/types.h> | 5 | #include <asm/types.h> |
6 | 6 | #include <asm-generic/scatterlist.h> | |
7 | struct scatterlist { | ||
8 | #ifdef CONFIG_DEBUG_SG | ||
9 | unsigned long sg_magic; | ||
10 | #endif | ||
11 | unsigned long page_link; | ||
12 | unsigned int offset; | ||
13 | |||
14 | unsigned int length; | ||
15 | |||
16 | /* an IOVA can be 64-bits on some PA-Risc platforms. */ | ||
17 | dma_addr_t iova; /* I/O Virtual Address */ | ||
18 | __u32 iova_length; /* bytes mapped */ | ||
19 | }; | ||
20 | |||
21 | #define sg_virt_addr(sg) ((unsigned long)sg_virt(sg)) | ||
22 | #define sg_dma_address(sg) ((sg)->iova) | ||
23 | #define sg_dma_len(sg) ((sg)->iova_length) | ||
24 | 7 | ||
25 | #define ISA_DMA_THRESHOLD (~0UL) | 8 | #define ISA_DMA_THRESHOLD (~0UL) |
9 | #define sg_virt_addr(sg) ((unsigned long)sg_virt(sg)) | ||
26 | 10 | ||
27 | #endif /* _ASM_PARISC_SCATTERLIST_H */ | 11 | #endif /* _ASM_PARISC_SCATTERLIST_H */ |
diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h index 4653c77bf9d1..2ab4af58ecb9 100644 --- a/arch/parisc/include/asm/system.h +++ b/arch/parisc/include/asm/system.h | |||
@@ -174,7 +174,7 @@ static inline void set_eiem(unsigned long val) | |||
174 | }) | 174 | }) |
175 | 175 | ||
176 | #ifdef CONFIG_SMP | 176 | #ifdef CONFIG_SMP |
177 | # define __lock_aligned __attribute__((__section__(".data.lock_aligned"))) | 177 | # define __lock_aligned __attribute__((__section__(".data..lock_aligned"))) |
178 | #endif | 178 | #endif |
179 | 179 | ||
180 | #define arch_align_stack(x) (x) | 180 | #define arch_align_stack(x) (x) |
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c index ec787b411e9a..dcd55103a4bb 100644 --- a/arch/parisc/kernel/asm-offsets.c +++ b/arch/parisc/kernel/asm-offsets.c | |||
@@ -45,8 +45,12 @@ | |||
45 | #else | 45 | #else |
46 | #define FRAME_SIZE 64 | 46 | #define FRAME_SIZE 64 |
47 | #endif | 47 | #endif |
48 | #define FRAME_ALIGN 64 | ||
48 | 49 | ||
49 | #define align(x,y) (((x)+FRAME_SIZE+(y)-1) - (((x)+(y)-1)%(y))) | 50 | /* Add FRAME_SIZE to the size x and align it to y. All definitions |
51 | * that use align_frame will include space for a frame. | ||
52 | */ | ||
53 | #define align_frame(x,y) (((x)+FRAME_SIZE+(y)-1) - (((x)+(y)-1)%(y))) | ||
50 | 54 | ||
51 | int main(void) | 55 | int main(void) |
52 | { | 56 | { |
@@ -146,7 +150,8 @@ int main(void) | |||
146 | DEFINE(TASK_PT_IOR, offsetof(struct task_struct, thread.regs.ior)); | 150 | DEFINE(TASK_PT_IOR, offsetof(struct task_struct, thread.regs.ior)); |
147 | BLANK(); | 151 | BLANK(); |
148 | DEFINE(TASK_SZ, sizeof(struct task_struct)); | 152 | DEFINE(TASK_SZ, sizeof(struct task_struct)); |
149 | DEFINE(TASK_SZ_ALGN, align(sizeof(struct task_struct), 64)); | 153 | /* TASK_SZ_ALGN includes space for a stack frame. */ |
154 | DEFINE(TASK_SZ_ALGN, align_frame(sizeof(struct task_struct), FRAME_ALIGN)); | ||
150 | BLANK(); | 155 | BLANK(); |
151 | DEFINE(PT_PSW, offsetof(struct pt_regs, gr[ 0])); | 156 | DEFINE(PT_PSW, offsetof(struct pt_regs, gr[ 0])); |
152 | DEFINE(PT_GR1, offsetof(struct pt_regs, gr[ 1])); | 157 | DEFINE(PT_GR1, offsetof(struct pt_regs, gr[ 1])); |
@@ -233,7 +238,8 @@ int main(void) | |||
233 | DEFINE(PT_ISR, offsetof(struct pt_regs, isr)); | 238 | DEFINE(PT_ISR, offsetof(struct pt_regs, isr)); |
234 | DEFINE(PT_IOR, offsetof(struct pt_regs, ior)); | 239 | DEFINE(PT_IOR, offsetof(struct pt_regs, ior)); |
235 | DEFINE(PT_SIZE, sizeof(struct pt_regs)); | 240 | DEFINE(PT_SIZE, sizeof(struct pt_regs)); |
236 | DEFINE(PT_SZ_ALGN, align(sizeof(struct pt_regs), 64)); | 241 | /* PT_SZ_ALGN includes space for a stack frame. */ |
242 | DEFINE(PT_SZ_ALGN, align_frame(sizeof(struct pt_regs), FRAME_ALIGN)); | ||
237 | BLANK(); | 243 | BLANK(); |
238 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); | 244 | DEFINE(TI_TASK, offsetof(struct thread_info, task)); |
239 | DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain)); | 245 | DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain)); |
@@ -242,7 +248,8 @@ int main(void) | |||
242 | DEFINE(TI_SEGMENT, offsetof(struct thread_info, addr_limit)); | 248 | DEFINE(TI_SEGMENT, offsetof(struct thread_info, addr_limit)); |
243 | DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); | 249 | DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); |
244 | DEFINE(THREAD_SZ, sizeof(struct thread_info)); | 250 | DEFINE(THREAD_SZ, sizeof(struct thread_info)); |
245 | DEFINE(THREAD_SZ_ALGN, align(sizeof(struct thread_info), 64)); | 251 | /* THREAD_SZ_ALGN includes space for a stack frame. */ |
252 | DEFINE(THREAD_SZ_ALGN, align_frame(sizeof(struct thread_info), FRAME_ALIGN)); | ||
246 | BLANK(); | 253 | BLANK(); |
247 | DEFINE(ICACHE_BASE, offsetof(struct pdc_cache_info, ic_base)); | 254 | DEFINE(ICACHE_BASE, offsetof(struct pdc_cache_info, ic_base)); |
248 | DEFINE(ICACHE_STRIDE, offsetof(struct pdc_cache_info, ic_stride)); | 255 | DEFINE(ICACHE_STRIDE, offsetof(struct pdc_cache_info, ic_stride)); |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 3a44f7f704fa..6337adef30f6 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -364,32 +364,6 @@ | |||
364 | .align 32 | 364 | .align 32 |
365 | .endm | 365 | .endm |
366 | 366 | ||
367 | /* The following are simple 32 vs 64 bit instruction | ||
368 | * abstractions for the macros */ | ||
369 | .macro EXTR reg1,start,length,reg2 | ||
370 | #ifdef CONFIG_64BIT | ||
371 | extrd,u \reg1,32+(\start),\length,\reg2 | ||
372 | #else | ||
373 | extrw,u \reg1,\start,\length,\reg2 | ||
374 | #endif | ||
375 | .endm | ||
376 | |||
377 | .macro DEP reg1,start,length,reg2 | ||
378 | #ifdef CONFIG_64BIT | ||
379 | depd \reg1,32+(\start),\length,\reg2 | ||
380 | #else | ||
381 | depw \reg1,\start,\length,\reg2 | ||
382 | #endif | ||
383 | .endm | ||
384 | |||
385 | .macro DEPI val,start,length,reg | ||
386 | #ifdef CONFIG_64BIT | ||
387 | depdi \val,32+(\start),\length,\reg | ||
388 | #else | ||
389 | depwi \val,\start,\length,\reg | ||
390 | #endif | ||
391 | .endm | ||
392 | |||
393 | /* In LP64, the space contains part of the upper 32 bits of the | 367 | /* In LP64, the space contains part of the upper 32 bits of the |
394 | * fault. We have to extract this and place it in the va, | 368 | * fault. We have to extract this and place it in the va, |
395 | * zeroing the corresponding bits in the space register */ | 369 | * zeroing the corresponding bits in the space register */ |
@@ -442,19 +416,19 @@ | |||
442 | */ | 416 | */ |
443 | .macro L2_ptep pmd,pte,index,va,fault | 417 | .macro L2_ptep pmd,pte,index,va,fault |
444 | #if PT_NLEVELS == 3 | 418 | #if PT_NLEVELS == 3 |
445 | EXTR \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index | 419 | extru \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index |
446 | #else | 420 | #else |
447 | EXTR \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index | 421 | extru \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index |
448 | #endif | 422 | #endif |
449 | DEP %r0,31,PAGE_SHIFT,\pmd /* clear offset */ | 423 | dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */ |
450 | copy %r0,\pte | 424 | copy %r0,\pte |
451 | ldw,s \index(\pmd),\pmd | 425 | ldw,s \index(\pmd),\pmd |
452 | bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault | 426 | bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault |
453 | DEP %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ | 427 | dep %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ |
454 | copy \pmd,%r9 | 428 | copy \pmd,%r9 |
455 | SHLREG %r9,PxD_VALUE_SHIFT,\pmd | 429 | SHLREG %r9,PxD_VALUE_SHIFT,\pmd |
456 | EXTR \va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index | 430 | extru \va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index |
457 | DEP %r0,31,PAGE_SHIFT,\pmd /* clear offset */ | 431 | dep %r0,31,PAGE_SHIFT,\pmd /* clear offset */ |
458 | shladd \index,BITS_PER_PTE_ENTRY,\pmd,\pmd | 432 | shladd \index,BITS_PER_PTE_ENTRY,\pmd,\pmd |
459 | LDREG %r0(\pmd),\pte /* pmd is now pte */ | 433 | LDREG %r0(\pmd),\pte /* pmd is now pte */ |
460 | bb,>=,n \pte,_PAGE_PRESENT_BIT,\fault | 434 | bb,>=,n \pte,_PAGE_PRESENT_BIT,\fault |
@@ -605,7 +579,7 @@ | |||
605 | depdi 0,31,32,\tmp | 579 | depdi 0,31,32,\tmp |
606 | #endif | 580 | #endif |
607 | copy \va,\tmp1 | 581 | copy \va,\tmp1 |
608 | DEPI 0,31,23,\tmp1 | 582 | depi 0,31,23,\tmp1 |
609 | cmpb,COND(<>),n \tmp,\tmp1,\fault | 583 | cmpb,COND(<>),n \tmp,\tmp1,\fault |
610 | ldi (_PAGE_DIRTY|_PAGE_WRITE|_PAGE_READ),\prot | 584 | ldi (_PAGE_DIRTY|_PAGE_WRITE|_PAGE_READ),\prot |
611 | depd,z \prot,8,7,\prot | 585 | depd,z \prot,8,7,\prot |
@@ -997,13 +971,6 @@ intr_restore: | |||
997 | 971 | ||
998 | rfi | 972 | rfi |
999 | nop | 973 | nop |
1000 | nop | ||
1001 | nop | ||
1002 | nop | ||
1003 | nop | ||
1004 | nop | ||
1005 | nop | ||
1006 | nop | ||
1007 | 974 | ||
1008 | #ifndef CONFIG_PREEMPT | 975 | #ifndef CONFIG_PREEMPT |
1009 | # define intr_do_preempt intr_restore | 976 | # define intr_do_preempt intr_restore |
@@ -2076,9 +2043,10 @@ syscall_restore: | |||
2076 | LDREG TASK_PT_GR31(%r1),%r31 /* restore syscall rp */ | 2043 | LDREG TASK_PT_GR31(%r1),%r31 /* restore syscall rp */ |
2077 | 2044 | ||
2078 | /* NOTE: We use rsm/ssm pair to make this operation atomic */ | 2045 | /* NOTE: We use rsm/ssm pair to make this operation atomic */ |
2046 | LDREG TASK_PT_GR30(%r1),%r1 /* Get user sp */ | ||
2079 | rsm PSW_SM_I, %r0 | 2047 | rsm PSW_SM_I, %r0 |
2080 | LDREG TASK_PT_GR30(%r1),%r30 /* restore user sp */ | 2048 | copy %r1,%r30 /* Restore user sp */ |
2081 | mfsp %sr3,%r1 /* Get users space id */ | 2049 | mfsp %sr3,%r1 /* Get user space id */ |
2082 | mtsp %r1,%sr7 /* Restore sr7 */ | 2050 | mtsp %r1,%sr7 /* Restore sr7 */ |
2083 | ssm PSW_SM_I, %r0 | 2051 | ssm PSW_SM_I, %r0 |
2084 | 2052 | ||
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index 0e3d9f9b9e33..4dbdf0ed6fa0 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S | |||
@@ -345,7 +345,7 @@ smp_slave_stext: | |||
345 | ENDPROC(stext) | 345 | ENDPROC(stext) |
346 | 346 | ||
347 | #ifndef CONFIG_64BIT | 347 | #ifndef CONFIG_64BIT |
348 | .section .data.read_mostly | 348 | .section .data..read_mostly |
349 | 349 | ||
350 | .align 4 | 350 | .align 4 |
351 | .export $global$,data | 351 | .export $global$,data |
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c index d020eae6525c..4a91e433416f 100644 --- a/arch/parisc/kernel/init_task.c +++ b/arch/parisc/kernel/init_task.c | |||
@@ -53,11 +53,11 @@ union thread_union init_thread_union __init_task_data | |||
53 | * guarantee that global objects will be laid out in memory in the same order | 53 | * guarantee that global objects will be laid out in memory in the same order |
54 | * as the order of declaration, so put these in different sections and use | 54 | * as the order of declaration, so put these in different sections and use |
55 | * the linker script to order them. */ | 55 | * the linker script to order them. */ |
56 | pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data.vm0.pmd"), aligned(PAGE_SIZE))); | 56 | pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data..vm0.pmd"), aligned(PAGE_SIZE))); |
57 | #endif | 57 | #endif |
58 | 58 | ||
59 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data.vm0.pgd"), aligned(PAGE_SIZE))); | 59 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data..vm0.pgd"), aligned(PAGE_SIZE))); |
60 | pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data.vm0.pte"), aligned(PAGE_SIZE))); | 60 | pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data..vm0.pte"), aligned(PAGE_SIZE))); |
61 | 61 | ||
62 | /* | 62 | /* |
63 | * Initial task structure. | 63 | * Initial task structure. |
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index f5f96021caa0..68e75ce838d6 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S | |||
@@ -47,18 +47,17 @@ ENTRY(linux_gateway_page) | |||
47 | KILL_INSN | 47 | KILL_INSN |
48 | .endr | 48 | .endr |
49 | 49 | ||
50 | /* ADDRESS 0xb0 to 0xb4, lws uses 1 insns for entry */ | 50 | /* ADDRESS 0xb0 to 0xb8, lws uses two insns for entry */ |
51 | /* Light-weight-syscall entry must always be located at 0xb0 */ | 51 | /* Light-weight-syscall entry must always be located at 0xb0 */ |
52 | /* WARNING: Keep this number updated with table size changes */ | 52 | /* WARNING: Keep this number updated with table size changes */ |
53 | #define __NR_lws_entries (2) | 53 | #define __NR_lws_entries (2) |
54 | 54 | ||
55 | lws_entry: | 55 | lws_entry: |
56 | /* Unconditional branch to lws_start, located on the | 56 | gate lws_start, %r0 /* increase privilege */ |
57 | same gateway page */ | 57 | depi 3, 31, 2, %r31 /* Ensure we return into user mode. */ |
58 | b,n lws_start | ||
59 | 58 | ||
60 | /* Fill from 0xb4 to 0xe0 */ | 59 | /* Fill from 0xb8 to 0xe0 */ |
61 | .rept 11 | 60 | .rept 10 |
62 | KILL_INSN | 61 | KILL_INSN |
63 | .endr | 62 | .endr |
64 | 63 | ||
@@ -423,9 +422,6 @@ tracesys_sigexit: | |||
423 | 422 | ||
424 | *********************************************************/ | 423 | *********************************************************/ |
425 | lws_start: | 424 | lws_start: |
426 | /* Gate and ensure we return to userspace */ | ||
427 | gate .+8, %r0 | ||
428 | depi 3, 31, 2, %r31 /* Ensure we return to userspace */ | ||
429 | 425 | ||
430 | #ifdef CONFIG_64BIT | 426 | #ifdef CONFIG_64BIT |
431 | /* FIXME: If we are a 64-bit kernel just | 427 | /* FIXME: If we are a 64-bit kernel just |
@@ -442,7 +438,7 @@ lws_start: | |||
442 | #endif | 438 | #endif |
443 | 439 | ||
444 | /* Is the lws entry number valid? */ | 440 | /* Is the lws entry number valid? */ |
445 | comiclr,>>= __NR_lws_entries, %r20, %r0 | 441 | comiclr,>> __NR_lws_entries, %r20, %r0 |
446 | b,n lws_exit_nosys | 442 | b,n lws_exit_nosys |
447 | 443 | ||
448 | /* WARNING: Trashing sr2 and sr3 */ | 444 | /* WARNING: Trashing sr2 and sr3 */ |
@@ -473,7 +469,7 @@ lws_exit: | |||
473 | /* now reset the lowest bit of sp if it was set */ | 469 | /* now reset the lowest bit of sp if it was set */ |
474 | xor %r30,%r1,%r30 | 470 | xor %r30,%r1,%r30 |
475 | #endif | 471 | #endif |
476 | be,n 0(%sr3, %r31) | 472 | be,n 0(%sr7, %r31) |
477 | 473 | ||
478 | 474 | ||
479 | 475 | ||
@@ -529,7 +525,6 @@ lws_compare_and_swap32: | |||
529 | #endif | 525 | #endif |
530 | 526 | ||
531 | lws_compare_and_swap: | 527 | lws_compare_and_swap: |
532 | #ifdef CONFIG_SMP | ||
533 | /* Load start of lock table */ | 528 | /* Load start of lock table */ |
534 | ldil L%lws_lock_start, %r20 | 529 | ldil L%lws_lock_start, %r20 |
535 | ldo R%lws_lock_start(%r20), %r28 | 530 | ldo R%lws_lock_start(%r20), %r28 |
@@ -572,8 +567,6 @@ cas_wouldblock: | |||
572 | ldo 2(%r0), %r28 /* 2nd case */ | 567 | ldo 2(%r0), %r28 /* 2nd case */ |
573 | b lws_exit /* Contended... */ | 568 | b lws_exit /* Contended... */ |
574 | ldo -EAGAIN(%r0), %r21 /* Spin in userspace */ | 569 | ldo -EAGAIN(%r0), %r21 /* Spin in userspace */ |
575 | #endif | ||
576 | /* CONFIG_SMP */ | ||
577 | 570 | ||
578 | /* | 571 | /* |
579 | prev = *addr; | 572 | prev = *addr; |
@@ -601,13 +594,11 @@ cas_action: | |||
601 | 1: ldw 0(%sr3,%r26), %r28 | 594 | 1: ldw 0(%sr3,%r26), %r28 |
602 | sub,<> %r28, %r25, %r0 | 595 | sub,<> %r28, %r25, %r0 |
603 | 2: stw %r24, 0(%sr3,%r26) | 596 | 2: stw %r24, 0(%sr3,%r26) |
604 | #ifdef CONFIG_SMP | ||
605 | /* Free lock */ | 597 | /* Free lock */ |
606 | stw %r20, 0(%sr2,%r20) | 598 | stw %r20, 0(%sr2,%r20) |
607 | # if ENABLE_LWS_DEBUG | 599 | #if ENABLE_LWS_DEBUG |
608 | /* Clear thread register indicator */ | 600 | /* Clear thread register indicator */ |
609 | stw %r0, 4(%sr2,%r20) | 601 | stw %r0, 4(%sr2,%r20) |
610 | # endif | ||
611 | #endif | 602 | #endif |
612 | /* Return to userspace, set no error */ | 603 | /* Return to userspace, set no error */ |
613 | b lws_exit | 604 | b lws_exit |
@@ -615,12 +606,10 @@ cas_action: | |||
615 | 606 | ||
616 | 3: | 607 | 3: |
617 | /* Error occured on load or store */ | 608 | /* Error occured on load or store */ |
618 | #ifdef CONFIG_SMP | ||
619 | /* Free lock */ | 609 | /* Free lock */ |
620 | stw %r20, 0(%sr2,%r20) | 610 | stw %r20, 0(%sr2,%r20) |
621 | # if ENABLE_LWS_DEBUG | 611 | #if ENABLE_LWS_DEBUG |
622 | stw %r0, 4(%sr2,%r20) | 612 | stw %r0, 4(%sr2,%r20) |
623 | # endif | ||
624 | #endif | 613 | #endif |
625 | b lws_exit | 614 | b lws_exit |
626 | ldo -EFAULT(%r0),%r21 /* set errno */ | 615 | ldo -EFAULT(%r0),%r21 /* set errno */ |
@@ -672,7 +661,6 @@ ENTRY(sys_call_table64) | |||
672 | END(sys_call_table64) | 661 | END(sys_call_table64) |
673 | #endif | 662 | #endif |
674 | 663 | ||
675 | #ifdef CONFIG_SMP | ||
676 | /* | 664 | /* |
677 | All light-weight-syscall atomic operations | 665 | All light-weight-syscall atomic operations |
678 | will use this set of locks | 666 | will use this set of locks |
@@ -694,8 +682,6 @@ ENTRY(lws_lock_start) | |||
694 | .endr | 682 | .endr |
695 | END(lws_lock_start) | 683 | END(lws_lock_start) |
696 | .previous | 684 | .previous |
697 | #endif | ||
698 | /* CONFIG_SMP for lws_lock_start */ | ||
699 | 685 | ||
700 | .end | 686 | .end |
701 | 687 | ||
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index 9dab4a4e09f7..d64a6bbec2aa 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -94,8 +94,8 @@ SECTIONS | |||
94 | 94 | ||
95 | /* PA-RISC locks requires 16-byte alignment */ | 95 | /* PA-RISC locks requires 16-byte alignment */ |
96 | . = ALIGN(16); | 96 | . = ALIGN(16); |
97 | .data.lock_aligned : { | 97 | .data..lock_aligned : { |
98 | *(.data.lock_aligned) | 98 | *(.data..lock_aligned) |
99 | } | 99 | } |
100 | 100 | ||
101 | /* End of data section */ | 101 | /* End of data section */ |
@@ -105,10 +105,10 @@ SECTIONS | |||
105 | __bss_start = .; | 105 | __bss_start = .; |
106 | /* page table entries need to be PAGE_SIZE aligned */ | 106 | /* page table entries need to be PAGE_SIZE aligned */ |
107 | . = ALIGN(PAGE_SIZE); | 107 | . = ALIGN(PAGE_SIZE); |
108 | .data.vmpages : { | 108 | .data..vmpages : { |
109 | *(.data.vm0.pmd) | 109 | *(.data..vm0.pmd) |
110 | *(.data.vm0.pgd) | 110 | *(.data..vm0.pgd) |
111 | *(.data.vm0.pte) | 111 | *(.data..vm0.pte) |
112 | } | 112 | } |
113 | .bss : { | 113 | .bss : { |
114 | *(.bss) | 114 | *(.bss) |
diff --git a/arch/parisc/math-emu/decode_exc.c b/arch/parisc/math-emu/decode_exc.c index 3ca1c6149218..27a7492ddb0d 100644 --- a/arch/parisc/math-emu/decode_exc.c +++ b/arch/parisc/math-emu/decode_exc.c | |||
@@ -342,6 +342,7 @@ decode_fpu(unsigned int Fpu_register[], unsigned int trap_counts[]) | |||
342 | return SIGNALCODE(SIGFPE, FPE_FLTINV); | 342 | return SIGNALCODE(SIGFPE, FPE_FLTINV); |
343 | case DIVISIONBYZEROEXCEPTION: | 343 | case DIVISIONBYZEROEXCEPTION: |
344 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); | 344 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); |
345 | Clear_excp_register(exception_index); | ||
345 | return SIGNALCODE(SIGFPE, FPE_FLTDIV); | 346 | return SIGNALCODE(SIGFPE, FPE_FLTDIV); |
346 | case INEXACTEXCEPTION: | 347 | case INEXACTEXCEPTION: |
347 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); | 348 | update_trap_counts(Fpu_register, aflags, bflags, trap_counts); |
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index c6afbfc95770..18162ce4261e 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c | |||
@@ -264,8 +264,7 @@ no_context: | |||
264 | 264 | ||
265 | out_of_memory: | 265 | out_of_memory: |
266 | up_read(&mm->mmap_sem); | 266 | up_read(&mm->mmap_sem); |
267 | printk(KERN_CRIT "VM: killing process %s\n", current->comm); | 267 | if (!user_mode(regs)) |
268 | if (user_mode(regs)) | 268 | goto no_context; |
269 | do_group_exit(SIGKILL); | 269 | pagefault_out_of_memory(); |
270 | goto no_context; | ||
271 | } | 270 | } |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c4c4549c22bb..328774bd41ee 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -351,7 +351,7 @@ config ARCH_ENABLE_MEMORY_HOTREMOVE | |||
351 | 351 | ||
352 | config KEXEC | 352 | config KEXEC |
353 | bool "kexec system call (EXPERIMENTAL)" | 353 | bool "kexec system call (EXPERIMENTAL)" |
354 | depends on PPC_BOOK3S && EXPERIMENTAL | 354 | depends on (PPC_BOOK3S || (FSL_BOOKE && !SMP)) && EXPERIMENTAL |
355 | help | 355 | help |
356 | kexec is a system call that implements the ability to shutdown your | 356 | kexec is a system call that implements the ability to shutdown your |
357 | current kernel, and to start another kernel. It is like a reboot | 357 | current kernel, and to start another kernel. It is like a reboot |
@@ -663,6 +663,9 @@ config ZONE_DMA | |||
663 | config NEED_DMA_MAP_STATE | 663 | config NEED_DMA_MAP_STATE |
664 | def_bool (PPC64 || NOT_COHERENT_CACHE) | 664 | def_bool (PPC64 || NOT_COHERENT_CACHE) |
665 | 665 | ||
666 | config NEED_SG_DMA_LENGTH | ||
667 | def_bool y | ||
668 | |||
666 | config GENERIC_ISA_DMA | 669 | config GENERIC_ISA_DMA |
667 | bool | 670 | bool |
668 | depends on PPC64 || POWER4 || 6xx && !CPM2 | 671 | depends on PPC64 || POWER4 || 6xx && !CPM2 |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 1a54a3b3a3fa..42dcd3f4ad7b 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -112,6 +112,11 @@ KBUILD_CFLAGS += $(call cc-option,-mspe=no) | |||
112 | # kernel considerably. | 112 | # kernel considerably. |
113 | KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time) | 113 | KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time) |
114 | 114 | ||
115 | # FIXME: the module load should be taught about the additional relocs | ||
116 | # generated by this. | ||
117 | # revert to pre-gcc-4.4 behaviour of .eh_frame | ||
118 | KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm) | ||
119 | |||
115 | # Never use string load/store instructions as they are | 120 | # Never use string load/store instructions as they are |
116 | # often slow when they are implemented at all | 121 | # often slow when they are implemented at all |
117 | KBUILD_CFLAGS += -mno-string | 122 | KBUILD_CFLAGS += -mno-string |
diff --git a/arch/powerpc/boot/4xx.c b/arch/powerpc/boot/4xx.c index 27db8938827a..9d3bd4c45a24 100644 --- a/arch/powerpc/boot/4xx.c +++ b/arch/powerpc/boot/4xx.c | |||
@@ -519,7 +519,7 @@ void ibm440ep_fixup_clocks(unsigned int sys_clk, | |||
519 | { | 519 | { |
520 | unsigned int plb_clk = __ibm440eplike_fixup_clocks(sys_clk, tmr_clk, 0); | 520 | unsigned int plb_clk = __ibm440eplike_fixup_clocks(sys_clk, tmr_clk, 0); |
521 | 521 | ||
522 | /* serial clocks beed fixup based on int/ext */ | 522 | /* serial clocks need fixup based on int/ext */ |
523 | eplike_fixup_uart_clk(0, "/plb/opb/serial@ef600300", ser_clk, plb_clk); | 523 | eplike_fixup_uart_clk(0, "/plb/opb/serial@ef600300", ser_clk, plb_clk); |
524 | eplike_fixup_uart_clk(1, "/plb/opb/serial@ef600400", ser_clk, plb_clk); | 524 | eplike_fixup_uart_clk(1, "/plb/opb/serial@ef600400", ser_clk, plb_clk); |
525 | eplike_fixup_uart_clk(2, "/plb/opb/serial@ef600500", ser_clk, plb_clk); | 525 | eplike_fixup_uart_clk(2, "/plb/opb/serial@ef600500", ser_clk, plb_clk); |
@@ -532,7 +532,7 @@ void ibm440gx_fixup_clocks(unsigned int sys_clk, | |||
532 | { | 532 | { |
533 | unsigned int plb_clk = __ibm440eplike_fixup_clocks(sys_clk, tmr_clk, 1); | 533 | unsigned int plb_clk = __ibm440eplike_fixup_clocks(sys_clk, tmr_clk, 1); |
534 | 534 | ||
535 | /* serial clocks beed fixup based on int/ext */ | 535 | /* serial clocks need fixup based on int/ext */ |
536 | eplike_fixup_uart_clk(0, "/plb/opb/serial@40000200", ser_clk, plb_clk); | 536 | eplike_fixup_uart_clk(0, "/plb/opb/serial@40000200", ser_clk, plb_clk); |
537 | eplike_fixup_uart_clk(1, "/plb/opb/serial@40000300", ser_clk, plb_clk); | 537 | eplike_fixup_uart_clk(1, "/plb/opb/serial@40000300", ser_clk, plb_clk); |
538 | } | 538 | } |
@@ -543,10 +543,10 @@ void ibm440spe_fixup_clocks(unsigned int sys_clk, | |||
543 | { | 543 | { |
544 | unsigned int plb_clk = __ibm440eplike_fixup_clocks(sys_clk, tmr_clk, 1); | 544 | unsigned int plb_clk = __ibm440eplike_fixup_clocks(sys_clk, tmr_clk, 1); |
545 | 545 | ||
546 | /* serial clocks beed fixup based on int/ext */ | 546 | /* serial clocks need fixup based on int/ext */ |
547 | eplike_fixup_uart_clk(0, "/plb/opb/serial@10000200", ser_clk, plb_clk); | 547 | eplike_fixup_uart_clk(0, "/plb/opb/serial@f0000200", ser_clk, plb_clk); |
548 | eplike_fixup_uart_clk(1, "/plb/opb/serial@10000300", ser_clk, plb_clk); | 548 | eplike_fixup_uart_clk(1, "/plb/opb/serial@f0000300", ser_clk, plb_clk); |
549 | eplike_fixup_uart_clk(2, "/plb/opb/serial@10000600", ser_clk, plb_clk); | 549 | eplike_fixup_uart_clk(2, "/plb/opb/serial@f0000600", ser_clk, plb_clk); |
550 | } | 550 | } |
551 | 551 | ||
552 | void ibm405gp_fixup_clocks(unsigned int sys_clk, unsigned int ser_clk) | 552 | void ibm405gp_fixup_clocks(unsigned int sys_clk, unsigned int ser_clk) |
diff --git a/arch/powerpc/boot/dts/icon.dts b/arch/powerpc/boot/dts/icon.dts new file mode 100644 index 000000000000..abcd0caeccae --- /dev/null +++ b/arch/powerpc/boot/dts/icon.dts | |||
@@ -0,0 +1,447 @@ | |||
1 | /* | ||
2 | * Device Tree Source for Mosaix Technologies, Inc. ICON board | ||
3 | * | ||
4 | * Copyright 2010 DENX Software Engineering, Stefan Roese <sr@denx.de> | ||
5 | * | ||
6 | * This file is licensed under the terms of the GNU General Public | ||
7 | * License version 2. This program is licensed "as is" without | ||
8 | * any warranty of any kind, whether express or implied. | ||
9 | */ | ||
10 | |||
11 | /dts-v1/; | ||
12 | |||
13 | / { | ||
14 | #address-cells = <2>; | ||
15 | #size-cells = <2>; | ||
16 | model = "mosaixtech,icon"; | ||
17 | compatible = "mosaixtech,icon"; | ||
18 | dcr-parent = <&{/cpus/cpu@0}>; | ||
19 | |||
20 | aliases { | ||
21 | ethernet0 = &EMAC0; | ||
22 | serial0 = &UART0; | ||
23 | serial1 = &UART1; | ||
24 | serial2 = &UART2; | ||
25 | }; | ||
26 | |||
27 | cpus { | ||
28 | #address-cells = <1>; | ||
29 | #size-cells = <0>; | ||
30 | |||
31 | cpu@0 { | ||
32 | device_type = "cpu"; | ||
33 | model = "PowerPC,440SPe"; | ||
34 | reg = <0x00000000>; | ||
35 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
36 | timebase-frequency = <0>; /* Filled in by U-Boot */ | ||
37 | i-cache-line-size = <32>; | ||
38 | d-cache-line-size = <32>; | ||
39 | i-cache-size = <32768>; | ||
40 | d-cache-size = <32768>; | ||
41 | dcr-controller; | ||
42 | dcr-access-method = "native"; | ||
43 | reset-type = <2>; /* Use chip-reset */ | ||
44 | }; | ||
45 | }; | ||
46 | |||
47 | memory { | ||
48 | device_type = "memory"; | ||
49 | reg = <0x0 0x00000000 0x0 0x00000000>; /* Filled in by U-Boot */ | ||
50 | }; | ||
51 | |||
52 | UIC0: interrupt-controller0 { | ||
53 | compatible = "ibm,uic-440spe","ibm,uic"; | ||
54 | interrupt-controller; | ||
55 | cell-index = <0>; | ||
56 | dcr-reg = <0x0c0 0x009>; | ||
57 | #address-cells = <0>; | ||
58 | #size-cells = <0>; | ||
59 | #interrupt-cells = <2>; | ||
60 | }; | ||
61 | |||
62 | UIC1: interrupt-controller1 { | ||
63 | compatible = "ibm,uic-440spe","ibm,uic"; | ||
64 | interrupt-controller; | ||
65 | cell-index = <1>; | ||
66 | dcr-reg = <0x0d0 0x009>; | ||
67 | #address-cells = <0>; | ||
68 | #size-cells = <0>; | ||
69 | #interrupt-cells = <2>; | ||
70 | interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */ | ||
71 | interrupt-parent = <&UIC0>; | ||
72 | }; | ||
73 | |||
74 | UIC2: interrupt-controller2 { | ||
75 | compatible = "ibm,uic-440spe","ibm,uic"; | ||
76 | interrupt-controller; | ||
77 | cell-index = <2>; | ||
78 | dcr-reg = <0x0e0 0x009>; | ||
79 | #address-cells = <0>; | ||
80 | #size-cells = <0>; | ||
81 | #interrupt-cells = <2>; | ||
82 | interrupts = <0xa 0x4 0xb 0x4>; /* cascade */ | ||
83 | interrupt-parent = <&UIC0>; | ||
84 | }; | ||
85 | |||
86 | UIC3: interrupt-controller3 { | ||
87 | compatible = "ibm,uic-440spe","ibm,uic"; | ||
88 | interrupt-controller; | ||
89 | cell-index = <3>; | ||
90 | dcr-reg = <0x0f0 0x009>; | ||
91 | #address-cells = <0>; | ||
92 | #size-cells = <0>; | ||
93 | #interrupt-cells = <2>; | ||
94 | interrupts = <0x10 0x4 0x11 0x4>; /* cascade */ | ||
95 | interrupt-parent = <&UIC0>; | ||
96 | }; | ||
97 | |||
98 | SDR0: sdr { | ||
99 | compatible = "ibm,sdr-440spe"; | ||
100 | dcr-reg = <0x00e 0x002>; | ||
101 | }; | ||
102 | |||
103 | CPR0: cpr { | ||
104 | compatible = "ibm,cpr-440spe"; | ||
105 | dcr-reg = <0x00c 0x002>; | ||
106 | }; | ||
107 | |||
108 | MQ0: mq { | ||
109 | compatible = "ibm,mq-440spe"; | ||
110 | dcr-reg = <0x040 0x020>; | ||
111 | }; | ||
112 | |||
113 | plb { | ||
114 | compatible = "ibm,plb-440spe", "ibm,plb-440gp", "ibm,plb4"; | ||
115 | #address-cells = <2>; | ||
116 | #size-cells = <1>; | ||
117 | /* addr-child addr-parent size */ | ||
118 | ranges = <0x4 0x00100000 0x4 0x00100000 0x00001000 | ||
119 | 0x4 0x00200000 0x4 0x00200000 0x00000400 | ||
120 | 0x4 0xe0000000 0x4 0xe0000000 0x20000000 | ||
121 | 0xc 0x00000000 0xc 0x00000000 0x20000000 | ||
122 | 0xd 0x00000000 0xd 0x00000000 0x80000000 | ||
123 | 0xd 0x80000000 0xd 0x80000000 0x80000000 | ||
124 | 0xe 0x00000000 0xe 0x00000000 0x80000000 | ||
125 | 0xe 0x80000000 0xe 0x80000000 0x80000000 | ||
126 | 0xf 0x00000000 0xf 0x00000000 0x80000000 | ||
127 | 0xf 0x80000000 0xf 0x80000000 0x80000000>; | ||
128 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
129 | |||
130 | SDRAM0: sdram { | ||
131 | compatible = "ibm,sdram-440spe", "ibm,sdram-405gp"; | ||
132 | dcr-reg = <0x010 0x002>; | ||
133 | }; | ||
134 | |||
135 | MAL0: mcmal { | ||
136 | compatible = "ibm,mcmal-440spe", "ibm,mcmal2"; | ||
137 | dcr-reg = <0x180 0x062>; | ||
138 | num-tx-chans = <2>; | ||
139 | num-rx-chans = <1>; | ||
140 | interrupt-parent = <&MAL0>; | ||
141 | interrupts = <0x0 0x1 0x2 0x3 0x4>; | ||
142 | #interrupt-cells = <1>; | ||
143 | #address-cells = <0>; | ||
144 | #size-cells = <0>; | ||
145 | interrupt-map = </*TXEOB*/ 0x0 &UIC1 0x6 0x4 | ||
146 | /*RXEOB*/ 0x1 &UIC1 0x7 0x4 | ||
147 | /*SERR*/ 0x2 &UIC1 0x1 0x4 | ||
148 | /*TXDE*/ 0x3 &UIC1 0x2 0x4 | ||
149 | /*RXDE*/ 0x4 &UIC1 0x3 0x4>; | ||
150 | }; | ||
151 | |||
152 | POB0: opb { | ||
153 | compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb"; | ||
154 | #address-cells = <1>; | ||
155 | #size-cells = <1>; | ||
156 | ranges = <0xe0000000 0x00000004 0xe0000000 0x20000000>; | ||
157 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
158 | |||
159 | EBC0: ebc { | ||
160 | compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc"; | ||
161 | dcr-reg = <0x012 0x002>; | ||
162 | #address-cells = <2>; | ||
163 | #size-cells = <1>; | ||
164 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
165 | /* ranges property is supplied by U-Boot */ | ||
166 | interrupts = <0x5 0x1>; | ||
167 | interrupt-parent = <&UIC1>; | ||
168 | |||
169 | nor_flash@0,0 { | ||
170 | compatible = "cfi-flash"; | ||
171 | bank-width = <2>; | ||
172 | reg = <0x00000000 0x00000000 0x01000000>; | ||
173 | #address-cells = <1>; | ||
174 | #size-cells = <1>; | ||
175 | partition@0 { | ||
176 | label = "kernel"; | ||
177 | reg = <0x00000000 0x001e0000>; | ||
178 | }; | ||
179 | partition@1e0000 { | ||
180 | label = "dtb"; | ||
181 | reg = <0x001e0000 0x00020000>; | ||
182 | }; | ||
183 | partition@200000 { | ||
184 | label = "root"; | ||
185 | reg = <0x00200000 0x00200000>; | ||
186 | }; | ||
187 | partition@400000 { | ||
188 | label = "user"; | ||
189 | reg = <0x00400000 0x00b60000>; | ||
190 | }; | ||
191 | partition@f60000 { | ||
192 | label = "env"; | ||
193 | reg = <0x00f60000 0x00040000>; | ||
194 | }; | ||
195 | partition@fa0000 { | ||
196 | label = "u-boot"; | ||
197 | reg = <0x00fa0000 0x00060000>; | ||
198 | }; | ||
199 | }; | ||
200 | |||
201 | SysACE_CompactFlash: sysace@1,0 { | ||
202 | compatible = "xlnx,sysace"; | ||
203 | interrupt-parent = <&UIC2>; | ||
204 | interrupts = <24 0x4>; | ||
205 | reg = <0x00000001 0x00000000 0x10000>; | ||
206 | }; | ||
207 | }; | ||
208 | |||
209 | UART0: serial@f0000200 { | ||
210 | device_type = "serial"; | ||
211 | compatible = "ns16550"; | ||
212 | reg = <0xf0000200 0x00000008>; | ||
213 | virtual-reg = <0xa0000200>; | ||
214 | clock-frequency = <0>; /* Filled in by U-Boot */ | ||
215 | current-speed = <115200>; | ||
216 | interrupt-parent = <&UIC0>; | ||
217 | interrupts = <0x0 0x4>; | ||
218 | }; | ||
219 | |||
220 | UART1: serial@f0000300 { | ||
221 | device_type = "serial"; | ||
222 | compatible = "ns16550"; | ||
223 | reg = <0xf0000300 0x00000008>; | ||
224 | virtual-reg = <0xa0000300>; | ||
225 | clock-frequency = <0>; | ||
226 | current-speed = <0>; | ||
227 | interrupt-parent = <&UIC0>; | ||
228 | interrupts = <0x1 0x4>; | ||
229 | }; | ||
230 | |||
231 | |||
232 | UART2: serial@f0000600 { | ||
233 | device_type = "serial"; | ||
234 | compatible = "ns16550"; | ||
235 | reg = <0xf0000600 0x00000008>; | ||
236 | virtual-reg = <0xa0000600>; | ||
237 | clock-frequency = <0>; | ||
238 | current-speed = <0>; | ||
239 | interrupt-parent = <&UIC1>; | ||
240 | interrupts = <0x5 0x4>; | ||
241 | }; | ||
242 | |||
243 | IIC0: i2c@f0000400 { | ||
244 | compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic"; | ||
245 | reg = <0xf0000400 0x00000014>; | ||
246 | interrupt-parent = <&UIC0>; | ||
247 | interrupts = <0x2 0x4>; | ||
248 | }; | ||
249 | |||
250 | IIC1: i2c@f0000500 { | ||
251 | compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic"; | ||
252 | reg = <0xf0000500 0x00000014>; | ||
253 | interrupt-parent = <&UIC0>; | ||
254 | interrupts = <0x3 0x4>; | ||
255 | #address-cells = <1>; | ||
256 | #size-cells = <0>; | ||
257 | |||
258 | rtc@68 { | ||
259 | compatible = "stm,m41t00"; | ||
260 | reg = <0x68>; | ||
261 | }; | ||
262 | }; | ||
263 | |||
264 | EMAC0: ethernet@f0000800 { | ||
265 | linux,network-index = <0x0>; | ||
266 | device_type = "network"; | ||
267 | compatible = "ibm,emac-440spe", "ibm,emac4"; | ||
268 | interrupt-parent = <&UIC1>; | ||
269 | interrupts = <0x1c 0x4 0x1d 0x4>; | ||
270 | reg = <0xf0000800 0x00000074>; | ||
271 | local-mac-address = [000000000000]; | ||
272 | mal-device = <&MAL0>; | ||
273 | mal-tx-channel = <0>; | ||
274 | mal-rx-channel = <0>; | ||
275 | cell-index = <0>; | ||
276 | max-frame-size = <9000>; | ||
277 | rx-fifo-size = <4096>; | ||
278 | tx-fifo-size = <2048>; | ||
279 | phy-mode = "gmii"; | ||
280 | phy-map = <0x00000000>; | ||
281 | has-inverted-stacr-oc; | ||
282 | has-new-stacr-staopc; | ||
283 | }; | ||
284 | }; | ||
285 | |||
286 | PCIX0: pci@c0ec00000 { | ||
287 | device_type = "pci"; | ||
288 | #interrupt-cells = <1>; | ||
289 | #size-cells = <2>; | ||
290 | #address-cells = <3>; | ||
291 | compatible = "ibm,plb-pcix-440spe", "ibm,plb-pcix"; | ||
292 | primary; | ||
293 | large-inbound-windows; | ||
294 | enable-msi-hole; | ||
295 | reg = <0x0000000c 0x0ec00000 0x00000008 /* Config space access */ | ||
296 | 0x00000000 0x00000000 0x00000000 /* no IACK cycles */ | ||
297 | 0x0000000c 0x0ed00000 0x00000004 /* Special cycles */ | ||
298 | 0x0000000c 0x0ec80000 0x00000100 /* Internal registers */ | ||
299 | 0x0000000c 0x0ec80100 0x000000fc>; /* Internal messaging registers */ | ||
300 | |||
301 | /* Outbound ranges, one memory and one IO, | ||
302 | * later cannot be changed | ||
303 | */ | ||
304 | ranges = <0x02000000 0x00000000 0x80000000 0x0000000d 0x80000000 0x00000000 0x80000000 | ||
305 | 0x01000000 0x00000000 0x00000000 0x0000000c 0x08000000 0x00000000 0x00010000>; | ||
306 | |||
307 | /* Inbound 4GB range starting at 0 */ | ||
308 | dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>; | ||
309 | |||
310 | /* This drives busses 0 to 0xf */ | ||
311 | bus-range = <0x0 0xf>; | ||
312 | |||
313 | /* PCI-X interrupt (SM502) is routed to extIRQ10 (UIC1, 19) */ | ||
314 | interrupt-map-mask = <0x0 0x0 0x0 0x0>; | ||
315 | interrupt-map = <0x0 0x0 0x0 0x0 &UIC1 19 0x8>; | ||
316 | }; | ||
317 | |||
318 | PCIE0: pciex@d00000000 { | ||
319 | device_type = "pci"; | ||
320 | #interrupt-cells = <1>; | ||
321 | #size-cells = <2>; | ||
322 | #address-cells = <3>; | ||
323 | compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex"; | ||
324 | primary; | ||
325 | port = <0x0>; /* port number */ | ||
326 | reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */ | ||
327 | 0x0000000c 0x10000000 0x00001000>; /* Registers */ | ||
328 | dcr-reg = <0x100 0x020>; | ||
329 | sdr-base = <0x300>; | ||
330 | |||
331 | /* Outbound ranges, one memory and one IO, | ||
332 | * later cannot be changed | ||
333 | */ | ||
334 | ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000 | ||
335 | 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>; | ||
336 | |||
337 | /* Inbound 4GB range starting at 0 */ | ||
338 | dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>; | ||
339 | |||
340 | /* This drives busses 0x10 to 0x1f */ | ||
341 | bus-range = <0x10 0x1f>; | ||
342 | |||
343 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
344 | * to invert PCIe legacy interrupts). | ||
345 | * We are de-swizzling here because the numbers are actually for | ||
346 | * port of the root complex virtual P2P bridge. But I want | ||
347 | * to avoid putting a node for it in the tree, so the numbers | ||
348 | * below are basically de-swizzled numbers. | ||
349 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
350 | */ | ||
351 | interrupt-map-mask = <0x0 0x0 0x0 0x7>; | ||
352 | interrupt-map = < | ||
353 | 0x0 0x0 0x0 0x1 &UIC3 0x0 0x4 /* swizzled int A */ | ||
354 | 0x0 0x0 0x0 0x2 &UIC3 0x1 0x4 /* swizzled int B */ | ||
355 | 0x0 0x0 0x0 0x3 &UIC3 0x2 0x4 /* swizzled int C */ | ||
356 | 0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>; | ||
357 | }; | ||
358 | |||
359 | PCIE1: pciex@d20000000 { | ||
360 | device_type = "pci"; | ||
361 | #interrupt-cells = <1>; | ||
362 | #size-cells = <2>; | ||
363 | #address-cells = <3>; | ||
364 | compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex"; | ||
365 | primary; | ||
366 | port = <0x1>; /* port number */ | ||
367 | reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */ | ||
368 | 0x0000000c 0x10001000 0x00001000>; /* Registers */ | ||
369 | dcr-reg = <0x120 0x020>; | ||
370 | sdr-base = <0x340>; | ||
371 | |||
372 | /* Outbound ranges, one memory and one IO, | ||
373 | * later cannot be changed | ||
374 | */ | ||
375 | ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000 | ||
376 | 0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>; | ||
377 | |||
378 | /* Inbound 4GB range starting at 0 */ | ||
379 | dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>; | ||
380 | |||
381 | /* This drives busses 0x20 to 0x2f */ | ||
382 | bus-range = <0x20 0x2f>; | ||
383 | |||
384 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
385 | * to invert PCIe legacy interrupts). | ||
386 | * We are de-swizzling here because the numbers are actually for | ||
387 | * port of the root complex virtual P2P bridge. But I want | ||
388 | * to avoid putting a node for it in the tree, so the numbers | ||
389 | * below are basically de-swizzled numbers. | ||
390 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
391 | */ | ||
392 | interrupt-map-mask = <0x0 0x0 0x0 0x7>; | ||
393 | interrupt-map = < | ||
394 | 0x0 0x0 0x0 0x1 &UIC3 0x4 0x4 /* swizzled int A */ | ||
395 | 0x0 0x0 0x0 0x2 &UIC3 0x5 0x4 /* swizzled int B */ | ||
396 | 0x0 0x0 0x0 0x3 &UIC3 0x6 0x4 /* swizzled int C */ | ||
397 | 0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>; | ||
398 | }; | ||
399 | |||
400 | I2O: i2o@400100000 { | ||
401 | compatible = "ibm,i2o-440spe"; | ||
402 | reg = <0x00000004 0x00100000 0x100>; | ||
403 | dcr-reg = <0x060 0x020>; | ||
404 | }; | ||
405 | |||
406 | DMA0: dma0@400100100 { | ||
407 | compatible = "ibm,dma-440spe"; | ||
408 | cell-index = <0>; | ||
409 | reg = <0x00000004 0x00100100 0x100>; | ||
410 | dcr-reg = <0x060 0x020>; | ||
411 | interrupt-parent = <&DMA0>; | ||
412 | interrupts = <0 1>; | ||
413 | #interrupt-cells = <1>; | ||
414 | #address-cells = <0>; | ||
415 | #size-cells = <0>; | ||
416 | interrupt-map = < | ||
417 | 0 &UIC0 0x14 4 | ||
418 | 1 &UIC1 0x16 4>; | ||
419 | }; | ||
420 | |||
421 | DMA1: dma1@400100200 { | ||
422 | compatible = "ibm,dma-440spe"; | ||
423 | cell-index = <1>; | ||
424 | reg = <0x00000004 0x00100200 0x100>; | ||
425 | dcr-reg = <0x060 0x020>; | ||
426 | interrupt-parent = <&DMA1>; | ||
427 | interrupts = <0 1>; | ||
428 | #interrupt-cells = <1>; | ||
429 | #address-cells = <0>; | ||
430 | #size-cells = <0>; | ||
431 | interrupt-map = < | ||
432 | 0 &UIC0 0x16 4 | ||
433 | 1 &UIC1 0x16 4>; | ||
434 | }; | ||
435 | |||
436 | xor-accel@400200000 { | ||
437 | compatible = "amcc,xor-accelerator"; | ||
438 | reg = <0x00000004 0x00200000 0x400>; | ||
439 | interrupt-parent = <&UIC1>; | ||
440 | interrupts = <0x1f 4>; | ||
441 | }; | ||
442 | }; | ||
443 | |||
444 | chosen { | ||
445 | linux,stdout-path = "/plb/opb/serial@f0000200"; | ||
446 | }; | ||
447 | }; | ||
diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts index 8cf2c0c88c05..7c3be5e45748 100644 --- a/arch/powerpc/boot/dts/katmai.dts +++ b/arch/powerpc/boot/dts/katmai.dts | |||
@@ -44,6 +44,7 @@ | |||
44 | d-cache-size = <32768>; | 44 | d-cache-size = <32768>; |
45 | dcr-controller; | 45 | dcr-controller; |
46 | dcr-access-method = "native"; | 46 | dcr-access-method = "native"; |
47 | reset-type = <2>; /* Use chip-reset */ | ||
47 | }; | 48 | }; |
48 | }; | 49 | }; |
49 | 50 | ||
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts index 4173af387c63..0f5262452682 100644 --- a/arch/powerpc/boot/dts/mpc8548cds.dts +++ b/arch/powerpc/boot/dts/mpc8548cds.dts | |||
@@ -20,10 +20,8 @@ | |||
20 | aliases { | 20 | aliases { |
21 | ethernet0 = &enet0; | 21 | ethernet0 = &enet0; |
22 | ethernet1 = &enet1; | 22 | ethernet1 = &enet1; |
23 | /* | ||
24 | ethernet2 = &enet2; | 23 | ethernet2 = &enet2; |
25 | ethernet3 = &enet3; | 24 | ethernet3 = &enet3; |
26 | */ | ||
27 | serial0 = &serial0; | 25 | serial0 = &serial0; |
28 | serial1 = &serial1; | 26 | serial1 = &serial1; |
29 | pci0 = &pci0; | 27 | pci0 = &pci0; |
@@ -254,7 +252,6 @@ | |||
254 | }; | 252 | }; |
255 | }; | 253 | }; |
256 | 254 | ||
257 | /* eTSEC 3/4 are currently broken | ||
258 | enet2: ethernet@26000 { | 255 | enet2: ethernet@26000 { |
259 | #address-cells = <1>; | 256 | #address-cells = <1>; |
260 | #size-cells = <1>; | 257 | #size-cells = <1>; |
@@ -310,7 +307,6 @@ | |||
310 | }; | 307 | }; |
311 | }; | 308 | }; |
312 | }; | 309 | }; |
313 | */ | ||
314 | 310 | ||
315 | serial0: serial@4500 { | 311 | serial0: serial@4500 { |
316 | cell-index = <0>; | 312 | cell-index = <0>; |
diff --git a/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts b/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts index 5bd1011fde96..3375c2ab0c32 100644 --- a/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts +++ b/arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts | |||
@@ -215,6 +215,18 @@ | |||
215 | clock-frequency = <0>; | 215 | clock-frequency = <0>; |
216 | }; | 216 | }; |
217 | 217 | ||
218 | msi@41600 { | ||
219 | compatible = "fsl,mpc8572-msi", "fsl,mpic-msi"; | ||
220 | reg = <0x41600 0x80>; | ||
221 | msi-available-ranges = <0 0x80>; | ||
222 | interrupts = < | ||
223 | 0xe0 0 | ||
224 | 0xe1 0 | ||
225 | 0xe2 0 | ||
226 | 0xe3 0>; | ||
227 | interrupt-parent = <&mpic>; | ||
228 | }; | ||
229 | |||
218 | global-utilities@e0000 { //global utilities block | 230 | global-utilities@e0000 { //global utilities block |
219 | compatible = "fsl,mpc8572-guts"; | 231 | compatible = "fsl,mpc8572-guts"; |
220 | reg = <0xe0000 0x1000>; | 232 | reg = <0xe0000 0x1000>; |
@@ -243,8 +255,7 @@ | |||
243 | protected-sources = < | 255 | protected-sources = < |
244 | 31 32 33 37 38 39 /* enet2 enet3 */ | 256 | 31 32 33 37 38 39 /* enet2 enet3 */ |
245 | 76 77 78 79 26 42 /* dma2 pci2 serial*/ | 257 | 76 77 78 79 26 42 /* dma2 pci2 serial*/ |
246 | 0xe0 0xe1 0xe2 0xe3 /* msi */ | 258 | 0xe4 0xe5 0xe6 0xe7 /* msi */ |
247 | 0xe4 0xe5 0xe6 0xe7 | ||
248 | >; | 259 | >; |
249 | }; | 260 | }; |
250 | }; | 261 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts b/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts index 0efc3456e297..e7b477f6a3fe 100644 --- a/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts +++ b/arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts | |||
@@ -154,12 +154,8 @@ | |||
154 | msi@41600 { | 154 | msi@41600 { |
155 | compatible = "fsl,mpc8572-msi", "fsl,mpic-msi"; | 155 | compatible = "fsl,mpc8572-msi", "fsl,mpic-msi"; |
156 | reg = <0x41600 0x80>; | 156 | reg = <0x41600 0x80>; |
157 | msi-available-ranges = <0 0x100>; | 157 | msi-available-ranges = <0x80 0x80>; |
158 | interrupts = < | 158 | interrupts = < |
159 | 0xe0 0 | ||
160 | 0xe1 0 | ||
161 | 0xe2 0 | ||
162 | 0xe3 0 | ||
163 | 0xe4 0 | 159 | 0xe4 0 |
164 | 0xe5 0 | 160 | 0xe5 0 |
165 | 0xe6 0 | 161 | 0xe6 0 |
@@ -190,6 +186,7 @@ | |||
190 | 0x1 0x2 0x3 0x4 /* pci slot */ | 186 | 0x1 0x2 0x3 0x4 /* pci slot */ |
191 | 0x9 0xa 0xb 0xc /* usb */ | 187 | 0x9 0xa 0xb 0xc /* usb */ |
192 | 0x6 0x7 0xe 0x5 /* Audio elgacy SATA */ | 188 | 0x6 0x7 0xe 0x5 /* Audio elgacy SATA */ |
189 | 0xe0 0xe1 0xe2 0xe3 /* msi */ | ||
193 | >; | 190 | >; |
194 | }; | 191 | }; |
195 | }; | 192 | }; |
diff --git a/arch/powerpc/boot/dts/p1021mds.dts b/arch/powerpc/boot/dts/p1021mds.dts new file mode 100644 index 000000000000..7fad2df25981 --- /dev/null +++ b/arch/powerpc/boot/dts/p1021mds.dts | |||
@@ -0,0 +1,698 @@ | |||
1 | /* | ||
2 | * P1021 MDS Device Tree Source | ||
3 | * | ||
4 | * Copyright 2010 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | /dts-v1/; | ||
13 | / { | ||
14 | model = "fsl,P1021"; | ||
15 | compatible = "fsl,P1021MDS"; | ||
16 | #address-cells = <2>; | ||
17 | #size-cells = <2>; | ||
18 | |||
19 | aliases { | ||
20 | serial0 = &serial0; | ||
21 | serial1 = &serial1; | ||
22 | ethernet0 = &enet0; | ||
23 | ethernet1 = &enet1; | ||
24 | ethernet2 = &enet2; | ||
25 | ethernet3 = &enet3; | ||
26 | ethernet4 = &enet4; | ||
27 | pci0 = &pci0; | ||
28 | pci1 = &pci1; | ||
29 | }; | ||
30 | |||
31 | cpus { | ||
32 | #address-cells = <1>; | ||
33 | #size-cells = <0>; | ||
34 | |||
35 | PowerPC,P1021@0 { | ||
36 | device_type = "cpu"; | ||
37 | reg = <0x0>; | ||
38 | next-level-cache = <&L2>; | ||
39 | }; | ||
40 | |||
41 | PowerPC,P1021@1 { | ||
42 | device_type = "cpu"; | ||
43 | reg = <0x1>; | ||
44 | next-level-cache = <&L2>; | ||
45 | }; | ||
46 | }; | ||
47 | |||
48 | memory { | ||
49 | device_type = "memory"; | ||
50 | }; | ||
51 | |||
52 | localbus@ffe05000 { | ||
53 | #address-cells = <2>; | ||
54 | #size-cells = <1>; | ||
55 | compatible = "fsl,p1021-elbc", "fsl,elbc", "simple-bus"; | ||
56 | reg = <0 0xffe05000 0 0x1000>; | ||
57 | interrupts = <19 2>; | ||
58 | interrupt-parent = <&mpic>; | ||
59 | |||
60 | /* NAND Flash, BCSR, PMC0/1*/ | ||
61 | ranges = <0x0 0x0 0x0 0xfc000000 0x02000000 | ||
62 | 0x1 0x0 0x0 0xf8000000 0x00008000 | ||
63 | 0x2 0x0 0x0 0xf8010000 0x00020000 | ||
64 | 0x3 0x0 0x0 0xf8020000 0x00020000>; | ||
65 | |||
66 | nand@0,0 { | ||
67 | #address-cells = <1>; | ||
68 | #size-cells = <1>; | ||
69 | compatible = "fsl,p1021-fcm-nand", | ||
70 | "fsl,elbc-fcm-nand"; | ||
71 | reg = <0x0 0x0 0x40000>; | ||
72 | |||
73 | partition@0 { | ||
74 | /* This location must not be altered */ | ||
75 | /* 1MB for u-boot Bootloader Image */ | ||
76 | reg = <0x0 0x00100000>; | ||
77 | label = "NAND (RO) U-Boot Image"; | ||
78 | read-only; | ||
79 | }; | ||
80 | |||
81 | partition@100000 { | ||
82 | /* 1MB for DTB Image */ | ||
83 | reg = <0x00100000 0x00100000>; | ||
84 | label = "NAND (RO) DTB Image"; | ||
85 | read-only; | ||
86 | }; | ||
87 | |||
88 | partition@200000 { | ||
89 | /* 4MB for Linux Kernel Image */ | ||
90 | reg = <0x00200000 0x00400000>; | ||
91 | label = "NAND (RO) Linux Kernel Image"; | ||
92 | read-only; | ||
93 | }; | ||
94 | |||
95 | partition@600000 { | ||
96 | /* 5MB for Compressed Root file System Image */ | ||
97 | reg = <0x00600000 0x00500000>; | ||
98 | label = "NAND (RO) Compressed RFS Image"; | ||
99 | read-only; | ||
100 | }; | ||
101 | |||
102 | partition@b00000 { | ||
103 | /* 6MB for JFFS2 based Root file System */ | ||
104 | reg = <0x00a00000 0x00600000>; | ||
105 | label = "NAND (RW) JFFS2 Root File System"; | ||
106 | }; | ||
107 | |||
108 | partition@1100000 { | ||
109 | /* 14MB for JFFS2 based Root file System */ | ||
110 | reg = <0x01100000 0x00e00000>; | ||
111 | label = "NAND (RW) Writable User area"; | ||
112 | }; | ||
113 | |||
114 | partition@1f00000 { | ||
115 | /* 1MB for microcode */ | ||
116 | reg = <0x01f00000 0x00100000>; | ||
117 | label = "NAND (RO) QE Ucode"; | ||
118 | read-only; | ||
119 | }; | ||
120 | }; | ||
121 | |||
122 | bcsr@1,0 { | ||
123 | #address-cells = <1>; | ||
124 | #size-cells = <1>; | ||
125 | compatible = "fsl,p1021mds-bcsr"; | ||
126 | reg = <1 0 0x8000>; | ||
127 | ranges = <0 1 0 0x8000>; | ||
128 | }; | ||
129 | |||
130 | pib@2,0 { | ||
131 | compatible = "fsl,p1021mds-pib"; | ||
132 | reg = <2 0 0x10000>; | ||
133 | }; | ||
134 | |||
135 | pib@3,0 { | ||
136 | compatible = "fsl,p1021mds-pib"; | ||
137 | reg = <3 0 0x10000>; | ||
138 | }; | ||
139 | }; | ||
140 | |||
141 | soc@ffe00000 { | ||
142 | |||
143 | #address-cells = <1>; | ||
144 | #size-cells = <1>; | ||
145 | device_type = "soc"; | ||
146 | compatible = "fsl,p1021-immr", "simple-bus"; | ||
147 | ranges = <0x0 0x0 0xffe00000 0x100000>; | ||
148 | bus-frequency = <0>; // Filled out by uboot. | ||
149 | |||
150 | ecm-law@0 { | ||
151 | compatible = "fsl,ecm-law"; | ||
152 | reg = <0x0 0x1000>; | ||
153 | fsl,num-laws = <12>; | ||
154 | }; | ||
155 | |||
156 | ecm@1000 { | ||
157 | compatible = "fsl,p1021-ecm", "fsl,ecm"; | ||
158 | reg = <0x1000 0x1000>; | ||
159 | interrupts = <16 2>; | ||
160 | interrupt-parent = <&mpic>; | ||
161 | }; | ||
162 | |||
163 | memory-controller@2000 { | ||
164 | compatible = "fsl,p1021-memory-controller"; | ||
165 | reg = <0x2000 0x1000>; | ||
166 | interrupt-parent = <&mpic>; | ||
167 | interrupts = <16 2>; | ||
168 | }; | ||
169 | |||
170 | i2c@3000 { | ||
171 | #address-cells = <1>; | ||
172 | #size-cells = <0>; | ||
173 | cell-index = <0>; | ||
174 | compatible = "fsl-i2c"; | ||
175 | reg = <0x3000 0x100>; | ||
176 | interrupts = <43 2>; | ||
177 | interrupt-parent = <&mpic>; | ||
178 | dfsrr; | ||
179 | rtc@68 { | ||
180 | compatible = "dallas,ds1374"; | ||
181 | reg = <0x68>; | ||
182 | }; | ||
183 | }; | ||
184 | |||
185 | i2c@3100 { | ||
186 | #address-cells = <1>; | ||
187 | #size-cells = <0>; | ||
188 | cell-index = <1>; | ||
189 | compatible = "fsl-i2c"; | ||
190 | reg = <0x3100 0x100>; | ||
191 | interrupts = <43 2>; | ||
192 | interrupt-parent = <&mpic>; | ||
193 | dfsrr; | ||
194 | }; | ||
195 | |||
196 | serial0: serial@4500 { | ||
197 | cell-index = <0>; | ||
198 | device_type = "serial"; | ||
199 | compatible = "ns16550"; | ||
200 | reg = <0x4500 0x100>; | ||
201 | clock-frequency = <0>; | ||
202 | interrupts = <42 2>; | ||
203 | interrupt-parent = <&mpic>; | ||
204 | }; | ||
205 | |||
206 | serial1: serial@4600 { | ||
207 | cell-index = <1>; | ||
208 | device_type = "serial"; | ||
209 | compatible = "ns16550"; | ||
210 | reg = <0x4600 0x100>; | ||
211 | clock-frequency = <0>; | ||
212 | interrupts = <42 2>; | ||
213 | interrupt-parent = <&mpic>; | ||
214 | }; | ||
215 | |||
216 | spi@7000 { | ||
217 | cell-index = <0>; | ||
218 | #address-cells = <1>; | ||
219 | #size-cells = <0>; | ||
220 | compatible = "fsl,espi"; | ||
221 | reg = <0x7000 0x1000>; | ||
222 | interrupts = <59 0x2>; | ||
223 | interrupt-parent = <&mpic>; | ||
224 | espi,num-ss-bits = <4>; | ||
225 | mode = "cpu"; | ||
226 | |||
227 | fsl_m25p80@0 { | ||
228 | #address-cells = <1>; | ||
229 | #size-cells = <1>; | ||
230 | compatible = "fsl,espi-flash"; | ||
231 | reg = <0>; | ||
232 | linux,modalias = "fsl_m25p80"; | ||
233 | spi-max-frequency = <40000000>; /* input clock */ | ||
234 | partition@u-boot { | ||
235 | label = "u-boot-spi"; | ||
236 | reg = <0x00000000 0x00100000>; | ||
237 | read-only; | ||
238 | }; | ||
239 | partition@kernel { | ||
240 | label = "kernel-spi"; | ||
241 | reg = <0x00100000 0x00500000>; | ||
242 | read-only; | ||
243 | }; | ||
244 | partition@dtb { | ||
245 | label = "dtb-spi"; | ||
246 | reg = <0x00600000 0x00100000>; | ||
247 | read-only; | ||
248 | }; | ||
249 | partition@fs { | ||
250 | label = "file system-spi"; | ||
251 | reg = <0x00700000 0x00900000>; | ||
252 | }; | ||
253 | }; | ||
254 | }; | ||
255 | |||
256 | gpio: gpio-controller@f000 { | ||
257 | #gpio-cells = <2>; | ||
258 | compatible = "fsl,mpc8572-gpio"; | ||
259 | reg = <0xf000 0x100>; | ||
260 | interrupts = <47 0x2>; | ||
261 | interrupt-parent = <&mpic>; | ||
262 | gpio-controller; | ||
263 | }; | ||
264 | |||
265 | L2: l2-cache-controller@20000 { | ||
266 | compatible = "fsl,p1021-l2-cache-controller"; | ||
267 | reg = <0x20000 0x1000>; | ||
268 | cache-line-size = <32>; // 32 bytes | ||
269 | cache-size = <0x40000>; // L2,256K | ||
270 | interrupt-parent = <&mpic>; | ||
271 | interrupts = <16 2>; | ||
272 | }; | ||
273 | |||
274 | dma@21300 { | ||
275 | #address-cells = <1>; | ||
276 | #size-cells = <1>; | ||
277 | compatible = "fsl,eloplus-dma"; | ||
278 | reg = <0x21300 0x4>; | ||
279 | ranges = <0x0 0x21100 0x200>; | ||
280 | cell-index = <0>; | ||
281 | dma-channel@0 { | ||
282 | compatible = "fsl,eloplus-dma-channel"; | ||
283 | reg = <0x0 0x80>; | ||
284 | cell-index = <0>; | ||
285 | interrupt-parent = <&mpic>; | ||
286 | interrupts = <20 2>; | ||
287 | }; | ||
288 | dma-channel@80 { | ||
289 | compatible = "fsl,eloplus-dma-channel"; | ||
290 | reg = <0x80 0x80>; | ||
291 | cell-index = <1>; | ||
292 | interrupt-parent = <&mpic>; | ||
293 | interrupts = <21 2>; | ||
294 | }; | ||
295 | dma-channel@100 { | ||
296 | compatible = "fsl,eloplus-dma-channel"; | ||
297 | reg = <0x100 0x80>; | ||
298 | cell-index = <2>; | ||
299 | interrupt-parent = <&mpic>; | ||
300 | interrupts = <22 2>; | ||
301 | }; | ||
302 | dma-channel@180 { | ||
303 | compatible = "fsl,eloplus-dma-channel"; | ||
304 | reg = <0x180 0x80>; | ||
305 | cell-index = <3>; | ||
306 | interrupt-parent = <&mpic>; | ||
307 | interrupts = <23 2>; | ||
308 | }; | ||
309 | }; | ||
310 | |||
311 | usb@22000 { | ||
312 | #address-cells = <1>; | ||
313 | #size-cells = <0>; | ||
314 | compatible = "fsl-usb2-dr"; | ||
315 | reg = <0x22000 0x1000>; | ||
316 | interrupt-parent = <&mpic>; | ||
317 | interrupts = <28 0x2>; | ||
318 | phy_type = "ulpi"; | ||
319 | }; | ||
320 | |||
321 | mdio@24000 { | ||
322 | #address-cells = <1>; | ||
323 | #size-cells = <0>; | ||
324 | compatible = "fsl,etsec2-mdio"; | ||
325 | reg = <0x24000 0x1000 0xb0030 0x4>; | ||
326 | |||
327 | phy0: ethernet-phy@0 { | ||
328 | interrupt-parent = <&mpic>; | ||
329 | interrupts = <1 1>; | ||
330 | reg = <0x0>; | ||
331 | }; | ||
332 | phy1: ethernet-phy@1 { | ||
333 | interrupt-parent = <&mpic>; | ||
334 | interrupts = <2 1>; | ||
335 | reg = <0x1>; | ||
336 | }; | ||
337 | phy4: ethernet-phy@4 { | ||
338 | interrupt-parent = <&mpic>; | ||
339 | reg = <0x4>; | ||
340 | }; | ||
341 | }; | ||
342 | |||
343 | mdio@25000 { | ||
344 | #address-cells = <1>; | ||
345 | #size-cells = <0>; | ||
346 | compatible = "fsl,etsec2-tbi"; | ||
347 | reg = <0x25000 0x1000 0xb1030 0x4>; | ||
348 | tbi0: tbi-phy@11 { | ||
349 | reg = <0x11>; | ||
350 | device_type = "tbi-phy"; | ||
351 | }; | ||
352 | }; | ||
353 | |||
354 | enet0: ethernet@B0000 { | ||
355 | #address-cells = <1>; | ||
356 | #size-cells = <1>; | ||
357 | cell-index = <0>; | ||
358 | device_type = "network"; | ||
359 | model = "eTSEC"; | ||
360 | compatible = "fsl,etsec2"; | ||
361 | fsl,num_rx_queues = <0x8>; | ||
362 | fsl,num_tx_queues = <0x8>; | ||
363 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
364 | interrupt-parent = <&mpic>; | ||
365 | phy-handle = <&phy0>; | ||
366 | phy-connection-type = "rgmii-id"; | ||
367 | queue-group@0{ | ||
368 | #address-cells = <1>; | ||
369 | #size-cells = <1>; | ||
370 | reg = <0xB0000 0x1000>; | ||
371 | interrupts = <29 2 30 2 34 2>; | ||
372 | }; | ||
373 | queue-group@1{ | ||
374 | #address-cells = <1>; | ||
375 | #size-cells = <1>; | ||
376 | reg = <0xB4000 0x1000>; | ||
377 | interrupts = <17 2 18 2 24 2>; | ||
378 | }; | ||
379 | }; | ||
380 | |||
381 | enet1: ethernet@B1000 { | ||
382 | #address-cells = <1>; | ||
383 | #size-cells = <1>; | ||
384 | cell-index = <0>; | ||
385 | device_type = "network"; | ||
386 | model = "eTSEC"; | ||
387 | compatible = "fsl,etsec2"; | ||
388 | fsl,num_rx_queues = <0x8>; | ||
389 | fsl,num_tx_queues = <0x8>; | ||
390 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
391 | interrupt-parent = <&mpic>; | ||
392 | phy-handle = <&phy4>; | ||
393 | tbi-handle = <&tbi0>; | ||
394 | phy-connection-type = "sgmii"; | ||
395 | queue-group@0{ | ||
396 | #address-cells = <1>; | ||
397 | #size-cells = <1>; | ||
398 | reg = <0xB1000 0x1000>; | ||
399 | interrupts = <35 2 36 2 40 2>; | ||
400 | }; | ||
401 | queue-group@1{ | ||
402 | #address-cells = <1>; | ||
403 | #size-cells = <1>; | ||
404 | reg = <0xB5000 0x1000>; | ||
405 | interrupts = <51 2 52 2 67 2>; | ||
406 | }; | ||
407 | }; | ||
408 | |||
409 | enet2: ethernet@B2000 { | ||
410 | #address-cells = <1>; | ||
411 | #size-cells = <1>; | ||
412 | cell-index = <0>; | ||
413 | device_type = "network"; | ||
414 | model = "eTSEC"; | ||
415 | compatible = "fsl,etsec2"; | ||
416 | fsl,num_rx_queues = <0x8>; | ||
417 | fsl,num_tx_queues = <0x8>; | ||
418 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
419 | interrupt-parent = <&mpic>; | ||
420 | phy-handle = <&phy1>; | ||
421 | phy-connection-type = "rgmii-id"; | ||
422 | queue-group@0{ | ||
423 | #address-cells = <1>; | ||
424 | #size-cells = <1>; | ||
425 | reg = <0xB2000 0x1000>; | ||
426 | interrupts = <31 2 32 2 33 2>; | ||
427 | }; | ||
428 | queue-group@1{ | ||
429 | #address-cells = <1>; | ||
430 | #size-cells = <1>; | ||
431 | reg = <0xB6000 0x1000>; | ||
432 | interrupts = <25 2 26 2 27 2>; | ||
433 | }; | ||
434 | }; | ||
435 | |||
436 | sdhci@2e000 { | ||
437 | compatible = "fsl,p1021-esdhc", "fsl,esdhc"; | ||
438 | reg = <0x2e000 0x1000>; | ||
439 | interrupts = <72 0x2>; | ||
440 | interrupt-parent = <&mpic>; | ||
441 | /* Filled in by U-Boot */ | ||
442 | clock-frequency = <0>; | ||
443 | }; | ||
444 | |||
445 | crypto@30000 { | ||
446 | compatible = "fsl,sec3.3", "fsl,sec3.1", | ||
447 | "fsl,sec3.0", "fsl,sec2.4", | ||
448 | "fsl,sec2.2", "fsl,sec2.1", "fsl,sec2.0"; | ||
449 | reg = <0x30000 0x10000>; | ||
450 | interrupts = <45 2 58 2>; | ||
451 | interrupt-parent = <&mpic>; | ||
452 | fsl,num-channels = <4>; | ||
453 | fsl,channel-fifo-len = <24>; | ||
454 | fsl,exec-units-mask = <0x97c>; | ||
455 | fsl,descriptor-types-mask = <0x3a30abf>; | ||
456 | }; | ||
457 | |||
458 | mpic: pic@40000 { | ||
459 | interrupt-controller; | ||
460 | #address-cells = <0>; | ||
461 | #interrupt-cells = <2>; | ||
462 | reg = <0x40000 0x40000>; | ||
463 | compatible = "chrp,open-pic"; | ||
464 | device_type = "open-pic"; | ||
465 | }; | ||
466 | |||
467 | msi@41600 { | ||
468 | compatible = "fsl,p1021-msi", "fsl,mpic-msi"; | ||
469 | reg = <0x41600 0x80>; | ||
470 | msi-available-ranges = <0 0x100>; | ||
471 | interrupts = < | ||
472 | 0xe0 0 | ||
473 | 0xe1 0 | ||
474 | 0xe2 0 | ||
475 | 0xe3 0 | ||
476 | 0xe4 0 | ||
477 | 0xe5 0 | ||
478 | 0xe6 0 | ||
479 | 0xe7 0>; | ||
480 | interrupt-parent = <&mpic>; | ||
481 | }; | ||
482 | |||
483 | global-utilities@e0000 { //global utilities block | ||
484 | compatible = "fsl,p1021-guts"; | ||
485 | reg = <0xe0000 0x1000>; | ||
486 | fsl,has-rstcr; | ||
487 | }; | ||
488 | |||
489 | par_io@e0100 { | ||
490 | #address-cells = <1>; | ||
491 | #size-cells = <1>; | ||
492 | reg = <0xe0100 0x60>; | ||
493 | ranges = <0x0 0xe0100 0x60>; | ||
494 | device_type = "par_io"; | ||
495 | num-ports = <3>; | ||
496 | pio1: ucc_pin@01 { | ||
497 | pio-map = < | ||
498 | /* port pin dir open_drain assignment has_irq */ | ||
499 | 0x1 0x13 0x1 0x0 0x1 0x0 /* QE_MUX_MDC */ | ||
500 | 0x1 0x14 0x3 0x0 0x1 0x0 /* QE_MUX_MDIO */ | ||
501 | 0x0 0x17 0x2 0x0 0x2 0x0 /* CLK12 */ | ||
502 | 0x0 0x18 0x2 0x0 0x1 0x0 /* CLK9 | ||
503 | */ | ||
504 | 0x0 0x7 0x1 0x0 0x2 0x0 /* ENET1_TXD0_SER1_TXD0 */ | ||
505 | 0x0 0x9 0x1 0x0 0x2 0x0 /* ENET1_TXD1_SER1_TXD1 */ | ||
506 | 0x0 0xb 0x1 0x0 0x2 0x0 /* ENET1_TXD2_SER1_TXD2 */ | ||
507 | 0x0 0xc 0x1 0x0 0x2 0x0 /* ENET1_TXD3_SER1_TXD3 */ | ||
508 | 0x0 0x6 0x2 0x0 0x2 0x0 /* ENET1_RXD0_SER1_RXD0 */ | ||
509 | 0x0 0xa 0x2 0x0 0x2 0x0 /* ENET1_RXD1_SER1_RXD1 */ | ||
510 | 0x0 0xe 0x2 0x0 0x2 0x0 /* ENET1_RXD2_SER1_RXD2 */ | ||
511 | 0x0 0xf 0x2 0x0 0x2 0x0 /* ENET1_RXD3_SER1_RXD3 */ | ||
512 | 0x0 0x5 0x1 0x0 0x2 0x0 /* ENET1_TX_EN_SER1_RTS_B */ | ||
513 | 0x0 0xd 0x1 0x0 0x2 0x0 /* ENET1_TX_ER */ | ||
514 | 0x0 0x4 0x2 0x0 0x2 0x0 /* ENET1_RX_DV_SER1_CTS_B */ | ||
515 | 0x0 0x8 0x2 0x0 0x2 0x0 /* ENET1_RX_ER_SER1_CD_B */ | ||
516 | 0x0 0x11 0x2 0x0 0x2 0x0 /* ENET1_CRS */ | ||
517 | 0x0 0x10 0x2 0x0 0x2 0x0>; /* ENET1_COL */ | ||
518 | }; | ||
519 | |||
520 | pio2: ucc_pin@02 { | ||
521 | pio-map = < | ||
522 | /* port pin dir open_drain assignment has_irq */ | ||
523 | 0x1 0x13 0x1 0x0 0x1 0x0 /* QE_MUX_MDC */ | ||
524 | 0x1 0x14 0x3 0x0 0x1 0x0 /* QE_MUX_MDIO */ | ||
525 | 0x1 0xb 0x2 0x0 0x1 0x0 /* CLK13 */ | ||
526 | 0x1 0x7 0x1 0x0 0x2 0x0 /* ENET5_TXD0_SER5_TXD0 */ | ||
527 | 0x1 0xa 0x1 0x0 0x2 0x0 /* ENET5_TXD1_SER5_TXD1 */ | ||
528 | 0x1 0x6 0x2 0x0 0x2 0x0 /* ENET5_RXD0_SER5_RXD0 */ | ||
529 | 0x1 0x9 0x2 0x0 0x2 0x0 /* ENET5_RXD1_SER5_RXD1 */ | ||
530 | 0x1 0x5 0x1 0x0 0x2 0x0 /* ENET5_TX_EN_SER5_RTS_B */ | ||
531 | 0x1 0x4 0x2 0x0 0x2 0x0 /* ENET5_RX_DV_SER5_CTS_B */ | ||
532 | 0x1 0x8 0x2 0x0 0x2 0x0>; /* ENET5_RX_ER_SER5_CD_B */ | ||
533 | }; | ||
534 | }; | ||
535 | }; | ||
536 | |||
537 | pci0: pcie@ffe09000 { | ||
538 | compatible = "fsl,mpc8548-pcie"; | ||
539 | device_type = "pci"; | ||
540 | #interrupt-cells = <1>; | ||
541 | #size-cells = <2>; | ||
542 | #address-cells = <3>; | ||
543 | reg = <0 0xffe09000 0 0x1000>; | ||
544 | bus-range = <0 255>; | ||
545 | ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 | ||
546 | 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; | ||
547 | clock-frequency = <33333333>; | ||
548 | interrupt-parent = <&mpic>; | ||
549 | interrupts = <16 2>; | ||
550 | interrupt-map-mask = <0xf800 0 0 7>; | ||
551 | interrupt-map = < | ||
552 | /* IDSEL 0x0 */ | ||
553 | 0000 0 0 1 &mpic 4 1 | ||
554 | 0000 0 0 2 &mpic 5 1 | ||
555 | 0000 0 0 3 &mpic 6 1 | ||
556 | 0000 0 0 4 &mpic 7 1 | ||
557 | >; | ||
558 | pcie@0 { | ||
559 | reg = <0x0 0x0 0x0 0x0 0x0>; | ||
560 | #size-cells = <2>; | ||
561 | #address-cells = <3>; | ||
562 | device_type = "pci"; | ||
563 | ranges = <0x2000000 0x0 0xa0000000 | ||
564 | 0x2000000 0x0 0xa0000000 | ||
565 | 0x0 0x20000000 | ||
566 | |||
567 | 0x1000000 0x0 0x0 | ||
568 | 0x1000000 0x0 0x0 | ||
569 | 0x0 0x100000>; | ||
570 | }; | ||
571 | }; | ||
572 | |||
573 | pci1: pcie@ffe0a000 { | ||
574 | compatible = "fsl,mpc8548-pcie"; | ||
575 | device_type = "pci"; | ||
576 | #interrupt-cells = <1>; | ||
577 | #size-cells = <2>; | ||
578 | #address-cells = <3>; | ||
579 | reg = <0 0xffe0a000 0 0x1000>; | ||
580 | bus-range = <0 255>; | ||
581 | ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000 | ||
582 | 0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>; | ||
583 | clock-frequency = <33333333>; | ||
584 | interrupt-parent = <&mpic>; | ||
585 | interrupts = <16 2>; | ||
586 | interrupt-map-mask = <0xf800 0 0 7>; | ||
587 | interrupt-map = < | ||
588 | /* IDSEL 0x0 */ | ||
589 | 0000 0 0 1 &mpic 0 1 | ||
590 | 0000 0 0 2 &mpic 1 1 | ||
591 | 0000 0 0 3 &mpic 2 1 | ||
592 | 0000 0 0 4 &mpic 3 1 | ||
593 | >; | ||
594 | pcie@0 { | ||
595 | reg = <0x0 0x0 0x0 0x0 0x0>; | ||
596 | #size-cells = <2>; | ||
597 | #address-cells = <3>; | ||
598 | device_type = "pci"; | ||
599 | ranges = <0x2000000 0x0 0xc0000000 | ||
600 | 0x2000000 0x0 0xc0000000 | ||
601 | 0x0 0x20000000 | ||
602 | |||
603 | 0x1000000 0x0 0x0 | ||
604 | 0x1000000 0x0 0x0 | ||
605 | 0x0 0x100000>; | ||
606 | }; | ||
607 | }; | ||
608 | |||
609 | qe@ffe80000 { | ||
610 | #address-cells = <1>; | ||
611 | #size-cells = <1>; | ||
612 | device_type = "qe"; | ||
613 | compatible = "fsl,qe"; | ||
614 | ranges = <0x0 0x0 0xffe80000 0x40000>; | ||
615 | reg = <0 0xffe80000 0 0x480>; | ||
616 | brg-frequency = <0>; | ||
617 | bus-frequency = <0>; | ||
618 | fsl,qe-num-riscs = <1>; | ||
619 | fsl,qe-num-snums = <28>; | ||
620 | |||
621 | qeic: interrupt-controller@80 { | ||
622 | interrupt-controller; | ||
623 | compatible = "fsl,qe-ic"; | ||
624 | #address-cells = <0>; | ||
625 | #interrupt-cells = <1>; | ||
626 | reg = <0x80 0x80>; | ||
627 | interrupts = <63 2 60 2>; //high:47 low:44 | ||
628 | interrupt-parent = <&mpic>; | ||
629 | }; | ||
630 | |||
631 | enet3: ucc@2000 { | ||
632 | device_type = "network"; | ||
633 | compatible = "ucc_geth"; | ||
634 | cell-index = <1>; | ||
635 | reg = <0x2000 0x200>; | ||
636 | interrupts = <32>; | ||
637 | interrupt-parent = <&qeic>; | ||
638 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
639 | rx-clock-name = "clk12"; | ||
640 | tx-clock-name = "clk9"; | ||
641 | pio-handle = <&pio1>; | ||
642 | phy-handle = <&qe_phy0>; | ||
643 | phy-connection-type = "mii"; | ||
644 | }; | ||
645 | |||
646 | mdio@2120 { | ||
647 | #address-cells = <1>; | ||
648 | #size-cells = <0>; | ||
649 | reg = <0x2120 0x18>; | ||
650 | compatible = "fsl,ucc-mdio"; | ||
651 | |||
652 | qe_phy0: ethernet-phy@0 { | ||
653 | interrupt-parent = <&mpic>; | ||
654 | interrupts = <4 1>; | ||
655 | reg = <0x0>; | ||
656 | device_type = "ethernet-phy"; | ||
657 | }; | ||
658 | qe_phy1: ethernet-phy@03 { | ||
659 | interrupt-parent = <&mpic>; | ||
660 | interrupts = <5 1>; | ||
661 | reg = <0x3>; | ||
662 | device_type = "ethernet-phy"; | ||
663 | }; | ||
664 | tbi-phy@11 { | ||
665 | reg = <0x11>; | ||
666 | device_type = "tbi-phy"; | ||
667 | }; | ||
668 | }; | ||
669 | |||
670 | enet4: ucc@2400 { | ||
671 | device_type = "network"; | ||
672 | compatible = "ucc_geth"; | ||
673 | cell-index = <5>; | ||
674 | reg = <0x2400 0x200>; | ||
675 | interrupts = <40>; | ||
676 | interrupt-parent = <&qeic>; | ||
677 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
678 | rx-clock-name = "none"; | ||
679 | tx-clock-name = "clk13"; | ||
680 | pio-handle = <&pio2>; | ||
681 | phy-handle = <&qe_phy1>; | ||
682 | phy-connection-type = "rmii"; | ||
683 | }; | ||
684 | |||
685 | muram@10000 { | ||
686 | #address-cells = <1>; | ||
687 | #size-cells = <1>; | ||
688 | compatible = "fsl,qe-muram", "fsl,cpm-muram"; | ||
689 | ranges = <0x0 0x10000 0x6000>; | ||
690 | |||
691 | data-only@0 { | ||
692 | compatible = "fsl,qe-muram-data", | ||
693 | "fsl,cpm-muram-data"; | ||
694 | reg = <0x0 0x6000>; | ||
695 | }; | ||
696 | }; | ||
697 | }; | ||
698 | }; | ||
diff --git a/arch/powerpc/boot/dts/redwood.dts b/arch/powerpc/boot/dts/redwood.dts index d2af32e2bf7a..81636c01d906 100644 --- a/arch/powerpc/boot/dts/redwood.dts +++ b/arch/powerpc/boot/dts/redwood.dts | |||
@@ -234,10 +234,132 @@ | |||
234 | has-inverted-stacr-oc; | 234 | has-inverted-stacr-oc; |
235 | has-new-stacr-staopc; | 235 | has-new-stacr-staopc; |
236 | }; | 236 | }; |
237 | }; | ||
238 | PCIE0: pciex@d00000000 { | ||
239 | device_type = "pci"; | ||
240 | #interrupt-cells = <1>; | ||
241 | #size-cells = <2>; | ||
242 | #address-cells = <3>; | ||
243 | compatible = "ibm,plb-pciex-460sx", "ibm,plb-pciex"; | ||
244 | primary; | ||
245 | port = <0x0>; /* port number */ | ||
246 | reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */ | ||
247 | 0x0000000c 0x10000000 0x00001000>; /* Registers */ | ||
248 | dcr-reg = <0x100 0x020>; | ||
249 | sdr-base = <0x300>; | ||
250 | |||
251 | /* Outbound ranges, one memory and one IO, | ||
252 | * later cannot be changed | ||
253 | */ | ||
254 | ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000 | ||
255 | 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>; | ||
256 | |||
257 | /* Inbound 2GB range starting at 0 */ | ||
258 | dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>; | ||
237 | 259 | ||
260 | /* This drives busses 10 to 0x1f */ | ||
261 | bus-range = <0x10 0x1f>; | ||
262 | |||
263 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
264 | * to invert PCIe legacy interrupts). | ||
265 | * We are de-swizzling here because the numbers are actually for | ||
266 | * port of the root complex virtual P2P bridge. But I want | ||
267 | * to avoid putting a node for it in the tree, so the numbers | ||
268 | * below are basically de-swizzled numbers. | ||
269 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
270 | */ | ||
271 | interrupt-map-mask = <0x0 0x0 0x0 0x7>; | ||
272 | interrupt-map = < | ||
273 | 0x0 0x0 0x0 0x1 &UIC3 0x0 0x4 /* swizzled int A */ | ||
274 | 0x0 0x0 0x0 0x2 &UIC3 0x1 0x4 /* swizzled int B */ | ||
275 | 0x0 0x0 0x0 0x3 &UIC3 0x2 0x4 /* swizzled int C */ | ||
276 | 0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>; | ||
277 | }; | ||
278 | |||
279 | PCIE1: pciex@d20000000 { | ||
280 | device_type = "pci"; | ||
281 | #interrupt-cells = <1>; | ||
282 | #size-cells = <2>; | ||
283 | #address-cells = <3>; | ||
284 | compatible = "ibm,plb-pciex-460sx", "ibm,plb-pciex"; | ||
285 | primary; | ||
286 | port = <0x1>; /* port number */ | ||
287 | reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */ | ||
288 | 0x0000000c 0x10001000 0x00001000>; /* Registers */ | ||
289 | dcr-reg = <0x120 0x020>; | ||
290 | sdr-base = <0x340>; | ||
291 | |||
292 | /* Outbound ranges, one memory and one IO, | ||
293 | * later cannot be changed | ||
294 | */ | ||
295 | ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000 | ||
296 | 0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>; | ||
297 | |||
298 | /* Inbound 2GB range starting at 0 */ | ||
299 | dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>; | ||
300 | |||
301 | /* This drives busses 10 to 0x1f */ | ||
302 | bus-range = <0x20 0x2f>; | ||
303 | |||
304 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
305 | * to invert PCIe legacy interrupts). | ||
306 | * We are de-swizzling here because the numbers are actually for | ||
307 | * port of the root complex virtual P2P bridge. But I want | ||
308 | * to avoid putting a node for it in the tree, so the numbers | ||
309 | * below are basically de-swizzled numbers. | ||
310 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
311 | */ | ||
312 | interrupt-map-mask = <0x0 0x0 0x0 0x7>; | ||
313 | interrupt-map = < | ||
314 | 0x0 0x0 0x0 0x1 &UIC3 0x4 0x4 /* swizzled int A */ | ||
315 | 0x0 0x0 0x0 0x2 &UIC3 0x5 0x4 /* swizzled int B */ | ||
316 | 0x0 0x0 0x0 0x3 &UIC3 0x6 0x4 /* swizzled int C */ | ||
317 | 0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>; | ||
318 | }; | ||
319 | |||
320 | PCIE2: pciex@d40000000 { | ||
321 | device_type = "pci"; | ||
322 | #interrupt-cells = <1>; | ||
323 | #size-cells = <2>; | ||
324 | #address-cells = <3>; | ||
325 | compatible = "ibm,plb-pciex-460sx", "ibm,plb-pciex"; | ||
326 | primary; | ||
327 | port = <0x2>; /* port number */ | ||
328 | reg = <0x0000000d 0x40000000 0x20000000 /* Config space access */ | ||
329 | 0x0000000c 0x10002000 0x00001000>; /* Registers */ | ||
330 | dcr-reg = <0x140 0x020>; | ||
331 | sdr-base = <0x370>; | ||
332 | |||
333 | /* Outbound ranges, one memory and one IO, | ||
334 | * later cannot be changed | ||
335 | */ | ||
336 | ranges = <0x02000000 0x00000000 0x80000000 0x0000000f 0x00000000 0x00000000 0x80000000 | ||
337 | 0x01000000 0x00000000 0x00000000 0x0000000f 0x80020000 0x00000000 0x00010000>; | ||
338 | |||
339 | /* Inbound 2GB range starting at 0 */ | ||
340 | dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>; | ||
341 | |||
342 | /* This drives busses 10 to 0x1f */ | ||
343 | bus-range = <0x30 0x3f>; | ||
344 | |||
345 | /* Legacy interrupts (note the weird polarity, the bridge seems | ||
346 | * to invert PCIe legacy interrupts). | ||
347 | * We are de-swizzling here because the numbers are actually for | ||
348 | * port of the root complex virtual P2P bridge. But I want | ||
349 | * to avoid putting a node for it in the tree, so the numbers | ||
350 | * below are basically de-swizzled numbers. | ||
351 | * The real slot is on idsel 0, so the swizzling is 1:1 | ||
352 | */ | ||
353 | interrupt-map-mask = <0x0 0x0 0x0 0x7>; | ||
354 | interrupt-map = < | ||
355 | 0x0 0x0 0x0 0x1 &UIC3 0x8 0x4 /* swizzled int A */ | ||
356 | 0x0 0x0 0x0 0x2 &UIC3 0x9 0x4 /* swizzled int B */ | ||
357 | 0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int C */ | ||
358 | 0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int D */>; | ||
238 | }; | 359 | }; |
239 | 360 | ||
240 | }; | 361 | }; |
362 | |||
241 | chosen { | 363 | chosen { |
242 | linux,stdout-path = "/plb/opb/serial@ef600200"; | 364 | linux,stdout-path = "/plb/opb/serial@ef600200"; |
243 | }; | 365 | }; |
diff --git a/arch/powerpc/configs/44x/icon_defconfig b/arch/powerpc/configs/44x/icon_defconfig new file mode 100644 index 000000000000..277f88c2750f --- /dev/null +++ b/arch/powerpc/configs/44x/icon_defconfig | |||
@@ -0,0 +1,1451 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.34-rc7 | ||
4 | # Fri May 21 17:40:22 2010 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_PPC_BOOK3S_32 is not set | ||
12 | # CONFIG_PPC_85xx is not set | ||
13 | # CONFIG_PPC_8xx is not set | ||
14 | # CONFIG_40x is not set | ||
15 | CONFIG_44x=y | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_4xx=y | ||
18 | CONFIG_BOOKE=y | ||
19 | CONFIG_PTE_64BIT=y | ||
20 | CONFIG_PHYS_64BIT=y | ||
21 | CONFIG_PPC_MMU_NOHASH=y | ||
22 | CONFIG_PPC_MMU_NOHASH_32=y | ||
23 | # CONFIG_PPC_MM_SLICES is not set | ||
24 | CONFIG_NOT_COHERENT_CACHE=y | ||
25 | CONFIG_PPC32=y | ||
26 | CONFIG_WORD_SIZE=32 | ||
27 | CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
28 | CONFIG_MMU=y | ||
29 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
30 | CONFIG_GENERIC_TIME=y | ||
31 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
32 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
33 | CONFIG_GENERIC_HARDIRQS=y | ||
34 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
35 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
36 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
37 | CONFIG_IRQ_PER_CPU=y | ||
38 | CONFIG_NR_IRQS=512 | ||
39 | CONFIG_STACKTRACE_SUPPORT=y | ||
40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
42 | CONFIG_LOCKDEP_SUPPORT=y | ||
43 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
44 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
45 | CONFIG_GENERIC_HWEIGHT=y | ||
46 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
47 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
48 | CONFIG_PPC=y | ||
49 | CONFIG_EARLY_PRINTK=y | ||
50 | CONFIG_GENERIC_NVRAM=y | ||
51 | CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
52 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
53 | CONFIG_PPC_OF=y | ||
54 | CONFIG_OF=y | ||
55 | CONFIG_PPC_UDBG_16550=y | ||
56 | # CONFIG_GENERIC_TBSYNC is not set | ||
57 | CONFIG_AUDIT_ARCH=y | ||
58 | CONFIG_GENERIC_BUG=y | ||
59 | CONFIG_DTC=y | ||
60 | # CONFIG_DEFAULT_UIMAGE is not set | ||
61 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
62 | CONFIG_PPC_DCR_NATIVE=y | ||
63 | # CONFIG_PPC_DCR_MMIO is not set | ||
64 | CONFIG_PPC_DCR=y | ||
65 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
66 | CONFIG_PPC_ADV_DEBUG_REGS=y | ||
67 | CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
68 | CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
69 | CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
70 | CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
71 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
72 | CONFIG_CONSTRUCTORS=y | ||
73 | |||
74 | # | ||
75 | # General setup | ||
76 | # | ||
77 | CONFIG_EXPERIMENTAL=y | ||
78 | CONFIG_BROKEN_ON_SMP=y | ||
79 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
80 | CONFIG_LOCALVERSION="" | ||
81 | CONFIG_LOCALVERSION_AUTO=y | ||
82 | CONFIG_SWAP=y | ||
83 | CONFIG_SYSVIPC=y | ||
84 | CONFIG_SYSVIPC_SYSCTL=y | ||
85 | CONFIG_POSIX_MQUEUE=y | ||
86 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
87 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
88 | # CONFIG_TASKSTATS is not set | ||
89 | # CONFIG_AUDIT is not set | ||
90 | |||
91 | # | ||
92 | # RCU Subsystem | ||
93 | # | ||
94 | CONFIG_TREE_RCU=y | ||
95 | # CONFIG_TREE_PREEMPT_RCU is not set | ||
96 | # CONFIG_TINY_RCU is not set | ||
97 | # CONFIG_RCU_TRACE is not set | ||
98 | CONFIG_RCU_FANOUT=32 | ||
99 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
100 | # CONFIG_TREE_RCU_TRACE is not set | ||
101 | # CONFIG_IKCONFIG is not set | ||
102 | CONFIG_LOG_BUF_SHIFT=14 | ||
103 | # CONFIG_CGROUPS is not set | ||
104 | CONFIG_SYSFS_DEPRECATED=y | ||
105 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
106 | # CONFIG_RELAY is not set | ||
107 | # CONFIG_NAMESPACES is not set | ||
108 | CONFIG_BLK_DEV_INITRD=y | ||
109 | CONFIG_INITRAMFS_SOURCE="" | ||
110 | CONFIG_RD_GZIP=y | ||
111 | # CONFIG_RD_BZIP2 is not set | ||
112 | # CONFIG_RD_LZMA is not set | ||
113 | # CONFIG_RD_LZO is not set | ||
114 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
115 | CONFIG_SYSCTL=y | ||
116 | CONFIG_ANON_INODES=y | ||
117 | CONFIG_EMBEDDED=y | ||
118 | CONFIG_SYSCTL_SYSCALL=y | ||
119 | CONFIG_KALLSYMS=y | ||
120 | # CONFIG_KALLSYMS_ALL is not set | ||
121 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
122 | CONFIG_HOTPLUG=y | ||
123 | CONFIG_PRINTK=y | ||
124 | # CONFIG_LOGBUFFER is not set | ||
125 | CONFIG_BUG=y | ||
126 | CONFIG_ELF_CORE=y | ||
127 | CONFIG_BASE_FULL=y | ||
128 | CONFIG_FUTEX=y | ||
129 | CONFIG_EPOLL=y | ||
130 | CONFIG_SIGNALFD=y | ||
131 | CONFIG_TIMERFD=y | ||
132 | CONFIG_EVENTFD=y | ||
133 | CONFIG_SHMEM=y | ||
134 | CONFIG_AIO=y | ||
135 | CONFIG_HAVE_PERF_EVENTS=y | ||
136 | |||
137 | # | ||
138 | # Kernel Performance Events And Counters | ||
139 | # | ||
140 | # CONFIG_PERF_EVENTS is not set | ||
141 | # CONFIG_PERF_COUNTERS is not set | ||
142 | CONFIG_VM_EVENT_COUNTERS=y | ||
143 | CONFIG_PCI_QUIRKS=y | ||
144 | CONFIG_SLUB_DEBUG=y | ||
145 | CONFIG_COMPAT_BRK=y | ||
146 | # CONFIG_SLAB is not set | ||
147 | CONFIG_SLUB=y | ||
148 | # CONFIG_SLOB is not set | ||
149 | # CONFIG_PROFILING is not set | ||
150 | CONFIG_HAVE_OPROFILE=y | ||
151 | # CONFIG_KPROBES is not set | ||
152 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
153 | CONFIG_HAVE_IOREMAP_PROT=y | ||
154 | CONFIG_HAVE_KPROBES=y | ||
155 | CONFIG_HAVE_KRETPROBES=y | ||
156 | CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
157 | CONFIG_HAVE_DMA_ATTRS=y | ||
158 | CONFIG_HAVE_DMA_API_DEBUG=y | ||
159 | |||
160 | # | ||
161 | # GCOV-based kernel profiling | ||
162 | # | ||
163 | # CONFIG_SLOW_WORK is not set | ||
164 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
165 | CONFIG_SLABINFO=y | ||
166 | CONFIG_RT_MUTEXES=y | ||
167 | CONFIG_BASE_SMALL=0 | ||
168 | CONFIG_MODULES=y | ||
169 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
170 | CONFIG_MODULE_UNLOAD=y | ||
171 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
172 | # CONFIG_MODVERSIONS is not set | ||
173 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
174 | CONFIG_BLOCK=y | ||
175 | CONFIG_LBDAF=y | ||
176 | # CONFIG_BLK_DEV_BSG is not set | ||
177 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
178 | |||
179 | # | ||
180 | # IO Schedulers | ||
181 | # | ||
182 | CONFIG_IOSCHED_NOOP=y | ||
183 | CONFIG_IOSCHED_DEADLINE=y | ||
184 | CONFIG_IOSCHED_CFQ=y | ||
185 | # CONFIG_DEFAULT_DEADLINE is not set | ||
186 | CONFIG_DEFAULT_CFQ=y | ||
187 | # CONFIG_DEFAULT_NOOP is not set | ||
188 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
189 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
190 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
191 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
192 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
193 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
194 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
195 | CONFIG_INLINE_SPIN_UNLOCK=y | ||
196 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
197 | CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
198 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
199 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
200 | # CONFIG_INLINE_READ_LOCK is not set | ||
201 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
202 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
203 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
204 | CONFIG_INLINE_READ_UNLOCK=y | ||
205 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
206 | CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
207 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
208 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
209 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
210 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
211 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
212 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
213 | CONFIG_INLINE_WRITE_UNLOCK=y | ||
214 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
215 | CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
216 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
217 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
218 | # CONFIG_FREEZER is not set | ||
219 | CONFIG_PPC4xx_PCI_EXPRESS=y | ||
220 | |||
221 | # | ||
222 | # Platform support | ||
223 | # | ||
224 | # CONFIG_PPC_CELL is not set | ||
225 | # CONFIG_PPC_CELL_NATIVE is not set | ||
226 | # CONFIG_PQ2ADS is not set | ||
227 | # CONFIG_BAMBOO is not set | ||
228 | # CONFIG_EBONY is not set | ||
229 | # CONFIG_SAM440EP is not set | ||
230 | # CONFIG_SEQUOIA is not set | ||
231 | # CONFIG_TAISHAN is not set | ||
232 | # CONFIG_KATMAI is not set | ||
233 | # CONFIG_RAINIER is not set | ||
234 | # CONFIG_WARP is not set | ||
235 | # CONFIG_ARCHES is not set | ||
236 | # CONFIG_CANYONLANDS is not set | ||
237 | # CONFIG_GLACIER is not set | ||
238 | # CONFIG_REDWOOD is not set | ||
239 | # CONFIG_EIGER is not set | ||
240 | # CONFIG_YOSEMITE is not set | ||
241 | CONFIG_ICON=y | ||
242 | # CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
243 | CONFIG_PPC44x_SIMPLE=y | ||
244 | # CONFIG_PPC4xx_GPIO is not set | ||
245 | CONFIG_440SPe=y | ||
246 | CONFIG_STDBINUTILS=y | ||
247 | # CONFIG_IPIC is not set | ||
248 | # CONFIG_MPIC is not set | ||
249 | # CONFIG_MPIC_WEIRD is not set | ||
250 | # CONFIG_PPC_I8259 is not set | ||
251 | # CONFIG_PPC_RTAS is not set | ||
252 | # CONFIG_MMIO_NVRAM is not set | ||
253 | # CONFIG_PPC_MPC106 is not set | ||
254 | # CONFIG_PPC_970_NAP is not set | ||
255 | # CONFIG_PPC_INDIRECT_IO is not set | ||
256 | # CONFIG_GENERIC_IOMAP is not set | ||
257 | # CONFIG_CPU_FREQ is not set | ||
258 | # CONFIG_FSL_ULI1575 is not set | ||
259 | # CONFIG_SIMPLE_GPIO is not set | ||
260 | |||
261 | # | ||
262 | # Kernel options | ||
263 | # | ||
264 | CONFIG_HIGHMEM=y | ||
265 | # CONFIG_NO_HZ is not set | ||
266 | # CONFIG_HIGH_RES_TIMERS is not set | ||
267 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
268 | # CONFIG_HZ_100 is not set | ||
269 | CONFIG_HZ_250=y | ||
270 | # CONFIG_HZ_300 is not set | ||
271 | # CONFIG_HZ_1000 is not set | ||
272 | CONFIG_HZ=250 | ||
273 | # CONFIG_SCHED_HRTICK is not set | ||
274 | CONFIG_PREEMPT_NONE=y | ||
275 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
276 | # CONFIG_PREEMPT is not set | ||
277 | CONFIG_BINFMT_ELF=y | ||
278 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
279 | # CONFIG_HAVE_AOUT is not set | ||
280 | # CONFIG_BINFMT_MISC is not set | ||
281 | # CONFIG_MATH_EMULATION is not set | ||
282 | # CONFIG_IOMMU_HELPER is not set | ||
283 | # CONFIG_SWIOTLB is not set | ||
284 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
285 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
286 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
287 | CONFIG_SPARSE_IRQ=y | ||
288 | CONFIG_MAX_ACTIVE_REGIONS=32 | ||
289 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
290 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
291 | CONFIG_SELECT_MEMORY_MODEL=y | ||
292 | CONFIG_FLATMEM_MANUAL=y | ||
293 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
294 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
295 | CONFIG_FLATMEM=y | ||
296 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
297 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
298 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
299 | CONFIG_MIGRATION=y | ||
300 | CONFIG_PHYS_ADDR_T_64BIT=y | ||
301 | CONFIG_ZONE_DMA_FLAG=1 | ||
302 | CONFIG_BOUNCE=y | ||
303 | CONFIG_VIRT_TO_BUS=y | ||
304 | # CONFIG_KSM is not set | ||
305 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
306 | CONFIG_PPC_4K_PAGES=y | ||
307 | # CONFIG_PPC_16K_PAGES is not set | ||
308 | # CONFIG_PPC_64K_PAGES is not set | ||
309 | # CONFIG_PPC_256K_PAGES is not set | ||
310 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
311 | CONFIG_PROC_DEVICETREE=y | ||
312 | CONFIG_CMDLINE_BOOL=y | ||
313 | CONFIG_CMDLINE="" | ||
314 | CONFIG_EXTRA_TARGETS="" | ||
315 | # CONFIG_ARCH_HAS_NMI_WATCHDOG is not set | ||
316 | CONFIG_SECCOMP=y | ||
317 | CONFIG_ISA_DMA_API=y | ||
318 | |||
319 | # | ||
320 | # Bus options | ||
321 | # | ||
322 | CONFIG_ZONE_DMA=y | ||
323 | CONFIG_NEED_DMA_MAP_STATE=y | ||
324 | CONFIG_PPC_INDIRECT_PCI=y | ||
325 | CONFIG_4xx_SOC=y | ||
326 | CONFIG_PPC_PCI_CHOICE=y | ||
327 | CONFIG_PCI=y | ||
328 | CONFIG_PCI_DOMAINS=y | ||
329 | CONFIG_PCI_SYSCALL=y | ||
330 | CONFIG_PCIEPORTBUS=y | ||
331 | CONFIG_PCIEAER=y | ||
332 | # CONFIG_PCIE_ECRC is not set | ||
333 | # CONFIG_PCIEAER_INJECT is not set | ||
334 | # CONFIG_PCIEASPM is not set | ||
335 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
336 | # CONFIG_PCI_MSI is not set | ||
337 | # CONFIG_PCI_DEBUG is not set | ||
338 | # CONFIG_PCI_STUB is not set | ||
339 | # CONFIG_PCI_IOV is not set | ||
340 | # CONFIG_PCCARD is not set | ||
341 | # CONFIG_HOTPLUG_PCI is not set | ||
342 | # CONFIG_HAS_RAPIDIO is not set | ||
343 | |||
344 | # | ||
345 | # Advanced setup | ||
346 | # | ||
347 | # CONFIG_ADVANCED_OPTIONS is not set | ||
348 | |||
349 | # | ||
350 | # Default settings for advanced configuration options are used | ||
351 | # | ||
352 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
353 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
354 | CONFIG_KERNEL_START=0xc0000000 | ||
355 | CONFIG_PHYSICAL_START=0x00000000 | ||
356 | CONFIG_TASK_SIZE=0xc0000000 | ||
357 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
358 | CONFIG_NET=y | ||
359 | |||
360 | # | ||
361 | # Networking options | ||
362 | # | ||
363 | CONFIG_PACKET=y | ||
364 | CONFIG_UNIX=y | ||
365 | # CONFIG_NET_KEY is not set | ||
366 | CONFIG_INET=y | ||
367 | # CONFIG_IP_MULTICAST is not set | ||
368 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
369 | CONFIG_IP_FIB_HASH=y | ||
370 | CONFIG_IP_PNP=y | ||
371 | CONFIG_IP_PNP_DHCP=y | ||
372 | CONFIG_IP_PNP_BOOTP=y | ||
373 | # CONFIG_IP_PNP_RARP is not set | ||
374 | # CONFIG_NET_IPIP is not set | ||
375 | # CONFIG_NET_IPGRE is not set | ||
376 | # CONFIG_ARPD is not set | ||
377 | # CONFIG_SYN_COOKIES is not set | ||
378 | # CONFIG_INET_AH is not set | ||
379 | # CONFIG_INET_ESP is not set | ||
380 | # CONFIG_INET_IPCOMP is not set | ||
381 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
382 | # CONFIG_INET_TUNNEL is not set | ||
383 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
384 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
385 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
386 | # CONFIG_INET_LRO is not set | ||
387 | CONFIG_INET_DIAG=y | ||
388 | CONFIG_INET_TCP_DIAG=y | ||
389 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
390 | CONFIG_TCP_CONG_CUBIC=y | ||
391 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
392 | # CONFIG_TCP_MD5SIG is not set | ||
393 | # CONFIG_IPV6 is not set | ||
394 | # CONFIG_NETWORK_SECMARK is not set | ||
395 | # CONFIG_NETFILTER is not set | ||
396 | # CONFIG_IP_DCCP is not set | ||
397 | # CONFIG_IP_SCTP is not set | ||
398 | # CONFIG_RDS is not set | ||
399 | # CONFIG_TIPC is not set | ||
400 | # CONFIG_ATM is not set | ||
401 | # CONFIG_BRIDGE is not set | ||
402 | # CONFIG_NET_DSA is not set | ||
403 | # CONFIG_VLAN_8021Q is not set | ||
404 | # CONFIG_DECNET is not set | ||
405 | # CONFIG_LLC2 is not set | ||
406 | # CONFIG_IPX is not set | ||
407 | # CONFIG_ATALK is not set | ||
408 | # CONFIG_X25 is not set | ||
409 | # CONFIG_LAPB is not set | ||
410 | # CONFIG_ECONET is not set | ||
411 | # CONFIG_WAN_ROUTER is not set | ||
412 | # CONFIG_PHONET is not set | ||
413 | # CONFIG_IEEE802154 is not set | ||
414 | # CONFIG_NET_SCHED is not set | ||
415 | # CONFIG_DCB is not set | ||
416 | |||
417 | # | ||
418 | # Network testing | ||
419 | # | ||
420 | # CONFIG_NET_PKTGEN is not set | ||
421 | # CONFIG_HAMRADIO is not set | ||
422 | # CONFIG_CAN is not set | ||
423 | # CONFIG_IRDA is not set | ||
424 | # CONFIG_BT is not set | ||
425 | # CONFIG_AF_RXRPC is not set | ||
426 | CONFIG_WIRELESS=y | ||
427 | # CONFIG_CFG80211 is not set | ||
428 | # CONFIG_LIB80211 is not set | ||
429 | |||
430 | # | ||
431 | # CFG80211 needs to be enabled for MAC80211 | ||
432 | # | ||
433 | # CONFIG_WIMAX is not set | ||
434 | # CONFIG_RFKILL is not set | ||
435 | # CONFIG_NET_9P is not set | ||
436 | |||
437 | # | ||
438 | # Device Drivers | ||
439 | # | ||
440 | |||
441 | # | ||
442 | # Generic Driver Options | ||
443 | # | ||
444 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
445 | # CONFIG_DEVTMPFS is not set | ||
446 | CONFIG_STANDALONE=y | ||
447 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
448 | CONFIG_FW_LOADER=y | ||
449 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
450 | CONFIG_EXTRA_FIRMWARE="" | ||
451 | # CONFIG_DEBUG_DRIVER is not set | ||
452 | # CONFIG_DEBUG_DEVRES is not set | ||
453 | # CONFIG_SYS_HYPERVISOR is not set | ||
454 | CONFIG_CONNECTOR=y | ||
455 | CONFIG_PROC_EVENTS=y | ||
456 | CONFIG_MTD=y | ||
457 | # CONFIG_MTD_DEBUG is not set | ||
458 | # CONFIG_MTD_TESTS is not set | ||
459 | # CONFIG_MTD_CONCAT is not set | ||
460 | CONFIG_MTD_PARTITIONS=y | ||
461 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
462 | CONFIG_MTD_CMDLINE_PARTS=y | ||
463 | CONFIG_MTD_OF_PARTS=y | ||
464 | # CONFIG_MTD_AR7_PARTS is not set | ||
465 | |||
466 | # | ||
467 | # User Modules And Translation Layers | ||
468 | # | ||
469 | CONFIG_MTD_CHAR=y | ||
470 | CONFIG_MTD_BLKDEVS=y | ||
471 | CONFIG_MTD_BLOCK=y | ||
472 | # CONFIG_FTL is not set | ||
473 | # CONFIG_NFTL is not set | ||
474 | # CONFIG_INFTL is not set | ||
475 | # CONFIG_RFD_FTL is not set | ||
476 | # CONFIG_SSFDC is not set | ||
477 | # CONFIG_MTD_OOPS is not set | ||
478 | |||
479 | # | ||
480 | # RAM/ROM/Flash chip drivers | ||
481 | # | ||
482 | CONFIG_MTD_CFI=y | ||
483 | # CONFIG_MTD_JEDECPROBE is not set | ||
484 | CONFIG_MTD_GEN_PROBE=y | ||
485 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
486 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
487 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
488 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
489 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
490 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
491 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
492 | CONFIG_MTD_CFI_I1=y | ||
493 | CONFIG_MTD_CFI_I2=y | ||
494 | # CONFIG_MTD_CFI_I4 is not set | ||
495 | # CONFIG_MTD_CFI_I8 is not set | ||
496 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
497 | CONFIG_MTD_CFI_AMDSTD=y | ||
498 | # CONFIG_MTD_CFI_STAA is not set | ||
499 | CONFIG_MTD_CFI_UTIL=y | ||
500 | # CONFIG_MTD_RAM is not set | ||
501 | # CONFIG_MTD_ROM is not set | ||
502 | # CONFIG_MTD_ABSENT is not set | ||
503 | |||
504 | # | ||
505 | # Mapping drivers for chip access | ||
506 | # | ||
507 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
508 | # CONFIG_MTD_PHYSMAP is not set | ||
509 | CONFIG_MTD_PHYSMAP_OF=y | ||
510 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
511 | # CONFIG_MTD_PLATRAM is not set | ||
512 | |||
513 | # | ||
514 | # Self-contained MTD device drivers | ||
515 | # | ||
516 | # CONFIG_MTD_PMC551 is not set | ||
517 | # CONFIG_MTD_SLRAM is not set | ||
518 | # CONFIG_MTD_PHRAM is not set | ||
519 | # CONFIG_MTD_MTDRAM is not set | ||
520 | # CONFIG_MTD_BLOCK2MTD is not set | ||
521 | |||
522 | # | ||
523 | # Disk-On-Chip Device Drivers | ||
524 | # | ||
525 | # CONFIG_MTD_DOC2000 is not set | ||
526 | # CONFIG_MTD_DOC2001 is not set | ||
527 | # CONFIG_MTD_DOC2001PLUS is not set | ||
528 | # CONFIG_MTD_NAND is not set | ||
529 | # CONFIG_MTD_ONENAND is not set | ||
530 | |||
531 | # | ||
532 | # LPDDR flash memory drivers | ||
533 | # | ||
534 | # CONFIG_MTD_LPDDR is not set | ||
535 | |||
536 | # | ||
537 | # UBI - Unsorted block images | ||
538 | # | ||
539 | # CONFIG_MTD_UBI is not set | ||
540 | CONFIG_OF_FLATTREE=y | ||
541 | CONFIG_OF_DYNAMIC=y | ||
542 | CONFIG_OF_DEVICE=y | ||
543 | CONFIG_OF_I2C=y | ||
544 | # CONFIG_PARPORT is not set | ||
545 | CONFIG_BLK_DEV=y | ||
546 | # CONFIG_BLK_DEV_FD is not set | ||
547 | # CONFIG_BLK_CPQ_DA is not set | ||
548 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
549 | # CONFIG_BLK_DEV_DAC960 is not set | ||
550 | # CONFIG_BLK_DEV_UMEM is not set | ||
551 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
552 | # CONFIG_BLK_DEV_LOOP is not set | ||
553 | # CONFIG_BLK_DEV_DRBD is not set | ||
554 | # CONFIG_BLK_DEV_NBD is not set | ||
555 | # CONFIG_BLK_DEV_SX8 is not set | ||
556 | CONFIG_BLK_DEV_RAM=y | ||
557 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
558 | CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
559 | # CONFIG_BLK_DEV_XIP is not set | ||
560 | # CONFIG_CDROM_PKTCDVD is not set | ||
561 | # CONFIG_ATA_OVER_ETH is not set | ||
562 | CONFIG_XILINX_SYSACE=y | ||
563 | # CONFIG_BLK_DEV_HD is not set | ||
564 | # CONFIG_MISC_DEVICES is not set | ||
565 | CONFIG_HAVE_IDE=y | ||
566 | # CONFIG_IDE is not set | ||
567 | |||
568 | # | ||
569 | # SCSI device support | ||
570 | # | ||
571 | CONFIG_SCSI_MOD=y | ||
572 | # CONFIG_RAID_ATTRS is not set | ||
573 | CONFIG_SCSI=y | ||
574 | CONFIG_SCSI_DMA=y | ||
575 | # CONFIG_SCSI_TGT is not set | ||
576 | # CONFIG_SCSI_NETLINK is not set | ||
577 | CONFIG_SCSI_PROC_FS=y | ||
578 | |||
579 | # | ||
580 | # SCSI support type (disk, tape, CD-ROM) | ||
581 | # | ||
582 | CONFIG_BLK_DEV_SD=y | ||
583 | # CONFIG_CHR_DEV_ST is not set | ||
584 | # CONFIG_CHR_DEV_OSST is not set | ||
585 | # CONFIG_BLK_DEV_SR is not set | ||
586 | # CONFIG_CHR_DEV_SG is not set | ||
587 | # CONFIG_CHR_DEV_SCH is not set | ||
588 | # CONFIG_SCSI_MULTI_LUN is not set | ||
589 | CONFIG_SCSI_CONSTANTS=y | ||
590 | CONFIG_SCSI_LOGGING=y | ||
591 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
592 | CONFIG_SCSI_WAIT_SCAN=m | ||
593 | |||
594 | # | ||
595 | # SCSI Transports | ||
596 | # | ||
597 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
598 | # CONFIG_SCSI_FC_ATTRS is not set | ||
599 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
600 | CONFIG_SCSI_SAS_ATTRS=y | ||
601 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
602 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
603 | # CONFIG_SCSI_LOWLEVEL is not set | ||
604 | # CONFIG_SCSI_DH is not set | ||
605 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
606 | # CONFIG_ATA is not set | ||
607 | # CONFIG_MD is not set | ||
608 | CONFIG_FUSION=y | ||
609 | # CONFIG_FUSION_SPI is not set | ||
610 | # CONFIG_FUSION_FC is not set | ||
611 | CONFIG_FUSION_SAS=y | ||
612 | CONFIG_FUSION_MAX_SGE=128 | ||
613 | CONFIG_FUSION_CTL=y | ||
614 | CONFIG_FUSION_LOGGING=y | ||
615 | |||
616 | # | ||
617 | # IEEE 1394 (FireWire) support | ||
618 | # | ||
619 | |||
620 | # | ||
621 | # You can enable one or both FireWire driver stacks. | ||
622 | # | ||
623 | |||
624 | # | ||
625 | # The newer stack is recommended. | ||
626 | # | ||
627 | # CONFIG_FIREWIRE is not set | ||
628 | # CONFIG_IEEE1394 is not set | ||
629 | # CONFIG_I2O is not set | ||
630 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
631 | CONFIG_NETDEVICES=y | ||
632 | # CONFIG_DUMMY is not set | ||
633 | # CONFIG_BONDING is not set | ||
634 | # CONFIG_MACVLAN is not set | ||
635 | # CONFIG_EQUALIZER is not set | ||
636 | # CONFIG_TUN is not set | ||
637 | # CONFIG_VETH is not set | ||
638 | # CONFIG_ARCNET is not set | ||
639 | # CONFIG_PHYLIB is not set | ||
640 | CONFIG_NET_ETHERNET=y | ||
641 | # CONFIG_MII is not set | ||
642 | # CONFIG_HAPPYMEAL is not set | ||
643 | # CONFIG_SUNGEM is not set | ||
644 | # CONFIG_CASSINI is not set | ||
645 | # CONFIG_NET_VENDOR_3COM is not set | ||
646 | # CONFIG_ETHOC is not set | ||
647 | # CONFIG_DNET is not set | ||
648 | # CONFIG_NET_TULIP is not set | ||
649 | # CONFIG_HP100 is not set | ||
650 | CONFIG_IBM_NEW_EMAC=y | ||
651 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
652 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
653 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
654 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
655 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
656 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
657 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
658 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
659 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
660 | CONFIG_IBM_NEW_EMAC_EMAC4=y | ||
661 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
662 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
663 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
664 | # CONFIG_NET_PCI is not set | ||
665 | # CONFIG_B44 is not set | ||
666 | # CONFIG_KS8842 is not set | ||
667 | # CONFIG_KS8851_MLL is not set | ||
668 | # CONFIG_ATL2 is not set | ||
669 | # CONFIG_XILINX_EMACLITE is not set | ||
670 | # CONFIG_NETDEV_1000 is not set | ||
671 | # CONFIG_NETDEV_10000 is not set | ||
672 | # CONFIG_TR is not set | ||
673 | # CONFIG_WLAN is not set | ||
674 | |||
675 | # | ||
676 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
677 | # | ||
678 | # CONFIG_WAN is not set | ||
679 | # CONFIG_FDDI is not set | ||
680 | # CONFIG_HIPPI is not set | ||
681 | # CONFIG_PPP is not set | ||
682 | # CONFIG_SLIP is not set | ||
683 | # CONFIG_NET_FC is not set | ||
684 | # CONFIG_NETCONSOLE is not set | ||
685 | # CONFIG_NETPOLL is not set | ||
686 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
687 | # CONFIG_VMXNET3 is not set | ||
688 | # CONFIG_ISDN is not set | ||
689 | # CONFIG_PHONE is not set | ||
690 | |||
691 | # | ||
692 | # Input device support | ||
693 | # | ||
694 | CONFIG_INPUT=y | ||
695 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
696 | # CONFIG_INPUT_POLLDEV is not set | ||
697 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
698 | |||
699 | # | ||
700 | # Userland interfaces | ||
701 | # | ||
702 | CONFIG_INPUT_MOUSEDEV=y | ||
703 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
704 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 | ||
705 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 | ||
706 | # CONFIG_INPUT_JOYDEV is not set | ||
707 | # CONFIG_INPUT_EVDEV is not set | ||
708 | # CONFIG_INPUT_EVBUG is not set | ||
709 | |||
710 | # | ||
711 | # Input Device Drivers | ||
712 | # | ||
713 | CONFIG_INPUT_KEYBOARD=y | ||
714 | # CONFIG_KEYBOARD_ADP5588 is not set | ||
715 | CONFIG_KEYBOARD_ATKBD=y | ||
716 | # CONFIG_QT2160 is not set | ||
717 | # CONFIG_KEYBOARD_LKKBD is not set | ||
718 | # CONFIG_KEYBOARD_MAX7359 is not set | ||
719 | # CONFIG_KEYBOARD_NEWTON is not set | ||
720 | # CONFIG_KEYBOARD_OPENCORES is not set | ||
721 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
722 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
723 | # CONFIG_KEYBOARD_XTKBD is not set | ||
724 | CONFIG_INPUT_MOUSE=y | ||
725 | CONFIG_MOUSE_PS2=y | ||
726 | # CONFIG_MOUSE_PS2_ALPS is not set | ||
727 | # CONFIG_MOUSE_PS2_LOGIPS2PP is not set | ||
728 | # CONFIG_MOUSE_PS2_SYNAPTICS is not set | ||
729 | # CONFIG_MOUSE_PS2_TRACKPOINT is not set | ||
730 | # CONFIG_MOUSE_PS2_ELANTECH is not set | ||
731 | # CONFIG_MOUSE_PS2_SENTELIC is not set | ||
732 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
733 | # CONFIG_MOUSE_SERIAL is not set | ||
734 | # CONFIG_MOUSE_VSXXXAA is not set | ||
735 | # CONFIG_MOUSE_SYNAPTICS_I2C is not set | ||
736 | # CONFIG_INPUT_JOYSTICK is not set | ||
737 | # CONFIG_INPUT_TABLET is not set | ||
738 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
739 | # CONFIG_INPUT_MISC is not set | ||
740 | |||
741 | # | ||
742 | # Hardware I/O ports | ||
743 | # | ||
744 | CONFIG_SERIO=y | ||
745 | CONFIG_SERIO_I8042=y | ||
746 | CONFIG_SERIO_SERPORT=y | ||
747 | # CONFIG_SERIO_PCIPS2 is not set | ||
748 | CONFIG_SERIO_LIBPS2=y | ||
749 | # CONFIG_SERIO_RAW is not set | ||
750 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
751 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
752 | # CONFIG_GAMEPORT is not set | ||
753 | |||
754 | # | ||
755 | # Character devices | ||
756 | # | ||
757 | CONFIG_VT=y | ||
758 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
759 | CONFIG_VT_CONSOLE=y | ||
760 | CONFIG_HW_CONSOLE=y | ||
761 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
762 | CONFIG_DEVKMEM=y | ||
763 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
764 | # CONFIG_NOZOMI is not set | ||
765 | |||
766 | # | ||
767 | # Serial drivers | ||
768 | # | ||
769 | CONFIG_SERIAL_8250=y | ||
770 | CONFIG_SERIAL_8250_CONSOLE=y | ||
771 | # CONFIG_SERIAL_8250_PCI is not set | ||
772 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
773 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
774 | CONFIG_SERIAL_8250_EXTENDED=y | ||
775 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
776 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
777 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
778 | # CONFIG_SERIAL_8250_RSA is not set | ||
779 | |||
780 | # | ||
781 | # Non-8250 serial port support | ||
782 | # | ||
783 | # CONFIG_SERIAL_UARTLITE is not set | ||
784 | CONFIG_SERIAL_CORE=y | ||
785 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
786 | # CONFIG_SERIAL_JSM is not set | ||
787 | CONFIG_SERIAL_OF_PLATFORM=y | ||
788 | # CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
789 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
790 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
791 | CONFIG_UNIX98_PTYS=y | ||
792 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
793 | CONFIG_LEGACY_PTYS=y | ||
794 | CONFIG_LEGACY_PTY_COUNT=256 | ||
795 | # CONFIG_HVC_UDBG is not set | ||
796 | # CONFIG_IPMI_HANDLER is not set | ||
797 | # CONFIG_HW_RANDOM is not set | ||
798 | # CONFIG_NVRAM is not set | ||
799 | # CONFIG_R3964 is not set | ||
800 | # CONFIG_APPLICOM is not set | ||
801 | # CONFIG_RAW_DRIVER is not set | ||
802 | # CONFIG_BOOTCOUNT is not set | ||
803 | # CONFIG_DISPLAY_PDSP1880 is not set | ||
804 | # CONFIG_MUCMC52_IO is not set | ||
805 | # CONFIG_UC101_IO is not set | ||
806 | # CONFIG_SRAM is not set | ||
807 | # CONFIG_TCG_TPM is not set | ||
808 | CONFIG_DEVPORT=y | ||
809 | CONFIG_I2C=y | ||
810 | CONFIG_I2C_BOARDINFO=y | ||
811 | CONFIG_I2C_COMPAT=y | ||
812 | CONFIG_I2C_CHARDEV=y | ||
813 | CONFIG_I2C_HELPER_AUTO=y | ||
814 | |||
815 | # | ||
816 | # I2C Hardware Bus support | ||
817 | # | ||
818 | |||
819 | # | ||
820 | # PC SMBus host controller drivers | ||
821 | # | ||
822 | # CONFIG_I2C_ALI1535 is not set | ||
823 | # CONFIG_I2C_ALI1563 is not set | ||
824 | # CONFIG_I2C_ALI15X3 is not set | ||
825 | # CONFIG_I2C_AMD756 is not set | ||
826 | # CONFIG_I2C_AMD8111 is not set | ||
827 | # CONFIG_I2C_I801 is not set | ||
828 | # CONFIG_I2C_ISCH is not set | ||
829 | # CONFIG_I2C_PIIX4 is not set | ||
830 | # CONFIG_I2C_NFORCE2 is not set | ||
831 | # CONFIG_I2C_SIS5595 is not set | ||
832 | # CONFIG_I2C_SIS630 is not set | ||
833 | # CONFIG_I2C_SIS96X is not set | ||
834 | # CONFIG_I2C_VIA is not set | ||
835 | # CONFIG_I2C_VIAPRO is not set | ||
836 | |||
837 | # | ||
838 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
839 | # | ||
840 | CONFIG_I2C_IBM_IIC=y | ||
841 | # CONFIG_I2C_MPC is not set | ||
842 | # CONFIG_I2C_OCORES is not set | ||
843 | # CONFIG_I2C_SIMTEC is not set | ||
844 | # CONFIG_I2C_XILINX is not set | ||
845 | |||
846 | # | ||
847 | # External I2C/SMBus adapter drivers | ||
848 | # | ||
849 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
850 | # CONFIG_I2C_TAOS_EVM is not set | ||
851 | |||
852 | # | ||
853 | # Other I2C/SMBus bus drivers | ||
854 | # | ||
855 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
856 | # CONFIG_I2C_STUB is not set | ||
857 | # CONFIG_I2C_DEBUG_CORE is not set | ||
858 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
859 | # CONFIG_I2C_DEBUG_BUS is not set | ||
860 | # CONFIG_SPI is not set | ||
861 | |||
862 | # | ||
863 | # PPS support | ||
864 | # | ||
865 | # CONFIG_PPS is not set | ||
866 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
867 | # CONFIG_GPIOLIB is not set | ||
868 | # CONFIG_W1 is not set | ||
869 | # CONFIG_POWER_SUPPLY is not set | ||
870 | # CONFIG_HWMON is not set | ||
871 | # CONFIG_THERMAL is not set | ||
872 | # CONFIG_WATCHDOG is not set | ||
873 | CONFIG_SSB_POSSIBLE=y | ||
874 | |||
875 | # | ||
876 | # Sonics Silicon Backplane | ||
877 | # | ||
878 | # CONFIG_SSB is not set | ||
879 | |||
880 | # | ||
881 | # Multifunction device drivers | ||
882 | # | ||
883 | # CONFIG_MFD_CORE is not set | ||
884 | # CONFIG_MFD_88PM860X is not set | ||
885 | CONFIG_MFD_SM501=y | ||
886 | # CONFIG_HTC_PASIC3 is not set | ||
887 | # CONFIG_TWL4030_CORE is not set | ||
888 | # CONFIG_MFD_TMIO is not set | ||
889 | # CONFIG_PMIC_DA903X is not set | ||
890 | # CONFIG_PMIC_ADP5520 is not set | ||
891 | # CONFIG_MFD_MAX8925 is not set | ||
892 | # CONFIG_MFD_WM8400 is not set | ||
893 | # CONFIG_MFD_WM831X is not set | ||
894 | # CONFIG_MFD_WM8350_I2C is not set | ||
895 | # CONFIG_MFD_WM8994 is not set | ||
896 | # CONFIG_MFD_PCF50633 is not set | ||
897 | # CONFIG_AB3100_CORE is not set | ||
898 | # CONFIG_LPC_SCH is not set | ||
899 | # CONFIG_REGULATOR is not set | ||
900 | # CONFIG_MEDIA_SUPPORT is not set | ||
901 | |||
902 | # | ||
903 | # Graphics support | ||
904 | # | ||
905 | # CONFIG_AGP is not set | ||
906 | CONFIG_VGA_ARB=y | ||
907 | CONFIG_VGA_ARB_MAX_GPUS=16 | ||
908 | # CONFIG_DRM is not set | ||
909 | # CONFIG_VGASTATE is not set | ||
910 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
911 | CONFIG_FB=y | ||
912 | # CONFIG_FIRMWARE_EDID is not set | ||
913 | # CONFIG_FB_DDC is not set | ||
914 | # CONFIG_FB_BOOT_VESA_SUPPORT is not set | ||
915 | CONFIG_FB_CFB_FILLRECT=y | ||
916 | CONFIG_FB_CFB_COPYAREA=y | ||
917 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
918 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
919 | # CONFIG_FB_SYS_FILLRECT is not set | ||
920 | # CONFIG_FB_SYS_COPYAREA is not set | ||
921 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
922 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
923 | # CONFIG_FB_SYS_FOPS is not set | ||
924 | # CONFIG_FB_SVGALIB is not set | ||
925 | # CONFIG_FB_MACMODES is not set | ||
926 | # CONFIG_FB_BACKLIGHT is not set | ||
927 | # CONFIG_FB_MODE_HELPERS is not set | ||
928 | # CONFIG_FB_TILEBLITTING is not set | ||
929 | |||
930 | # | ||
931 | # Frame buffer hardware drivers | ||
932 | # | ||
933 | # CONFIG_FB_CIRRUS is not set | ||
934 | # CONFIG_FB_PM2 is not set | ||
935 | # CONFIG_FB_CYBER2000 is not set | ||
936 | # CONFIG_FB_OF is not set | ||
937 | # CONFIG_FB_CT65550 is not set | ||
938 | # CONFIG_FB_ASILIANT is not set | ||
939 | # CONFIG_FB_IMSTT is not set | ||
940 | # CONFIG_FB_VGA16 is not set | ||
941 | # CONFIG_FB_UVESA is not set | ||
942 | # CONFIG_FB_S1D13XXX is not set | ||
943 | # CONFIG_FB_NVIDIA is not set | ||
944 | # CONFIG_FB_RIVA is not set | ||
945 | # CONFIG_FB_MATROX is not set | ||
946 | # CONFIG_FB_RADEON is not set | ||
947 | # CONFIG_FB_ATY128 is not set | ||
948 | # CONFIG_FB_ATY is not set | ||
949 | # CONFIG_FB_S3 is not set | ||
950 | # CONFIG_FB_SAVAGE is not set | ||
951 | # CONFIG_FB_SIS is not set | ||
952 | # CONFIG_FB_VIA is not set | ||
953 | # CONFIG_FB_NEOMAGIC is not set | ||
954 | # CONFIG_FB_KYRO is not set | ||
955 | # CONFIG_FB_3DFX is not set | ||
956 | # CONFIG_FB_VOODOO1 is not set | ||
957 | # CONFIG_FB_VT8623 is not set | ||
958 | # CONFIG_FB_TRIDENT is not set | ||
959 | # CONFIG_FB_ARK is not set | ||
960 | # CONFIG_FB_PM3 is not set | ||
961 | # CONFIG_FB_CARMINE is not set | ||
962 | CONFIG_FB_SM501=y | ||
963 | # CONFIG_FB_IBM_GXT4500 is not set | ||
964 | # CONFIG_FB_VIRTUAL is not set | ||
965 | # CONFIG_FB_METRONOME is not set | ||
966 | # CONFIG_FB_MB862XX is not set | ||
967 | # CONFIG_FB_BROADSHEET is not set | ||
968 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
969 | |||
970 | # | ||
971 | # Display device support | ||
972 | # | ||
973 | # CONFIG_DISPLAY_SUPPORT is not set | ||
974 | |||
975 | # | ||
976 | # Console display driver support | ||
977 | # | ||
978 | CONFIG_DUMMY_CONSOLE=y | ||
979 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
980 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
981 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
982 | # CONFIG_FONTS is not set | ||
983 | CONFIG_FONT_8x8=y | ||
984 | CONFIG_FONT_8x16=y | ||
985 | CONFIG_LOGO=y | ||
986 | # CONFIG_LOGO_LINUX_MONO is not set | ||
987 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
988 | CONFIG_LOGO_LINUX_CLUT224=y | ||
989 | # CONFIG_SOUND is not set | ||
990 | CONFIG_HID_SUPPORT=y | ||
991 | CONFIG_HID=y | ||
992 | # CONFIG_HIDRAW is not set | ||
993 | # CONFIG_HID_PID is not set | ||
994 | |||
995 | # | ||
996 | # Special HID drivers | ||
997 | # | ||
998 | # CONFIG_USB_SUPPORT is not set | ||
999 | # CONFIG_UWB is not set | ||
1000 | # CONFIG_MMC is not set | ||
1001 | # CONFIG_MEMSTICK is not set | ||
1002 | # CONFIG_NEW_LEDS is not set | ||
1003 | # CONFIG_ACCESSIBILITY is not set | ||
1004 | # CONFIG_INFINIBAND is not set | ||
1005 | # CONFIG_EDAC is not set | ||
1006 | CONFIG_RTC_LIB=y | ||
1007 | CONFIG_RTC_CLASS=y | ||
1008 | CONFIG_RTC_HCTOSYS=y | ||
1009 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
1010 | # CONFIG_RTC_DEBUG is not set | ||
1011 | |||
1012 | # | ||
1013 | # RTC interfaces | ||
1014 | # | ||
1015 | CONFIG_RTC_INTF_SYSFS=y | ||
1016 | CONFIG_RTC_INTF_PROC=y | ||
1017 | CONFIG_RTC_INTF_DEV=y | ||
1018 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
1019 | # CONFIG_RTC_DRV_TEST is not set | ||
1020 | |||
1021 | # | ||
1022 | # I2C RTC drivers | ||
1023 | # | ||
1024 | CONFIG_RTC_DRV_DS1307=y | ||
1025 | # CONFIG_RTC_DRV_DS1374 is not set | ||
1026 | # CONFIG_RTC_DRV_DS1672 is not set | ||
1027 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
1028 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
1029 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
1030 | # CONFIG_RTC_DRV_X1205 is not set | ||
1031 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
1032 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
1033 | # CONFIG_RTC_DRV_M41T80 is not set | ||
1034 | # CONFIG_RTC_DRV_BQ32K is not set | ||
1035 | # CONFIG_RTC_DRV_S35390A is not set | ||
1036 | # CONFIG_RTC_DRV_FM3130 is not set | ||
1037 | # CONFIG_RTC_DRV_RX8581 is not set | ||
1038 | # CONFIG_RTC_DRV_RX8025 is not set | ||
1039 | |||
1040 | # | ||
1041 | # SPI RTC drivers | ||
1042 | # | ||
1043 | |||
1044 | # | ||
1045 | # Platform RTC drivers | ||
1046 | # | ||
1047 | # CONFIG_RTC_DRV_CMOS is not set | ||
1048 | # CONFIG_RTC_DRV_DS1286 is not set | ||
1049 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1050 | # CONFIG_RTC_DRV_DS1553 is not set | ||
1051 | # CONFIG_RTC_DRV_DS1742 is not set | ||
1052 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1053 | # CONFIG_RTC_DRV_M48T86 is not set | ||
1054 | # CONFIG_RTC_DRV_M48T35 is not set | ||
1055 | # CONFIG_RTC_DRV_M48T59 is not set | ||
1056 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
1057 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
1058 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
1059 | # CONFIG_RTC_DRV_V3020 is not set | ||
1060 | |||
1061 | # | ||
1062 | # on-CPU RTC drivers | ||
1063 | # | ||
1064 | # CONFIG_RTC_DRV_GENERIC is not set | ||
1065 | # CONFIG_DMADEVICES is not set | ||
1066 | # CONFIG_AUXDISPLAY is not set | ||
1067 | # CONFIG_UIO is not set | ||
1068 | |||
1069 | # | ||
1070 | # TI VLYNQ | ||
1071 | # | ||
1072 | # CONFIG_STAGING is not set | ||
1073 | |||
1074 | # | ||
1075 | # File systems | ||
1076 | # | ||
1077 | CONFIG_EXT2_FS=y | ||
1078 | # CONFIG_EXT2_FS_XATTR is not set | ||
1079 | # CONFIG_EXT2_FS_XIP is not set | ||
1080 | CONFIG_EXT3_FS=y | ||
1081 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
1082 | CONFIG_EXT3_FS_XATTR=y | ||
1083 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
1084 | # CONFIG_EXT3_FS_SECURITY is not set | ||
1085 | # CONFIG_EXT4_FS is not set | ||
1086 | CONFIG_JBD=y | ||
1087 | CONFIG_FS_MBCACHE=y | ||
1088 | # CONFIG_REISERFS_FS is not set | ||
1089 | # CONFIG_JFS_FS is not set | ||
1090 | # CONFIG_FS_POSIX_ACL is not set | ||
1091 | # CONFIG_XFS_FS is not set | ||
1092 | # CONFIG_GFS2_FS is not set | ||
1093 | # CONFIG_OCFS2_FS is not set | ||
1094 | # CONFIG_BTRFS_FS is not set | ||
1095 | # CONFIG_NILFS2_FS is not set | ||
1096 | CONFIG_FILE_LOCKING=y | ||
1097 | CONFIG_FSNOTIFY=y | ||
1098 | CONFIG_DNOTIFY=y | ||
1099 | CONFIG_INOTIFY=y | ||
1100 | CONFIG_INOTIFY_USER=y | ||
1101 | # CONFIG_QUOTA is not set | ||
1102 | # CONFIG_AUTOFS_FS is not set | ||
1103 | # CONFIG_AUTOFS4_FS is not set | ||
1104 | # CONFIG_FUSE_FS is not set | ||
1105 | |||
1106 | # | ||
1107 | # Caches | ||
1108 | # | ||
1109 | # CONFIG_FSCACHE is not set | ||
1110 | |||
1111 | # | ||
1112 | # CD-ROM/DVD Filesystems | ||
1113 | # | ||
1114 | # CONFIG_ISO9660_FS is not set | ||
1115 | # CONFIG_UDF_FS is not set | ||
1116 | |||
1117 | # | ||
1118 | # DOS/FAT/NT Filesystems | ||
1119 | # | ||
1120 | CONFIG_FAT_FS=y | ||
1121 | # CONFIG_MSDOS_FS is not set | ||
1122 | CONFIG_VFAT_FS=y | ||
1123 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1124 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1125 | # CONFIG_NTFS_FS is not set | ||
1126 | |||
1127 | # | ||
1128 | # Pseudo filesystems | ||
1129 | # | ||
1130 | CONFIG_PROC_FS=y | ||
1131 | CONFIG_PROC_KCORE=y | ||
1132 | CONFIG_PROC_SYSCTL=y | ||
1133 | CONFIG_PROC_PAGE_MONITOR=y | ||
1134 | CONFIG_SYSFS=y | ||
1135 | CONFIG_TMPFS=y | ||
1136 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1137 | # CONFIG_HUGETLB_PAGE is not set | ||
1138 | # CONFIG_CONFIGFS_FS is not set | ||
1139 | CONFIG_MISC_FILESYSTEMS=y | ||
1140 | # CONFIG_ADFS_FS is not set | ||
1141 | # CONFIG_AFFS_FS is not set | ||
1142 | # CONFIG_HFS_FS is not set | ||
1143 | # CONFIG_HFSPLUS_FS is not set | ||
1144 | # CONFIG_BEFS_FS is not set | ||
1145 | # CONFIG_BFS_FS is not set | ||
1146 | # CONFIG_EFS_FS is not set | ||
1147 | # CONFIG_JFFS2_FS is not set | ||
1148 | # CONFIG_YAFFS_FS is not set | ||
1149 | # CONFIG_LOGFS is not set | ||
1150 | CONFIG_CRAMFS=y | ||
1151 | # CONFIG_SQUASHFS is not set | ||
1152 | # CONFIG_VXFS_FS is not set | ||
1153 | # CONFIG_MINIX_FS is not set | ||
1154 | # CONFIG_OMFS_FS is not set | ||
1155 | # CONFIG_HPFS_FS is not set | ||
1156 | # CONFIG_QNX4FS_FS is not set | ||
1157 | # CONFIG_ROMFS_FS is not set | ||
1158 | # CONFIG_SYSV_FS is not set | ||
1159 | # CONFIG_UFS_FS is not set | ||
1160 | CONFIG_NETWORK_FILESYSTEMS=y | ||
1161 | CONFIG_NFS_FS=y | ||
1162 | CONFIG_NFS_V3=y | ||
1163 | # CONFIG_NFS_V3_ACL is not set | ||
1164 | # CONFIG_NFS_V4 is not set | ||
1165 | CONFIG_ROOT_NFS=y | ||
1166 | # CONFIG_NFSD is not set | ||
1167 | CONFIG_LOCKD=y | ||
1168 | CONFIG_LOCKD_V4=y | ||
1169 | CONFIG_NFS_COMMON=y | ||
1170 | CONFIG_SUNRPC=y | ||
1171 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
1172 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1173 | # CONFIG_SMB_FS is not set | ||
1174 | # CONFIG_CEPH_FS is not set | ||
1175 | # CONFIG_CIFS is not set | ||
1176 | # CONFIG_NCP_FS is not set | ||
1177 | # CONFIG_CODA_FS is not set | ||
1178 | # CONFIG_AFS_FS is not set | ||
1179 | |||
1180 | # | ||
1181 | # Partition Types | ||
1182 | # | ||
1183 | # CONFIG_PARTITION_ADVANCED is not set | ||
1184 | CONFIG_MSDOS_PARTITION=y | ||
1185 | CONFIG_NLS=y | ||
1186 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1187 | CONFIG_NLS_CODEPAGE_437=y | ||
1188 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1189 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1190 | CONFIG_NLS_CODEPAGE_850=y | ||
1191 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1192 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1193 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1194 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1195 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1196 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1197 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1198 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1199 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1200 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1201 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1202 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1203 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1204 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1205 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1206 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1207 | # CONFIG_NLS_ISO8859_8 is not set | ||
1208 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1209 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1210 | # CONFIG_NLS_ASCII is not set | ||
1211 | CONFIG_NLS_ISO8859_1=y | ||
1212 | # CONFIG_NLS_ISO8859_2 is not set | ||
1213 | # CONFIG_NLS_ISO8859_3 is not set | ||
1214 | # CONFIG_NLS_ISO8859_4 is not set | ||
1215 | # CONFIG_NLS_ISO8859_5 is not set | ||
1216 | # CONFIG_NLS_ISO8859_6 is not set | ||
1217 | # CONFIG_NLS_ISO8859_7 is not set | ||
1218 | # CONFIG_NLS_ISO8859_9 is not set | ||
1219 | # CONFIG_NLS_ISO8859_13 is not set | ||
1220 | # CONFIG_NLS_ISO8859_14 is not set | ||
1221 | CONFIG_NLS_ISO8859_15=y | ||
1222 | # CONFIG_NLS_KOI8_R is not set | ||
1223 | # CONFIG_NLS_KOI8_U is not set | ||
1224 | # CONFIG_NLS_UTF8 is not set | ||
1225 | # CONFIG_DLM is not set | ||
1226 | # CONFIG_BINARY_PRINTF is not set | ||
1227 | |||
1228 | # | ||
1229 | # Library routines | ||
1230 | # | ||
1231 | CONFIG_BITREVERSE=y | ||
1232 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
1233 | # CONFIG_CRC_CCITT is not set | ||
1234 | # CONFIG_CRC16 is not set | ||
1235 | # CONFIG_CRC_T10DIF is not set | ||
1236 | # CONFIG_CRC_ITU_T is not set | ||
1237 | CONFIG_CRC32=y | ||
1238 | # CONFIG_CRC7 is not set | ||
1239 | # CONFIG_LIBCRC32C is not set | ||
1240 | CONFIG_ZLIB_INFLATE=y | ||
1241 | CONFIG_DECOMPRESS_GZIP=y | ||
1242 | CONFIG_HAS_IOMEM=y | ||
1243 | CONFIG_HAS_IOPORT=y | ||
1244 | CONFIG_HAS_DMA=y | ||
1245 | CONFIG_HAVE_LMB=y | ||
1246 | CONFIG_NLATTR=y | ||
1247 | CONFIG_GENERIC_ATOMIC64=y | ||
1248 | |||
1249 | # | ||
1250 | # Kernel hacking | ||
1251 | # | ||
1252 | # CONFIG_PRINTK_TIME is not set | ||
1253 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1254 | CONFIG_ENABLE_MUST_CHECK=y | ||
1255 | CONFIG_FRAME_WARN=1024 | ||
1256 | CONFIG_MAGIC_SYSRQ=y | ||
1257 | # CONFIG_STRIP_ASM_SYMS is not set | ||
1258 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1259 | # CONFIG_DEBUG_FS is not set | ||
1260 | # CONFIG_HEADERS_CHECK is not set | ||
1261 | CONFIG_DEBUG_KERNEL=y | ||
1262 | # CONFIG_DEBUG_SHIRQ is not set | ||
1263 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1264 | # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
1265 | CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
1266 | CONFIG_DETECT_HUNG_TASK=y | ||
1267 | # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set | ||
1268 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 | ||
1269 | CONFIG_SCHED_DEBUG=y | ||
1270 | # CONFIG_SCHEDSTATS is not set | ||
1271 | # CONFIG_TIMER_STATS is not set | ||
1272 | # CONFIG_DEBUG_OBJECTS is not set | ||
1273 | # CONFIG_SLUB_DEBUG_ON is not set | ||
1274 | # CONFIG_SLUB_STATS is not set | ||
1275 | # CONFIG_DEBUG_KMEMLEAK is not set | ||
1276 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1277 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1278 | # CONFIG_DEBUG_SPINLOCK is not set | ||
1279 | # CONFIG_DEBUG_MUTEXES is not set | ||
1280 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1281 | # CONFIG_PROVE_LOCKING is not set | ||
1282 | # CONFIG_LOCK_STAT is not set | ||
1283 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1284 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1285 | # CONFIG_DEBUG_KOBJECT is not set | ||
1286 | # CONFIG_DEBUG_HIGHMEM is not set | ||
1287 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1288 | # CONFIG_DEBUG_INFO is not set | ||
1289 | # CONFIG_DEBUG_VM is not set | ||
1290 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1291 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
1292 | # CONFIG_DEBUG_LIST is not set | ||
1293 | # CONFIG_DEBUG_SG is not set | ||
1294 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
1295 | # CONFIG_DEBUG_CREDENTIALS is not set | ||
1296 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1297 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
1298 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1299 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
1300 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
1301 | # CONFIG_FAULT_INJECTION is not set | ||
1302 | # CONFIG_LATENCYTOP is not set | ||
1303 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
1304 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
1305 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
1306 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
1307 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
1308 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
1309 | CONFIG_TRACING_SUPPORT=y | ||
1310 | CONFIG_FTRACE=y | ||
1311 | # CONFIG_FUNCTION_TRACER is not set | ||
1312 | # CONFIG_IRQSOFF_TRACER is not set | ||
1313 | # CONFIG_SCHED_TRACER is not set | ||
1314 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
1315 | # CONFIG_BOOT_TRACER is not set | ||
1316 | CONFIG_BRANCH_PROFILE_NONE=y | ||
1317 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
1318 | # CONFIG_PROFILE_ALL_BRANCHES is not set | ||
1319 | # CONFIG_STACK_TRACER is not set | ||
1320 | # CONFIG_KMEMTRACE is not set | ||
1321 | # CONFIG_WORKQUEUE_TRACER is not set | ||
1322 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
1323 | # CONFIG_DMA_API_DEBUG is not set | ||
1324 | # CONFIG_SAMPLES is not set | ||
1325 | CONFIG_HAVE_ARCH_KGDB=y | ||
1326 | # CONFIG_KGDB is not set | ||
1327 | # CONFIG_PPC_DISABLE_WERROR is not set | ||
1328 | CONFIG_PPC_WERROR=y | ||
1329 | CONFIG_PRINT_STACK_DEPTH=64 | ||
1330 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
1331 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
1332 | # CONFIG_CODE_PATCHING_SELFTEST is not set | ||
1333 | # CONFIG_FTR_FIXUP_SELFTEST is not set | ||
1334 | # CONFIG_MSI_BITMAP_SELFTEST is not set | ||
1335 | # CONFIG_XMON is not set | ||
1336 | # CONFIG_IRQSTACKS is not set | ||
1337 | # CONFIG_BDI_SWITCH is not set | ||
1338 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
1339 | |||
1340 | # | ||
1341 | # Security options | ||
1342 | # | ||
1343 | # CONFIG_KEYS is not set | ||
1344 | # CONFIG_SECURITY is not set | ||
1345 | # CONFIG_SECURITYFS is not set | ||
1346 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
1347 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
1348 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
1349 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
1350 | CONFIG_DEFAULT_SECURITY="" | ||
1351 | CONFIG_CRYPTO=y | ||
1352 | |||
1353 | # | ||
1354 | # Crypto core or helper | ||
1355 | # | ||
1356 | CONFIG_CRYPTO_ALGAPI=y | ||
1357 | CONFIG_CRYPTO_ALGAPI2=y | ||
1358 | CONFIG_CRYPTO_AEAD2=y | ||
1359 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1360 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
1361 | CONFIG_CRYPTO_HASH=y | ||
1362 | CONFIG_CRYPTO_HASH2=y | ||
1363 | CONFIG_CRYPTO_RNG2=y | ||
1364 | CONFIG_CRYPTO_PCOMP=y | ||
1365 | CONFIG_CRYPTO_MANAGER=y | ||
1366 | CONFIG_CRYPTO_MANAGER2=y | ||
1367 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1368 | # CONFIG_CRYPTO_NULL is not set | ||
1369 | CONFIG_CRYPTO_WORKQUEUE=y | ||
1370 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1371 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1372 | # CONFIG_CRYPTO_TEST is not set | ||
1373 | |||
1374 | # | ||
1375 | # Authenticated Encryption with Associated Data | ||
1376 | # | ||
1377 | # CONFIG_CRYPTO_CCM is not set | ||
1378 | # CONFIG_CRYPTO_GCM is not set | ||
1379 | # CONFIG_CRYPTO_SEQIV is not set | ||
1380 | |||
1381 | # | ||
1382 | # Block modes | ||
1383 | # | ||
1384 | CONFIG_CRYPTO_CBC=y | ||
1385 | # CONFIG_CRYPTO_CTR is not set | ||
1386 | # CONFIG_CRYPTO_CTS is not set | ||
1387 | CONFIG_CRYPTO_ECB=y | ||
1388 | # CONFIG_CRYPTO_LRW is not set | ||
1389 | CONFIG_CRYPTO_PCBC=y | ||
1390 | # CONFIG_CRYPTO_XTS is not set | ||
1391 | |||
1392 | # | ||
1393 | # Hash modes | ||
1394 | # | ||
1395 | # CONFIG_CRYPTO_HMAC is not set | ||
1396 | # CONFIG_CRYPTO_XCBC is not set | ||
1397 | # CONFIG_CRYPTO_VMAC is not set | ||
1398 | |||
1399 | # | ||
1400 | # Digest | ||
1401 | # | ||
1402 | # CONFIG_CRYPTO_CRC32C is not set | ||
1403 | # CONFIG_CRYPTO_GHASH is not set | ||
1404 | # CONFIG_CRYPTO_MD4 is not set | ||
1405 | CONFIG_CRYPTO_MD5=y | ||
1406 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1407 | # CONFIG_CRYPTO_RMD128 is not set | ||
1408 | # CONFIG_CRYPTO_RMD160 is not set | ||
1409 | # CONFIG_CRYPTO_RMD256 is not set | ||
1410 | # CONFIG_CRYPTO_RMD320 is not set | ||
1411 | # CONFIG_CRYPTO_SHA1 is not set | ||
1412 | # CONFIG_CRYPTO_SHA256 is not set | ||
1413 | # CONFIG_CRYPTO_SHA512 is not set | ||
1414 | # CONFIG_CRYPTO_TGR192 is not set | ||
1415 | # CONFIG_CRYPTO_WP512 is not set | ||
1416 | |||
1417 | # | ||
1418 | # Ciphers | ||
1419 | # | ||
1420 | # CONFIG_CRYPTO_AES is not set | ||
1421 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1422 | # CONFIG_CRYPTO_ARC4 is not set | ||
1423 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1424 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1425 | # CONFIG_CRYPTO_CAST5 is not set | ||
1426 | # CONFIG_CRYPTO_CAST6 is not set | ||
1427 | CONFIG_CRYPTO_DES=y | ||
1428 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1429 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1430 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1431 | # CONFIG_CRYPTO_SEED is not set | ||
1432 | # CONFIG_CRYPTO_SERPENT is not set | ||
1433 | # CONFIG_CRYPTO_TEA is not set | ||
1434 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1435 | |||
1436 | # | ||
1437 | # Compression | ||
1438 | # | ||
1439 | # CONFIG_CRYPTO_DEFLATE is not set | ||
1440 | # CONFIG_CRYPTO_ZLIB is not set | ||
1441 | # CONFIG_CRYPTO_LZO is not set | ||
1442 | |||
1443 | # | ||
1444 | # Random Number Generation | ||
1445 | # | ||
1446 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
1447 | CONFIG_CRYPTO_HW=y | ||
1448 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1449 | # CONFIG_CRYPTO_DEV_PPC4XX is not set | ||
1450 | # CONFIG_PPC_CLOCK is not set | ||
1451 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h index 725634fc18c6..4b509411ad8a 100644 --- a/arch/powerpc/include/asm/cache.h +++ b/arch/powerpc/include/asm/cache.h | |||
@@ -42,7 +42,7 @@ extern struct ppc64_caches ppc64_caches; | |||
42 | #endif /* __powerpc64__ && ! __ASSEMBLY__ */ | 42 | #endif /* __powerpc64__ && ! __ASSEMBLY__ */ |
43 | 43 | ||
44 | #if !defined(__ASSEMBLY__) | 44 | #if !defined(__ASSEMBLY__) |
45 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 45 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | #endif /* __KERNEL__ */ | 48 | #endif /* __KERNEL__ */ |
diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index e3cba4e1eb34..b0b21134f61a 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h | |||
@@ -70,6 +70,7 @@ struct pt_regs; | |||
70 | extern int machine_check_generic(struct pt_regs *regs); | 70 | extern int machine_check_generic(struct pt_regs *regs); |
71 | extern int machine_check_4xx(struct pt_regs *regs); | 71 | extern int machine_check_4xx(struct pt_regs *regs); |
72 | extern int machine_check_440A(struct pt_regs *regs); | 72 | extern int machine_check_440A(struct pt_regs *regs); |
73 | extern int machine_check_e500mc(struct pt_regs *regs); | ||
73 | extern int machine_check_e500(struct pt_regs *regs); | 74 | extern int machine_check_e500(struct pt_regs *regs); |
74 | extern int machine_check_e200(struct pt_regs *regs); | 75 | extern int machine_check_e200(struct pt_regs *regs); |
75 | extern int machine_check_47x(struct pt_regs *regs); | 76 | extern int machine_check_47x(struct pt_regs *regs); |
diff --git a/arch/powerpc/include/asm/kexec.h b/arch/powerpc/include/asm/kexec.h index a6ca6da1430b..2a9cd74a841e 100644 --- a/arch/powerpc/include/asm/kexec.h +++ b/arch/powerpc/include/asm/kexec.h | |||
@@ -2,6 +2,18 @@ | |||
2 | #define _ASM_POWERPC_KEXEC_H | 2 | #define _ASM_POWERPC_KEXEC_H |
3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
4 | 4 | ||
5 | #ifdef CONFIG_FSL_BOOKE | ||
6 | |||
7 | /* | ||
8 | * On FSL-BookE we setup a 1:1 mapping which covers the first 2GiB of memory | ||
9 | * and therefore we can only deal with memory within this range | ||
10 | */ | ||
11 | #define KEXEC_SOURCE_MEMORY_LIMIT (2 * 1024 * 1024 * 1024UL) | ||
12 | #define KEXEC_DESTINATION_MEMORY_LIMIT (2 * 1024 * 1024 * 1024UL) | ||
13 | #define KEXEC_CONTROL_MEMORY_LIMIT (2 * 1024 * 1024 * 1024UL) | ||
14 | |||
15 | #else | ||
16 | |||
5 | /* | 17 | /* |
6 | * Maximum page that is mapped directly into kernel memory. | 18 | * Maximum page that is mapped directly into kernel memory. |
7 | * XXX: Since we copy virt we can use any page we allocate | 19 | * XXX: Since we copy virt we can use any page we allocate |
@@ -21,6 +33,7 @@ | |||
21 | /* TASK_SIZE, probably left over from use_mm ?? */ | 33 | /* TASK_SIZE, probably left over from use_mm ?? */ |
22 | #define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE | 34 | #define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE |
23 | #endif | 35 | #endif |
36 | #endif | ||
24 | 37 | ||
25 | #define KEXEC_CONTROL_PAGE_SIZE 4096 | 38 | #define KEXEC_CONTROL_PAGE_SIZE 4096 |
26 | 39 | ||
diff --git a/arch/powerpc/include/asm/macio.h b/arch/powerpc/include/asm/macio.h index 19a661b4cb98..675e159b5ef4 100644 --- a/arch/powerpc/include/asm/macio.h +++ b/arch/powerpc/include/asm/macio.h | |||
@@ -123,10 +123,6 @@ static inline struct pci_dev *macio_get_pci_dev(struct macio_dev *mdev) | |||
123 | */ | 123 | */ |
124 | struct macio_driver | 124 | struct macio_driver |
125 | { | 125 | { |
126 | char *name; | ||
127 | struct of_device_id *match_table; | ||
128 | struct module *owner; | ||
129 | |||
130 | int (*probe)(struct macio_dev* dev, const struct of_device_id *match); | 126 | int (*probe)(struct macio_dev* dev, const struct of_device_id *match); |
131 | int (*remove)(struct macio_dev* dev); | 127 | int (*remove)(struct macio_dev* dev); |
132 | 128 | ||
diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h index bfc4e027e2ad..358ff14ea25e 100644 --- a/arch/powerpc/include/asm/page_64.h +++ b/arch/powerpc/include/asm/page_64.h | |||
@@ -162,14 +162,6 @@ do { \ | |||
162 | 162 | ||
163 | #endif /* !CONFIG_HUGETLB_PAGE */ | 163 | #endif /* !CONFIG_HUGETLB_PAGE */ |
164 | 164 | ||
165 | #ifdef MODULE | ||
166 | #define __page_aligned __attribute__((__aligned__(PAGE_SIZE))) | ||
167 | #else | ||
168 | #define __page_aligned \ | ||
169 | __attribute__((__aligned__(PAGE_SIZE), \ | ||
170 | __section__(".data.page_aligned"))) | ||
171 | #endif | ||
172 | |||
173 | #define VM_DATA_DEFAULT_FLAGS \ | 165 | #define VM_DATA_DEFAULT_FLAGS \ |
174 | (test_thread_flag(TIF_32BIT) ? \ | 166 | (test_thread_flag(TIF_32BIT) ? \ |
175 | VM_DATA_DEFAULT_FLAGS32 : VM_DATA_DEFAULT_FLAGS64) | 167 | VM_DATA_DEFAULT_FLAGS32 : VM_DATA_DEFAULT_FLAGS64) |
diff --git a/arch/powerpc/include/asm/reg_booke.h b/arch/powerpc/include/asm/reg_booke.h index 5304a37ba425..2360317179a9 100644 --- a/arch/powerpc/include/asm/reg_booke.h +++ b/arch/powerpc/include/asm/reg_booke.h | |||
@@ -4,6 +4,12 @@ | |||
4 | * are not true Book E PowerPCs, they borrowed a number of features | 4 | * are not true Book E PowerPCs, they borrowed a number of features |
5 | * before Book E was finalized, and are included here as well. Unfortunatly, | 5 | * before Book E was finalized, and are included here as well. Unfortunatly, |
6 | * they sometimes used different locations than true Book E CPUs did. | 6 | * they sometimes used different locations than true Book E CPUs did. |
7 | * | ||
8 | * This program is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU General Public License version 2 | ||
10 | * as published by the Free Software Foundation. | ||
11 | * | ||
12 | * Copyright 2009-2010 Freescale Semiconductor, Inc. | ||
7 | */ | 13 | */ |
8 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
9 | #ifndef __ASM_POWERPC_REG_BOOKE_H__ | 15 | #ifndef __ASM_POWERPC_REG_BOOKE_H__ |
@@ -88,6 +94,7 @@ | |||
88 | #define SPRN_IVOR35 0x213 /* Interrupt Vector Offset Register 35 */ | 94 | #define SPRN_IVOR35 0x213 /* Interrupt Vector Offset Register 35 */ |
89 | #define SPRN_IVOR36 0x214 /* Interrupt Vector Offset Register 36 */ | 95 | #define SPRN_IVOR36 0x214 /* Interrupt Vector Offset Register 36 */ |
90 | #define SPRN_IVOR37 0x215 /* Interrupt Vector Offset Register 37 */ | 96 | #define SPRN_IVOR37 0x215 /* Interrupt Vector Offset Register 37 */ |
97 | #define SPRN_MCARU 0x239 /* Machine Check Address Register Upper */ | ||
91 | #define SPRN_MCSRR0 0x23A /* Machine Check Save and Restore Register 0 */ | 98 | #define SPRN_MCSRR0 0x23A /* Machine Check Save and Restore Register 0 */ |
92 | #define SPRN_MCSRR1 0x23B /* Machine Check Save and Restore Register 1 */ | 99 | #define SPRN_MCSRR1 0x23B /* Machine Check Save and Restore Register 1 */ |
93 | #define SPRN_MCSR 0x23C /* Machine Check Status Register */ | 100 | #define SPRN_MCSR 0x23C /* Machine Check Status Register */ |
@@ -196,8 +203,11 @@ | |||
196 | #define PPC47x_MCSR_IPR 0x00400000 /* Imprecise Machine Check Exception */ | 203 | #define PPC47x_MCSR_IPR 0x00400000 /* Imprecise Machine Check Exception */ |
197 | 204 | ||
198 | #ifdef CONFIG_E500 | 205 | #ifdef CONFIG_E500 |
206 | /* All e500 */ | ||
199 | #define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */ | 207 | #define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */ |
200 | #define MCSR_ICPERR 0x40000000UL /* I-Cache Parity Error */ | 208 | #define MCSR_ICPERR 0x40000000UL /* I-Cache Parity Error */ |
209 | |||
210 | /* e500v1/v2 */ | ||
201 | #define MCSR_DCP_PERR 0x20000000UL /* D-Cache Push Parity Error */ | 211 | #define MCSR_DCP_PERR 0x20000000UL /* D-Cache Push Parity Error */ |
202 | #define MCSR_DCPERR 0x10000000UL /* D-Cache Parity Error */ | 212 | #define MCSR_DCPERR 0x10000000UL /* D-Cache Parity Error */ |
203 | #define MCSR_BUS_IAERR 0x00000080UL /* Instruction Address Error */ | 213 | #define MCSR_BUS_IAERR 0x00000080UL /* Instruction Address Error */ |
@@ -209,12 +219,20 @@ | |||
209 | #define MCSR_BUS_IPERR 0x00000002UL /* Instruction parity Error */ | 219 | #define MCSR_BUS_IPERR 0x00000002UL /* Instruction parity Error */ |
210 | #define MCSR_BUS_RPERR 0x00000001UL /* Read parity Error */ | 220 | #define MCSR_BUS_RPERR 0x00000001UL /* Read parity Error */ |
211 | 221 | ||
212 | /* e500 parts may set unused bits in MCSR; mask these off */ | 222 | /* e500mc */ |
213 | #define MCSR_MASK (MCSR_MCP | MCSR_ICPERR | MCSR_DCP_PERR | \ | 223 | #define MCSR_DCPERR_MC 0x20000000UL /* D-Cache Parity Error */ |
214 | MCSR_DCPERR | MCSR_BUS_IAERR | MCSR_BUS_RAERR | \ | 224 | #define MCSR_L2MMU_MHIT 0x04000000UL /* Hit on multiple TLB entries */ |
215 | MCSR_BUS_WAERR | MCSR_BUS_IBERR | MCSR_BUS_RBERR | \ | 225 | #define MCSR_NMI 0x00100000UL /* Non-Maskable Interrupt */ |
216 | MCSR_BUS_WBERR | MCSR_BUS_IPERR | MCSR_BUS_RPERR) | 226 | #define MCSR_MAV 0x00080000UL /* MCAR address valid */ |
227 | #define MCSR_MEA 0x00040000UL /* MCAR is effective address */ | ||
228 | #define MCSR_IF 0x00010000UL /* Instruction Fetch */ | ||
229 | #define MCSR_LD 0x00008000UL /* Load */ | ||
230 | #define MCSR_ST 0x00004000UL /* Store */ | ||
231 | #define MCSR_LDG 0x00002000UL /* Guarded Load */ | ||
232 | #define MCSR_TLBSYNC 0x00000002UL /* Multiple tlbsyncs detected */ | ||
233 | #define MCSR_BSL2_ERR 0x00000001UL /* Backside L2 cache error */ | ||
217 | #endif | 234 | #endif |
235 | |||
218 | #ifdef CONFIG_E200 | 236 | #ifdef CONFIG_E200 |
219 | #define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */ | 237 | #define MCSR_MCP 0x80000000UL /* Machine Check Input Pin */ |
220 | #define MCSR_CP_PERR 0x20000000UL /* Cache Push Parity Error */ | 238 | #define MCSR_CP_PERR 0x20000000UL /* Cache Push Parity Error */ |
@@ -225,11 +243,6 @@ | |||
225 | #define MCSR_BUS_DRERR 0x00000008UL /* Read Bus Error on data load */ | 243 | #define MCSR_BUS_DRERR 0x00000008UL /* Read Bus Error on data load */ |
226 | #define MCSR_BUS_WRERR 0x00000004UL /* Write Bus Error on buffered | 244 | #define MCSR_BUS_WRERR 0x00000004UL /* Write Bus Error on buffered |
227 | store or cache line push */ | 245 | store or cache line push */ |
228 | |||
229 | /* e200 parts may set unused bits in MCSR; mask these off */ | ||
230 | #define MCSR_MASK (MCSR_MCP | MCSR_CP_PERR | MCSR_CPERR | \ | ||
231 | MCSR_EXCP_ERR | MCSR_BUS_IRERR | MCSR_BUS_DRERR | \ | ||
232 | MCSR_BUS_WRERR) | ||
233 | #endif | 246 | #endif |
234 | 247 | ||
235 | /* Bit definitions for the DBSR. */ | 248 | /* Bit definitions for the DBSR. */ |
diff --git a/arch/powerpc/include/asm/scatterlist.h b/arch/powerpc/include/asm/scatterlist.h index 912bf597870f..34cc78fd0ef4 100644 --- a/arch/powerpc/include/asm/scatterlist.h +++ b/arch/powerpc/include/asm/scatterlist.h | |||
@@ -9,38 +9,12 @@ | |||
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #ifdef __KERNEL__ | ||
13 | #include <linux/types.h> | ||
14 | #include <asm/dma.h> | 12 | #include <asm/dma.h> |
15 | 13 | #include <asm-generic/scatterlist.h> | |
16 | struct scatterlist { | ||
17 | #ifdef CONFIG_DEBUG_SG | ||
18 | unsigned long sg_magic; | ||
19 | #endif | ||
20 | unsigned long page_link; | ||
21 | unsigned int offset; | ||
22 | unsigned int length; | ||
23 | |||
24 | /* For TCE or SWIOTLB support */ | ||
25 | dma_addr_t dma_address; | ||
26 | u32 dma_length; | ||
27 | }; | ||
28 | |||
29 | /* | ||
30 | * These macros should be used after a dma_map_sg call has been done | ||
31 | * to get bus addresses of each of the SG entries and their lengths. | ||
32 | * You should only work with the number of sg entries pci_map_sg | ||
33 | * returns, or alternatively stop on the first sg_dma_len(sg) which | ||
34 | * is 0. | ||
35 | */ | ||
36 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
37 | #define sg_dma_len(sg) ((sg)->dma_length) | ||
38 | 14 | ||
39 | #ifdef __powerpc64__ | 15 | #ifdef __powerpc64__ |
40 | #define ISA_DMA_THRESHOLD (~0UL) | 16 | #define ISA_DMA_THRESHOLD (~0UL) |
41 | #endif | 17 | #endif |
42 | |||
43 | #define ARCH_HAS_SG_CHAIN | 18 | #define ARCH_HAS_SG_CHAIN |
44 | 19 | ||
45 | #endif /* __KERNEL__ */ | ||
46 | #endif /* _ASM_POWERPC_SCATTERLIST_H */ | 20 | #endif /* _ASM_POWERPC_SCATTERLIST_H */ |
diff --git a/arch/powerpc/include/asm/sfp-machine.h b/arch/powerpc/include/asm/sfp-machine.h index 8b8fab91ad1e..3a7a67a0d006 100644 --- a/arch/powerpc/include/asm/sfp-machine.h +++ b/arch/powerpc/include/asm/sfp-machine.h | |||
@@ -353,6 +353,12 @@ | |||
353 | #define abort() \ | 353 | #define abort() \ |
354 | return 0 | 354 | return 0 |
355 | 355 | ||
356 | #ifdef __BIG_ENDIAN | ||
357 | #define __BYTE_ORDER __BIG_ENDIAN | ||
358 | #else | ||
359 | #define __BYTE_ORDER __LITTLE_ENDIAN | ||
360 | #endif | ||
361 | |||
356 | /* Exception flags. */ | 362 | /* Exception flags. */ |
357 | #define EFLAG_INVALID (1 << (31 - 2)) | 363 | #define EFLAG_INVALID (1 << (31 - 2)) |
358 | #define EFLAG_OVERFLOW (1 << (31 - 3)) | 364 | #define EFLAG_OVERFLOW (1 << (31 - 3)) |
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 877326320e74..58d0572de6f9 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -57,8 +57,12 @@ obj-$(CONFIG_CRASH_DUMP) += crash_dump.o | |||
57 | obj-$(CONFIG_E500) += idle_e500.o | 57 | obj-$(CONFIG_E500) += idle_e500.o |
58 | obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o | 58 | obj-$(CONFIG_6xx) += idle_6xx.o l2cr_6xx.o cpu_setup_6xx.o |
59 | obj-$(CONFIG_TAU) += tau_6xx.o | 59 | obj-$(CONFIG_TAU) += tau_6xx.o |
60 | obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o \ | 60 | obj-$(CONFIG_HIBERNATION) += swsusp.o suspend.o |
61 | swsusp_$(CONFIG_WORD_SIZE).o | 61 | ifeq ($(CONFIG_FSL_BOOKE),y) |
62 | obj-$(CONFIG_HIBERNATION) += swsusp_booke.o | ||
63 | else | ||
64 | obj-$(CONFIG_HIBERNATION) += swsusp_$(CONFIG_WORD_SIZE).o | ||
65 | endif | ||
62 | obj64-$(CONFIG_HIBERNATION) += swsusp_asm64.o | 66 | obj64-$(CONFIG_HIBERNATION) += swsusp_asm64.o |
63 | obj-$(CONFIG_MODULES) += module.o module_$(CONFIG_WORD_SIZE).o | 67 | obj-$(CONFIG_MODULES) += module.o module_$(CONFIG_WORD_SIZE).o |
64 | obj-$(CONFIG_44x) += cpu_setup_44x.o | 68 | obj-$(CONFIG_44x) += cpu_setup_44x.o |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 9556be903e96..87aa0f3c6047 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -1840,7 +1840,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
1840 | .oprofile_cpu_type = "ppc/e500mc", | 1840 | .oprofile_cpu_type = "ppc/e500mc", |
1841 | .oprofile_type = PPC_OPROFILE_FSL_EMB, | 1841 | .oprofile_type = PPC_OPROFILE_FSL_EMB, |
1842 | .cpu_setup = __setup_cpu_e500mc, | 1842 | .cpu_setup = __setup_cpu_e500mc, |
1843 | .machine_check = machine_check_e500, | 1843 | .machine_check = machine_check_e500mc, |
1844 | .platform = "ppce500mc", | 1844 | .platform = "ppce500mc", |
1845 | }, | 1845 | }, |
1846 | { /* default match */ | 1846 | { /* default match */ |
diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index 8c066d6a8e4b..b46f2e09bd81 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c | |||
@@ -163,6 +163,7 @@ static void crash_kexec_prepare_cpus(int cpu) | |||
163 | } | 163 | } |
164 | 164 | ||
165 | /* wait for all the CPUs to hit real mode but timeout if they don't come in */ | 165 | /* wait for all the CPUs to hit real mode but timeout if they don't come in */ |
166 | #ifdef CONFIG_PPC_STD_MMU_64 | ||
166 | static void crash_kexec_wait_realmode(int cpu) | 167 | static void crash_kexec_wait_realmode(int cpu) |
167 | { | 168 | { |
168 | unsigned int msecs; | 169 | unsigned int msecs; |
@@ -187,6 +188,7 @@ static void crash_kexec_wait_realmode(int cpu) | |||
187 | } | 188 | } |
188 | mb(); | 189 | mb(); |
189 | } | 190 | } |
191 | #endif | ||
190 | 192 | ||
191 | /* | 193 | /* |
192 | * This function will be called by secondary cpus or by kexec cpu | 194 | * This function will be called by secondary cpus or by kexec cpu |
@@ -445,7 +447,9 @@ void default_machine_crash_shutdown(struct pt_regs *regs) | |||
445 | crash_kexec_prepare_cpus(crashing_cpu); | 447 | crash_kexec_prepare_cpus(crashing_cpu); |
446 | cpu_set(crashing_cpu, cpus_in_crash); | 448 | cpu_set(crashing_cpu, cpus_in_crash); |
447 | crash_kexec_stop_spus(); | 449 | crash_kexec_stop_spus(); |
450 | #ifdef CONFIG_PPC_STD_MMU_64 | ||
448 | crash_kexec_wait_realmode(crashing_cpu); | 451 | crash_kexec_wait_realmode(crashing_cpu); |
452 | #endif | ||
449 | if (ppc_md.kexec_cpu_down) | 453 | if (ppc_md.kexec_cpu_down) |
450 | ppc_md.kexec_cpu_down(1, 0); | 454 | ppc_md.kexec_cpu_down(1, 0); |
451 | } | 455 | } |
diff --git a/arch/powerpc/kernel/dma-swiotlb.c b/arch/powerpc/kernel/dma-swiotlb.c index 4ff4da2c238b..e7fe218b8697 100644 --- a/arch/powerpc/kernel/dma-swiotlb.c +++ b/arch/powerpc/kernel/dma-swiotlb.c | |||
@@ -39,8 +39,8 @@ struct dma_map_ops swiotlb_dma_ops = { | |||
39 | .dma_supported = swiotlb_dma_supported, | 39 | .dma_supported = swiotlb_dma_supported, |
40 | .map_page = swiotlb_map_page, | 40 | .map_page = swiotlb_map_page, |
41 | .unmap_page = swiotlb_unmap_page, | 41 | .unmap_page = swiotlb_unmap_page, |
42 | .sync_single_range_for_cpu = swiotlb_sync_single_range_for_cpu, | 42 | .sync_single_for_cpu = swiotlb_sync_single_for_cpu, |
43 | .sync_single_range_for_device = swiotlb_sync_single_range_for_device, | 43 | .sync_single_for_device = swiotlb_sync_single_for_device, |
44 | .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, | 44 | .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, |
45 | .sync_sg_for_device = swiotlb_sync_sg_for_device, | 45 | .sync_sg_for_device = swiotlb_sync_sg_for_device, |
46 | .mapping_error = swiotlb_dma_mapping_error, | 46 | .mapping_error = swiotlb_dma_mapping_error, |
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 6c1df5757cd6..8d1de6f31d5a 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c | |||
@@ -127,11 +127,11 @@ static inline void dma_direct_sync_sg(struct device *dev, | |||
127 | __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); | 127 | __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); |
128 | } | 128 | } |
129 | 129 | ||
130 | static inline void dma_direct_sync_single_range(struct device *dev, | 130 | static inline void dma_direct_sync_single(struct device *dev, |
131 | dma_addr_t dma_handle, unsigned long offset, size_t size, | 131 | dma_addr_t dma_handle, size_t size, |
132 | enum dma_data_direction direction) | 132 | enum dma_data_direction direction) |
133 | { | 133 | { |
134 | __dma_sync(bus_to_virt(dma_handle+offset), size, direction); | 134 | __dma_sync(bus_to_virt(dma_handle), size, direction); |
135 | } | 135 | } |
136 | #endif | 136 | #endif |
137 | 137 | ||
@@ -144,8 +144,8 @@ struct dma_map_ops dma_direct_ops = { | |||
144 | .map_page = dma_direct_map_page, | 144 | .map_page = dma_direct_map_page, |
145 | .unmap_page = dma_direct_unmap_page, | 145 | .unmap_page = dma_direct_unmap_page, |
146 | #ifdef CONFIG_NOT_COHERENT_CACHE | 146 | #ifdef CONFIG_NOT_COHERENT_CACHE |
147 | .sync_single_range_for_cpu = dma_direct_sync_single_range, | 147 | .sync_single_for_cpu = dma_direct_sync_single, |
148 | .sync_single_range_for_device = dma_direct_sync_single_range, | 148 | .sync_single_for_device = dma_direct_sync_single, |
149 | .sync_sg_for_cpu = dma_direct_sync_sg, | 149 | .sync_sg_for_cpu = dma_direct_sync_sg, |
150 | .sync_sg_for_device = dma_direct_sync_sg, | 150 | .sync_sg_for_device = dma_direct_sync_sg, |
151 | #endif | 151 | #endif |
diff --git a/arch/powerpc/kernel/fsl_booke_entry_mapping.S b/arch/powerpc/kernel/fsl_booke_entry_mapping.S new file mode 100644 index 000000000000..beb4d78a2304 --- /dev/null +++ b/arch/powerpc/kernel/fsl_booke_entry_mapping.S | |||
@@ -0,0 +1,237 @@ | |||
1 | |||
2 | /* 1. Find the index of the entry we're executing in */ | ||
3 | bl invstr /* Find our address */ | ||
4 | invstr: mflr r6 /* Make it accessible */ | ||
5 | mfmsr r7 | ||
6 | rlwinm r4,r7,27,31,31 /* extract MSR[IS] */ | ||
7 | mfspr r7, SPRN_PID0 | ||
8 | slwi r7,r7,16 | ||
9 | or r7,r7,r4 | ||
10 | mtspr SPRN_MAS6,r7 | ||
11 | tlbsx 0,r6 /* search MSR[IS], SPID=PID0 */ | ||
12 | mfspr r7,SPRN_MAS1 | ||
13 | andis. r7,r7,MAS1_VALID@h | ||
14 | bne match_TLB | ||
15 | |||
16 | mfspr r7,SPRN_MMUCFG | ||
17 | rlwinm r7,r7,21,28,31 /* extract MMUCFG[NPIDS] */ | ||
18 | cmpwi r7,3 | ||
19 | bne match_TLB /* skip if NPIDS != 3 */ | ||
20 | |||
21 | mfspr r7,SPRN_PID1 | ||
22 | slwi r7,r7,16 | ||
23 | or r7,r7,r4 | ||
24 | mtspr SPRN_MAS6,r7 | ||
25 | tlbsx 0,r6 /* search MSR[IS], SPID=PID1 */ | ||
26 | mfspr r7,SPRN_MAS1 | ||
27 | andis. r7,r7,MAS1_VALID@h | ||
28 | bne match_TLB | ||
29 | mfspr r7, SPRN_PID2 | ||
30 | slwi r7,r7,16 | ||
31 | or r7,r7,r4 | ||
32 | mtspr SPRN_MAS6,r7 | ||
33 | tlbsx 0,r6 /* Fall through, we had to match */ | ||
34 | |||
35 | match_TLB: | ||
36 | mfspr r7,SPRN_MAS0 | ||
37 | rlwinm r3,r7,16,20,31 /* Extract MAS0(Entry) */ | ||
38 | |||
39 | mfspr r7,SPRN_MAS1 /* Insure IPROT set */ | ||
40 | oris r7,r7,MAS1_IPROT@h | ||
41 | mtspr SPRN_MAS1,r7 | ||
42 | tlbwe | ||
43 | |||
44 | /* 2. Invalidate all entries except the entry we're executing in */ | ||
45 | mfspr r9,SPRN_TLB1CFG | ||
46 | andi. r9,r9,0xfff | ||
47 | li r6,0 /* Set Entry counter to 0 */ | ||
48 | 1: lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
49 | rlwimi r7,r6,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r6) */ | ||
50 | mtspr SPRN_MAS0,r7 | ||
51 | tlbre | ||
52 | mfspr r7,SPRN_MAS1 | ||
53 | rlwinm r7,r7,0,2,31 /* Clear MAS1 Valid and IPROT */ | ||
54 | cmpw r3,r6 | ||
55 | beq skpinv /* Dont update the current execution TLB */ | ||
56 | mtspr SPRN_MAS1,r7 | ||
57 | tlbwe | ||
58 | isync | ||
59 | skpinv: addi r6,r6,1 /* Increment */ | ||
60 | cmpw r6,r9 /* Are we done? */ | ||
61 | bne 1b /* If not, repeat */ | ||
62 | |||
63 | /* Invalidate TLB0 */ | ||
64 | li r6,0x04 | ||
65 | tlbivax 0,r6 | ||
66 | TLBSYNC | ||
67 | /* Invalidate TLB1 */ | ||
68 | li r6,0x0c | ||
69 | tlbivax 0,r6 | ||
70 | TLBSYNC | ||
71 | |||
72 | /* 3. Setup a temp mapping and jump to it */ | ||
73 | andi. r5, r3, 0x1 /* Find an entry not used and is non-zero */ | ||
74 | addi r5, r5, 0x1 | ||
75 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
76 | rlwimi r7,r3,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r3) */ | ||
77 | mtspr SPRN_MAS0,r7 | ||
78 | tlbre | ||
79 | |||
80 | /* grab and fixup the RPN */ | ||
81 | mfspr r6,SPRN_MAS1 /* extract MAS1[SIZE] */ | ||
82 | rlwinm r6,r6,25,27,31 | ||
83 | li r8,-1 | ||
84 | addi r6,r6,10 | ||
85 | slw r6,r8,r6 /* convert to mask */ | ||
86 | |||
87 | bl 1f /* Find our address */ | ||
88 | 1: mflr r7 | ||
89 | |||
90 | mfspr r8,SPRN_MAS3 | ||
91 | #ifdef CONFIG_PHYS_64BIT | ||
92 | mfspr r23,SPRN_MAS7 | ||
93 | #endif | ||
94 | and r8,r6,r8 | ||
95 | subfic r9,r6,-4096 | ||
96 | and r9,r9,r7 | ||
97 | |||
98 | or r25,r8,r9 | ||
99 | ori r8,r25,(MAS3_SX|MAS3_SW|MAS3_SR) | ||
100 | |||
101 | /* Just modify the entry ID and EPN for the temp mapping */ | ||
102 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
103 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ | ||
104 | mtspr SPRN_MAS0,r7 | ||
105 | xori r6,r4,1 /* Setup TMP mapping in the other Address space */ | ||
106 | slwi r6,r6,12 | ||
107 | oris r6,r6,(MAS1_VALID|MAS1_IPROT)@h | ||
108 | ori r6,r6,(MAS1_TSIZE(BOOK3E_PAGESZ_4K))@l | ||
109 | mtspr SPRN_MAS1,r6 | ||
110 | mfspr r6,SPRN_MAS2 | ||
111 | li r7,0 /* temp EPN = 0 */ | ||
112 | rlwimi r7,r6,0,20,31 | ||
113 | mtspr SPRN_MAS2,r7 | ||
114 | mtspr SPRN_MAS3,r8 | ||
115 | tlbwe | ||
116 | |||
117 | xori r6,r4,1 | ||
118 | slwi r6,r6,5 /* setup new context with other address space */ | ||
119 | bl 1f /* Find our address */ | ||
120 | 1: mflr r9 | ||
121 | rlwimi r7,r9,0,20,31 | ||
122 | addi r7,r7,(2f - 1b) | ||
123 | mtspr SPRN_SRR0,r7 | ||
124 | mtspr SPRN_SRR1,r6 | ||
125 | rfi | ||
126 | 2: | ||
127 | /* 4. Clear out PIDs & Search info */ | ||
128 | li r6,0 | ||
129 | mtspr SPRN_MAS6,r6 | ||
130 | mtspr SPRN_PID0,r6 | ||
131 | |||
132 | mfspr r7,SPRN_MMUCFG | ||
133 | rlwinm r7,r7,21,28,31 /* extract MMUCFG[NPIDS] */ | ||
134 | cmpwi r7,3 | ||
135 | bne 2f /* skip if NPIDS != 3 */ | ||
136 | |||
137 | mtspr SPRN_PID1,r6 | ||
138 | mtspr SPRN_PID2,r6 | ||
139 | |||
140 | /* 5. Invalidate mapping we started in */ | ||
141 | 2: | ||
142 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
143 | rlwimi r7,r3,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r3) */ | ||
144 | mtspr SPRN_MAS0,r7 | ||
145 | tlbre | ||
146 | mfspr r6,SPRN_MAS1 | ||
147 | rlwinm r6,r6,0,2,0 /* clear IPROT */ | ||
148 | mtspr SPRN_MAS1,r6 | ||
149 | tlbwe | ||
150 | /* Invalidate TLB1 */ | ||
151 | li r9,0x0c | ||
152 | tlbivax 0,r9 | ||
153 | TLBSYNC | ||
154 | |||
155 | /* The mapping only needs to be cache-coherent on SMP */ | ||
156 | #ifdef CONFIG_SMP | ||
157 | #define M_IF_SMP MAS2_M | ||
158 | #else | ||
159 | #define M_IF_SMP 0 | ||
160 | #endif | ||
161 | |||
162 | #if defined(ENTRY_MAPPING_BOOT_SETUP) | ||
163 | |||
164 | /* 6. Setup KERNELBASE mapping in TLB1[0] */ | ||
165 | lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */ | ||
166 | mtspr SPRN_MAS0,r6 | ||
167 | lis r6,(MAS1_VALID|MAS1_IPROT)@h | ||
168 | ori r6,r6,(MAS1_TSIZE(BOOK3E_PAGESZ_64M))@l | ||
169 | mtspr SPRN_MAS1,r6 | ||
170 | lis r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_SMP)@h | ||
171 | ori r6,r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_SMP)@l | ||
172 | mtspr SPRN_MAS2,r6 | ||
173 | mtspr SPRN_MAS3,r8 | ||
174 | tlbwe | ||
175 | |||
176 | /* 7. Jump to KERNELBASE mapping */ | ||
177 | lis r6,(KERNELBASE & ~0xfff)@h | ||
178 | ori r6,r6,(KERNELBASE & ~0xfff)@l | ||
179 | |||
180 | #elif defined(ENTRY_MAPPING_KEXEC_SETUP) | ||
181 | /* | ||
182 | * 6. Setup a 1:1 mapping in TLB1. Esel 0 is unsued, 1 or 2 contains the tmp | ||
183 | * mapping so we start at 3. We setup 8 mappings, each 256MiB in size. This | ||
184 | * will cover the first 2GiB of memory. | ||
185 | */ | ||
186 | |||
187 | lis r10, (MAS1_VALID|MAS1_IPROT)@h | ||
188 | ori r10,r10, (MAS1_TSIZE(BOOK3E_PAGESZ_256M))@l | ||
189 | li r11, 0 | ||
190 | li r0, 8 | ||
191 | mtctr r0 | ||
192 | |||
193 | next_tlb_setup: | ||
194 | addi r0, r11, 3 | ||
195 | rlwinm r0, r0, 16, 4, 15 // Compute esel | ||
196 | rlwinm r9, r11, 28, 0, 3 // Compute [ER]PN | ||
197 | oris r0, r0, (MAS0_TLBSEL(1))@h | ||
198 | mtspr SPRN_MAS0,r0 | ||
199 | mtspr SPRN_MAS1,r10 | ||
200 | mtspr SPRN_MAS2,r9 | ||
201 | ori r9, r9, (MAS3_SX|MAS3_SW|MAS3_SR) | ||
202 | mtspr SPRN_MAS3,r9 | ||
203 | tlbwe | ||
204 | addi r11, r11, 1 | ||
205 | bdnz+ next_tlb_setup | ||
206 | |||
207 | /* 7. Jump to our 1:1 mapping */ | ||
208 | li r6, 0 | ||
209 | |||
210 | #else | ||
211 | #error You need to specify the mapping or not use this at all. | ||
212 | #endif | ||
213 | |||
214 | lis r7,MSR_KERNEL@h | ||
215 | ori r7,r7,MSR_KERNEL@l | ||
216 | bl 1f /* Find our address */ | ||
217 | 1: mflr r9 | ||
218 | rlwimi r6,r9,0,20,31 | ||
219 | addi r6,r6,(2f - 1b) | ||
220 | add r6, r6, r25 | ||
221 | mtspr SPRN_SRR0,r6 | ||
222 | mtspr SPRN_SRR1,r7 | ||
223 | rfi /* start execution out of TLB1[0] entry */ | ||
224 | |||
225 | /* 8. Clear out the temp mapping */ | ||
226 | 2: lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
227 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ | ||
228 | mtspr SPRN_MAS0,r7 | ||
229 | tlbre | ||
230 | mfspr r8,SPRN_MAS1 | ||
231 | rlwinm r8,r8,0,2,0 /* clear IPROT */ | ||
232 | mtspr SPRN_MAS1,r8 | ||
233 | tlbwe | ||
234 | /* Invalidate TLB1 */ | ||
235 | li r9,0x0c | ||
236 | tlbivax 0,r9 | ||
237 | TLBSYNC | ||
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index edd4a57fd29e..4faeba247854 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S | |||
@@ -94,204 +94,10 @@ _ENTRY(_start); | |||
94 | */ | 94 | */ |
95 | 95 | ||
96 | _ENTRY(__early_start) | 96 | _ENTRY(__early_start) |
97 | /* 1. Find the index of the entry we're executing in */ | ||
98 | bl invstr /* Find our address */ | ||
99 | invstr: mflr r6 /* Make it accessible */ | ||
100 | mfmsr r7 | ||
101 | rlwinm r4,r7,27,31,31 /* extract MSR[IS] */ | ||
102 | mfspr r7, SPRN_PID0 | ||
103 | slwi r7,r7,16 | ||
104 | or r7,r7,r4 | ||
105 | mtspr SPRN_MAS6,r7 | ||
106 | tlbsx 0,r6 /* search MSR[IS], SPID=PID0 */ | ||
107 | mfspr r7,SPRN_MAS1 | ||
108 | andis. r7,r7,MAS1_VALID@h | ||
109 | bne match_TLB | ||
110 | |||
111 | mfspr r7,SPRN_MMUCFG | ||
112 | rlwinm r7,r7,21,28,31 /* extract MMUCFG[NPIDS] */ | ||
113 | cmpwi r7,3 | ||
114 | bne match_TLB /* skip if NPIDS != 3 */ | ||
115 | |||
116 | mfspr r7,SPRN_PID1 | ||
117 | slwi r7,r7,16 | ||
118 | or r7,r7,r4 | ||
119 | mtspr SPRN_MAS6,r7 | ||
120 | tlbsx 0,r6 /* search MSR[IS], SPID=PID1 */ | ||
121 | mfspr r7,SPRN_MAS1 | ||
122 | andis. r7,r7,MAS1_VALID@h | ||
123 | bne match_TLB | ||
124 | mfspr r7, SPRN_PID2 | ||
125 | slwi r7,r7,16 | ||
126 | or r7,r7,r4 | ||
127 | mtspr SPRN_MAS6,r7 | ||
128 | tlbsx 0,r6 /* Fall through, we had to match */ | ||
129 | |||
130 | match_TLB: | ||
131 | mfspr r7,SPRN_MAS0 | ||
132 | rlwinm r3,r7,16,20,31 /* Extract MAS0(Entry) */ | ||
133 | |||
134 | mfspr r7,SPRN_MAS1 /* Insure IPROT set */ | ||
135 | oris r7,r7,MAS1_IPROT@h | ||
136 | mtspr SPRN_MAS1,r7 | ||
137 | tlbwe | ||
138 | |||
139 | /* 2. Invalidate all entries except the entry we're executing in */ | ||
140 | mfspr r9,SPRN_TLB1CFG | ||
141 | andi. r9,r9,0xfff | ||
142 | li r6,0 /* Set Entry counter to 0 */ | ||
143 | 1: lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
144 | rlwimi r7,r6,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r6) */ | ||
145 | mtspr SPRN_MAS0,r7 | ||
146 | tlbre | ||
147 | mfspr r7,SPRN_MAS1 | ||
148 | rlwinm r7,r7,0,2,31 /* Clear MAS1 Valid and IPROT */ | ||
149 | cmpw r3,r6 | ||
150 | beq skpinv /* Dont update the current execution TLB */ | ||
151 | mtspr SPRN_MAS1,r7 | ||
152 | tlbwe | ||
153 | isync | ||
154 | skpinv: addi r6,r6,1 /* Increment */ | ||
155 | cmpw r6,r9 /* Are we done? */ | ||
156 | bne 1b /* If not, repeat */ | ||
157 | |||
158 | /* Invalidate TLB0 */ | ||
159 | li r6,0x04 | ||
160 | tlbivax 0,r6 | ||
161 | TLBSYNC | ||
162 | /* Invalidate TLB1 */ | ||
163 | li r6,0x0c | ||
164 | tlbivax 0,r6 | ||
165 | TLBSYNC | ||
166 | |||
167 | /* 3. Setup a temp mapping and jump to it */ | ||
168 | andi. r5, r3, 0x1 /* Find an entry not used and is non-zero */ | ||
169 | addi r5, r5, 0x1 | ||
170 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
171 | rlwimi r7,r3,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r3) */ | ||
172 | mtspr SPRN_MAS0,r7 | ||
173 | tlbre | ||
174 | |||
175 | /* grab and fixup the RPN */ | ||
176 | mfspr r6,SPRN_MAS1 /* extract MAS1[SIZE] */ | ||
177 | rlwinm r6,r6,25,27,31 | ||
178 | li r8,-1 | ||
179 | addi r6,r6,10 | ||
180 | slw r6,r8,r6 /* convert to mask */ | ||
181 | |||
182 | bl 1f /* Find our address */ | ||
183 | 1: mflr r7 | ||
184 | |||
185 | mfspr r8,SPRN_MAS3 | ||
186 | #ifdef CONFIG_PHYS_64BIT | ||
187 | mfspr r23,SPRN_MAS7 | ||
188 | #endif | ||
189 | and r8,r6,r8 | ||
190 | subfic r9,r6,-4096 | ||
191 | and r9,r9,r7 | ||
192 | |||
193 | or r25,r8,r9 | ||
194 | ori r8,r25,(MAS3_SX|MAS3_SW|MAS3_SR) | ||
195 | |||
196 | /* Just modify the entry ID and EPN for the temp mapping */ | ||
197 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
198 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ | ||
199 | mtspr SPRN_MAS0,r7 | ||
200 | xori r6,r4,1 /* Setup TMP mapping in the other Address space */ | ||
201 | slwi r6,r6,12 | ||
202 | oris r6,r6,(MAS1_VALID|MAS1_IPROT)@h | ||
203 | ori r6,r6,(MAS1_TSIZE(BOOK3E_PAGESZ_4K))@l | ||
204 | mtspr SPRN_MAS1,r6 | ||
205 | mfspr r6,SPRN_MAS2 | ||
206 | li r7,0 /* temp EPN = 0 */ | ||
207 | rlwimi r7,r6,0,20,31 | ||
208 | mtspr SPRN_MAS2,r7 | ||
209 | mtspr SPRN_MAS3,r8 | ||
210 | tlbwe | ||
211 | |||
212 | xori r6,r4,1 | ||
213 | slwi r6,r6,5 /* setup new context with other address space */ | ||
214 | bl 1f /* Find our address */ | ||
215 | 1: mflr r9 | ||
216 | rlwimi r7,r9,0,20,31 | ||
217 | addi r7,r7,(2f - 1b) | ||
218 | mtspr SPRN_SRR0,r7 | ||
219 | mtspr SPRN_SRR1,r6 | ||
220 | rfi | ||
221 | 2: | ||
222 | /* 4. Clear out PIDs & Search info */ | ||
223 | li r6,0 | ||
224 | mtspr SPRN_MAS6,r6 | ||
225 | mtspr SPRN_PID0,r6 | ||
226 | |||
227 | mfspr r7,SPRN_MMUCFG | ||
228 | rlwinm r7,r7,21,28,31 /* extract MMUCFG[NPIDS] */ | ||
229 | cmpwi r7,3 | ||
230 | bne 2f /* skip if NPIDS != 3 */ | ||
231 | 97 | ||
232 | mtspr SPRN_PID1,r6 | 98 | #define ENTRY_MAPPING_BOOT_SETUP |
233 | mtspr SPRN_PID2,r6 | 99 | #include "fsl_booke_entry_mapping.S" |
234 | 100 | #undef ENTRY_MAPPING_BOOT_SETUP | |
235 | /* 5. Invalidate mapping we started in */ | ||
236 | 2: | ||
237 | lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
238 | rlwimi r7,r3,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r3) */ | ||
239 | mtspr SPRN_MAS0,r7 | ||
240 | tlbre | ||
241 | mfspr r6,SPRN_MAS1 | ||
242 | rlwinm r6,r6,0,2,0 /* clear IPROT */ | ||
243 | mtspr SPRN_MAS1,r6 | ||
244 | tlbwe | ||
245 | /* Invalidate TLB1 */ | ||
246 | li r9,0x0c | ||
247 | tlbivax 0,r9 | ||
248 | TLBSYNC | ||
249 | |||
250 | /* The mapping only needs to be cache-coherent on SMP */ | ||
251 | #ifdef CONFIG_SMP | ||
252 | #define M_IF_SMP MAS2_M | ||
253 | #else | ||
254 | #define M_IF_SMP 0 | ||
255 | #endif | ||
256 | |||
257 | /* 6. Setup KERNELBASE mapping in TLB1[0] */ | ||
258 | lis r6,0x1000 /* Set MAS0(TLBSEL) = TLB1(1), ESEL = 0 */ | ||
259 | mtspr SPRN_MAS0,r6 | ||
260 | lis r6,(MAS1_VALID|MAS1_IPROT)@h | ||
261 | ori r6,r6,(MAS1_TSIZE(BOOK3E_PAGESZ_64M))@l | ||
262 | mtspr SPRN_MAS1,r6 | ||
263 | lis r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_SMP)@h | ||
264 | ori r6,r6,MAS2_VAL(PAGE_OFFSET, BOOK3E_PAGESZ_64M, M_IF_SMP)@l | ||
265 | mtspr SPRN_MAS2,r6 | ||
266 | mtspr SPRN_MAS3,r8 | ||
267 | tlbwe | ||
268 | |||
269 | /* 7. Jump to KERNELBASE mapping */ | ||
270 | lis r6,(KERNELBASE & ~0xfff)@h | ||
271 | ori r6,r6,(KERNELBASE & ~0xfff)@l | ||
272 | lis r7,MSR_KERNEL@h | ||
273 | ori r7,r7,MSR_KERNEL@l | ||
274 | bl 1f /* Find our address */ | ||
275 | 1: mflr r9 | ||
276 | rlwimi r6,r9,0,20,31 | ||
277 | addi r6,r6,(2f - 1b) | ||
278 | mtspr SPRN_SRR0,r6 | ||
279 | mtspr SPRN_SRR1,r7 | ||
280 | rfi /* start execution out of TLB1[0] entry */ | ||
281 | |||
282 | /* 8. Clear out the temp mapping */ | ||
283 | 2: lis r7,0x1000 /* Set MAS0(TLBSEL) = 1 */ | ||
284 | rlwimi r7,r5,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r5) */ | ||
285 | mtspr SPRN_MAS0,r7 | ||
286 | tlbre | ||
287 | mfspr r8,SPRN_MAS1 | ||
288 | rlwinm r8,r8,0,2,0 /* clear IPROT */ | ||
289 | mtspr SPRN_MAS1,r8 | ||
290 | tlbwe | ||
291 | /* Invalidate TLB1 */ | ||
292 | li r9,0x0c | ||
293 | tlbivax 0,r9 | ||
294 | TLBSYNC | ||
295 | 101 | ||
296 | /* Establish the interrupt vector offsets */ | 102 | /* Establish the interrupt vector offsets */ |
297 | SET_IVOR(0, CriticalInput); | 103 | SET_IVOR(0, CriticalInput); |
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index c533525ca56a..bc47352deb1f 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -378,17 +378,6 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p, | |||
378 | * single-stepped a copy of the instruction. The address of this | 378 | * single-stepped a copy of the instruction. The address of this |
379 | * copy is p->ainsn.insn. | 379 | * copy is p->ainsn.insn. |
380 | */ | 380 | */ |
381 | static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs) | ||
382 | { | ||
383 | int ret; | ||
384 | unsigned int insn = *p->ainsn.insn; | ||
385 | |||
386 | regs->nip = (unsigned long)p->addr; | ||
387 | ret = emulate_step(regs, insn); | ||
388 | if (ret == 0) | ||
389 | regs->nip = (unsigned long)p->addr + 4; | ||
390 | } | ||
391 | |||
392 | static int __kprobes post_kprobe_handler(struct pt_regs *regs) | 381 | static int __kprobes post_kprobe_handler(struct pt_regs *regs) |
393 | { | 382 | { |
394 | struct kprobe *cur = kprobe_running(); | 383 | struct kprobe *cur = kprobe_running(); |
@@ -406,7 +395,8 @@ static int __kprobes post_kprobe_handler(struct pt_regs *regs) | |||
406 | cur->post_handler(cur, regs, 0); | 395 | cur->post_handler(cur, regs, 0); |
407 | } | 396 | } |
408 | 397 | ||
409 | resume_execution(cur, regs); | 398 | /* Adjust nip to after the single-stepped instruction */ |
399 | regs->nip = (unsigned long)cur->addr + 4; | ||
410 | regs->msr |= kcb->kprobe_saved_msr; | 400 | regs->msr |= kcb->kprobe_saved_msr; |
411 | 401 | ||
412 | /*Restore back the original saved kprobes variables and continue. */ | 402 | /*Restore back the original saved kprobes variables and continue. */ |
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S index 8043d1b73cf0..dc66d52dcff5 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S | |||
@@ -711,6 +711,22 @@ relocate_new_kernel: | |||
711 | /* r4 = reboot_code_buffer */ | 711 | /* r4 = reboot_code_buffer */ |
712 | /* r5 = start_address */ | 712 | /* r5 = start_address */ |
713 | 713 | ||
714 | #ifdef CONFIG_FSL_BOOKE | ||
715 | |||
716 | mr r29, r3 | ||
717 | mr r30, r4 | ||
718 | mr r31, r5 | ||
719 | |||
720 | #define ENTRY_MAPPING_KEXEC_SETUP | ||
721 | #include "fsl_booke_entry_mapping.S" | ||
722 | #undef ENTRY_MAPPING_KEXEC_SETUP | ||
723 | |||
724 | mr r3, r29 | ||
725 | mr r4, r30 | ||
726 | mr r5, r31 | ||
727 | |||
728 | li r0, 0 | ||
729 | #else | ||
714 | li r0, 0 | 730 | li r0, 0 |
715 | 731 | ||
716 | /* | 732 | /* |
@@ -727,6 +743,7 @@ relocate_new_kernel: | |||
727 | rfi | 743 | rfi |
728 | 744 | ||
729 | 1: | 745 | 1: |
746 | #endif | ||
730 | /* from this point address translation is turned off */ | 747 | /* from this point address translation is turned off */ |
731 | /* and interrupts are disabled */ | 748 | /* and interrupts are disabled */ |
732 | 749 | ||
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 6646005dffb1..5b38f6ae2b29 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -1309,6 +1309,7 @@ void pcibios_allocate_bus_resources(struct pci_bus *bus) | |||
1309 | printk(KERN_WARNING "PCI: Cannot allocate resource region " | 1309 | printk(KERN_WARNING "PCI: Cannot allocate resource region " |
1310 | "%d of PCI bridge %d, will remap\n", i, bus->number); | 1310 | "%d of PCI bridge %d, will remap\n", i, bus->number); |
1311 | clear_resource: | 1311 | clear_resource: |
1312 | res->start = res->end = 0; | ||
1312 | res->flags = 0; | 1313 | res->flags = 0; |
1313 | } | 1314 | } |
1314 | 1315 | ||
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index bc9f39d2598b..3b4dcc82a4c1 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c | |||
@@ -101,7 +101,7 @@ EXPORT_SYMBOL(pci_dram_offset); | |||
101 | EXPORT_SYMBOL(start_thread); | 101 | EXPORT_SYMBOL(start_thread); |
102 | EXPORT_SYMBOL(kernel_thread); | 102 | EXPORT_SYMBOL(kernel_thread); |
103 | 103 | ||
104 | #ifndef CONFIG_BOOKE | 104 | #ifdef CONFIG_PPC_FPU |
105 | EXPORT_SYMBOL_GPL(cvt_df); | 105 | EXPORT_SYMBOL_GPL(cvt_df); |
106 | EXPORT_SYMBOL_GPL(cvt_fd); | 106 | EXPORT_SYMBOL_GPL(cvt_fd); |
107 | #endif | 107 | #endif |
diff --git a/arch/powerpc/kernel/swsusp_booke.S b/arch/powerpc/kernel/swsusp_booke.S new file mode 100644 index 000000000000..11a39307dd71 --- /dev/null +++ b/arch/powerpc/kernel/swsusp_booke.S | |||
@@ -0,0 +1,193 @@ | |||
1 | /* | ||
2 | * Based on swsusp_32.S, modified for FSL BookE by | ||
3 | * Anton Vorontsov <avorontsov@ru.mvista.com> | ||
4 | * Copyright (c) 2009-2010 MontaVista Software, LLC. | ||
5 | */ | ||
6 | |||
7 | #include <linux/threads.h> | ||
8 | #include <asm/processor.h> | ||
9 | #include <asm/page.h> | ||
10 | #include <asm/cputable.h> | ||
11 | #include <asm/thread_info.h> | ||
12 | #include <asm/ppc_asm.h> | ||
13 | #include <asm/asm-offsets.h> | ||
14 | #include <asm/mmu.h> | ||
15 | |||
16 | /* | ||
17 | * Structure for storing CPU registers on the save area. | ||
18 | */ | ||
19 | #define SL_SP 0 | ||
20 | #define SL_PC 4 | ||
21 | #define SL_MSR 8 | ||
22 | #define SL_TCR 0xc | ||
23 | #define SL_SPRG0 0x10 | ||
24 | #define SL_SPRG1 0x14 | ||
25 | #define SL_SPRG2 0x18 | ||
26 | #define SL_SPRG3 0x1c | ||
27 | #define SL_SPRG4 0x20 | ||
28 | #define SL_SPRG5 0x24 | ||
29 | #define SL_SPRG6 0x28 | ||
30 | #define SL_SPRG7 0x2c | ||
31 | #define SL_TBU 0x30 | ||
32 | #define SL_TBL 0x34 | ||
33 | #define SL_R2 0x38 | ||
34 | #define SL_CR 0x3c | ||
35 | #define SL_LR 0x40 | ||
36 | #define SL_R12 0x44 /* r12 to r31 */ | ||
37 | #define SL_SIZE (SL_R12 + 80) | ||
38 | |||
39 | .section .data | ||
40 | .align 5 | ||
41 | |||
42 | _GLOBAL(swsusp_save_area) | ||
43 | .space SL_SIZE | ||
44 | |||
45 | |||
46 | .section .text | ||
47 | .align 5 | ||
48 | |||
49 | _GLOBAL(swsusp_arch_suspend) | ||
50 | lis r11,swsusp_save_area@h | ||
51 | ori r11,r11,swsusp_save_area@l | ||
52 | |||
53 | mflr r0 | ||
54 | stw r0,SL_LR(r11) | ||
55 | mfcr r0 | ||
56 | stw r0,SL_CR(r11) | ||
57 | stw r1,SL_SP(r11) | ||
58 | stw r2,SL_R2(r11) | ||
59 | stmw r12,SL_R12(r11) | ||
60 | |||
61 | /* Save MSR & TCR */ | ||
62 | mfmsr r4 | ||
63 | stw r4,SL_MSR(r11) | ||
64 | mfspr r4,SPRN_TCR | ||
65 | stw r4,SL_TCR(r11) | ||
66 | |||
67 | /* Get a stable timebase and save it */ | ||
68 | 1: mfspr r4,SPRN_TBRU | ||
69 | stw r4,SL_TBU(r11) | ||
70 | mfspr r5,SPRN_TBRL | ||
71 | stw r5,SL_TBL(r11) | ||
72 | mfspr r3,SPRN_TBRU | ||
73 | cmpw r3,r4 | ||
74 | bne 1b | ||
75 | |||
76 | /* Save SPRGs */ | ||
77 | mfsprg r4,0 | ||
78 | stw r4,SL_SPRG0(r11) | ||
79 | mfsprg r4,1 | ||
80 | stw r4,SL_SPRG1(r11) | ||
81 | mfsprg r4,2 | ||
82 | stw r4,SL_SPRG2(r11) | ||
83 | mfsprg r4,3 | ||
84 | stw r4,SL_SPRG3(r11) | ||
85 | mfsprg r4,4 | ||
86 | stw r4,SL_SPRG4(r11) | ||
87 | mfsprg r4,5 | ||
88 | stw r4,SL_SPRG5(r11) | ||
89 | mfsprg r4,6 | ||
90 | stw r4,SL_SPRG6(r11) | ||
91 | mfsprg r4,7 | ||
92 | stw r4,SL_SPRG7(r11) | ||
93 | |||
94 | /* Call the low level suspend stuff (we should probably have made | ||
95 | * a stackframe... | ||
96 | */ | ||
97 | bl swsusp_save | ||
98 | |||
99 | /* Restore LR from the save area */ | ||
100 | lis r11,swsusp_save_area@h | ||
101 | ori r11,r11,swsusp_save_area@l | ||
102 | lwz r0,SL_LR(r11) | ||
103 | mtlr r0 | ||
104 | |||
105 | blr | ||
106 | |||
107 | _GLOBAL(swsusp_arch_resume) | ||
108 | sync | ||
109 | |||
110 | /* Load ptr the list of pages to copy in r3 */ | ||
111 | lis r11,(restore_pblist)@h | ||
112 | ori r11,r11,restore_pblist@l | ||
113 | lwz r3,0(r11) | ||
114 | |||
115 | /* Copy the pages. This is a very basic implementation, to | ||
116 | * be replaced by something more cache efficient */ | ||
117 | 1: | ||
118 | li r0,256 | ||
119 | mtctr r0 | ||
120 | lwz r5,pbe_address(r3) /* source */ | ||
121 | lwz r6,pbe_orig_address(r3) /* destination */ | ||
122 | 2: | ||
123 | lwz r8,0(r5) | ||
124 | lwz r9,4(r5) | ||
125 | lwz r10,8(r5) | ||
126 | lwz r11,12(r5) | ||
127 | addi r5,r5,16 | ||
128 | stw r8,0(r6) | ||
129 | stw r9,4(r6) | ||
130 | stw r10,8(r6) | ||
131 | stw r11,12(r6) | ||
132 | addi r6,r6,16 | ||
133 | bdnz 2b | ||
134 | lwz r3,pbe_next(r3) | ||
135 | cmpwi 0,r3,0 | ||
136 | bne 1b | ||
137 | |||
138 | bl flush_dcache_L1 | ||
139 | bl flush_instruction_cache | ||
140 | |||
141 | lis r11,swsusp_save_area@h | ||
142 | ori r11,r11,swsusp_save_area@l | ||
143 | |||
144 | lwz r4,SL_SPRG0(r11) | ||
145 | mtsprg 0,r4 | ||
146 | lwz r4,SL_SPRG1(r11) | ||
147 | mtsprg 1,r4 | ||
148 | lwz r4,SL_SPRG2(r11) | ||
149 | mtsprg 2,r4 | ||
150 | lwz r4,SL_SPRG3(r11) | ||
151 | mtsprg 3,r4 | ||
152 | lwz r4,SL_SPRG4(r11) | ||
153 | mtsprg 4,r4 | ||
154 | lwz r4,SL_SPRG5(r11) | ||
155 | mtsprg 5,r4 | ||
156 | lwz r4,SL_SPRG6(r11) | ||
157 | mtsprg 6,r4 | ||
158 | lwz r4,SL_SPRG7(r11) | ||
159 | mtsprg 7,r4 | ||
160 | |||
161 | /* restore the MSR */ | ||
162 | lwz r3,SL_MSR(r11) | ||
163 | mtmsr r3 | ||
164 | |||
165 | /* Restore TB */ | ||
166 | li r3,0 | ||
167 | mtspr SPRN_TBWL,r3 | ||
168 | lwz r3,SL_TBU(r11) | ||
169 | lwz r4,SL_TBL(r11) | ||
170 | mtspr SPRN_TBWU,r3 | ||
171 | mtspr SPRN_TBWL,r4 | ||
172 | |||
173 | /* Restore TCR and clear any pending bits in TSR. */ | ||
174 | lwz r4,SL_TCR(r11) | ||
175 | mtspr SPRN_TCR,r4 | ||
176 | lis r4, (TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS)@h | ||
177 | mtspr SPRN_TSR,r4 | ||
178 | |||
179 | /* Kick decrementer */ | ||
180 | li r0,1 | ||
181 | mtdec r0 | ||
182 | |||
183 | /* Restore the callee-saved registers and return */ | ||
184 | lwz r0,SL_CR(r11) | ||
185 | mtcr r0 | ||
186 | lwz r2,SL_R2(r11) | ||
187 | lmw r12,SL_R12(r11) | ||
188 | lwz r1,SL_SP(r11) | ||
189 | lwz r0,SL_LR(r11) | ||
190 | mtlr r0 | ||
191 | |||
192 | li r3,0 | ||
193 | blr | ||
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 3031fc712ad0..25fc33984c2b 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -1,5 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) | 2 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) |
3 | * Copyright 2007-2010 Freescale Semiconductor, Inc. | ||
3 | * | 4 | * |
4 | * This program is free software; you can redistribute it and/or | 5 | * This program is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU General Public License | 6 | * modify it under the terms of the GNU General Public License |
@@ -305,7 +306,7 @@ static inline int check_io_access(struct pt_regs *regs) | |||
305 | #ifndef CONFIG_FSL_BOOKE | 306 | #ifndef CONFIG_FSL_BOOKE |
306 | #define get_mc_reason(regs) ((regs)->dsisr) | 307 | #define get_mc_reason(regs) ((regs)->dsisr) |
307 | #else | 308 | #else |
308 | #define get_mc_reason(regs) (mfspr(SPRN_MCSR) & MCSR_MASK) | 309 | #define get_mc_reason(regs) (mfspr(SPRN_MCSR)) |
309 | #endif | 310 | #endif |
310 | #define REASON_FP ESR_FP | 311 | #define REASON_FP ESR_FP |
311 | #define REASON_ILLEGAL (ESR_PIL | ESR_PUO) | 312 | #define REASON_ILLEGAL (ESR_PIL | ESR_PUO) |
@@ -421,6 +422,91 @@ int machine_check_47x(struct pt_regs *regs) | |||
421 | return 0; | 422 | return 0; |
422 | } | 423 | } |
423 | #elif defined(CONFIG_E500) | 424 | #elif defined(CONFIG_E500) |
425 | int machine_check_e500mc(struct pt_regs *regs) | ||
426 | { | ||
427 | unsigned long mcsr = mfspr(SPRN_MCSR); | ||
428 | unsigned long reason = mcsr; | ||
429 | int recoverable = 1; | ||
430 | |||
431 | printk("Machine check in kernel mode.\n"); | ||
432 | printk("Caused by (from MCSR=%lx): ", reason); | ||
433 | |||
434 | if (reason & MCSR_MCP) | ||
435 | printk("Machine Check Signal\n"); | ||
436 | |||
437 | if (reason & MCSR_ICPERR) { | ||
438 | printk("Instruction Cache Parity Error\n"); | ||
439 | |||
440 | /* | ||
441 | * This is recoverable by invalidating the i-cache. | ||
442 | */ | ||
443 | mtspr(SPRN_L1CSR1, mfspr(SPRN_L1CSR1) | L1CSR1_ICFI); | ||
444 | while (mfspr(SPRN_L1CSR1) & L1CSR1_ICFI) | ||
445 | ; | ||
446 | |||
447 | /* | ||
448 | * This will generally be accompanied by an instruction | ||
449 | * fetch error report -- only treat MCSR_IF as fatal | ||
450 | * if it wasn't due to an L1 parity error. | ||
451 | */ | ||
452 | reason &= ~MCSR_IF; | ||
453 | } | ||
454 | |||
455 | if (reason & MCSR_DCPERR_MC) { | ||
456 | printk("Data Cache Parity Error\n"); | ||
457 | recoverable = 0; | ||
458 | } | ||
459 | |||
460 | if (reason & MCSR_L2MMU_MHIT) { | ||
461 | printk("Hit on multiple TLB entries\n"); | ||
462 | recoverable = 0; | ||
463 | } | ||
464 | |||
465 | if (reason & MCSR_NMI) | ||
466 | printk("Non-maskable interrupt\n"); | ||
467 | |||
468 | if (reason & MCSR_IF) { | ||
469 | printk("Instruction Fetch Error Report\n"); | ||
470 | recoverable = 0; | ||
471 | } | ||
472 | |||
473 | if (reason & MCSR_LD) { | ||
474 | printk("Load Error Report\n"); | ||
475 | recoverable = 0; | ||
476 | } | ||
477 | |||
478 | if (reason & MCSR_ST) { | ||
479 | printk("Store Error Report\n"); | ||
480 | recoverable = 0; | ||
481 | } | ||
482 | |||
483 | if (reason & MCSR_LDG) { | ||
484 | printk("Guarded Load Error Report\n"); | ||
485 | recoverable = 0; | ||
486 | } | ||
487 | |||
488 | if (reason & MCSR_TLBSYNC) | ||
489 | printk("Simultaneous tlbsync operations\n"); | ||
490 | |||
491 | if (reason & MCSR_BSL2_ERR) { | ||
492 | printk("Level 2 Cache Error\n"); | ||
493 | recoverable = 0; | ||
494 | } | ||
495 | |||
496 | if (reason & MCSR_MAV) { | ||
497 | u64 addr; | ||
498 | |||
499 | addr = mfspr(SPRN_MCAR); | ||
500 | addr |= (u64)mfspr(SPRN_MCARU) << 32; | ||
501 | |||
502 | printk("Machine Check %s Address: %#llx\n", | ||
503 | reason & MCSR_MEA ? "Effective" : "Physical", addr); | ||
504 | } | ||
505 | |||
506 | mtspr(SPRN_MCSR, mcsr); | ||
507 | return mfspr(SPRN_MCSR) == 0 && recoverable; | ||
508 | } | ||
509 | |||
424 | int machine_check_e500(struct pt_regs *regs) | 510 | int machine_check_e500(struct pt_regs *regs) |
425 | { | 511 | { |
426 | unsigned long reason = get_mc_reason(regs); | 512 | unsigned long reason = get_mc_reason(regs); |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index dcd01c82e701..8a0deefac08d 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -223,19 +223,17 @@ SECTIONS | |||
223 | #endif | 223 | #endif |
224 | 224 | ||
225 | /* The initial task and kernel stack */ | 225 | /* The initial task and kernel stack */ |
226 | .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { | 226 | INIT_TASK_DATA_SECTION(THREAD_SIZE) |
227 | INIT_TASK_DATA(THREAD_SIZE) | ||
228 | } | ||
229 | 227 | ||
230 | .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { | 228 | .data..page_aligned : AT(ADDR(.data..page_aligned) - LOAD_OFFSET) { |
231 | PAGE_ALIGNED_DATA(PAGE_SIZE) | 229 | PAGE_ALIGNED_DATA(PAGE_SIZE) |
232 | } | 230 | } |
233 | 231 | ||
234 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { | 232 | .data..cacheline_aligned : AT(ADDR(.data..cacheline_aligned) - LOAD_OFFSET) { |
235 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) | 233 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) |
236 | } | 234 | } |
237 | 235 | ||
238 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { | 236 | .data..read_mostly : AT(ADDR(.data..read_mostly) - LOAD_OFFSET) { |
239 | READ_MOSTLY_DATA(L1_CACHE_BYTES) | 237 | READ_MOSTLY_DATA(L1_CACHE_BYTES) |
240 | } | 238 | } |
241 | 239 | ||
diff --git a/arch/powerpc/kvm/e500.c b/arch/powerpc/kvm/e500.c index bc2b4004eb26..e8a00b0c4449 100644 --- a/arch/powerpc/kvm/e500.c +++ b/arch/powerpc/kvm/e500.c | |||
@@ -164,7 +164,7 @@ static int __init kvmppc_e500_init(void) | |||
164 | return kvm_init(NULL, sizeof(struct kvmppc_vcpu_e500), 0, THIS_MODULE); | 164 | return kvm_init(NULL, sizeof(struct kvmppc_vcpu_e500), 0, THIS_MODULE); |
165 | } | 165 | } |
166 | 166 | ||
167 | static void __init kvmppc_e500_exit(void) | 167 | static void __exit kvmppc_e500_exit(void) |
168 | { | 168 | { |
169 | kvmppc_booke_exit(); | 169 | kvmppc_booke_exit(); |
170 | } | 170 | } |
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c index 2c9e52267292..7fd90d02d8c6 100644 --- a/arch/powerpc/oprofile/op_model_cell.c +++ b/arch/powerpc/oprofile/op_model_cell.c | |||
@@ -1077,7 +1077,7 @@ static int calculate_lfsr(int n) | |||
1077 | index = ENTRIES-1; | 1077 | index = ENTRIES-1; |
1078 | 1078 | ||
1079 | /* make sure index is valid */ | 1079 | /* make sure index is valid */ |
1080 | if ((index > ENTRIES) || (index < 0)) | 1080 | if ((index >= ENTRIES) || (index < 0)) |
1081 | index = ENTRIES-1; | 1081 | index = ENTRIES-1; |
1082 | 1082 | ||
1083 | return initial_lfsr[index]; | 1083 | return initial_lfsr[index]; |
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig index eeba0a70e466..69d668c072ae 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig | |||
@@ -171,6 +171,17 @@ config ISS4xx | |||
171 | help | 171 | help |
172 | This option enables support for the IBM ISS simulation environment | 172 | This option enables support for the IBM ISS simulation environment |
173 | 173 | ||
174 | config ICON | ||
175 | bool "Icon" | ||
176 | depends on 44x | ||
177 | default n | ||
178 | select PPC44x_SIMPLE | ||
179 | select 440SPe | ||
180 | select PCI | ||
181 | select PPC4xx_PCI_EXPRESS | ||
182 | help | ||
183 | This option enables support for the AMCC PPC440SPe evaluation board. | ||
184 | |||
174 | #config LUAN | 185 | #config LUAN |
175 | # bool "Luan" | 186 | # bool "Luan" |
176 | # depends on 44x | 187 | # depends on 44x |
diff --git a/arch/powerpc/platforms/44x/ppc44x_simple.c b/arch/powerpc/platforms/44x/ppc44x_simple.c index e8c23ccaa1fc..5f7a29d7f590 100644 --- a/arch/powerpc/platforms/44x/ppc44x_simple.c +++ b/arch/powerpc/platforms/44x/ppc44x_simple.c | |||
@@ -61,7 +61,8 @@ static char *board[] __initdata = { | |||
61 | "amcc,redwood", | 61 | "amcc,redwood", |
62 | "amcc,sequoia", | 62 | "amcc,sequoia", |
63 | "amcc,taishan", | 63 | "amcc,taishan", |
64 | "amcc,yosemite" | 64 | "amcc,yosemite", |
65 | "mosaixtech,icon" | ||
65 | }; | 66 | }; |
66 | 67 | ||
67 | static int __init ppc44x_probe(void) | 68 | static int __init ppc44x_probe(void) |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c index f0684c8ac960..8fe87fc61485 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) Freescale Semicondutor, Inc. 2006-2007. All rights reserved. | 2 | * Copyright (C) Freescale Semicondutor, Inc. 2006-2010. All rights reserved. |
3 | * | 3 | * |
4 | * Author: Andy Fleming <afleming@freescale.com> | 4 | * Author: Andy Fleming <afleming@freescale.com> |
5 | * | 5 | * |
@@ -154,6 +154,10 @@ static int mpc8568_mds_phy_fixups(struct phy_device *phydev) | |||
154 | * Setup the architecture | 154 | * Setup the architecture |
155 | * | 155 | * |
156 | */ | 156 | */ |
157 | #ifdef CONFIG_SMP | ||
158 | extern void __init mpc85xx_smp_init(void); | ||
159 | #endif | ||
160 | |||
157 | static void __init mpc85xx_mds_setup_arch(void) | 161 | static void __init mpc85xx_mds_setup_arch(void) |
158 | { | 162 | { |
159 | struct device_node *np; | 163 | struct device_node *np; |
@@ -194,6 +198,10 @@ static void __init mpc85xx_mds_setup_arch(void) | |||
194 | } | 198 | } |
195 | #endif | 199 | #endif |
196 | 200 | ||
201 | #ifdef CONFIG_SMP | ||
202 | mpc85xx_smp_init(); | ||
203 | #endif | ||
204 | |||
197 | #ifdef CONFIG_QUICC_ENGINE | 205 | #ifdef CONFIG_QUICC_ENGINE |
198 | np = of_find_compatible_node(NULL, NULL, "fsl,qe"); | 206 | np = of_find_compatible_node(NULL, NULL, "fsl,qe"); |
199 | if (!np) { | 207 | if (!np) { |
@@ -271,9 +279,49 @@ static void __init mpc85xx_mds_setup_arch(void) | |||
271 | BCSR_UCC_RGMII, BCSR_UCC_RTBI); | 279 | BCSR_UCC_RGMII, BCSR_UCC_RTBI); |
272 | } | 280 | } |
273 | 281 | ||
282 | } else if (machine_is(p1021_mds)) { | ||
283 | #define BCSR11_ENET_MICRST (0x1 << 5) | ||
284 | /* Reset Micrel PHY */ | ||
285 | clrbits8(&bcsr_regs[11], BCSR11_ENET_MICRST); | ||
286 | setbits8(&bcsr_regs[11], BCSR11_ENET_MICRST); | ||
274 | } | 287 | } |
288 | |||
275 | iounmap(bcsr_regs); | 289 | iounmap(bcsr_regs); |
276 | } | 290 | } |
291 | |||
292 | if (machine_is(p1021_mds)) { | ||
293 | #define MPC85xx_PMUXCR_OFFSET 0x60 | ||
294 | #define MPC85xx_PMUXCR_QE0 0x00008000 | ||
295 | #define MPC85xx_PMUXCR_QE3 0x00001000 | ||
296 | #define MPC85xx_PMUXCR_QE9 0x00000040 | ||
297 | #define MPC85xx_PMUXCR_QE12 0x00000008 | ||
298 | static __be32 __iomem *pmuxcr; | ||
299 | |||
300 | np = of_find_node_by_name(NULL, "global-utilities"); | ||
301 | |||
302 | if (np) { | ||
303 | pmuxcr = of_iomap(np, 0) + MPC85xx_PMUXCR_OFFSET; | ||
304 | |||
305 | if (!pmuxcr) | ||
306 | printk(KERN_EMERG "Error: Alternate function" | ||
307 | " signal multiplex control register not" | ||
308 | " mapped!\n"); | ||
309 | else | ||
310 | /* P1021 has pins muxed for QE and other functions. To | ||
311 | * enable QE UEC mode, we need to set bit QE0 for UCC1 | ||
312 | * in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9 | ||
313 | * and QE12 for QE MII management singals in PMUXCR | ||
314 | * register. | ||
315 | */ | ||
316 | setbits32(pmuxcr, MPC85xx_PMUXCR_QE0 | | ||
317 | MPC85xx_PMUXCR_QE3 | | ||
318 | MPC85xx_PMUXCR_QE9 | | ||
319 | MPC85xx_PMUXCR_QE12); | ||
320 | |||
321 | of_node_put(np); | ||
322 | } | ||
323 | |||
324 | } | ||
277 | #endif /* CONFIG_QUICC_ENGINE */ | 325 | #endif /* CONFIG_QUICC_ENGINE */ |
278 | 326 | ||
279 | #ifdef CONFIG_SWIOTLB | 327 | #ifdef CONFIG_SWIOTLB |
@@ -330,6 +378,16 @@ static struct of_device_id mpc85xx_ids[] = { | |||
330 | {}, | 378 | {}, |
331 | }; | 379 | }; |
332 | 380 | ||
381 | static struct of_device_id p1021_ids[] = { | ||
382 | { .type = "soc", }, | ||
383 | { .compatible = "soc", }, | ||
384 | { .compatible = "simple-bus", }, | ||
385 | { .type = "qe", }, | ||
386 | { .compatible = "fsl,qe", }, | ||
387 | { .compatible = "gianfar", }, | ||
388 | {}, | ||
389 | }; | ||
390 | |||
333 | static int __init mpc85xx_publish_devices(void) | 391 | static int __init mpc85xx_publish_devices(void) |
334 | { | 392 | { |
335 | if (machine_is(mpc8568_mds)) | 393 | if (machine_is(mpc8568_mds)) |
@@ -342,11 +400,22 @@ static int __init mpc85xx_publish_devices(void) | |||
342 | 400 | ||
343 | return 0; | 401 | return 0; |
344 | } | 402 | } |
403 | |||
404 | static int __init p1021_publish_devices(void) | ||
405 | { | ||
406 | /* Publish the QE devices */ | ||
407 | of_platform_bus_probe(NULL, p1021_ids, NULL); | ||
408 | |||
409 | return 0; | ||
410 | } | ||
411 | |||
345 | machine_device_initcall(mpc8568_mds, mpc85xx_publish_devices); | 412 | machine_device_initcall(mpc8568_mds, mpc85xx_publish_devices); |
346 | machine_device_initcall(mpc8569_mds, mpc85xx_publish_devices); | 413 | machine_device_initcall(mpc8569_mds, mpc85xx_publish_devices); |
414 | machine_device_initcall(p1021_mds, p1021_publish_devices); | ||
347 | 415 | ||
348 | machine_arch_initcall(mpc8568_mds, swiotlb_setup_bus_notifier); | 416 | machine_arch_initcall(mpc8568_mds, swiotlb_setup_bus_notifier); |
349 | machine_arch_initcall(mpc8569_mds, swiotlb_setup_bus_notifier); | 417 | machine_arch_initcall(mpc8569_mds, swiotlb_setup_bus_notifier); |
418 | machine_arch_initcall(p1021_mds, swiotlb_setup_bus_notifier); | ||
350 | 419 | ||
351 | static void __init mpc85xx_mds_pic_init(void) | 420 | static void __init mpc85xx_mds_pic_init(void) |
352 | { | 421 | { |
@@ -366,7 +435,7 @@ static void __init mpc85xx_mds_pic_init(void) | |||
366 | 435 | ||
367 | mpic = mpic_alloc(np, r.start, | 436 | mpic = mpic_alloc(np, r.start, |
368 | MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN | | 437 | MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN | |
369 | MPIC_BROKEN_FRR_NIRQS, | 438 | MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU, |
370 | 0, 256, " OpenPIC "); | 439 | 0, 256, " OpenPIC "); |
371 | BUG_ON(mpic == NULL); | 440 | BUG_ON(mpic == NULL); |
372 | of_node_put(np); | 441 | of_node_put(np); |
@@ -380,7 +449,11 @@ static void __init mpc85xx_mds_pic_init(void) | |||
380 | if (!np) | 449 | if (!np) |
381 | return; | 450 | return; |
382 | } | 451 | } |
383 | qe_ic_init(np, 0, qe_ic_cascade_muxed_mpic, NULL); | 452 | if (machine_is(p1021_mds)) |
453 | qe_ic_init(np, 0, qe_ic_cascade_low_mpic, | ||
454 | qe_ic_cascade_high_mpic); | ||
455 | else | ||
456 | qe_ic_init(np, 0, qe_ic_cascade_muxed_mpic, NULL); | ||
384 | of_node_put(np); | 457 | of_node_put(np); |
385 | #endif /* CONFIG_QUICC_ENGINE */ | 458 | #endif /* CONFIG_QUICC_ENGINE */ |
386 | } | 459 | } |
@@ -426,3 +499,26 @@ define_machine(mpc8569_mds) { | |||
426 | .pcibios_fixup_bus = fsl_pcibios_fixup_bus, | 499 | .pcibios_fixup_bus = fsl_pcibios_fixup_bus, |
427 | #endif | 500 | #endif |
428 | }; | 501 | }; |
502 | |||
503 | static int __init p1021_mds_probe(void) | ||
504 | { | ||
505 | unsigned long root = of_get_flat_dt_root(); | ||
506 | |||
507 | return of_flat_dt_is_compatible(root, "fsl,P1021MDS"); | ||
508 | |||
509 | } | ||
510 | |||
511 | define_machine(p1021_mds) { | ||
512 | .name = "P1021 MDS", | ||
513 | .probe = p1021_mds_probe, | ||
514 | .setup_arch = mpc85xx_mds_setup_arch, | ||
515 | .init_IRQ = mpc85xx_mds_pic_init, | ||
516 | .get_irq = mpic_get_irq, | ||
517 | .restart = fsl_rstcr_restart, | ||
518 | .calibrate_decr = generic_calibrate_decr, | ||
519 | .progress = udbg_progress, | ||
520 | #ifdef CONFIG_PCI | ||
521 | .pcibios_fixup_bus = fsl_pcibios_fixup_bus, | ||
522 | #endif | ||
523 | }; | ||
524 | |||
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index 22667a09d40e..4326b737d913 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -1066,7 +1066,7 @@ static int __init cell_iommu_fixed_mapping_init(void) | |||
1066 | fbase = _ALIGN_UP(fbase, 1 << IO_SEGMENT_SHIFT); | 1066 | fbase = _ALIGN_UP(fbase, 1 << IO_SEGMENT_SHIFT); |
1067 | fsize = lmb_phys_mem_size(); | 1067 | fsize = lmb_phys_mem_size(); |
1068 | 1068 | ||
1069 | if ((fbase + fsize) <= 0x800000000) | 1069 | if ((fbase + fsize) <= 0x800000000ul) |
1070 | hbase = 0; /* use the device tree window */ | 1070 | hbase = 0; /* use the device tree window */ |
1071 | else { | 1071 | else { |
1072 | /* If we're over 32 GB we need to cheat. We can't map all of | 1072 | /* If we're over 32 GB we need to cheat. We can't map all of |
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index 5c2808252516..1a40da92154c 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c | |||
@@ -1849,8 +1849,7 @@ out: | |||
1849 | return ret; | 1849 | return ret; |
1850 | } | 1850 | } |
1851 | 1851 | ||
1852 | static int spufs_mfc_fsync(struct file *file, struct dentry *dentry, | 1852 | static int spufs_mfc_fsync(struct file *file, int datasync) |
1853 | int datasync) | ||
1854 | { | 1853 | { |
1855 | return spufs_mfc_flush(file, NULL); | 1854 | return spufs_mfc_flush(file, NULL); |
1856 | } | 1855 | } |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index fc1b1c42b1dc..e5e5f823d687 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -251,7 +251,7 @@ const struct file_operations spufs_context_fops = { | |||
251 | .llseek = dcache_dir_lseek, | 251 | .llseek = dcache_dir_lseek, |
252 | .read = generic_read_dir, | 252 | .read = generic_read_dir, |
253 | .readdir = dcache_readdir, | 253 | .readdir = dcache_readdir, |
254 | .fsync = simple_sync_file, | 254 | .fsync = noop_fsync, |
255 | }; | 255 | }; |
256 | EXPORT_SYMBOL_GPL(spufs_context_fops); | 256 | EXPORT_SYMBOL_GPL(spufs_context_fops); |
257 | 257 | ||
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c index 1fefae76e295..e19ff021e711 100644 --- a/arch/powerpc/platforms/pseries/hvCall_inst.c +++ b/arch/powerpc/platforms/pseries/hvCall_inst.c | |||
@@ -102,7 +102,7 @@ static const struct file_operations hcall_inst_seq_fops = { | |||
102 | #define CPU_NAME_BUF_SIZE 32 | 102 | #define CPU_NAME_BUF_SIZE 32 |
103 | 103 | ||
104 | 104 | ||
105 | static void probe_hcall_entry(unsigned long opcode, unsigned long *args) | 105 | static void probe_hcall_entry(void *ignored, unsigned long opcode, unsigned long *args) |
106 | { | 106 | { |
107 | struct hcall_stats *h; | 107 | struct hcall_stats *h; |
108 | 108 | ||
@@ -114,7 +114,7 @@ static void probe_hcall_entry(unsigned long opcode, unsigned long *args) | |||
114 | h->purr_start = mfspr(SPRN_PURR); | 114 | h->purr_start = mfspr(SPRN_PURR); |
115 | } | 115 | } |
116 | 116 | ||
117 | static void probe_hcall_exit(unsigned long opcode, unsigned long retval, | 117 | static void probe_hcall_exit(void *ignored, unsigned long opcode, unsigned long retval, |
118 | unsigned long *retbuf) | 118 | unsigned long *retbuf) |
119 | { | 119 | { |
120 | struct hcall_stats *h; | 120 | struct hcall_stats *h; |
@@ -140,11 +140,11 @@ static int __init hcall_inst_init(void) | |||
140 | if (!firmware_has_feature(FW_FEATURE_LPAR)) | 140 | if (!firmware_has_feature(FW_FEATURE_LPAR)) |
141 | return 0; | 141 | return 0; |
142 | 142 | ||
143 | if (register_trace_hcall_entry(probe_hcall_entry)) | 143 | if (register_trace_hcall_entry(probe_hcall_entry, NULL)) |
144 | return -EINVAL; | 144 | return -EINVAL; |
145 | 145 | ||
146 | if (register_trace_hcall_exit(probe_hcall_exit)) { | 146 | if (register_trace_hcall_exit(probe_hcall_exit, NULL)) { |
147 | unregister_trace_hcall_entry(probe_hcall_entry); | 147 | unregister_trace_hcall_entry(probe_hcall_entry, NULL); |
148 | return -EINVAL; | 148 | return -EINVAL; |
149 | } | 149 | } |
150 | 150 | ||
diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index a7be144f5874..962c2d8dd8d9 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2007-2008 Freescale Semiconductor, Inc. All rights reserved. | 2 | * Copyright (C) 2007-2010 Freescale Semiconductor, Inc. |
3 | * | 3 | * |
4 | * Author: Tony Li <tony.li@freescale.com> | 4 | * Author: Tony Li <tony.li@freescale.com> |
5 | * Jason Jin <Jason.jin@freescale.com> | 5 | * Jason Jin <Jason.jin@freescale.com> |
@@ -22,14 +22,20 @@ | |||
22 | #include <asm/prom.h> | 22 | #include <asm/prom.h> |
23 | #include <asm/hw_irq.h> | 23 | #include <asm/hw_irq.h> |
24 | #include <asm/ppc-pci.h> | 24 | #include <asm/ppc-pci.h> |
25 | #include <asm/mpic.h> | ||
25 | #include "fsl_msi.h" | 26 | #include "fsl_msi.h" |
26 | 27 | ||
28 | LIST_HEAD(msi_head); | ||
29 | |||
27 | struct fsl_msi_feature { | 30 | struct fsl_msi_feature { |
28 | u32 fsl_pic_ip; | 31 | u32 fsl_pic_ip; |
29 | u32 msiir_offset; | 32 | u32 msiir_offset; |
30 | }; | 33 | }; |
31 | 34 | ||
32 | static struct fsl_msi *fsl_msi; | 35 | struct fsl_msi_cascade_data { |
36 | struct fsl_msi *msi_data; | ||
37 | int index; | ||
38 | }; | ||
33 | 39 | ||
34 | static inline u32 fsl_msi_read(u32 __iomem *base, unsigned int reg) | 40 | static inline u32 fsl_msi_read(u32 __iomem *base, unsigned int reg) |
35 | { | 41 | { |
@@ -54,10 +60,12 @@ static struct irq_chip fsl_msi_chip = { | |||
54 | static int fsl_msi_host_map(struct irq_host *h, unsigned int virq, | 60 | static int fsl_msi_host_map(struct irq_host *h, unsigned int virq, |
55 | irq_hw_number_t hw) | 61 | irq_hw_number_t hw) |
56 | { | 62 | { |
63 | struct fsl_msi *msi_data = h->host_data; | ||
57 | struct irq_chip *chip = &fsl_msi_chip; | 64 | struct irq_chip *chip = &fsl_msi_chip; |
58 | 65 | ||
59 | irq_to_desc(virq)->status |= IRQ_TYPE_EDGE_FALLING; | 66 | irq_to_desc(virq)->status |= IRQ_TYPE_EDGE_FALLING; |
60 | 67 | ||
68 | set_irq_chip_data(virq, msi_data); | ||
61 | set_irq_chip_and_handler(virq, chip, handle_edge_irq); | 69 | set_irq_chip_and_handler(virq, chip, handle_edge_irq); |
62 | 70 | ||
63 | return 0; | 71 | return 0; |
@@ -96,11 +104,12 @@ static int fsl_msi_check_device(struct pci_dev *pdev, int nvec, int type) | |||
96 | static void fsl_teardown_msi_irqs(struct pci_dev *pdev) | 104 | static void fsl_teardown_msi_irqs(struct pci_dev *pdev) |
97 | { | 105 | { |
98 | struct msi_desc *entry; | 106 | struct msi_desc *entry; |
99 | struct fsl_msi *msi_data = fsl_msi; | 107 | struct fsl_msi *msi_data; |
100 | 108 | ||
101 | list_for_each_entry(entry, &pdev->msi_list, list) { | 109 | list_for_each_entry(entry, &pdev->msi_list, list) { |
102 | if (entry->irq == NO_IRQ) | 110 | if (entry->irq == NO_IRQ) |
103 | continue; | 111 | continue; |
112 | msi_data = get_irq_data(entry->irq); | ||
104 | set_irq_msi(entry->irq, NULL); | 113 | set_irq_msi(entry->irq, NULL); |
105 | msi_bitmap_free_hwirqs(&msi_data->bitmap, | 114 | msi_bitmap_free_hwirqs(&msi_data->bitmap, |
106 | virq_to_hw(entry->irq), 1); | 115 | virq_to_hw(entry->irq), 1); |
@@ -111,9 +120,10 @@ static void fsl_teardown_msi_irqs(struct pci_dev *pdev) | |||
111 | } | 120 | } |
112 | 121 | ||
113 | static void fsl_compose_msi_msg(struct pci_dev *pdev, int hwirq, | 122 | static void fsl_compose_msi_msg(struct pci_dev *pdev, int hwirq, |
114 | struct msi_msg *msg) | 123 | struct msi_msg *msg, |
124 | struct fsl_msi *fsl_msi_data) | ||
115 | { | 125 | { |
116 | struct fsl_msi *msi_data = fsl_msi; | 126 | struct fsl_msi *msi_data = fsl_msi_data; |
117 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); | 127 | struct pci_controller *hose = pci_bus_to_host(pdev->bus); |
118 | u32 base = 0; | 128 | u32 base = 0; |
119 | 129 | ||
@@ -130,14 +140,19 @@ static void fsl_compose_msi_msg(struct pci_dev *pdev, int hwirq, | |||
130 | 140 | ||
131 | static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) | 141 | static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) |
132 | { | 142 | { |
133 | int rc, hwirq; | 143 | int rc, hwirq = -ENOMEM; |
134 | unsigned int virq; | 144 | unsigned int virq; |
135 | struct msi_desc *entry; | 145 | struct msi_desc *entry; |
136 | struct msi_msg msg; | 146 | struct msi_msg msg; |
137 | struct fsl_msi *msi_data = fsl_msi; | 147 | struct fsl_msi *msi_data; |
138 | 148 | ||
139 | list_for_each_entry(entry, &pdev->msi_list, list) { | 149 | list_for_each_entry(entry, &pdev->msi_list, list) { |
140 | hwirq = msi_bitmap_alloc_hwirqs(&msi_data->bitmap, 1); | 150 | list_for_each_entry(msi_data, &msi_head, list) { |
151 | hwirq = msi_bitmap_alloc_hwirqs(&msi_data->bitmap, 1); | ||
152 | if (hwirq >= 0) | ||
153 | break; | ||
154 | } | ||
155 | |||
141 | if (hwirq < 0) { | 156 | if (hwirq < 0) { |
142 | rc = hwirq; | 157 | rc = hwirq; |
143 | pr_debug("%s: fail allocating msi interrupt\n", | 158 | pr_debug("%s: fail allocating msi interrupt\n", |
@@ -154,25 +169,31 @@ static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) | |||
154 | rc = -ENOSPC; | 169 | rc = -ENOSPC; |
155 | goto out_free; | 170 | goto out_free; |
156 | } | 171 | } |
172 | set_irq_data(virq, msi_data); | ||
157 | set_irq_msi(virq, entry); | 173 | set_irq_msi(virq, entry); |
158 | 174 | ||
159 | fsl_compose_msi_msg(pdev, hwirq, &msg); | 175 | fsl_compose_msi_msg(pdev, hwirq, &msg, msi_data); |
160 | write_msi_msg(virq, &msg); | 176 | write_msi_msg(virq, &msg); |
161 | } | 177 | } |
162 | return 0; | 178 | return 0; |
163 | 179 | ||
164 | out_free: | 180 | out_free: |
181 | /* free by the caller of this function */ | ||
165 | return rc; | 182 | return rc; |
166 | } | 183 | } |
167 | 184 | ||
168 | static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc) | 185 | static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc) |
169 | { | 186 | { |
170 | unsigned int cascade_irq; | 187 | unsigned int cascade_irq; |
171 | struct fsl_msi *msi_data = fsl_msi; | 188 | struct fsl_msi *msi_data; |
172 | int msir_index = -1; | 189 | int msir_index = -1; |
173 | u32 msir_value = 0; | 190 | u32 msir_value = 0; |
174 | u32 intr_index; | 191 | u32 intr_index; |
175 | u32 have_shift = 0; | 192 | u32 have_shift = 0; |
193 | struct fsl_msi_cascade_data *cascade_data; | ||
194 | |||
195 | cascade_data = (struct fsl_msi_cascade_data *)get_irq_data(irq); | ||
196 | msi_data = cascade_data->msi_data; | ||
176 | 197 | ||
177 | raw_spin_lock(&desc->lock); | 198 | raw_spin_lock(&desc->lock); |
178 | if ((msi_data->feature & FSL_PIC_IP_MASK) == FSL_PIC_IP_IPIC) { | 199 | if ((msi_data->feature & FSL_PIC_IP_MASK) == FSL_PIC_IP_IPIC) { |
@@ -187,13 +208,13 @@ static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc) | |||
187 | if (unlikely(desc->status & IRQ_INPROGRESS)) | 208 | if (unlikely(desc->status & IRQ_INPROGRESS)) |
188 | goto unlock; | 209 | goto unlock; |
189 | 210 | ||
190 | msir_index = (int)desc->handler_data; | 211 | msir_index = cascade_data->index; |
191 | 212 | ||
192 | if (msir_index >= NR_MSI_REG) | 213 | if (msir_index >= NR_MSI_REG) |
193 | cascade_irq = NO_IRQ; | 214 | cascade_irq = NO_IRQ; |
194 | 215 | ||
195 | desc->status |= IRQ_INPROGRESS; | 216 | desc->status |= IRQ_INPROGRESS; |
196 | switch (fsl_msi->feature & FSL_PIC_IP_MASK) { | 217 | switch (msi_data->feature & FSL_PIC_IP_MASK) { |
197 | case FSL_PIC_IP_MPIC: | 218 | case FSL_PIC_IP_MPIC: |
198 | msir_value = fsl_msi_read(msi_data->msi_regs, | 219 | msir_value = fsl_msi_read(msi_data->msi_regs, |
199 | msir_index * 0x10); | 220 | msir_index * 0x10); |
@@ -229,6 +250,30 @@ unlock: | |||
229 | raw_spin_unlock(&desc->lock); | 250 | raw_spin_unlock(&desc->lock); |
230 | } | 251 | } |
231 | 252 | ||
253 | static int fsl_of_msi_remove(struct of_device *ofdev) | ||
254 | { | ||
255 | struct fsl_msi *msi = ofdev->dev.platform_data; | ||
256 | int virq, i; | ||
257 | struct fsl_msi_cascade_data *cascade_data; | ||
258 | |||
259 | if (msi->list.prev != NULL) | ||
260 | list_del(&msi->list); | ||
261 | for (i = 0; i < NR_MSI_REG; i++) { | ||
262 | virq = msi->msi_virqs[i]; | ||
263 | if (virq != NO_IRQ) { | ||
264 | cascade_data = get_irq_data(virq); | ||
265 | kfree(cascade_data); | ||
266 | irq_dispose_mapping(virq); | ||
267 | } | ||
268 | } | ||
269 | if (msi->bitmap.bitmap) | ||
270 | msi_bitmap_free(&msi->bitmap); | ||
271 | iounmap(msi->msi_regs); | ||
272 | kfree(msi); | ||
273 | |||
274 | return 0; | ||
275 | } | ||
276 | |||
232 | static int __devinit fsl_of_msi_probe(struct of_device *dev, | 277 | static int __devinit fsl_of_msi_probe(struct of_device *dev, |
233 | const struct of_device_id *match) | 278 | const struct of_device_id *match) |
234 | { | 279 | { |
@@ -239,15 +284,18 @@ static int __devinit fsl_of_msi_probe(struct of_device *dev, | |||
239 | int virt_msir; | 284 | int virt_msir; |
240 | const u32 *p; | 285 | const u32 *p; |
241 | struct fsl_msi_feature *features = match->data; | 286 | struct fsl_msi_feature *features = match->data; |
287 | struct fsl_msi_cascade_data *cascade_data = NULL; | ||
288 | int len; | ||
289 | u32 offset; | ||
242 | 290 | ||
243 | printk(KERN_DEBUG "Setting up Freescale MSI support\n"); | 291 | printk(KERN_DEBUG "Setting up Freescale MSI support\n"); |
244 | 292 | ||
245 | msi = kzalloc(sizeof(struct fsl_msi), GFP_KERNEL); | 293 | msi = kzalloc(sizeof(struct fsl_msi), GFP_KERNEL); |
246 | if (!msi) { | 294 | if (!msi) { |
247 | dev_err(&dev->dev, "No memory for MSI structure\n"); | 295 | dev_err(&dev->dev, "No memory for MSI structure\n"); |
248 | err = -ENOMEM; | 296 | return -ENOMEM; |
249 | goto error_out; | ||
250 | } | 297 | } |
298 | dev->dev.platform_data = msi; | ||
251 | 299 | ||
252 | msi->irqhost = irq_alloc_host(dev->dev.of_node, IRQ_HOST_MAP_LINEAR, | 300 | msi->irqhost = irq_alloc_host(dev->dev.of_node, IRQ_HOST_MAP_LINEAR, |
253 | NR_MSI_IRQS, &fsl_msi_host_ops, 0); | 301 | NR_MSI_IRQS, &fsl_msi_host_ops, 0); |
@@ -298,27 +346,47 @@ static int __devinit fsl_of_msi_probe(struct of_device *dev, | |||
298 | err = -EINVAL; | 346 | err = -EINVAL; |
299 | goto error_out; | 347 | goto error_out; |
300 | } | 348 | } |
349 | offset = 0; | ||
350 | p = of_get_property(dev->dev.of_node, "msi-available-ranges", &len); | ||
351 | if (p) | ||
352 | offset = *p / IRQS_PER_MSI_REG; | ||
301 | 353 | ||
302 | count /= sizeof(u32); | 354 | count /= sizeof(u32); |
303 | for (i = 0; i < count / 2; i++) { | 355 | for (i = 0; i < min(count / 2, NR_MSI_REG); i++) { |
304 | if (i > NR_MSI_REG) | ||
305 | break; | ||
306 | virt_msir = irq_of_parse_and_map(dev->dev.of_node, i); | 356 | virt_msir = irq_of_parse_and_map(dev->dev.of_node, i); |
307 | if (virt_msir != NO_IRQ) { | 357 | if (virt_msir != NO_IRQ) { |
308 | set_irq_data(virt_msir, (void *)i); | 358 | cascade_data = kzalloc( |
359 | sizeof(struct fsl_msi_cascade_data), | ||
360 | GFP_KERNEL); | ||
361 | if (!cascade_data) { | ||
362 | dev_err(&dev->dev, | ||
363 | "No memory for MSI cascade data\n"); | ||
364 | err = -ENOMEM; | ||
365 | goto error_out; | ||
366 | } | ||
367 | msi->msi_virqs[i] = virt_msir; | ||
368 | cascade_data->index = i + offset; | ||
369 | cascade_data->msi_data = msi; | ||
370 | set_irq_data(virt_msir, (void *)cascade_data); | ||
309 | set_irq_chained_handler(virt_msir, fsl_msi_cascade); | 371 | set_irq_chained_handler(virt_msir, fsl_msi_cascade); |
310 | } | 372 | } |
311 | } | 373 | } |
312 | 374 | ||
313 | fsl_msi = msi; | 375 | list_add_tail(&msi->list, &msi_head); |
314 | 376 | ||
315 | WARN_ON(ppc_md.setup_msi_irqs); | 377 | /* The multiple setting ppc_md.setup_msi_irqs will not harm things */ |
316 | ppc_md.setup_msi_irqs = fsl_setup_msi_irqs; | 378 | if (!ppc_md.setup_msi_irqs) { |
317 | ppc_md.teardown_msi_irqs = fsl_teardown_msi_irqs; | 379 | ppc_md.setup_msi_irqs = fsl_setup_msi_irqs; |
318 | ppc_md.msi_check_device = fsl_msi_check_device; | 380 | ppc_md.teardown_msi_irqs = fsl_teardown_msi_irqs; |
381 | ppc_md.msi_check_device = fsl_msi_check_device; | ||
382 | } else if (ppc_md.setup_msi_irqs != fsl_setup_msi_irqs) { | ||
383 | dev_err(&dev->dev, "Different MSI driver already installed!\n"); | ||
384 | err = -ENODEV; | ||
385 | goto error_out; | ||
386 | } | ||
319 | return 0; | 387 | return 0; |
320 | error_out: | 388 | error_out: |
321 | kfree(msi); | 389 | fsl_of_msi_remove(dev); |
322 | return err; | 390 | return err; |
323 | } | 391 | } |
324 | 392 | ||
@@ -351,6 +419,7 @@ static struct of_platform_driver fsl_of_msi_driver = { | |||
351 | .of_match_table = fsl_of_msi_ids, | 419 | .of_match_table = fsl_of_msi_ids, |
352 | }, | 420 | }, |
353 | .probe = fsl_of_msi_probe, | 421 | .probe = fsl_of_msi_probe, |
422 | .remove = fsl_of_msi_remove, | ||
354 | }; | 423 | }; |
355 | 424 | ||
356 | static __init int fsl_of_msi_init(void) | 425 | static __init int fsl_of_msi_init(void) |
diff --git a/arch/powerpc/sysdev/fsl_msi.h b/arch/powerpc/sysdev/fsl_msi.h index 331c7e7025b7..624580c252d7 100644 --- a/arch/powerpc/sysdev/fsl_msi.h +++ b/arch/powerpc/sysdev/fsl_msi.h | |||
@@ -32,8 +32,11 @@ struct fsl_msi { | |||
32 | u32 msi_addr_hi; | 32 | u32 msi_addr_hi; |
33 | void __iomem *msi_regs; | 33 | void __iomem *msi_regs; |
34 | u32 feature; | 34 | u32 feature; |
35 | int msi_virqs[NR_MSI_REG]; | ||
35 | 36 | ||
36 | struct msi_bitmap bitmap; | 37 | struct msi_bitmap bitmap; |
38 | |||
39 | struct list_head list; /* support multiple MSI banks */ | ||
37 | }; | 40 | }; |
38 | 41 | ||
39 | #endif /* _POWERPC_SYSDEV_FSL_MSI_H */ | 42 | #endif /* _POWERPC_SYSDEV_FSL_MSI_H */ |
diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c index 6a1fde0d22b0..30e1626b2e85 100644 --- a/arch/powerpc/sysdev/fsl_rio.c +++ b/arch/powerpc/sysdev/fsl_rio.c | |||
@@ -1,6 +1,15 @@ | |||
1 | /* | 1 | /* |
2 | * Freescale MPC85xx/MPC86xx RapidIO support | 2 | * Freescale MPC85xx/MPC86xx RapidIO support |
3 | * | 3 | * |
4 | * Copyright 2009 Sysgo AG | ||
5 | * Thomas Moll <thomas.moll@sysgo.com> | ||
6 | * - fixed maintenance access routines, check for aligned access | ||
7 | * | ||
8 | * Copyright 2009 Integrated Device Technology, Inc. | ||
9 | * Alex Bounine <alexandre.bounine@idt.com> | ||
10 | * - Added Port-Write message handling | ||
11 | * - Added Machine Check exception handling | ||
12 | * | ||
4 | * Copyright (C) 2007, 2008 Freescale Semiconductor, Inc. | 13 | * Copyright (C) 2007, 2008 Freescale Semiconductor, Inc. |
5 | * Zhang Wei <wei.zhang@freescale.com> | 14 | * Zhang Wei <wei.zhang@freescale.com> |
6 | * | 15 | * |
@@ -24,19 +33,30 @@ | |||
24 | #include <linux/of_platform.h> | 33 | #include <linux/of_platform.h> |
25 | #include <linux/delay.h> | 34 | #include <linux/delay.h> |
26 | #include <linux/slab.h> | 35 | #include <linux/slab.h> |
36 | #include <linux/kfifo.h> | ||
27 | 37 | ||
28 | #include <asm/io.h> | 38 | #include <asm/io.h> |
39 | #include <asm/machdep.h> | ||
40 | #include <asm/uaccess.h> | ||
41 | |||
42 | #undef DEBUG_PW /* Port-Write debugging */ | ||
29 | 43 | ||
30 | /* RapidIO definition irq, which read from OF-tree */ | 44 | /* RapidIO definition irq, which read from OF-tree */ |
31 | #define IRQ_RIO_BELL(m) (((struct rio_priv *)(m->priv))->bellirq) | 45 | #define IRQ_RIO_BELL(m) (((struct rio_priv *)(m->priv))->bellirq) |
32 | #define IRQ_RIO_TX(m) (((struct rio_priv *)(m->priv))->txirq) | 46 | #define IRQ_RIO_TX(m) (((struct rio_priv *)(m->priv))->txirq) |
33 | #define IRQ_RIO_RX(m) (((struct rio_priv *)(m->priv))->rxirq) | 47 | #define IRQ_RIO_RX(m) (((struct rio_priv *)(m->priv))->rxirq) |
48 | #define IRQ_RIO_PW(m) (((struct rio_priv *)(m->priv))->pwirq) | ||
34 | 49 | ||
35 | #define RIO_ATMU_REGS_OFFSET 0x10c00 | 50 | #define RIO_ATMU_REGS_OFFSET 0x10c00 |
36 | #define RIO_P_MSG_REGS_OFFSET 0x11000 | 51 | #define RIO_P_MSG_REGS_OFFSET 0x11000 |
37 | #define RIO_S_MSG_REGS_OFFSET 0x13000 | 52 | #define RIO_S_MSG_REGS_OFFSET 0x13000 |
38 | #define RIO_ESCSR 0x158 | 53 | #define RIO_ESCSR 0x158 |
39 | #define RIO_CCSR 0x15c | 54 | #define RIO_CCSR 0x15c |
55 | #define RIO_LTLEDCSR 0x0608 | ||
56 | #define RIO_LTLEDCSR_IER 0x80000000 | ||
57 | #define RIO_LTLEDCSR_PRT 0x01000000 | ||
58 | #define RIO_LTLEECSR 0x060c | ||
59 | #define RIO_EPWISR 0x10010 | ||
40 | #define RIO_ISR_AACR 0x10120 | 60 | #define RIO_ISR_AACR 0x10120 |
41 | #define RIO_ISR_AACR_AA 0x1 /* Accept All ID */ | 61 | #define RIO_ISR_AACR_AA 0x1 /* Accept All ID */ |
42 | #define RIO_MAINT_WIN_SIZE 0x400000 | 62 | #define RIO_MAINT_WIN_SIZE 0x400000 |
@@ -55,6 +75,18 @@ | |||
55 | #define RIO_MSG_ISR_QFI 0x00000010 | 75 | #define RIO_MSG_ISR_QFI 0x00000010 |
56 | #define RIO_MSG_ISR_DIQI 0x00000001 | 76 | #define RIO_MSG_ISR_DIQI 0x00000001 |
57 | 77 | ||
78 | #define RIO_IPWMR_SEN 0x00100000 | ||
79 | #define RIO_IPWMR_QFIE 0x00000100 | ||
80 | #define RIO_IPWMR_EIE 0x00000020 | ||
81 | #define RIO_IPWMR_CQ 0x00000002 | ||
82 | #define RIO_IPWMR_PWE 0x00000001 | ||
83 | |||
84 | #define RIO_IPWSR_QF 0x00100000 | ||
85 | #define RIO_IPWSR_TE 0x00000080 | ||
86 | #define RIO_IPWSR_QFI 0x00000010 | ||
87 | #define RIO_IPWSR_PWD 0x00000008 | ||
88 | #define RIO_IPWSR_PWB 0x00000004 | ||
89 | |||
58 | #define RIO_MSG_DESC_SIZE 32 | 90 | #define RIO_MSG_DESC_SIZE 32 |
59 | #define RIO_MSG_BUFFER_SIZE 4096 | 91 | #define RIO_MSG_BUFFER_SIZE 4096 |
60 | #define RIO_MIN_TX_RING_SIZE 2 | 92 | #define RIO_MIN_TX_RING_SIZE 2 |
@@ -121,7 +153,7 @@ struct rio_msg_regs { | |||
121 | u32 pad10[26]; | 153 | u32 pad10[26]; |
122 | u32 pwmr; | 154 | u32 pwmr; |
123 | u32 pwsr; | 155 | u32 pwsr; |
124 | u32 pad11; | 156 | u32 epwqbar; |
125 | u32 pwqbar; | 157 | u32 pwqbar; |
126 | }; | 158 | }; |
127 | 159 | ||
@@ -160,6 +192,14 @@ struct rio_msg_rx_ring { | |||
160 | void *dev_id; | 192 | void *dev_id; |
161 | }; | 193 | }; |
162 | 194 | ||
195 | struct rio_port_write_msg { | ||
196 | void *virt; | ||
197 | dma_addr_t phys; | ||
198 | u32 msg_count; | ||
199 | u32 err_count; | ||
200 | u32 discard_count; | ||
201 | }; | ||
202 | |||
163 | struct rio_priv { | 203 | struct rio_priv { |
164 | struct device *dev; | 204 | struct device *dev; |
165 | void __iomem *regs_win; | 205 | void __iomem *regs_win; |
@@ -172,11 +212,64 @@ struct rio_priv { | |||
172 | struct rio_dbell_ring dbell_ring; | 212 | struct rio_dbell_ring dbell_ring; |
173 | struct rio_msg_tx_ring msg_tx_ring; | 213 | struct rio_msg_tx_ring msg_tx_ring; |
174 | struct rio_msg_rx_ring msg_rx_ring; | 214 | struct rio_msg_rx_ring msg_rx_ring; |
215 | struct rio_port_write_msg port_write_msg; | ||
175 | int bellirq; | 216 | int bellirq; |
176 | int txirq; | 217 | int txirq; |
177 | int rxirq; | 218 | int rxirq; |
219 | int pwirq; | ||
220 | struct work_struct pw_work; | ||
221 | struct kfifo pw_fifo; | ||
222 | spinlock_t pw_fifo_lock; | ||
178 | }; | 223 | }; |
179 | 224 | ||
225 | #define __fsl_read_rio_config(x, addr, err, op) \ | ||
226 | __asm__ __volatile__( \ | ||
227 | "1: "op" %1,0(%2)\n" \ | ||
228 | " eieio\n" \ | ||
229 | "2:\n" \ | ||
230 | ".section .fixup,\"ax\"\n" \ | ||
231 | "3: li %1,-1\n" \ | ||
232 | " li %0,%3\n" \ | ||
233 | " b 2b\n" \ | ||
234 | ".section __ex_table,\"a\"\n" \ | ||
235 | " .align 2\n" \ | ||
236 | " .long 1b,3b\n" \ | ||
237 | ".text" \ | ||
238 | : "=r" (err), "=r" (x) \ | ||
239 | : "b" (addr), "i" (-EFAULT), "0" (err)) | ||
240 | |||
241 | static void __iomem *rio_regs_win; | ||
242 | |||
243 | static int (*saved_mcheck_exception)(struct pt_regs *regs); | ||
244 | |||
245 | static int fsl_rio_mcheck_exception(struct pt_regs *regs) | ||
246 | { | ||
247 | const struct exception_table_entry *entry = NULL; | ||
248 | unsigned long reason = (mfspr(SPRN_MCSR) & MCSR_MASK); | ||
249 | |||
250 | if (reason & MCSR_BUS_RBERR) { | ||
251 | reason = in_be32((u32 *)(rio_regs_win + RIO_LTLEDCSR)); | ||
252 | if (reason & (RIO_LTLEDCSR_IER | RIO_LTLEDCSR_PRT)) { | ||
253 | /* Check if we are prepared to handle this fault */ | ||
254 | entry = search_exception_tables(regs->nip); | ||
255 | if (entry) { | ||
256 | pr_debug("RIO: %s - MC Exception handled\n", | ||
257 | __func__); | ||
258 | out_be32((u32 *)(rio_regs_win + RIO_LTLEDCSR), | ||
259 | 0); | ||
260 | regs->msr |= MSR_RI; | ||
261 | regs->nip = entry->fixup; | ||
262 | return 1; | ||
263 | } | ||
264 | } | ||
265 | } | ||
266 | |||
267 | if (saved_mcheck_exception) | ||
268 | return saved_mcheck_exception(regs); | ||
269 | else | ||
270 | return cur_cpu_spec->machine_check(regs); | ||
271 | } | ||
272 | |||
180 | /** | 273 | /** |
181 | * fsl_rio_doorbell_send - Send a MPC85xx doorbell message | 274 | * fsl_rio_doorbell_send - Send a MPC85xx doorbell message |
182 | * @mport: RapidIO master port info | 275 | * @mport: RapidIO master port info |
@@ -277,27 +370,44 @@ fsl_rio_config_read(struct rio_mport *mport, int index, u16 destid, | |||
277 | { | 370 | { |
278 | struct rio_priv *priv = mport->priv; | 371 | struct rio_priv *priv = mport->priv; |
279 | u8 *data; | 372 | u8 *data; |
373 | u32 rval, err = 0; | ||
280 | 374 | ||
281 | pr_debug | 375 | pr_debug |
282 | ("fsl_rio_config_read: index %d destid %d hopcount %d offset %8.8x len %d\n", | 376 | ("fsl_rio_config_read: index %d destid %d hopcount %d offset %8.8x len %d\n", |
283 | index, destid, hopcount, offset, len); | 377 | index, destid, hopcount, offset, len); |
378 | |||
379 | /* 16MB maintenance window possible */ | ||
380 | /* allow only aligned access to maintenance registers */ | ||
381 | if (offset > (0x1000000 - len) || !IS_ALIGNED(offset, len)) | ||
382 | return -EINVAL; | ||
383 | |||
284 | out_be32(&priv->maint_atmu_regs->rowtar, | 384 | out_be32(&priv->maint_atmu_regs->rowtar, |
285 | (destid << 22) | (hopcount << 12) | ((offset & ~0x3) >> 9)); | 385 | (destid << 22) | (hopcount << 12) | (offset >> 12)); |
386 | out_be32(&priv->maint_atmu_regs->rowtear, (destid >> 10)); | ||
286 | 387 | ||
287 | data = (u8 *) priv->maint_win + offset; | 388 | data = (u8 *) priv->maint_win + (offset & (RIO_MAINT_WIN_SIZE - 1)); |
288 | switch (len) { | 389 | switch (len) { |
289 | case 1: | 390 | case 1: |
290 | *val = in_8((u8 *) data); | 391 | __fsl_read_rio_config(rval, data, err, "lbz"); |
291 | break; | 392 | break; |
292 | case 2: | 393 | case 2: |
293 | *val = in_be16((u16 *) data); | 394 | __fsl_read_rio_config(rval, data, err, "lhz"); |
294 | break; | 395 | break; |
295 | default: | 396 | case 4: |
296 | *val = in_be32((u32 *) data); | 397 | __fsl_read_rio_config(rval, data, err, "lwz"); |
297 | break; | 398 | break; |
399 | default: | ||
400 | return -EINVAL; | ||
298 | } | 401 | } |
299 | 402 | ||
300 | return 0; | 403 | if (err) { |
404 | pr_debug("RIO: cfg_read error %d for %x:%x:%x\n", | ||
405 | err, destid, hopcount, offset); | ||
406 | } | ||
407 | |||
408 | *val = rval; | ||
409 | |||
410 | return err; | ||
301 | } | 411 | } |
302 | 412 | ||
303 | /** | 413 | /** |
@@ -322,10 +432,17 @@ fsl_rio_config_write(struct rio_mport *mport, int index, u16 destid, | |||
322 | pr_debug | 432 | pr_debug |
323 | ("fsl_rio_config_write: index %d destid %d hopcount %d offset %8.8x len %d val %8.8x\n", | 433 | ("fsl_rio_config_write: index %d destid %d hopcount %d offset %8.8x len %d val %8.8x\n", |
324 | index, destid, hopcount, offset, len, val); | 434 | index, destid, hopcount, offset, len, val); |
435 | |||
436 | /* 16MB maintenance windows possible */ | ||
437 | /* allow only aligned access to maintenance registers */ | ||
438 | if (offset > (0x1000000 - len) || !IS_ALIGNED(offset, len)) | ||
439 | return -EINVAL; | ||
440 | |||
325 | out_be32(&priv->maint_atmu_regs->rowtar, | 441 | out_be32(&priv->maint_atmu_regs->rowtar, |
326 | (destid << 22) | (hopcount << 12) | ((offset & ~0x3) >> 9)); | 442 | (destid << 22) | (hopcount << 12) | (offset >> 12)); |
443 | out_be32(&priv->maint_atmu_regs->rowtear, (destid >> 10)); | ||
327 | 444 | ||
328 | data = (u8 *) priv->maint_win + offset; | 445 | data = (u8 *) priv->maint_win + (offset & (RIO_MAINT_WIN_SIZE - 1)); |
329 | switch (len) { | 446 | switch (len) { |
330 | case 1: | 447 | case 1: |
331 | out_8((u8 *) data, val); | 448 | out_8((u8 *) data, val); |
@@ -333,9 +450,11 @@ fsl_rio_config_write(struct rio_mport *mport, int index, u16 destid, | |||
333 | case 2: | 450 | case 2: |
334 | out_be16((u16 *) data, val); | 451 | out_be16((u16 *) data, val); |
335 | break; | 452 | break; |
336 | default: | 453 | case 4: |
337 | out_be32((u32 *) data, val); | 454 | out_be32((u32 *) data, val); |
338 | break; | 455 | break; |
456 | default: | ||
457 | return -EINVAL; | ||
339 | } | 458 | } |
340 | 459 | ||
341 | return 0; | 460 | return 0; |
@@ -930,6 +1049,223 @@ static int fsl_rio_doorbell_init(struct rio_mport *mport) | |||
930 | return rc; | 1049 | return rc; |
931 | } | 1050 | } |
932 | 1051 | ||
1052 | /** | ||
1053 | * fsl_rio_port_write_handler - MPC85xx port write interrupt handler | ||
1054 | * @irq: Linux interrupt number | ||
1055 | * @dev_instance: Pointer to interrupt-specific data | ||
1056 | * | ||
1057 | * Handles port write interrupts. Parses a list of registered | ||
1058 | * port write event handlers and executes a matching event handler. | ||
1059 | */ | ||
1060 | static irqreturn_t | ||
1061 | fsl_rio_port_write_handler(int irq, void *dev_instance) | ||
1062 | { | ||
1063 | u32 ipwmr, ipwsr; | ||
1064 | struct rio_mport *port = (struct rio_mport *)dev_instance; | ||
1065 | struct rio_priv *priv = port->priv; | ||
1066 | u32 epwisr, tmp; | ||
1067 | |||
1068 | ipwmr = in_be32(&priv->msg_regs->pwmr); | ||
1069 | ipwsr = in_be32(&priv->msg_regs->pwsr); | ||
1070 | |||
1071 | epwisr = in_be32(priv->regs_win + RIO_EPWISR); | ||
1072 | if (epwisr & 0x80000000) { | ||
1073 | tmp = in_be32(priv->regs_win + RIO_LTLEDCSR); | ||
1074 | pr_info("RIO_LTLEDCSR = 0x%x\n", tmp); | ||
1075 | out_be32(priv->regs_win + RIO_LTLEDCSR, 0); | ||
1076 | } | ||
1077 | |||
1078 | if (!(epwisr & 0x00000001)) | ||
1079 | return IRQ_HANDLED; | ||
1080 | |||
1081 | #ifdef DEBUG_PW | ||
1082 | pr_debug("PW Int->IPWMR: 0x%08x IPWSR: 0x%08x (", ipwmr, ipwsr); | ||
1083 | if (ipwsr & RIO_IPWSR_QF) | ||
1084 | pr_debug(" QF"); | ||
1085 | if (ipwsr & RIO_IPWSR_TE) | ||
1086 | pr_debug(" TE"); | ||
1087 | if (ipwsr & RIO_IPWSR_QFI) | ||
1088 | pr_debug(" QFI"); | ||
1089 | if (ipwsr & RIO_IPWSR_PWD) | ||
1090 | pr_debug(" PWD"); | ||
1091 | if (ipwsr & RIO_IPWSR_PWB) | ||
1092 | pr_debug(" PWB"); | ||
1093 | pr_debug(" )\n"); | ||
1094 | #endif | ||
1095 | out_be32(&priv->msg_regs->pwsr, | ||
1096 | ipwsr & (RIO_IPWSR_TE | RIO_IPWSR_QFI | RIO_IPWSR_PWD)); | ||
1097 | |||
1098 | if ((ipwmr & RIO_IPWMR_EIE) && (ipwsr & RIO_IPWSR_TE)) { | ||
1099 | priv->port_write_msg.err_count++; | ||
1100 | pr_info("RIO: Port-Write Transaction Err (%d)\n", | ||
1101 | priv->port_write_msg.err_count); | ||
1102 | } | ||
1103 | if (ipwsr & RIO_IPWSR_PWD) { | ||
1104 | priv->port_write_msg.discard_count++; | ||
1105 | pr_info("RIO: Port Discarded Port-Write Msg(s) (%d)\n", | ||
1106 | priv->port_write_msg.discard_count); | ||
1107 | } | ||
1108 | |||
1109 | /* Schedule deferred processing if PW was received */ | ||
1110 | if (ipwsr & RIO_IPWSR_QFI) { | ||
1111 | /* Save PW message (if there is room in FIFO), | ||
1112 | * otherwise discard it. | ||
1113 | */ | ||
1114 | if (kfifo_avail(&priv->pw_fifo) >= RIO_PW_MSG_SIZE) { | ||
1115 | priv->port_write_msg.msg_count++; | ||
1116 | kfifo_in(&priv->pw_fifo, priv->port_write_msg.virt, | ||
1117 | RIO_PW_MSG_SIZE); | ||
1118 | } else { | ||
1119 | priv->port_write_msg.discard_count++; | ||
1120 | pr_info("RIO: ISR Discarded Port-Write Msg(s) (%d)\n", | ||
1121 | priv->port_write_msg.discard_count); | ||
1122 | } | ||
1123 | schedule_work(&priv->pw_work); | ||
1124 | } | ||
1125 | |||
1126 | /* Issue Clear Queue command. This allows another | ||
1127 | * port-write to be received. | ||
1128 | */ | ||
1129 | out_be32(&priv->msg_regs->pwmr, ipwmr | RIO_IPWMR_CQ); | ||
1130 | |||
1131 | return IRQ_HANDLED; | ||
1132 | } | ||
1133 | |||
1134 | static void fsl_pw_dpc(struct work_struct *work) | ||
1135 | { | ||
1136 | struct rio_priv *priv = container_of(work, struct rio_priv, pw_work); | ||
1137 | unsigned long flags; | ||
1138 | u32 msg_buffer[RIO_PW_MSG_SIZE/sizeof(u32)]; | ||
1139 | |||
1140 | /* | ||
1141 | * Process port-write messages | ||
1142 | */ | ||
1143 | spin_lock_irqsave(&priv->pw_fifo_lock, flags); | ||
1144 | while (kfifo_out(&priv->pw_fifo, (unsigned char *)msg_buffer, | ||
1145 | RIO_PW_MSG_SIZE)) { | ||
1146 | /* Process one message */ | ||
1147 | spin_unlock_irqrestore(&priv->pw_fifo_lock, flags); | ||
1148 | #ifdef DEBUG_PW | ||
1149 | { | ||
1150 | u32 i; | ||
1151 | pr_debug("%s : Port-Write Message:", __func__); | ||
1152 | for (i = 0; i < RIO_PW_MSG_SIZE/sizeof(u32); i++) { | ||
1153 | if ((i%4) == 0) | ||
1154 | pr_debug("\n0x%02x: 0x%08x", i*4, | ||
1155 | msg_buffer[i]); | ||
1156 | else | ||
1157 | pr_debug(" 0x%08x", msg_buffer[i]); | ||
1158 | } | ||
1159 | pr_debug("\n"); | ||
1160 | } | ||
1161 | #endif | ||
1162 | /* Pass the port-write message to RIO core for processing */ | ||
1163 | rio_inb_pwrite_handler((union rio_pw_msg *)msg_buffer); | ||
1164 | spin_lock_irqsave(&priv->pw_fifo_lock, flags); | ||
1165 | } | ||
1166 | spin_unlock_irqrestore(&priv->pw_fifo_lock, flags); | ||
1167 | } | ||
1168 | |||
1169 | /** | ||
1170 | * fsl_rio_pw_enable - enable/disable port-write interface init | ||
1171 | * @mport: Master port implementing the port write unit | ||
1172 | * @enable: 1=enable; 0=disable port-write message handling | ||
1173 | */ | ||
1174 | static int fsl_rio_pw_enable(struct rio_mport *mport, int enable) | ||
1175 | { | ||
1176 | struct rio_priv *priv = mport->priv; | ||
1177 | u32 rval; | ||
1178 | |||
1179 | rval = in_be32(&priv->msg_regs->pwmr); | ||
1180 | |||
1181 | if (enable) | ||
1182 | rval |= RIO_IPWMR_PWE; | ||
1183 | else | ||
1184 | rval &= ~RIO_IPWMR_PWE; | ||
1185 | |||
1186 | out_be32(&priv->msg_regs->pwmr, rval); | ||
1187 | |||
1188 | return 0; | ||
1189 | } | ||
1190 | |||
1191 | /** | ||
1192 | * fsl_rio_port_write_init - MPC85xx port write interface init | ||
1193 | * @mport: Master port implementing the port write unit | ||
1194 | * | ||
1195 | * Initializes port write unit hardware and DMA buffer | ||
1196 | * ring. Called from fsl_rio_setup(). Returns %0 on success | ||
1197 | * or %-ENOMEM on failure. | ||
1198 | */ | ||
1199 | static int fsl_rio_port_write_init(struct rio_mport *mport) | ||
1200 | { | ||
1201 | struct rio_priv *priv = mport->priv; | ||
1202 | int rc = 0; | ||
1203 | |||
1204 | /* Following configurations require a disabled port write controller */ | ||
1205 | out_be32(&priv->msg_regs->pwmr, | ||
1206 | in_be32(&priv->msg_regs->pwmr) & ~RIO_IPWMR_PWE); | ||
1207 | |||
1208 | /* Initialize port write */ | ||
1209 | priv->port_write_msg.virt = dma_alloc_coherent(priv->dev, | ||
1210 | RIO_PW_MSG_SIZE, | ||
1211 | &priv->port_write_msg.phys, GFP_KERNEL); | ||
1212 | if (!priv->port_write_msg.virt) { | ||
1213 | pr_err("RIO: unable allocate port write queue\n"); | ||
1214 | return -ENOMEM; | ||
1215 | } | ||
1216 | |||
1217 | priv->port_write_msg.err_count = 0; | ||
1218 | priv->port_write_msg.discard_count = 0; | ||
1219 | |||
1220 | /* Point dequeue/enqueue pointers at first entry */ | ||
1221 | out_be32(&priv->msg_regs->epwqbar, 0); | ||
1222 | out_be32(&priv->msg_regs->pwqbar, (u32) priv->port_write_msg.phys); | ||
1223 | |||
1224 | pr_debug("EIPWQBAR: 0x%08x IPWQBAR: 0x%08x\n", | ||
1225 | in_be32(&priv->msg_regs->epwqbar), | ||
1226 | in_be32(&priv->msg_regs->pwqbar)); | ||
1227 | |||
1228 | /* Clear interrupt status IPWSR */ | ||
1229 | out_be32(&priv->msg_regs->pwsr, | ||
1230 | (RIO_IPWSR_TE | RIO_IPWSR_QFI | RIO_IPWSR_PWD)); | ||
1231 | |||
1232 | /* Configure port write contoller for snooping enable all reporting, | ||
1233 | clear queue full */ | ||
1234 | out_be32(&priv->msg_regs->pwmr, | ||
1235 | RIO_IPWMR_SEN | RIO_IPWMR_QFIE | RIO_IPWMR_EIE | RIO_IPWMR_CQ); | ||
1236 | |||
1237 | |||
1238 | /* Hook up port-write handler */ | ||
1239 | rc = request_irq(IRQ_RIO_PW(mport), fsl_rio_port_write_handler, 0, | ||
1240 | "port-write", (void *)mport); | ||
1241 | if (rc < 0) { | ||
1242 | pr_err("MPC85xx RIO: unable to request inbound doorbell irq"); | ||
1243 | goto err_out; | ||
1244 | } | ||
1245 | |||
1246 | INIT_WORK(&priv->pw_work, fsl_pw_dpc); | ||
1247 | spin_lock_init(&priv->pw_fifo_lock); | ||
1248 | if (kfifo_alloc(&priv->pw_fifo, RIO_PW_MSG_SIZE * 32, GFP_KERNEL)) { | ||
1249 | pr_err("FIFO allocation failed\n"); | ||
1250 | rc = -ENOMEM; | ||
1251 | goto err_out_irq; | ||
1252 | } | ||
1253 | |||
1254 | pr_debug("IPWMR: 0x%08x IPWSR: 0x%08x\n", | ||
1255 | in_be32(&priv->msg_regs->pwmr), | ||
1256 | in_be32(&priv->msg_regs->pwsr)); | ||
1257 | |||
1258 | return rc; | ||
1259 | |||
1260 | err_out_irq: | ||
1261 | free_irq(IRQ_RIO_PW(mport), (void *)mport); | ||
1262 | err_out: | ||
1263 | dma_free_coherent(priv->dev, RIO_PW_MSG_SIZE, | ||
1264 | priv->port_write_msg.virt, | ||
1265 | priv->port_write_msg.phys); | ||
1266 | return rc; | ||
1267 | } | ||
1268 | |||
933 | static char *cmdline = NULL; | 1269 | static char *cmdline = NULL; |
934 | 1270 | ||
935 | static int fsl_rio_get_hdid(int index) | 1271 | static int fsl_rio_get_hdid(int index) |
@@ -1057,7 +1393,7 @@ int fsl_rio_setup(struct of_device *dev) | |||
1057 | dev_info(&dev->dev, "LAW start 0x%016llx, size 0x%016llx.\n", | 1393 | dev_info(&dev->dev, "LAW start 0x%016llx, size 0x%016llx.\n", |
1058 | law_start, law_size); | 1394 | law_start, law_size); |
1059 | 1395 | ||
1060 | ops = kmalloc(sizeof(struct rio_ops), GFP_KERNEL); | 1396 | ops = kzalloc(sizeof(struct rio_ops), GFP_KERNEL); |
1061 | if (!ops) { | 1397 | if (!ops) { |
1062 | rc = -ENOMEM; | 1398 | rc = -ENOMEM; |
1063 | goto err_ops; | 1399 | goto err_ops; |
@@ -1067,6 +1403,7 @@ int fsl_rio_setup(struct of_device *dev) | |||
1067 | ops->cread = fsl_rio_config_read; | 1403 | ops->cread = fsl_rio_config_read; |
1068 | ops->cwrite = fsl_rio_config_write; | 1404 | ops->cwrite = fsl_rio_config_write; |
1069 | ops->dsend = fsl_rio_doorbell_send; | 1405 | ops->dsend = fsl_rio_doorbell_send; |
1406 | ops->pwenable = fsl_rio_pw_enable; | ||
1070 | 1407 | ||
1071 | port = kzalloc(sizeof(struct rio_mport), GFP_KERNEL); | 1408 | port = kzalloc(sizeof(struct rio_mport), GFP_KERNEL); |
1072 | if (!port) { | 1409 | if (!port) { |
@@ -1089,11 +1426,12 @@ int fsl_rio_setup(struct of_device *dev) | |||
1089 | port->iores.flags = IORESOURCE_MEM; | 1426 | port->iores.flags = IORESOURCE_MEM; |
1090 | port->iores.name = "rio_io_win"; | 1427 | port->iores.name = "rio_io_win"; |
1091 | 1428 | ||
1429 | priv->pwirq = irq_of_parse_and_map(dev->dev.of_node, 0); | ||
1092 | priv->bellirq = irq_of_parse_and_map(dev->dev.of_node, 2); | 1430 | priv->bellirq = irq_of_parse_and_map(dev->dev.of_node, 2); |
1093 | priv->txirq = irq_of_parse_and_map(dev->dev.of_node, 3); | 1431 | priv->txirq = irq_of_parse_and_map(dev->dev.of_node, 3); |
1094 | priv->rxirq = irq_of_parse_and_map(dev->dev.of_node, 4); | 1432 | priv->rxirq = irq_of_parse_and_map(dev->dev.of_node, 4); |
1095 | dev_info(&dev->dev, "bellirq: %d, txirq: %d, rxirq %d\n", priv->bellirq, | 1433 | dev_info(&dev->dev, "pwirq: %d, bellirq: %d, txirq: %d, rxirq %d\n", |
1096 | priv->txirq, priv->rxirq); | 1434 | priv->pwirq, priv->bellirq, priv->txirq, priv->rxirq); |
1097 | 1435 | ||
1098 | rio_init_dbell_res(&port->riores[RIO_DOORBELL_RESOURCE], 0, 0xffff); | 1436 | rio_init_dbell_res(&port->riores[RIO_DOORBELL_RESOURCE], 0, 0xffff); |
1099 | rio_init_mbox_res(&port->riores[RIO_INB_MBOX_RESOURCE], 0, 0); | 1437 | rio_init_mbox_res(&port->riores[RIO_INB_MBOX_RESOURCE], 0, 0); |
@@ -1109,6 +1447,7 @@ int fsl_rio_setup(struct of_device *dev) | |||
1109 | rio_register_mport(port); | 1447 | rio_register_mport(port); |
1110 | 1448 | ||
1111 | priv->regs_win = ioremap(regs.start, regs.end - regs.start + 1); | 1449 | priv->regs_win = ioremap(regs.start, regs.end - regs.start + 1); |
1450 | rio_regs_win = priv->regs_win; | ||
1112 | 1451 | ||
1113 | /* Probe the master port phy type */ | 1452 | /* Probe the master port phy type */ |
1114 | ccsr = in_be32(priv->regs_win + RIO_CCSR); | 1453 | ccsr = in_be32(priv->regs_win + RIO_CCSR); |
@@ -1166,7 +1505,8 @@ int fsl_rio_setup(struct of_device *dev) | |||
1166 | 1505 | ||
1167 | /* Configure maintenance transaction window */ | 1506 | /* Configure maintenance transaction window */ |
1168 | out_be32(&priv->maint_atmu_regs->rowbar, law_start >> 12); | 1507 | out_be32(&priv->maint_atmu_regs->rowbar, law_start >> 12); |
1169 | out_be32(&priv->maint_atmu_regs->rowar, 0x80077015); /* 4M */ | 1508 | out_be32(&priv->maint_atmu_regs->rowar, |
1509 | 0x80077000 | (ilog2(RIO_MAINT_WIN_SIZE) - 1)); | ||
1170 | 1510 | ||
1171 | priv->maint_win = ioremap(law_start, RIO_MAINT_WIN_SIZE); | 1511 | priv->maint_win = ioremap(law_start, RIO_MAINT_WIN_SIZE); |
1172 | 1512 | ||
@@ -1175,6 +1515,12 @@ int fsl_rio_setup(struct of_device *dev) | |||
1175 | (law_start + RIO_MAINT_WIN_SIZE) >> 12); | 1515 | (law_start + RIO_MAINT_WIN_SIZE) >> 12); |
1176 | out_be32(&priv->dbell_atmu_regs->rowar, 0x8004200b); /* 4k */ | 1516 | out_be32(&priv->dbell_atmu_regs->rowar, 0x8004200b); /* 4k */ |
1177 | fsl_rio_doorbell_init(port); | 1517 | fsl_rio_doorbell_init(port); |
1518 | fsl_rio_port_write_init(port); | ||
1519 | |||
1520 | saved_mcheck_exception = ppc_md.machine_check_exception; | ||
1521 | ppc_md.machine_check_exception = fsl_rio_mcheck_exception; | ||
1522 | /* Ensure that RFXE is set */ | ||
1523 | mtspr(SPRN_HID1, (mfspr(SPRN_HID1) | 0x20000)); | ||
1178 | 1524 | ||
1179 | return 0; | 1525 | return 0; |
1180 | err: | 1526 | err: |
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c index 106d767bf65b..156aa7d36258 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.c +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | |||
@@ -974,6 +974,123 @@ static struct ppc4xx_pciex_hwops ppc460ex_pcie_hwops __initdata = | |||
974 | .setup_utl = ppc460ex_pciex_init_utl, | 974 | .setup_utl = ppc460ex_pciex_init_utl, |
975 | }; | 975 | }; |
976 | 976 | ||
977 | static int __init ppc460sx_pciex_core_init(struct device_node *np) | ||
978 | { | ||
979 | /* HSS drive amplitude */ | ||
980 | mtdcri(SDR0, PESDR0_460SX_HSSL0DAMP, 0xB9843211); | ||
981 | mtdcri(SDR0, PESDR0_460SX_HSSL1DAMP, 0xB9843211); | ||
982 | mtdcri(SDR0, PESDR0_460SX_HSSL2DAMP, 0xB9843211); | ||
983 | mtdcri(SDR0, PESDR0_460SX_HSSL3DAMP, 0xB9843211); | ||
984 | mtdcri(SDR0, PESDR0_460SX_HSSL4DAMP, 0xB9843211); | ||
985 | mtdcri(SDR0, PESDR0_460SX_HSSL5DAMP, 0xB9843211); | ||
986 | mtdcri(SDR0, PESDR0_460SX_HSSL6DAMP, 0xB9843211); | ||
987 | mtdcri(SDR0, PESDR0_460SX_HSSL7DAMP, 0xB9843211); | ||
988 | |||
989 | mtdcri(SDR0, PESDR1_460SX_HSSL0DAMP, 0xB9843211); | ||
990 | mtdcri(SDR0, PESDR1_460SX_HSSL1DAMP, 0xB9843211); | ||
991 | mtdcri(SDR0, PESDR1_460SX_HSSL2DAMP, 0xB9843211); | ||
992 | mtdcri(SDR0, PESDR1_460SX_HSSL3DAMP, 0xB9843211); | ||
993 | |||
994 | mtdcri(SDR0, PESDR2_460SX_HSSL0DAMP, 0xB9843211); | ||
995 | mtdcri(SDR0, PESDR2_460SX_HSSL1DAMP, 0xB9843211); | ||
996 | mtdcri(SDR0, PESDR2_460SX_HSSL2DAMP, 0xB9843211); | ||
997 | mtdcri(SDR0, PESDR2_460SX_HSSL3DAMP, 0xB9843211); | ||
998 | |||
999 | /* HSS TX pre-emphasis */ | ||
1000 | mtdcri(SDR0, PESDR0_460SX_HSSL0COEFA, 0xDCB98987); | ||
1001 | mtdcri(SDR0, PESDR0_460SX_HSSL1COEFA, 0xDCB98987); | ||
1002 | mtdcri(SDR0, PESDR0_460SX_HSSL2COEFA, 0xDCB98987); | ||
1003 | mtdcri(SDR0, PESDR0_460SX_HSSL3COEFA, 0xDCB98987); | ||
1004 | mtdcri(SDR0, PESDR0_460SX_HSSL4COEFA, 0xDCB98987); | ||
1005 | mtdcri(SDR0, PESDR0_460SX_HSSL5COEFA, 0xDCB98987); | ||
1006 | mtdcri(SDR0, PESDR0_460SX_HSSL6COEFA, 0xDCB98987); | ||
1007 | mtdcri(SDR0, PESDR0_460SX_HSSL7COEFA, 0xDCB98987); | ||
1008 | |||
1009 | mtdcri(SDR0, PESDR1_460SX_HSSL0COEFA, 0xDCB98987); | ||
1010 | mtdcri(SDR0, PESDR1_460SX_HSSL1COEFA, 0xDCB98987); | ||
1011 | mtdcri(SDR0, PESDR1_460SX_HSSL2COEFA, 0xDCB98987); | ||
1012 | mtdcri(SDR0, PESDR1_460SX_HSSL3COEFA, 0xDCB98987); | ||
1013 | |||
1014 | mtdcri(SDR0, PESDR2_460SX_HSSL0COEFA, 0xDCB98987); | ||
1015 | mtdcri(SDR0, PESDR2_460SX_HSSL1COEFA, 0xDCB98987); | ||
1016 | mtdcri(SDR0, PESDR2_460SX_HSSL2COEFA, 0xDCB98987); | ||
1017 | mtdcri(SDR0, PESDR2_460SX_HSSL3COEFA, 0xDCB98987); | ||
1018 | |||
1019 | /* HSS TX calibration control */ | ||
1020 | mtdcri(SDR0, PESDR0_460SX_HSSL1CALDRV, 0x22222222); | ||
1021 | mtdcri(SDR0, PESDR1_460SX_HSSL1CALDRV, 0x22220000); | ||
1022 | mtdcri(SDR0, PESDR2_460SX_HSSL1CALDRV, 0x22220000); | ||
1023 | |||
1024 | /* HSS TX slew control */ | ||
1025 | mtdcri(SDR0, PESDR0_460SX_HSSSLEW, 0xFFFFFFFF); | ||
1026 | mtdcri(SDR0, PESDR1_460SX_HSSSLEW, 0xFFFF0000); | ||
1027 | mtdcri(SDR0, PESDR2_460SX_HSSSLEW, 0xFFFF0000); | ||
1028 | |||
1029 | udelay(100); | ||
1030 | |||
1031 | /* De-assert PLLRESET */ | ||
1032 | dcri_clrset(SDR0, PESDR0_PLLLCT2, 0x00000100, 0); | ||
1033 | |||
1034 | /* Reset DL, UTL, GPL before configuration */ | ||
1035 | mtdcri(SDR0, PESDR0_460SX_RCSSET, | ||
1036 | PESDRx_RCSSET_RSTDL | PESDRx_RCSSET_RSTGU); | ||
1037 | mtdcri(SDR0, PESDR1_460SX_RCSSET, | ||
1038 | PESDRx_RCSSET_RSTDL | PESDRx_RCSSET_RSTGU); | ||
1039 | mtdcri(SDR0, PESDR2_460SX_RCSSET, | ||
1040 | PESDRx_RCSSET_RSTDL | PESDRx_RCSSET_RSTGU); | ||
1041 | |||
1042 | udelay(100); | ||
1043 | |||
1044 | /* | ||
1045 | * If bifurcation is not enabled, u-boot would have disabled the | ||
1046 | * third PCIe port | ||
1047 | */ | ||
1048 | if (((mfdcri(SDR0, PESDR1_460SX_HSSCTLSET) & 0x00000001) == | ||
1049 | 0x00000001)) { | ||
1050 | printk(KERN_INFO "PCI: PCIE bifurcation setup successfully.\n"); | ||
1051 | printk(KERN_INFO "PCI: Total 3 PCIE ports are present\n"); | ||
1052 | return 3; | ||
1053 | } | ||
1054 | |||
1055 | printk(KERN_INFO "PCI: Total 2 PCIE ports are present\n"); | ||
1056 | return 2; | ||
1057 | } | ||
1058 | |||
1059 | static int ppc460sx_pciex_init_port_hw(struct ppc4xx_pciex_port *port) | ||
1060 | { | ||
1061 | |||
1062 | if (port->endpoint) | ||
1063 | dcri_clrset(SDR0, port->sdr_base + PESDRn_UTLSET2, | ||
1064 | 0x01000000, 0); | ||
1065 | else | ||
1066 | dcri_clrset(SDR0, port->sdr_base + PESDRn_UTLSET2, | ||
1067 | 0, 0x01000000); | ||
1068 | |||
1069 | /*Gen-1*/ | ||
1070 | mtdcri(SDR0, port->sdr_base + PESDRn_460SX_RCEI, 0x08000000); | ||
1071 | |||
1072 | dcri_clrset(SDR0, port->sdr_base + PESDRn_RCSSET, | ||
1073 | (PESDRx_RCSSET_RSTGU | PESDRx_RCSSET_RSTDL), | ||
1074 | PESDRx_RCSSET_RSTPYN); | ||
1075 | |||
1076 | port->has_ibpre = 1; | ||
1077 | |||
1078 | return 0; | ||
1079 | } | ||
1080 | |||
1081 | static int ppc460sx_pciex_init_utl(struct ppc4xx_pciex_port *port) | ||
1082 | { | ||
1083 | /* Max 128 Bytes */ | ||
1084 | out_be32 (port->utl_base + PEUTL_PBBSZ, 0x00000000); | ||
1085 | return 0; | ||
1086 | } | ||
1087 | |||
1088 | static struct ppc4xx_pciex_hwops ppc460sx_pcie_hwops __initdata = { | ||
1089 | .core_init = ppc460sx_pciex_core_init, | ||
1090 | .port_init_hw = ppc460sx_pciex_init_port_hw, | ||
1091 | .setup_utl = ppc460sx_pciex_init_utl, | ||
1092 | }; | ||
1093 | |||
977 | #endif /* CONFIG_44x */ | 1094 | #endif /* CONFIG_44x */ |
978 | 1095 | ||
979 | #ifdef CONFIG_40x | 1096 | #ifdef CONFIG_40x |
@@ -1089,6 +1206,8 @@ static int __init ppc4xx_pciex_check_core_init(struct device_node *np) | |||
1089 | } | 1206 | } |
1090 | if (of_device_is_compatible(np, "ibm,plb-pciex-460ex")) | 1207 | if (of_device_is_compatible(np, "ibm,plb-pciex-460ex")) |
1091 | ppc4xx_pciex_hwops = &ppc460ex_pcie_hwops; | 1208 | ppc4xx_pciex_hwops = &ppc460ex_pcie_hwops; |
1209 | if (of_device_is_compatible(np, "ibm,plb-pciex-460sx")) | ||
1210 | ppc4xx_pciex_hwops = &ppc460sx_pcie_hwops; | ||
1092 | #endif /* CONFIG_44x */ | 1211 | #endif /* CONFIG_44x */ |
1093 | #ifdef CONFIG_40x | 1212 | #ifdef CONFIG_40x |
1094 | if (of_device_is_compatible(np, "ibm,plb-pciex-405ex")) | 1213 | if (of_device_is_compatible(np, "ibm,plb-pciex-405ex")) |
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.h b/arch/powerpc/sysdev/ppc4xx_pci.h index d04e40b306fb..56d9e5deccbf 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.h +++ b/arch/powerpc/sysdev/ppc4xx_pci.h | |||
@@ -324,6 +324,64 @@ | |||
324 | #define PESDR0_460EX_IHS2 0x036D | 324 | #define PESDR0_460EX_IHS2 0x036D |
325 | 325 | ||
326 | /* | 326 | /* |
327 | * 460SX addtional DCRs | ||
328 | */ | ||
329 | #define PESDRn_460SX_RCEI 0x02 | ||
330 | |||
331 | #define PESDR0_460SX_HSSL0DAMP 0x320 | ||
332 | #define PESDR0_460SX_HSSL1DAMP 0x321 | ||
333 | #define PESDR0_460SX_HSSL2DAMP 0x322 | ||
334 | #define PESDR0_460SX_HSSL3DAMP 0x323 | ||
335 | #define PESDR0_460SX_HSSL4DAMP 0x324 | ||
336 | #define PESDR0_460SX_HSSL5DAMP 0x325 | ||
337 | #define PESDR0_460SX_HSSL6DAMP 0x326 | ||
338 | #define PESDR0_460SX_HSSL7DAMP 0x327 | ||
339 | |||
340 | #define PESDR1_460SX_HSSL0DAMP 0x354 | ||
341 | #define PESDR1_460SX_HSSL1DAMP 0x355 | ||
342 | #define PESDR1_460SX_HSSL2DAMP 0x356 | ||
343 | #define PESDR1_460SX_HSSL3DAMP 0x357 | ||
344 | |||
345 | #define PESDR2_460SX_HSSL0DAMP 0x384 | ||
346 | #define PESDR2_460SX_HSSL1DAMP 0x385 | ||
347 | #define PESDR2_460SX_HSSL2DAMP 0x386 | ||
348 | #define PESDR2_460SX_HSSL3DAMP 0x387 | ||
349 | |||
350 | #define PESDR0_460SX_HSSL0COEFA 0x328 | ||
351 | #define PESDR0_460SX_HSSL1COEFA 0x329 | ||
352 | #define PESDR0_460SX_HSSL2COEFA 0x32A | ||
353 | #define PESDR0_460SX_HSSL3COEFA 0x32B | ||
354 | #define PESDR0_460SX_HSSL4COEFA 0x32C | ||
355 | #define PESDR0_460SX_HSSL5COEFA 0x32D | ||
356 | #define PESDR0_460SX_HSSL6COEFA 0x32E | ||
357 | #define PESDR0_460SX_HSSL7COEFA 0x32F | ||
358 | |||
359 | #define PESDR1_460SX_HSSL0COEFA 0x358 | ||
360 | #define PESDR1_460SX_HSSL1COEFA 0x359 | ||
361 | #define PESDR1_460SX_HSSL2COEFA 0x35A | ||
362 | #define PESDR1_460SX_HSSL3COEFA 0x35B | ||
363 | |||
364 | #define PESDR2_460SX_HSSL0COEFA 0x388 | ||
365 | #define PESDR2_460SX_HSSL1COEFA 0x389 | ||
366 | #define PESDR2_460SX_HSSL2COEFA 0x38A | ||
367 | #define PESDR2_460SX_HSSL3COEFA 0x38B | ||
368 | |||
369 | #define PESDR0_460SX_HSSL1CALDRV 0x339 | ||
370 | #define PESDR1_460SX_HSSL1CALDRV 0x361 | ||
371 | #define PESDR2_460SX_HSSL1CALDRV 0x391 | ||
372 | |||
373 | #define PESDR0_460SX_HSSSLEW 0x338 | ||
374 | #define PESDR1_460SX_HSSSLEW 0x360 | ||
375 | #define PESDR2_460SX_HSSSLEW 0x390 | ||
376 | |||
377 | #define PESDR0_460SX_HSSCTLSET 0x31E | ||
378 | #define PESDR1_460SX_HSSCTLSET 0x352 | ||
379 | #define PESDR2_460SX_HSSCTLSET 0x382 | ||
380 | |||
381 | #define PESDR0_460SX_RCSSET 0x304 | ||
382 | #define PESDR1_460SX_RCSSET 0x344 | ||
383 | #define PESDR2_460SX_RCSSET 0x374 | ||
384 | /* | ||
327 | * Of the above, some are common offsets from the base | 385 | * Of the above, some are common offsets from the base |
328 | */ | 386 | */ |
329 | #define PESDRn_UTLSET1 0x00 | 387 | #define PESDRn_UTLSET1 0x00 |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 79d0ca086820..bee1c0f794cf 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -102,6 +102,7 @@ config S390 | |||
102 | select HAVE_KERNEL_GZIP | 102 | select HAVE_KERNEL_GZIP |
103 | select HAVE_KERNEL_BZIP2 | 103 | select HAVE_KERNEL_BZIP2 |
104 | select HAVE_KERNEL_LZMA | 104 | select HAVE_KERNEL_LZMA |
105 | select HAVE_KERNEL_LZO | ||
105 | select ARCH_INLINE_SPIN_TRYLOCK | 106 | select ARCH_INLINE_SPIN_TRYLOCK |
106 | select ARCH_INLINE_SPIN_TRYLOCK_BH | 107 | select ARCH_INLINE_SPIN_TRYLOCK_BH |
107 | select ARCH_INLINE_SPIN_LOCK | 108 | select ARCH_INLINE_SPIN_LOCK |
@@ -479,13 +480,6 @@ config CMM | |||
479 | Everybody who wants to run Linux under VM should select this | 480 | Everybody who wants to run Linux under VM should select this |
480 | option. | 481 | option. |
481 | 482 | ||
482 | config CMM_PROC | ||
483 | bool "/proc interface to cooperative memory management" | ||
484 | depends on CMM | ||
485 | help | ||
486 | Select this option to enable the /proc interface to the | ||
487 | cooperative memory management. | ||
488 | |||
489 | config CMM_IUCV | 483 | config CMM_IUCV |
490 | bool "IUCV special message interface to cooperative memory management" | 484 | bool "IUCV special message interface to cooperative memory management" |
491 | depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV) | 485 | depends on CMM && (SMSGIUCV=y || CMM=SMSGIUCV) |
diff --git a/arch/s390/appldata/appldata_os.c b/arch/s390/appldata/appldata_os.c index 55c80ffd42b9..92f1cb745d69 100644 --- a/arch/s390/appldata/appldata_os.c +++ b/arch/s390/appldata/appldata_os.c | |||
@@ -181,7 +181,7 @@ static int __init appldata_os_init(void) | |||
181 | goto out; | 181 | goto out; |
182 | } | 182 | } |
183 | 183 | ||
184 | appldata_os_data = kzalloc(max_size, GFP_DMA); | 184 | appldata_os_data = kzalloc(max_size, GFP_KERNEL | GFP_DMA); |
185 | if (appldata_os_data == NULL) { | 185 | if (appldata_os_data == NULL) { |
186 | rc = -ENOMEM; | 186 | rc = -ENOMEM; |
187 | goto out; | 187 | goto out; |
diff --git a/arch/s390/boot/compressed/Makefile b/arch/s390/boot/compressed/Makefile index 6e4a67ad07e1..1c999f726a58 100644 --- a/arch/s390/boot/compressed/Makefile +++ b/arch/s390/boot/compressed/Makefile | |||
@@ -7,7 +7,7 @@ | |||
7 | BITS := $(if $(CONFIG_64BIT),64,31) | 7 | BITS := $(if $(CONFIG_64BIT),64,31) |
8 | 8 | ||
9 | targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \ | 9 | targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 \ |
10 | vmlinux.bin.lzma misc.o piggy.o sizes.h head$(BITS).o | 10 | vmlinux.bin.lzma vmlinux.bin.lzo misc.o piggy.o sizes.h head$(BITS).o |
11 | 11 | ||
12 | KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 | 12 | KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2 |
13 | KBUILD_CFLAGS += $(cflags-y) | 13 | KBUILD_CFLAGS += $(cflags-y) |
@@ -47,6 +47,7 @@ vmlinux.bin.all-y := $(obj)/vmlinux.bin | |||
47 | suffix-$(CONFIG_KERNEL_GZIP) := gz | 47 | suffix-$(CONFIG_KERNEL_GZIP) := gz |
48 | suffix-$(CONFIG_KERNEL_BZIP2) := bz2 | 48 | suffix-$(CONFIG_KERNEL_BZIP2) := bz2 |
49 | suffix-$(CONFIG_KERNEL_LZMA) := lzma | 49 | suffix-$(CONFIG_KERNEL_LZMA) := lzma |
50 | suffix-$(CONFIG_KERNEL_LZO) := lzo | ||
50 | 51 | ||
51 | $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) | 52 | $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) |
52 | $(call if_changed,gzip) | 53 | $(call if_changed,gzip) |
@@ -54,6 +55,8 @@ $(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) | |||
54 | $(call if_changed,bzip2) | 55 | $(call if_changed,bzip2) |
55 | $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) | 56 | $(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) |
56 | $(call if_changed,lzma) | 57 | $(call if_changed,lzma) |
58 | $(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) | ||
59 | $(call if_changed,lzo) | ||
57 | 60 | ||
58 | LDFLAGS_piggy.o := -r --format binary --oformat $(LD_BFD) -T | 61 | LDFLAGS_piggy.o := -r --format binary --oformat $(LD_BFD) -T |
59 | $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) | 62 | $(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) |
diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c index 14e0479d3888..0851eb1e919e 100644 --- a/arch/s390/boot/compressed/misc.c +++ b/arch/s390/boot/compressed/misc.c | |||
@@ -50,6 +50,10 @@ static unsigned long free_mem_end_ptr; | |||
50 | #include "../../../../lib/decompress_unlzma.c" | 50 | #include "../../../../lib/decompress_unlzma.c" |
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | #ifdef CONFIG_KERNEL_LZO | ||
54 | #include "../../../../lib/decompress_unlzo.c" | ||
55 | #endif | ||
56 | |||
53 | extern _sclp_print_early(const char *); | 57 | extern _sclp_print_early(const char *); |
54 | 58 | ||
55 | int puts(const char *s) | 59 | int puts(const char *s) |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index bcd6884985ad..253f158db668 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.34-rc3 | 3 | # Linux kernel version: 2.6.35-rc1 |
4 | # Fri Apr 9 09:57:10 2010 | 4 | # Fri Jun 4 11:32:40 2010 |
5 | # | 5 | # |
6 | CONFIG_SCHED_MC=y | 6 | CONFIG_SCHED_MC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -35,11 +35,13 @@ CONFIG_CONSTRUCTORS=y | |||
35 | CONFIG_EXPERIMENTAL=y | 35 | CONFIG_EXPERIMENTAL=y |
36 | CONFIG_LOCK_KERNEL=y | 36 | CONFIG_LOCK_KERNEL=y |
37 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 37 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
38 | CONFIG_CROSS_COMPILE="" | ||
38 | CONFIG_LOCALVERSION="" | 39 | CONFIG_LOCALVERSION="" |
39 | CONFIG_LOCALVERSION_AUTO=y | 40 | CONFIG_LOCALVERSION_AUTO=y |
40 | CONFIG_HAVE_KERNEL_GZIP=y | 41 | CONFIG_HAVE_KERNEL_GZIP=y |
41 | CONFIG_HAVE_KERNEL_BZIP2=y | 42 | CONFIG_HAVE_KERNEL_BZIP2=y |
42 | CONFIG_HAVE_KERNEL_LZMA=y | 43 | CONFIG_HAVE_KERNEL_LZMA=y |
44 | CONFIG_HAVE_KERNEL_LZO=y | ||
43 | CONFIG_KERNEL_GZIP=y | 45 | CONFIG_KERNEL_GZIP=y |
44 | # CONFIG_KERNEL_BZIP2 is not set | 46 | # CONFIG_KERNEL_BZIP2 is not set |
45 | # CONFIG_KERNEL_LZMA is not set | 47 | # CONFIG_KERNEL_LZMA is not set |
@@ -77,6 +79,7 @@ CONFIG_CGROUP_NS=y | |||
77 | # CONFIG_CGROUP_CPUACCT is not set | 79 | # CONFIG_CGROUP_CPUACCT is not set |
78 | # CONFIG_RESOURCE_COUNTERS is not set | 80 | # CONFIG_RESOURCE_COUNTERS is not set |
79 | # CONFIG_CGROUP_SCHED is not set | 81 | # CONFIG_CGROUP_SCHED is not set |
82 | # CONFIG_BLK_CGROUP is not set | ||
80 | CONFIG_SYSFS_DEPRECATED=y | 83 | CONFIG_SYSFS_DEPRECATED=y |
81 | CONFIG_SYSFS_DEPRECATED_V2=y | 84 | CONFIG_SYSFS_DEPRECATED_V2=y |
82 | # CONFIG_RELAY is not set | 85 | # CONFIG_RELAY is not set |
@@ -157,7 +160,6 @@ CONFIG_STOP_MACHINE=y | |||
157 | CONFIG_BLOCK=y | 160 | CONFIG_BLOCK=y |
158 | CONFIG_BLK_DEV_BSG=y | 161 | CONFIG_BLK_DEV_BSG=y |
159 | # CONFIG_BLK_DEV_INTEGRITY is not set | 162 | # CONFIG_BLK_DEV_INTEGRITY is not set |
160 | # CONFIG_BLK_CGROUP is not set | ||
161 | CONFIG_BLOCK_COMPAT=y | 163 | CONFIG_BLOCK_COMPAT=y |
162 | 164 | ||
163 | # | 165 | # |
@@ -166,7 +168,6 @@ CONFIG_BLOCK_COMPAT=y | |||
166 | CONFIG_IOSCHED_NOOP=y | 168 | CONFIG_IOSCHED_NOOP=y |
167 | CONFIG_IOSCHED_DEADLINE=y | 169 | CONFIG_IOSCHED_DEADLINE=y |
168 | CONFIG_IOSCHED_CFQ=y | 170 | CONFIG_IOSCHED_CFQ=y |
169 | # CONFIG_CFQ_GROUP_IOSCHED is not set | ||
170 | CONFIG_DEFAULT_DEADLINE=y | 171 | CONFIG_DEFAULT_DEADLINE=y |
171 | # CONFIG_DEFAULT_CFQ is not set | 172 | # CONFIG_DEFAULT_CFQ is not set |
172 | # CONFIG_DEFAULT_NOOP is not set | 173 | # CONFIG_DEFAULT_NOOP is not set |
@@ -247,7 +248,6 @@ CONFIG_64BIT=y | |||
247 | CONFIG_SMP=y | 248 | CONFIG_SMP=y |
248 | CONFIG_NR_CPUS=32 | 249 | CONFIG_NR_CPUS=32 |
249 | CONFIG_HOTPLUG_CPU=y | 250 | CONFIG_HOTPLUG_CPU=y |
250 | # CONFIG_SCHED_BOOK is not set | ||
251 | CONFIG_COMPAT=y | 251 | CONFIG_COMPAT=y |
252 | CONFIG_SYSVIPC_COMPAT=y | 252 | CONFIG_SYSVIPC_COMPAT=y |
253 | CONFIG_AUDIT_ARCH=y | 253 | CONFIG_AUDIT_ARCH=y |
@@ -320,7 +320,6 @@ CONFIG_COMPAT_BINFMT_ELF=y | |||
320 | # CONFIG_HAVE_AOUT is not set | 320 | # CONFIG_HAVE_AOUT is not set |
321 | CONFIG_BINFMT_MISC=m | 321 | CONFIG_BINFMT_MISC=m |
322 | CONFIG_FORCE_MAX_ZONEORDER=9 | 322 | CONFIG_FORCE_MAX_ZONEORDER=9 |
323 | # CONFIG_PROCESS_DEBUG is not set | ||
324 | CONFIG_PFAULT=y | 323 | CONFIG_PFAULT=y |
325 | # CONFIG_SHARED_KERNEL is not set | 324 | # CONFIG_SHARED_KERNEL is not set |
326 | # CONFIG_CMM is not set | 325 | # CONFIG_CMM is not set |
@@ -457,6 +456,7 @@ CONFIG_NF_CONNTRACK=m | |||
457 | # CONFIG_IP6_NF_IPTABLES is not set | 456 | # CONFIG_IP6_NF_IPTABLES is not set |
458 | # CONFIG_IP_DCCP is not set | 457 | # CONFIG_IP_DCCP is not set |
459 | CONFIG_IP_SCTP=m | 458 | CONFIG_IP_SCTP=m |
459 | # CONFIG_NET_SCTPPROBE is not set | ||
460 | # CONFIG_SCTP_DBG_MSG is not set | 460 | # CONFIG_SCTP_DBG_MSG is not set |
461 | # CONFIG_SCTP_DBG_OBJCNT is not set | 461 | # CONFIG_SCTP_DBG_OBJCNT is not set |
462 | # CONFIG_SCTP_HMAC_NONE is not set | 462 | # CONFIG_SCTP_HMAC_NONE is not set |
@@ -465,6 +465,7 @@ CONFIG_SCTP_HMAC_MD5=y | |||
465 | # CONFIG_RDS is not set | 465 | # CONFIG_RDS is not set |
466 | # CONFIG_TIPC is not set | 466 | # CONFIG_TIPC is not set |
467 | # CONFIG_ATM is not set | 467 | # CONFIG_ATM is not set |
468 | # CONFIG_L2TP is not set | ||
468 | # CONFIG_BRIDGE is not set | 469 | # CONFIG_BRIDGE is not set |
469 | # CONFIG_VLAN_8021Q is not set | 470 | # CONFIG_VLAN_8021Q is not set |
470 | # CONFIG_DECNET is not set | 471 | # CONFIG_DECNET is not set |
@@ -525,6 +526,7 @@ CONFIG_NET_ACT_NAT=m | |||
525 | # CONFIG_NET_CLS_IND is not set | 526 | # CONFIG_NET_CLS_IND is not set |
526 | CONFIG_NET_SCH_FIFO=y | 527 | CONFIG_NET_SCH_FIFO=y |
527 | # CONFIG_DCB is not set | 528 | # CONFIG_DCB is not set |
529 | CONFIG_RPS=y | ||
528 | 530 | ||
529 | # | 531 | # |
530 | # Network testing | 532 | # Network testing |
@@ -546,6 +548,7 @@ CONFIG_CAN_VCAN=m | |||
546 | # CONFIG_WIMAX is not set | 548 | # CONFIG_WIMAX is not set |
547 | # CONFIG_RFKILL is not set | 549 | # CONFIG_RFKILL is not set |
548 | # CONFIG_NET_9P is not set | 550 | # CONFIG_NET_9P is not set |
551 | # CONFIG_CAIF is not set | ||
549 | # CONFIG_PCMCIA is not set | 552 | # CONFIG_PCMCIA is not set |
550 | CONFIG_CCW=y | 553 | CONFIG_CCW=y |
551 | 554 | ||
@@ -728,6 +731,7 @@ CONFIG_VIRTIO_NET=m | |||
728 | # Character devices | 731 | # Character devices |
729 | # | 732 | # |
730 | CONFIG_DEVKMEM=y | 733 | CONFIG_DEVKMEM=y |
734 | # CONFIG_N_GSM is not set | ||
731 | CONFIG_UNIX98_PTYS=y | 735 | CONFIG_UNIX98_PTYS=y |
732 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 736 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
733 | CONFIG_LEGACY_PTYS=y | 737 | CONFIG_LEGACY_PTYS=y |
@@ -775,6 +779,7 @@ CONFIG_S390_TAPE_34XX=m | |||
775 | # CONFIG_MONREADER is not set | 779 | # CONFIG_MONREADER is not set |
776 | CONFIG_MONWRITER=m | 780 | CONFIG_MONWRITER=m |
777 | CONFIG_S390_VMUR=m | 781 | CONFIG_S390_VMUR=m |
782 | # CONFIG_RAMOOPS is not set | ||
778 | 783 | ||
779 | # | 784 | # |
780 | # PPS support | 785 | # PPS support |
@@ -788,10 +793,6 @@ CONFIG_S390_VMUR=m | |||
788 | # CONFIG_NEW_LEDS is not set | 793 | # CONFIG_NEW_LEDS is not set |
789 | CONFIG_ACCESSIBILITY=y | 794 | CONFIG_ACCESSIBILITY=y |
790 | # CONFIG_AUXDISPLAY is not set | 795 | # CONFIG_AUXDISPLAY is not set |
791 | |||
792 | # | ||
793 | # TI VLYNQ | ||
794 | # | ||
795 | # CONFIG_STAGING is not set | 796 | # CONFIG_STAGING is not set |
796 | 797 | ||
797 | # | 798 | # |
@@ -976,6 +977,7 @@ CONFIG_DEBUG_MEMORY_INIT=y | |||
976 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | 977 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set |
977 | CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y | 978 | CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y |
978 | # CONFIG_LKDTM is not set | 979 | # CONFIG_LKDTM is not set |
980 | # CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set | ||
979 | # CONFIG_FAULT_INJECTION is not set | 981 | # CONFIG_FAULT_INJECTION is not set |
980 | # CONFIG_LATENCYTOP is not set | 982 | # CONFIG_LATENCYTOP is not set |
981 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 983 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
@@ -1010,6 +1012,7 @@ CONFIG_BRANCH_PROFILE_NONE=y | |||
1010 | CONFIG_KPROBE_EVENT=y | 1012 | CONFIG_KPROBE_EVENT=y |
1011 | # CONFIG_RING_BUFFER_BENCHMARK is not set | 1013 | # CONFIG_RING_BUFFER_BENCHMARK is not set |
1012 | # CONFIG_DYNAMIC_DEBUG is not set | 1014 | # CONFIG_DYNAMIC_DEBUG is not set |
1015 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
1013 | CONFIG_SAMPLES=y | 1016 | CONFIG_SAMPLES=y |
1014 | # CONFIG_SAMPLE_TRACEPOINTS is not set | 1017 | # CONFIG_SAMPLE_TRACEPOINTS is not set |
1015 | # CONFIG_SAMPLE_TRACE_EVENTS is not set | 1018 | # CONFIG_SAMPLE_TRACE_EVENTS is not set |
diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h index 451bfbb9db3d..76daea117181 100644 --- a/arch/s390/include/asm/atomic.h +++ b/arch/s390/include/asm/atomic.h | |||
@@ -15,6 +15,7 @@ | |||
15 | 15 | ||
16 | #include <linux/compiler.h> | 16 | #include <linux/compiler.h> |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <asm/system.h> | ||
18 | 19 | ||
19 | #define ATOMIC_INIT(i) { (i) } | 20 | #define ATOMIC_INIT(i) { (i) } |
20 | 21 | ||
@@ -274,6 +275,7 @@ static inline void atomic64_clear_mask(unsigned long long mask, atomic64_t *v) | |||
274 | static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) | 275 | static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) |
275 | { | 276 | { |
276 | long long c, old; | 277 | long long c, old; |
278 | |||
277 | c = atomic64_read(v); | 279 | c = atomic64_read(v); |
278 | for (;;) { | 280 | for (;;) { |
279 | if (unlikely(c == u)) | 281 | if (unlikely(c == u)) |
@@ -286,6 +288,23 @@ static inline int atomic64_add_unless(atomic64_t *v, long long a, long long u) | |||
286 | return c != u; | 288 | return c != u; |
287 | } | 289 | } |
288 | 290 | ||
291 | static inline long long atomic64_dec_if_positive(atomic64_t *v) | ||
292 | { | ||
293 | long long c, old, dec; | ||
294 | |||
295 | c = atomic64_read(v); | ||
296 | for (;;) { | ||
297 | dec = c - 1; | ||
298 | if (unlikely(dec < 0)) | ||
299 | break; | ||
300 | old = atomic64_cmpxchg((v), c, dec); | ||
301 | if (likely(old == c)) | ||
302 | break; | ||
303 | c = old; | ||
304 | } | ||
305 | return dec; | ||
306 | } | ||
307 | |||
289 | #define atomic64_add(_i, _v) atomic64_add_return(_i, _v) | 308 | #define atomic64_add(_i, _v) atomic64_add_return(_i, _v) |
290 | #define atomic64_add_negative(_i, _v) (atomic64_add_return(_i, _v) < 0) | 309 | #define atomic64_add_negative(_i, _v) (atomic64_add_return(_i, _v) < 0) |
291 | #define atomic64_inc(_v) atomic64_add_return(1, _v) | 310 | #define atomic64_inc(_v) atomic64_add_return(1, _v) |
diff --git a/arch/s390/include/asm/cache.h b/arch/s390/include/asm/cache.h index 9b866816863c..24aafa68b643 100644 --- a/arch/s390/include/asm/cache.h +++ b/arch/s390/include/asm/cache.h | |||
@@ -14,6 +14,6 @@ | |||
14 | #define L1_CACHE_BYTES 256 | 14 | #define L1_CACHE_BYTES 256 |
15 | #define L1_CACHE_SHIFT 8 | 15 | #define L1_CACHE_SHIFT 8 |
16 | 16 | ||
17 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 17 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
18 | 18 | ||
19 | #endif | 19 | #endif |
diff --git a/arch/s390/include/asm/ccwdev.h b/arch/s390/include/asm/ccwdev.h index f4bd346a52d3..1c0030f9b890 100644 --- a/arch/s390/include/asm/ccwdev.h +++ b/arch/s390/include/asm/ccwdev.h | |||
@@ -91,6 +91,14 @@ struct ccw_device { | |||
91 | void (*handler) (struct ccw_device *, unsigned long, struct irb *); | 91 | void (*handler) (struct ccw_device *, unsigned long, struct irb *); |
92 | }; | 92 | }; |
93 | 93 | ||
94 | /* | ||
95 | * Possible CIO actions triggered by the unit check handler. | ||
96 | */ | ||
97 | enum uc_todo { | ||
98 | UC_TODO_RETRY, | ||
99 | UC_TODO_RETRY_ON_NEW_PATH, | ||
100 | UC_TODO_STOP | ||
101 | }; | ||
94 | 102 | ||
95 | /** | 103 | /** |
96 | * struct ccw driver - device driver for channel attached devices | 104 | * struct ccw driver - device driver for channel attached devices |
@@ -107,6 +115,7 @@ struct ccw_device { | |||
107 | * @freeze: callback for freezing during hibernation snapshotting | 115 | * @freeze: callback for freezing during hibernation snapshotting |
108 | * @thaw: undo work done in @freeze | 116 | * @thaw: undo work done in @freeze |
109 | * @restore: callback for restoring after hibernation | 117 | * @restore: callback for restoring after hibernation |
118 | * @uc_handler: callback for unit check handler | ||
110 | * @driver: embedded device driver structure | 119 | * @driver: embedded device driver structure |
111 | * @name: device driver name | 120 | * @name: device driver name |
112 | */ | 121 | */ |
@@ -124,6 +133,7 @@ struct ccw_driver { | |||
124 | int (*freeze)(struct ccw_device *); | 133 | int (*freeze)(struct ccw_device *); |
125 | int (*thaw) (struct ccw_device *); | 134 | int (*thaw) (struct ccw_device *); |
126 | int (*restore)(struct ccw_device *); | 135 | int (*restore)(struct ccw_device *); |
136 | enum uc_todo (*uc_handler) (struct ccw_device *, struct irb *); | ||
127 | struct device_driver driver; | 137 | struct device_driver driver; |
128 | char *name; | 138 | char *name; |
129 | }; | 139 | }; |
diff --git a/arch/s390/include/asm/scatterlist.h b/arch/s390/include/asm/scatterlist.h index 35d786fe93ae..be44d94cba54 100644 --- a/arch/s390/include/asm/scatterlist.h +++ b/arch/s390/include/asm/scatterlist.h | |||
@@ -1 +1,3 @@ | |||
1 | #define ISA_DMA_THRESHOLD (~0UL) | ||
2 | |||
1 | #include <asm-generic/scatterlist.h> | 3 | #include <asm-generic/scatterlist.h> |
diff --git a/arch/s390/include/asm/sfp-util.h b/arch/s390/include/asm/sfp-util.h index 7d43fee17e32..0addc6466d95 100644 --- a/arch/s390/include/asm/sfp-util.h +++ b/arch/s390/include/asm/sfp-util.h | |||
@@ -73,3 +73,5 @@ extern unsigned long __udiv_qrnnd (unsigned int *, unsigned int, | |||
73 | #define UDIV_NEEDS_NORMALIZATION 0 | 73 | #define UDIV_NEEDS_NORMALIZATION 0 |
74 | 74 | ||
75 | #define abort() return 0 | 75 | #define abort() return 0 |
76 | |||
77 | #define __BYTE_ORDER __BIG_ENDIAN | ||
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c index d9b490a2716e..5232278d79ad 100644 --- a/arch/s390/kernel/asm-offsets.c +++ b/arch/s390/kernel/asm-offsets.c | |||
@@ -132,8 +132,6 @@ int main(void) | |||
132 | DEFINE(__LC_MCCK_CLOCK, offsetof(struct _lowcore, mcck_clock)); | 132 | DEFINE(__LC_MCCK_CLOCK, offsetof(struct _lowcore, mcck_clock)); |
133 | DEFINE(__LC_MACHINE_FLAGS, offsetof(struct _lowcore, machine_flags)); | 133 | DEFINE(__LC_MACHINE_FLAGS, offsetof(struct _lowcore, machine_flags)); |
134 | DEFINE(__LC_FTRACE_FUNC, offsetof(struct _lowcore, ftrace_func)); | 134 | DEFINE(__LC_FTRACE_FUNC, offsetof(struct _lowcore, ftrace_func)); |
135 | DEFINE(__LC_SIE_HOOK, offsetof(struct _lowcore, sie_hook)); | ||
136 | DEFINE(__LC_CMF_HPP, offsetof(struct _lowcore, cmf_hpp)); | ||
137 | DEFINE(__LC_IRB, offsetof(struct _lowcore, irb)); | 135 | DEFINE(__LC_IRB, offsetof(struct _lowcore, irb)); |
138 | DEFINE(__LC_CPU_TIMER_SAVE_AREA, offsetof(struct _lowcore, cpu_timer_save_area)); | 136 | DEFINE(__LC_CPU_TIMER_SAVE_AREA, offsetof(struct _lowcore, cpu_timer_save_area)); |
139 | DEFINE(__LC_CLOCK_COMP_SAVE_AREA, offsetof(struct _lowcore, clock_comp_save_area)); | 137 | DEFINE(__LC_CLOCK_COMP_SAVE_AREA, offsetof(struct _lowcore, clock_comp_save_area)); |
@@ -154,6 +152,8 @@ int main(void) | |||
154 | DEFINE(__LC_FP_CREG_SAVE_AREA, offsetof(struct _lowcore, fpt_creg_save_area)); | 152 | DEFINE(__LC_FP_CREG_SAVE_AREA, offsetof(struct _lowcore, fpt_creg_save_area)); |
155 | DEFINE(__LC_LAST_BREAK, offsetof(struct _lowcore, breaking_event_addr)); | 153 | DEFINE(__LC_LAST_BREAK, offsetof(struct _lowcore, breaking_event_addr)); |
156 | DEFINE(__LC_VDSO_PER_CPU, offsetof(struct _lowcore, vdso_per_cpu_data)); | 154 | DEFINE(__LC_VDSO_PER_CPU, offsetof(struct _lowcore, vdso_per_cpu_data)); |
155 | DEFINE(__LC_SIE_HOOK, offsetof(struct _lowcore, sie_hook)); | ||
156 | DEFINE(__LC_CMF_HPP, offsetof(struct _lowcore, cmf_hpp)); | ||
157 | #endif /* CONFIG_32BIT */ | 157 | #endif /* CONFIG_32BIT */ |
158 | return 0; | 158 | return 0; |
159 | } | 159 | } |
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index 178d92536d90..e7192e1cb678 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S | |||
@@ -65,7 +65,7 @@ _TIF_SYSCALL = (_TIF_SYSCALL_TRACE>>8 | _TIF_SYSCALL_AUDIT>>8 | \ | |||
65 | ltgr %r3,%r3 | 65 | ltgr %r3,%r3 |
66 | jz 0f | 66 | jz 0f |
67 | basr %r14,%r3 | 67 | basr %r14,%r3 |
68 | 0: | 68 | 0: |
69 | #endif | 69 | #endif |
70 | .endm | 70 | .endm |
71 | 71 | ||
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c index 3d34eef5a2c3..2a3d2bf6f083 100644 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c | |||
@@ -63,6 +63,8 @@ int __kprobes is_prohibited_opcode(kprobe_opcode_t *instruction) | |||
63 | case 0x0b: /* bsm */ | 63 | case 0x0b: /* bsm */ |
64 | case 0x83: /* diag */ | 64 | case 0x83: /* diag */ |
65 | case 0x44: /* ex */ | 65 | case 0x44: /* ex */ |
66 | case 0xac: /* stnsm */ | ||
67 | case 0xad: /* stosm */ | ||
66 | return -EINVAL; | 68 | return -EINVAL; |
67 | } | 69 | } |
68 | switch (*(__u16 *) instruction) { | 70 | switch (*(__u16 *) instruction) { |
@@ -72,6 +74,7 @@ int __kprobes is_prohibited_opcode(kprobe_opcode_t *instruction) | |||
72 | case 0xb258: /* bsg */ | 74 | case 0xb258: /* bsg */ |
73 | case 0xb218: /* pc */ | 75 | case 0xb218: /* pc */ |
74 | case 0xb228: /* pt */ | 76 | case 0xb228: /* pt */ |
77 | case 0xb98d: /* epsw */ | ||
75 | return -EINVAL; | 78 | return -EINVAL; |
76 | } | 79 | } |
77 | return 0; | 80 | return 0; |
diff --git a/arch/s390/kernel/module.c b/arch/s390/kernel/module.c index 639380a0c45c..22cfd634c355 100644 --- a/arch/s390/kernel/module.c +++ b/arch/s390/kernel/module.c | |||
@@ -55,8 +55,10 @@ void *module_alloc(unsigned long size) | |||
55 | /* Free memory returned from module_alloc */ | 55 | /* Free memory returned from module_alloc */ |
56 | void module_free(struct module *mod, void *module_region) | 56 | void module_free(struct module *mod, void *module_region) |
57 | { | 57 | { |
58 | vfree(mod->arch.syminfo); | 58 | if (mod) { |
59 | mod->arch.syminfo = NULL; | 59 | vfree(mod->arch.syminfo); |
60 | mod->arch.syminfo = NULL; | ||
61 | } | ||
60 | vfree(module_region); | 62 | vfree(module_region); |
61 | } | 63 | } |
62 | 64 | ||
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 7d893248d265..c8e8e1354e1d 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -401,7 +401,6 @@ setup_lowcore(void) | |||
401 | lc->io_new_psw.mask = psw_kernel_bits; | 401 | lc->io_new_psw.mask = psw_kernel_bits; |
402 | lc->io_new_psw.addr = PSW_ADDR_AMODE | (unsigned long) io_int_handler; | 402 | lc->io_new_psw.addr = PSW_ADDR_AMODE | (unsigned long) io_int_handler; |
403 | lc->clock_comparator = -1ULL; | 403 | lc->clock_comparator = -1ULL; |
404 | lc->cmf_hpp = -1ULL; | ||
405 | lc->kernel_stack = ((unsigned long) &init_thread_union) + THREAD_SIZE; | 404 | lc->kernel_stack = ((unsigned long) &init_thread_union) + THREAD_SIZE; |
406 | lc->async_stack = (unsigned long) | 405 | lc->async_stack = (unsigned long) |
407 | __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0) + ASYNC_SIZE; | 406 | __alloc_bootmem(ASYNC_SIZE, ASYNC_SIZE, 0) + ASYNC_SIZE; |
@@ -418,6 +417,7 @@ setup_lowcore(void) | |||
418 | __ctl_set_bit(14, 29); | 417 | __ctl_set_bit(14, 29); |
419 | } | 418 | } |
420 | #else | 419 | #else |
420 | lc->cmf_hpp = -1ULL; | ||
421 | lc->vdso_per_cpu_data = (unsigned long) &lc->paste[0]; | 421 | lc->vdso_per_cpu_data = (unsigned long) &lc->paste[0]; |
422 | #endif | 422 | #endif |
423 | lc->sync_enter_timer = S390_lowcore.sync_enter_timer; | 423 | lc->sync_enter_timer = S390_lowcore.sync_enter_timer; |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index e4d98de83dd8..541053ed234e 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -944,21 +944,21 @@ static int __cpuinit smp_cpu_notify(struct notifier_block *self, | |||
944 | struct cpu *c = &per_cpu(cpu_devices, cpu); | 944 | struct cpu *c = &per_cpu(cpu_devices, cpu); |
945 | struct sys_device *s = &c->sysdev; | 945 | struct sys_device *s = &c->sysdev; |
946 | struct s390_idle_data *idle; | 946 | struct s390_idle_data *idle; |
947 | int err = 0; | ||
947 | 948 | ||
948 | switch (action) { | 949 | switch (action) { |
949 | case CPU_ONLINE: | 950 | case CPU_ONLINE: |
950 | case CPU_ONLINE_FROZEN: | 951 | case CPU_ONLINE_FROZEN: |
951 | idle = &per_cpu(s390_idle, cpu); | 952 | idle = &per_cpu(s390_idle, cpu); |
952 | memset(idle, 0, sizeof(struct s390_idle_data)); | 953 | memset(idle, 0, sizeof(struct s390_idle_data)); |
953 | if (sysfs_create_group(&s->kobj, &cpu_online_attr_group)) | 954 | err = sysfs_create_group(&s->kobj, &cpu_online_attr_group); |
954 | return NOTIFY_BAD; | ||
955 | break; | 955 | break; |
956 | case CPU_DEAD: | 956 | case CPU_DEAD: |
957 | case CPU_DEAD_FROZEN: | 957 | case CPU_DEAD_FROZEN: |
958 | sysfs_remove_group(&s->kobj, &cpu_online_attr_group); | 958 | sysfs_remove_group(&s->kobj, &cpu_online_attr_group); |
959 | break; | 959 | break; |
960 | } | 960 | } |
961 | return NOTIFY_OK; | 961 | return notifier_from_errno(err); |
962 | } | 962 | } |
963 | 963 | ||
964 | static struct notifier_block __cpuinitdata smp_cpu_nb = { | 964 | static struct notifier_block __cpuinitdata smp_cpu_nb = { |
diff --git a/arch/s390/kernel/swsusp_asm64.S b/arch/s390/kernel/swsusp_asm64.S index c56d3f56d020..1f066e46e83e 100644 --- a/arch/s390/kernel/swsusp_asm64.S +++ b/arch/s390/kernel/swsusp_asm64.S | |||
@@ -264,7 +264,7 @@ restore_registers: | |||
264 | lghi %r2,0 | 264 | lghi %r2,0 |
265 | br %r14 | 265 | br %r14 |
266 | 266 | ||
267 | .section .data.nosave,"aw",@progbits | 267 | .section .data..nosave,"aw",@progbits |
268 | .align 8 | 268 | .align 8 |
269 | .Ldisabled_wait_31: | 269 | .Ldisabled_wait_31: |
270 | .long 0x000a0000,0x00000000 | 270 | .long 0x000a0000,0x00000000 |
diff --git a/arch/s390/kvm/Kconfig b/arch/s390/kvm/Kconfig index 2f4b687cc7fa..a7251580891c 100644 --- a/arch/s390/kvm/Kconfig +++ b/arch/s390/kvm/Kconfig | |||
@@ -33,17 +33,6 @@ config KVM | |||
33 | 33 | ||
34 | If unsure, say N. | 34 | If unsure, say N. |
35 | 35 | ||
36 | config KVM_AWARE_CMF | ||
37 | depends on KVM | ||
38 | bool "KVM aware sampling" | ||
39 | ---help--- | ||
40 | This option enhances the sampling data from the CPU Measurement | ||
41 | Facility with additional information, that allows to distinguish | ||
42 | guest(s) and host when using the kernel based virtual machine | ||
43 | functionality. | ||
44 | |||
45 | If unsure, say N. | ||
46 | |||
47 | # OK, it's a little counter-intuitive to do this, but it puts it neatly under | 36 | # OK, it's a little counter-intuitive to do this, but it puts it neatly under |
48 | # the virtualization menu. | 37 | # the virtualization menu. |
49 | source drivers/vhost/Kconfig | 38 | source drivers/vhost/Kconfig |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 8093e6f47f49..ae3705816878 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -761,7 +761,7 @@ static int __init kvm_s390_init(void) | |||
761 | * to hold the maximum amount of facilites. On the other hand, we | 761 | * to hold the maximum amount of facilites. On the other hand, we |
762 | * only set facilities that are known to work in KVM. | 762 | * only set facilities that are known to work in KVM. |
763 | */ | 763 | */ |
764 | facilities = (unsigned long long *) get_zeroed_page(GFP_DMA); | 764 | facilities = (unsigned long long *) get_zeroed_page(GFP_KERNEL|GFP_DMA); |
765 | if (!facilities) { | 765 | if (!facilities) { |
766 | kvm_exit(); | 766 | kvm_exit(); |
767 | return -ENOMEM; | 767 | return -ENOMEM; |
diff --git a/arch/s390/kvm/sie64a.S b/arch/s390/kvm/sie64a.S index 31646bd0e469..7e9d30d567b0 100644 --- a/arch/s390/kvm/sie64a.S +++ b/arch/s390/kvm/sie64a.S | |||
@@ -32,12 +32,10 @@ SPI_PSW = STACK_FRAME_OVERHEAD + __PT_PSW | |||
32 | 32 | ||
33 | 33 | ||
34 | .macro SPP newpp | 34 | .macro SPP newpp |
35 | #ifdef CONFIG_KVM_AWARE_CMF | ||
36 | tm __LC_MACHINE_FLAGS+6,0x20 # MACHINE_FLAG_SPP | 35 | tm __LC_MACHINE_FLAGS+6,0x20 # MACHINE_FLAG_SPP |
37 | jz 0f | 36 | jz 0f |
38 | .insn s,0xb2800000,\newpp | 37 | .insn s,0xb2800000,\newpp |
39 | 0: | 38 | 0: |
40 | #endif | ||
41 | .endm | 39 | .endm |
42 | 40 | ||
43 | sie_irq_handler: | 41 | sie_irq_handler: |
diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c index eff3c5989b46..702276f5e2fa 100644 --- a/arch/s390/kvm/sigp.c +++ b/arch/s390/kvm/sigp.c | |||
@@ -113,7 +113,7 @@ static int __inject_sigp_stop(struct kvm_s390_local_interrupt *li, int action) | |||
113 | { | 113 | { |
114 | struct kvm_s390_interrupt_info *inti; | 114 | struct kvm_s390_interrupt_info *inti; |
115 | 115 | ||
116 | inti = kzalloc(sizeof(*inti), GFP_KERNEL); | 116 | inti = kzalloc(sizeof(*inti), GFP_ATOMIC); |
117 | if (!inti) | 117 | if (!inti) |
118 | return -ENOMEM; | 118 | return -ENOMEM; |
119 | inti->type = KVM_S390_SIGP_STOP; | 119 | inti->type = KVM_S390_SIGP_STOP; |
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c index f87b34731e1d..eb6a2ef5f82e 100644 --- a/arch/s390/mm/cmm.c +++ b/arch/s390/mm/cmm.c | |||
@@ -1,11 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * arch/s390/mm/cmm.c | 2 | * Collaborative memory management interface. |
3 | * | 3 | * |
4 | * S390 version | 4 | * Copyright IBM Corp 2003,2010 |
5 | * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation | 5 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>, |
6 | * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) | ||
7 | * | 6 | * |
8 | * Collaborative memory management interface. | ||
9 | */ | 7 | */ |
10 | 8 | ||
11 | #include <linux/errno.h> | 9 | #include <linux/errno.h> |
@@ -20,9 +18,9 @@ | |||
20 | #include <linux/kthread.h> | 18 | #include <linux/kthread.h> |
21 | #include <linux/oom.h> | 19 | #include <linux/oom.h> |
22 | #include <linux/suspend.h> | 20 | #include <linux/suspend.h> |
21 | #include <linux/uaccess.h> | ||
23 | 22 | ||
24 | #include <asm/pgalloc.h> | 23 | #include <asm/pgalloc.h> |
25 | #include <asm/uaccess.h> | ||
26 | #include <asm/diag.h> | 24 | #include <asm/diag.h> |
27 | 25 | ||
28 | static char *sender = "VMRMSVM"; | 26 | static char *sender = "VMRMSVM"; |
@@ -53,14 +51,14 @@ static struct cmm_page_array *cmm_timed_page_list; | |||
53 | static DEFINE_SPINLOCK(cmm_lock); | 51 | static DEFINE_SPINLOCK(cmm_lock); |
54 | 52 | ||
55 | static struct task_struct *cmm_thread_ptr; | 53 | static struct task_struct *cmm_thread_ptr; |
56 | static wait_queue_head_t cmm_thread_wait; | 54 | static DECLARE_WAIT_QUEUE_HEAD(cmm_thread_wait); |
57 | static struct timer_list cmm_timer; | 55 | static DEFINE_TIMER(cmm_timer, NULL, 0, 0); |
58 | 56 | ||
59 | static void cmm_timer_fn(unsigned long); | 57 | static void cmm_timer_fn(unsigned long); |
60 | static void cmm_set_timer(void); | 58 | static void cmm_set_timer(void); |
61 | 59 | ||
62 | static long | 60 | static long cmm_alloc_pages(long nr, long *counter, |
63 | cmm_alloc_pages(long nr, long *counter, struct cmm_page_array **list) | 61 | struct cmm_page_array **list) |
64 | { | 62 | { |
65 | struct cmm_page_array *pa, *npa; | 63 | struct cmm_page_array *pa, *npa; |
66 | unsigned long addr; | 64 | unsigned long addr; |
@@ -99,8 +97,7 @@ cmm_alloc_pages(long nr, long *counter, struct cmm_page_array **list) | |||
99 | return nr; | 97 | return nr; |
100 | } | 98 | } |
101 | 99 | ||
102 | static long | 100 | static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list) |
103 | cmm_free_pages(long nr, long *counter, struct cmm_page_array **list) | ||
104 | { | 101 | { |
105 | struct cmm_page_array *pa; | 102 | struct cmm_page_array *pa; |
106 | unsigned long addr; | 103 | unsigned long addr; |
@@ -140,11 +137,10 @@ static int cmm_oom_notify(struct notifier_block *self, | |||
140 | } | 137 | } |
141 | 138 | ||
142 | static struct notifier_block cmm_oom_nb = { | 139 | static struct notifier_block cmm_oom_nb = { |
143 | .notifier_call = cmm_oom_notify | 140 | .notifier_call = cmm_oom_notify, |
144 | }; | 141 | }; |
145 | 142 | ||
146 | static int | 143 | static int cmm_thread(void *dummy) |
147 | cmm_thread(void *dummy) | ||
148 | { | 144 | { |
149 | int rc; | 145 | int rc; |
150 | 146 | ||
@@ -170,7 +166,7 @@ cmm_thread(void *dummy) | |||
170 | cmm_timed_pages_target = cmm_timed_pages; | 166 | cmm_timed_pages_target = cmm_timed_pages; |
171 | } else if (cmm_timed_pages_target < cmm_timed_pages) { | 167 | } else if (cmm_timed_pages_target < cmm_timed_pages) { |
172 | cmm_free_pages(1, &cmm_timed_pages, | 168 | cmm_free_pages(1, &cmm_timed_pages, |
173 | &cmm_timed_page_list); | 169 | &cmm_timed_page_list); |
174 | } | 170 | } |
175 | if (cmm_timed_pages > 0 && !timer_pending(&cmm_timer)) | 171 | if (cmm_timed_pages > 0 && !timer_pending(&cmm_timer)) |
176 | cmm_set_timer(); | 172 | cmm_set_timer(); |
@@ -178,14 +174,12 @@ cmm_thread(void *dummy) | |||
178 | return 0; | 174 | return 0; |
179 | } | 175 | } |
180 | 176 | ||
181 | static void | 177 | static void cmm_kick_thread(void) |
182 | cmm_kick_thread(void) | ||
183 | { | 178 | { |
184 | wake_up(&cmm_thread_wait); | 179 | wake_up(&cmm_thread_wait); |
185 | } | 180 | } |
186 | 181 | ||
187 | static void | 182 | static void cmm_set_timer(void) |
188 | cmm_set_timer(void) | ||
189 | { | 183 | { |
190 | if (cmm_timed_pages_target <= 0 || cmm_timeout_seconds <= 0) { | 184 | if (cmm_timed_pages_target <= 0 || cmm_timeout_seconds <= 0) { |
191 | if (timer_pending(&cmm_timer)) | 185 | if (timer_pending(&cmm_timer)) |
@@ -202,8 +196,7 @@ cmm_set_timer(void) | |||
202 | add_timer(&cmm_timer); | 196 | add_timer(&cmm_timer); |
203 | } | 197 | } |
204 | 198 | ||
205 | static void | 199 | static void cmm_timer_fn(unsigned long ignored) |
206 | cmm_timer_fn(unsigned long ignored) | ||
207 | { | 200 | { |
208 | long nr; | 201 | long nr; |
209 | 202 | ||
@@ -216,57 +209,49 @@ cmm_timer_fn(unsigned long ignored) | |||
216 | cmm_set_timer(); | 209 | cmm_set_timer(); |
217 | } | 210 | } |
218 | 211 | ||
219 | void | 212 | static void cmm_set_pages(long nr) |
220 | cmm_set_pages(long nr) | ||
221 | { | 213 | { |
222 | cmm_pages_target = nr; | 214 | cmm_pages_target = nr; |
223 | cmm_kick_thread(); | 215 | cmm_kick_thread(); |
224 | } | 216 | } |
225 | 217 | ||
226 | long | 218 | static long cmm_get_pages(void) |
227 | cmm_get_pages(void) | ||
228 | { | 219 | { |
229 | return cmm_pages; | 220 | return cmm_pages; |
230 | } | 221 | } |
231 | 222 | ||
232 | void | 223 | static void cmm_add_timed_pages(long nr) |
233 | cmm_add_timed_pages(long nr) | ||
234 | { | 224 | { |
235 | cmm_timed_pages_target += nr; | 225 | cmm_timed_pages_target += nr; |
236 | cmm_kick_thread(); | 226 | cmm_kick_thread(); |
237 | } | 227 | } |
238 | 228 | ||
239 | long | 229 | static long cmm_get_timed_pages(void) |
240 | cmm_get_timed_pages(void) | ||
241 | { | 230 | { |
242 | return cmm_timed_pages; | 231 | return cmm_timed_pages; |
243 | } | 232 | } |
244 | 233 | ||
245 | void | 234 | static void cmm_set_timeout(long nr, long seconds) |
246 | cmm_set_timeout(long nr, long seconds) | ||
247 | { | 235 | { |
248 | cmm_timeout_pages = nr; | 236 | cmm_timeout_pages = nr; |
249 | cmm_timeout_seconds = seconds; | 237 | cmm_timeout_seconds = seconds; |
250 | cmm_set_timer(); | 238 | cmm_set_timer(); |
251 | } | 239 | } |
252 | 240 | ||
253 | static int | 241 | static int cmm_skip_blanks(char *cp, char **endp) |
254 | cmm_skip_blanks(char *cp, char **endp) | ||
255 | { | 242 | { |
256 | char *str; | 243 | char *str; |
257 | 244 | ||
258 | for (str = cp; *str == ' ' || *str == '\t'; str++); | 245 | for (str = cp; *str == ' ' || *str == '\t'; str++) |
246 | ; | ||
259 | *endp = str; | 247 | *endp = str; |
260 | return str != cp; | 248 | return str != cp; |
261 | } | 249 | } |
262 | 250 | ||
263 | #ifdef CONFIG_CMM_PROC | ||
264 | |||
265 | static struct ctl_table cmm_table[]; | 251 | static struct ctl_table cmm_table[]; |
266 | 252 | ||
267 | static int | 253 | static int cmm_pages_handler(ctl_table *ctl, int write, void __user *buffer, |
268 | cmm_pages_handler(ctl_table *ctl, int write, | 254 | size_t *lenp, loff_t *ppos) |
269 | void __user *buffer, size_t *lenp, loff_t *ppos) | ||
270 | { | 255 | { |
271 | char buf[16], *p; | 256 | char buf[16], *p; |
272 | long nr; | 257 | long nr; |
@@ -305,9 +290,8 @@ cmm_pages_handler(ctl_table *ctl, int write, | |||
305 | return 0; | 290 | return 0; |
306 | } | 291 | } |
307 | 292 | ||
308 | static int | 293 | static int cmm_timeout_handler(ctl_table *ctl, int write, void __user *buffer, |
309 | cmm_timeout_handler(ctl_table *ctl, int write, | 294 | size_t *lenp, loff_t *ppos) |
310 | void __user *buffer, size_t *lenp, loff_t *ppos) | ||
311 | { | 295 | { |
312 | char buf[64], *p; | 296 | char buf[64], *p; |
313 | long nr, seconds; | 297 | long nr, seconds; |
@@ -370,12 +354,10 @@ static struct ctl_table cmm_dir_table[] = { | |||
370 | }, | 354 | }, |
371 | { } | 355 | { } |
372 | }; | 356 | }; |
373 | #endif | ||
374 | 357 | ||
375 | #ifdef CONFIG_CMM_IUCV | 358 | #ifdef CONFIG_CMM_IUCV |
376 | #define SMSG_PREFIX "CMM" | 359 | #define SMSG_PREFIX "CMM" |
377 | static void | 360 | static void cmm_smsg_target(const char *from, char *msg) |
378 | cmm_smsg_target(const char *from, char *msg) | ||
379 | { | 361 | { |
380 | long nr, seconds; | 362 | long nr, seconds; |
381 | 363 | ||
@@ -445,16 +427,13 @@ static struct notifier_block cmm_power_notifier = { | |||
445 | .notifier_call = cmm_power_event, | 427 | .notifier_call = cmm_power_event, |
446 | }; | 428 | }; |
447 | 429 | ||
448 | static int | 430 | static int cmm_init(void) |
449 | cmm_init (void) | ||
450 | { | 431 | { |
451 | int rc = -ENOMEM; | 432 | int rc = -ENOMEM; |
452 | 433 | ||
453 | #ifdef CONFIG_CMM_PROC | ||
454 | cmm_sysctl_header = register_sysctl_table(cmm_dir_table); | 434 | cmm_sysctl_header = register_sysctl_table(cmm_dir_table); |
455 | if (!cmm_sysctl_header) | 435 | if (!cmm_sysctl_header) |
456 | goto out_sysctl; | 436 | goto out_sysctl; |
457 | #endif | ||
458 | #ifdef CONFIG_CMM_IUCV | 437 | #ifdef CONFIG_CMM_IUCV |
459 | rc = smsg_register_callback(SMSG_PREFIX, cmm_smsg_target); | 438 | rc = smsg_register_callback(SMSG_PREFIX, cmm_smsg_target); |
460 | if (rc < 0) | 439 | if (rc < 0) |
@@ -466,8 +445,6 @@ cmm_init (void) | |||
466 | rc = register_pm_notifier(&cmm_power_notifier); | 445 | rc = register_pm_notifier(&cmm_power_notifier); |
467 | if (rc) | 446 | if (rc) |
468 | goto out_pm; | 447 | goto out_pm; |
469 | init_waitqueue_head(&cmm_thread_wait); | ||
470 | init_timer(&cmm_timer); | ||
471 | cmm_thread_ptr = kthread_run(cmm_thread, NULL, "cmmthread"); | 448 | cmm_thread_ptr = kthread_run(cmm_thread, NULL, "cmmthread"); |
472 | rc = IS_ERR(cmm_thread_ptr) ? PTR_ERR(cmm_thread_ptr) : 0; | 449 | rc = IS_ERR(cmm_thread_ptr) ? PTR_ERR(cmm_thread_ptr) : 0; |
473 | if (rc) | 450 | if (rc) |
@@ -483,36 +460,26 @@ out_oom_notify: | |||
483 | smsg_unregister_callback(SMSG_PREFIX, cmm_smsg_target); | 460 | smsg_unregister_callback(SMSG_PREFIX, cmm_smsg_target); |
484 | out_smsg: | 461 | out_smsg: |
485 | #endif | 462 | #endif |
486 | #ifdef CONFIG_CMM_PROC | ||
487 | unregister_sysctl_table(cmm_sysctl_header); | 463 | unregister_sysctl_table(cmm_sysctl_header); |
488 | out_sysctl: | 464 | out_sysctl: |
489 | #endif | 465 | del_timer_sync(&cmm_timer); |
490 | return rc; | 466 | return rc; |
491 | } | 467 | } |
468 | module_init(cmm_init); | ||
492 | 469 | ||
493 | static void | 470 | static void cmm_exit(void) |
494 | cmm_exit(void) | ||
495 | { | 471 | { |
496 | kthread_stop(cmm_thread_ptr); | ||
497 | unregister_pm_notifier(&cmm_power_notifier); | ||
498 | unregister_oom_notifier(&cmm_oom_nb); | ||
499 | cmm_free_pages(cmm_pages, &cmm_pages, &cmm_page_list); | ||
500 | cmm_free_pages(cmm_timed_pages, &cmm_timed_pages, &cmm_timed_page_list); | ||
501 | #ifdef CONFIG_CMM_PROC | ||
502 | unregister_sysctl_table(cmm_sysctl_header); | 472 | unregister_sysctl_table(cmm_sysctl_header); |
503 | #endif | ||
504 | #ifdef CONFIG_CMM_IUCV | 473 | #ifdef CONFIG_CMM_IUCV |
505 | smsg_unregister_callback(SMSG_PREFIX, cmm_smsg_target); | 474 | smsg_unregister_callback(SMSG_PREFIX, cmm_smsg_target); |
506 | #endif | 475 | #endif |
476 | unregister_pm_notifier(&cmm_power_notifier); | ||
477 | unregister_oom_notifier(&cmm_oom_nb); | ||
478 | kthread_stop(cmm_thread_ptr); | ||
479 | del_timer_sync(&cmm_timer); | ||
480 | cmm_free_pages(cmm_pages, &cmm_pages, &cmm_page_list); | ||
481 | cmm_free_pages(cmm_timed_pages, &cmm_timed_pages, &cmm_timed_page_list); | ||
507 | } | 482 | } |
508 | |||
509 | module_init(cmm_init); | ||
510 | module_exit(cmm_exit); | 483 | module_exit(cmm_exit); |
511 | 484 | ||
512 | EXPORT_SYMBOL(cmm_set_pages); | ||
513 | EXPORT_SYMBOL(cmm_get_pages); | ||
514 | EXPORT_SYMBOL(cmm_add_timed_pages); | ||
515 | EXPORT_SYMBOL(cmm_get_timed_pages); | ||
516 | EXPORT_SYMBOL(cmm_set_timeout); | ||
517 | |||
518 | MODULE_LICENSE("GPL"); | 485 | MODULE_LICENSE("GPL"); |
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c index 6409fd57eb04..3cc95dd0a3a6 100644 --- a/arch/s390/mm/extmem.c +++ b/arch/s390/mm/extmem.c | |||
@@ -105,7 +105,7 @@ static int | |||
105 | dcss_set_subcodes(void) | 105 | dcss_set_subcodes(void) |
106 | { | 106 | { |
107 | #ifdef CONFIG_64BIT | 107 | #ifdef CONFIG_64BIT |
108 | char *name = kmalloc(8 * sizeof(char), GFP_DMA); | 108 | char *name = kmalloc(8 * sizeof(char), GFP_KERNEL | GFP_DMA); |
109 | unsigned long rx, ry; | 109 | unsigned long rx, ry; |
110 | int rc; | 110 | int rc; |
111 | 111 | ||
@@ -252,12 +252,13 @@ dcss_diag_translate_rc (int vm_rc) { | |||
252 | static int | 252 | static int |
253 | query_segment_type (struct dcss_segment *seg) | 253 | query_segment_type (struct dcss_segment *seg) |
254 | { | 254 | { |
255 | struct qin64 *qin = kmalloc (sizeof(struct qin64), GFP_DMA); | ||
256 | struct qout64 *qout = kmalloc (sizeof(struct qout64), GFP_DMA); | ||
257 | |||
258 | int diag_cc, rc, i; | ||
259 | unsigned long dummy, vmrc; | 255 | unsigned long dummy, vmrc; |
256 | int diag_cc, rc, i; | ||
257 | struct qout64 *qout; | ||
258 | struct qin64 *qin; | ||
260 | 259 | ||
260 | qin = kmalloc(sizeof(*qin), GFP_KERNEL | GFP_DMA); | ||
261 | qout = kmalloc(sizeof(*qout), GFP_KERNEL | GFP_DMA); | ||
261 | if ((qin == NULL) || (qout == NULL)) { | 262 | if ((qin == NULL) || (qout == NULL)) { |
262 | rc = -ENOMEM; | 263 | rc = -ENOMEM; |
263 | goto out_free; | 264 | goto out_free; |
@@ -286,7 +287,7 @@ query_segment_type (struct dcss_segment *seg) | |||
286 | copy data for the new format. */ | 287 | copy data for the new format. */ |
287 | if (segext_scode == DCSS_SEGEXT) { | 288 | if (segext_scode == DCSS_SEGEXT) { |
288 | struct qout64_old *qout_old; | 289 | struct qout64_old *qout_old; |
289 | qout_old = kzalloc(sizeof(struct qout64_old), GFP_DMA); | 290 | qout_old = kzalloc(sizeof(*qout_old), GFP_KERNEL | GFP_DMA); |
290 | if (qout_old == NULL) { | 291 | if (qout_old == NULL) { |
291 | rc = -ENOMEM; | 292 | rc = -ENOMEM; |
292 | goto out_free; | 293 | goto out_free; |
@@ -407,11 +408,11 @@ segment_overlaps_others (struct dcss_segment *seg) | |||
407 | static int | 408 | static int |
408 | __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long *end) | 409 | __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long *end) |
409 | { | 410 | { |
410 | struct dcss_segment *seg = kmalloc(sizeof(struct dcss_segment), | ||
411 | GFP_DMA); | ||
412 | int rc, diag_cc; | ||
413 | unsigned long start_addr, end_addr, dummy; | 411 | unsigned long start_addr, end_addr, dummy; |
412 | struct dcss_segment *seg; | ||
413 | int rc, diag_cc; | ||
414 | 414 | ||
415 | seg = kmalloc(sizeof(*seg), GFP_KERNEL | GFP_DMA); | ||
415 | if (seg == NULL) { | 416 | if (seg == NULL) { |
416 | rc = -ENOMEM; | 417 | rc = -ENOMEM; |
417 | goto out; | 418 | goto out; |
diff --git a/arch/score/include/asm/scatterlist.h b/arch/score/include/asm/scatterlist.h index 9f533b8362c7..4fa1a6658215 100644 --- a/arch/score/include/asm/scatterlist.h +++ b/arch/score/include/asm/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ASM_SCORE_SCATTERLIST_H | 1 | #ifndef _ASM_SCORE_SCATTERLIST_H |
2 | #define _ASM_SCORE_SCATTERLIST_H | 2 | #define _ASM_SCORE_SCATTERLIST_H |
3 | 3 | ||
4 | #define ISA_DMA_THRESHOLD (~0UL) | ||
5 | |||
4 | #include <asm-generic/scatterlist.h> | 6 | #include <asm-generic/scatterlist.h> |
5 | 7 | ||
6 | #endif /* _ASM_SCORE_SCATTERLIST_H */ | 8 | #endif /* _ASM_SCORE_SCATTERLIST_H */ |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 0e318c905eea..573fca1fbd9b 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -9,7 +9,7 @@ config SUPERH | |||
9 | def_bool y | 9 | def_bool y |
10 | select EMBEDDED | 10 | select EMBEDDED |
11 | select HAVE_CLK | 11 | select HAVE_CLK |
12 | select HAVE_IDE | 12 | select HAVE_IDE if HAS_IOPORT |
13 | select HAVE_LMB | 13 | select HAVE_LMB |
14 | select HAVE_OPROFILE | 14 | select HAVE_OPROFILE |
15 | select HAVE_GENERIC_DMA_COHERENT | 15 | select HAVE_GENERIC_DMA_COHERENT |
@@ -174,6 +174,9 @@ config ARCH_HAS_DEFAULT_IDLE | |||
174 | config ARCH_HAS_CPU_IDLE_WAIT | 174 | config ARCH_HAS_CPU_IDLE_WAIT |
175 | def_bool y | 175 | def_bool y |
176 | 176 | ||
177 | config NO_IOPORT | ||
178 | bool | ||
179 | |||
177 | config IO_TRAPPED | 180 | config IO_TRAPPED |
178 | bool | 181 | bool |
179 | 182 | ||
@@ -186,6 +189,9 @@ config DMA_NONCOHERENT | |||
186 | config NEED_DMA_MAP_STATE | 189 | config NEED_DMA_MAP_STATE |
187 | def_bool DMA_NONCOHERENT | 190 | def_bool DMA_NONCOHERENT |
188 | 191 | ||
192 | config NEED_SG_DMA_LENGTH | ||
193 | def_bool y | ||
194 | |||
189 | source "init/Kconfig" | 195 | source "init/Kconfig" |
190 | 196 | ||
191 | source "kernel/Kconfig.freezer" | 197 | source "kernel/Kconfig.freezer" |
@@ -773,6 +779,17 @@ config ENTRY_OFFSET | |||
773 | default "0x00010000" if PAGE_SIZE_64KB | 779 | default "0x00010000" if PAGE_SIZE_64KB |
774 | default "0x00000000" | 780 | default "0x00000000" |
775 | 781 | ||
782 | config ROMIMAGE_MMCIF | ||
783 | bool "Include MMCIF loader in romImage (EXPERIMENTAL)" | ||
784 | depends on CPU_SUBTYPE_SH7724 && EXPERIMENTAL | ||
785 | help | ||
786 | Say Y here to include experimental MMCIF loading code in | ||
787 | romImage. With this enabled it is possible to write the romImage | ||
788 | kernel image to an MMC card and boot the kernel straight from | ||
789 | the reset vector. At reset the processor Mask ROM will load the | ||
790 | first part of the romImage which in turn loads the rest the kernel | ||
791 | image to RAM using the MMCIF hardware block. | ||
792 | |||
776 | choice | 793 | choice |
777 | prompt "Kernel command line" | 794 | prompt "Kernel command line" |
778 | optional | 795 | optional |
diff --git a/arch/sh/boards/Kconfig b/arch/sh/boards/Kconfig index 938e87d51482..07b35ca2f644 100644 --- a/arch/sh/boards/Kconfig +++ b/arch/sh/boards/Kconfig | |||
@@ -154,6 +154,7 @@ config SH_SDK7786 | |||
154 | bool "SDK7786" | 154 | bool "SDK7786" |
155 | depends on CPU_SUBTYPE_SH7786 | 155 | depends on CPU_SUBTYPE_SH7786 |
156 | select SYS_SUPPORTS_PCI | 156 | select SYS_SUPPORTS_PCI |
157 | select NO_IOPORT if !PCI | ||
157 | help | 158 | help |
158 | Select SDK7786 if configuring for a Renesas Technology Europe | 159 | Select SDK7786 if configuring for a Renesas Technology Europe |
159 | SH7786-65nm board. | 160 | SH7786-65nm board. |
@@ -190,6 +191,7 @@ config SH_URQUELL | |||
190 | depends on CPU_SUBTYPE_SH7786 | 191 | depends on CPU_SUBTYPE_SH7786 |
191 | select ARCH_REQUIRE_GPIOLIB | 192 | select ARCH_REQUIRE_GPIOLIB |
192 | select SYS_SUPPORTS_PCI | 193 | select SYS_SUPPORTS_PCI |
194 | select NO_IOPORT if !PCI | ||
193 | 195 | ||
194 | config SH_MIGOR | 196 | config SH_MIGOR |
195 | bool "Migo-R" | 197 | bool "Migo-R" |
@@ -286,6 +288,7 @@ config SH_LBOX_RE2 | |||
286 | config SH_X3PROTO | 288 | config SH_X3PROTO |
287 | bool "SH-X3 Prototype board" | 289 | bool "SH-X3 Prototype board" |
288 | depends on CPU_SUBTYPE_SHX3 | 290 | depends on CPU_SUBTYPE_SHX3 |
291 | select NO_IOPORT if !PCI | ||
289 | 292 | ||
290 | config SH_MAGIC_PANEL_R2 | 293 | config SH_MAGIC_PANEL_R2 |
291 | bool "Magic Panel R2" | 294 | bool "Magic Panel R2" |
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c index 57e37e284208..3a170bd3f3d0 100644 --- a/arch/sh/boards/mach-ap325rxa/setup.c +++ b/arch/sh/boards/mach-ap325rxa/setup.c | |||
@@ -328,7 +328,7 @@ static struct soc_camera_platform_info camera_info = { | |||
328 | .set_capture = camera_set_capture, | 328 | .set_capture = camera_set_capture, |
329 | }; | 329 | }; |
330 | 330 | ||
331 | struct soc_camera_link camera_link = { | 331 | static struct soc_camera_link camera_link = { |
332 | .bus_id = 0, | 332 | .bus_id = 0, |
333 | .add_device = ap325rxa_camera_add, | 333 | .add_device = ap325rxa_camera_add, |
334 | .del_device = ap325rxa_camera_del, | 334 | .del_device = ap325rxa_camera_del, |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index 49714258732e..be1d114d3a43 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -12,6 +12,8 @@ | |||
12 | #include <linux/device.h> | 12 | #include <linux/device.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/mfd/sh_mobile_sdhi.h> | 14 | #include <linux/mfd/sh_mobile_sdhi.h> |
15 | #include <linux/mmc/host.h> | ||
16 | #include <linux/mmc/sh_mmcif.h> | ||
15 | #include <linux/mtd/physmap.h> | 17 | #include <linux/mtd/physmap.h> |
16 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
17 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
@@ -26,7 +28,6 @@ | |||
26 | #include <linux/mmc/host.h> | 28 | #include <linux/mmc/host.h> |
27 | #include <linux/input.h> | 29 | #include <linux/input.h> |
28 | #include <linux/input/sh_keysc.h> | 30 | #include <linux/input/sh_keysc.h> |
29 | #include <linux/mfd/sh_mobile_sdhi.h> | ||
30 | #include <video/sh_mobile_lcdc.h> | 31 | #include <video/sh_mobile_lcdc.h> |
31 | #include <sound/sh_fsi.h> | 32 | #include <sound/sh_fsi.h> |
32 | #include <media/sh_mobile_ceu.h> | 33 | #include <media/sh_mobile_ceu.h> |
@@ -139,7 +140,7 @@ static struct resource sh_eth_resources[] = { | |||
139 | }, | 140 | }, |
140 | }; | 141 | }; |
141 | 142 | ||
142 | struct sh_eth_plat_data sh_eth_plat = { | 143 | static struct sh_eth_plat_data sh_eth_plat = { |
143 | .phy = 0x1f, /* SMSC LAN8700 */ | 144 | .phy = 0x1f, /* SMSC LAN8700 */ |
144 | .edmac_endian = EDMAC_LITTLE_ENDIAN, | 145 | .edmac_endian = EDMAC_LITTLE_ENDIAN, |
145 | .ether_link_active_low = 1 | 146 | .ether_link_active_low = 1 |
@@ -159,7 +160,7 @@ static struct platform_device sh_eth_device = { | |||
159 | }; | 160 | }; |
160 | 161 | ||
161 | /* USB0 host */ | 162 | /* USB0 host */ |
162 | void usb0_port_power(int port, int power) | 163 | static void usb0_port_power(int port, int power) |
163 | { | 164 | { |
164 | gpio_set_value(GPIO_PTB4, power); | 165 | gpio_set_value(GPIO_PTB4, power); |
165 | } | 166 | } |
@@ -195,7 +196,7 @@ static struct platform_device usb0_host_device = { | |||
195 | }; | 196 | }; |
196 | 197 | ||
197 | /* USB1 host/function */ | 198 | /* USB1 host/function */ |
198 | void usb1_port_power(int port, int power) | 199 | static void usb1_port_power(int port, int power) |
199 | { | 200 | { |
200 | gpio_set_value(GPIO_PTB5, power); | 201 | gpio_set_value(GPIO_PTB5, power); |
201 | } | 202 | } |
@@ -421,7 +422,7 @@ static int ts_init(void) | |||
421 | return 0; | 422 | return 0; |
422 | } | 423 | } |
423 | 424 | ||
424 | struct tsc2007_platform_data tsc2007_info = { | 425 | static struct tsc2007_platform_data tsc2007_info = { |
425 | .model = 2007, | 426 | .model = 2007, |
426 | .x_plate_ohms = 180, | 427 | .x_plate_ohms = 180, |
427 | .get_pendown_state = ts_get_pendown_state, | 428 | .get_pendown_state = ts_get_pendown_state, |
@@ -436,7 +437,7 @@ static struct i2c_board_info ts_i2c_clients = { | |||
436 | }; | 437 | }; |
437 | 438 | ||
438 | #ifdef CONFIG_MFD_SH_MOBILE_SDHI | 439 | #ifdef CONFIG_MFD_SH_MOBILE_SDHI |
439 | /* SHDI0 */ | 440 | /* SDHI0 */ |
440 | static void sdhi0_set_pwr(struct platform_device *pdev, int state) | 441 | static void sdhi0_set_pwr(struct platform_device *pdev, int state) |
441 | { | 442 | { |
442 | gpio_set_value(GPIO_PTB6, state); | 443 | gpio_set_value(GPIO_PTB6, state); |
@@ -474,7 +475,8 @@ static struct platform_device sdhi0_device = { | |||
474 | }, | 475 | }, |
475 | }; | 476 | }; |
476 | 477 | ||
477 | /* SHDI1 */ | 478 | #if !defined(CONFIG_MMC_SH_MMCIF) |
479 | /* SDHI1 */ | ||
478 | static void sdhi1_set_pwr(struct platform_device *pdev, int state) | 480 | static void sdhi1_set_pwr(struct platform_device *pdev, int state) |
479 | { | 481 | { |
480 | gpio_set_value(GPIO_PTB7, state); | 482 | gpio_set_value(GPIO_PTB7, state); |
@@ -511,6 +513,7 @@ static struct platform_device sdhi1_device = { | |||
511 | .hwblk_id = HWBLK_SDHI1, | 513 | .hwblk_id = HWBLK_SDHI1, |
512 | }, | 514 | }, |
513 | }; | 515 | }; |
516 | #endif /* CONFIG_MMC_SH_MMCIF */ | ||
514 | 517 | ||
515 | #else | 518 | #else |
516 | 519 | ||
@@ -720,7 +723,7 @@ static struct clk fsimckb_clk = { | |||
720 | .rate = 0, /* unknown */ | 723 | .rate = 0, /* unknown */ |
721 | }; | 724 | }; |
722 | 725 | ||
723 | struct sh_fsi_platform_info fsi_info = { | 726 | static struct sh_fsi_platform_info fsi_info = { |
724 | .portb_flags = SH_FSI_BRS_INV | | 727 | .portb_flags = SH_FSI_BRS_INV | |
725 | SH_FSI_OUT_SLAVE_MODE | | 728 | SH_FSI_OUT_SLAVE_MODE | |
726 | SH_FSI_IN_SLAVE_MODE | | 729 | SH_FSI_IN_SLAVE_MODE | |
@@ -777,7 +780,7 @@ static struct platform_device irda_device = { | |||
777 | #include <media/ak881x.h> | 780 | #include <media/ak881x.h> |
778 | #include <media/sh_vou.h> | 781 | #include <media/sh_vou.h> |
779 | 782 | ||
780 | struct ak881x_pdata ak881x_pdata = { | 783 | static struct ak881x_pdata ak881x_pdata = { |
781 | .flags = AK881X_IF_MODE_SLAVE, | 784 | .flags = AK881X_IF_MODE_SLAVE, |
782 | }; | 785 | }; |
783 | 786 | ||
@@ -786,7 +789,7 @@ static struct i2c_board_info ak8813 = { | |||
786 | .platform_data = &ak881x_pdata, | 789 | .platform_data = &ak881x_pdata, |
787 | }; | 790 | }; |
788 | 791 | ||
789 | struct sh_vou_pdata sh_vou_pdata = { | 792 | static struct sh_vou_pdata sh_vou_pdata = { |
790 | .bus_fmt = SH_VOU_BUS_8BIT, | 793 | .bus_fmt = SH_VOU_BUS_8BIT, |
791 | .flags = SH_VOU_HSYNC_LOW | SH_VOU_VSYNC_LOW, | 794 | .flags = SH_VOU_HSYNC_LOW | SH_VOU_VSYNC_LOW, |
792 | .board_info = &ak8813, | 795 | .board_info = &ak8813, |
@@ -819,6 +822,58 @@ static struct platform_device vou_device = { | |||
819 | }, | 822 | }, |
820 | }; | 823 | }; |
821 | 824 | ||
825 | #if defined(CONFIG_MMC_SH_MMCIF) | ||
826 | /* SH_MMCIF */ | ||
827 | static void mmcif_set_pwr(struct platform_device *pdev, int state) | ||
828 | { | ||
829 | gpio_set_value(GPIO_PTB7, state); | ||
830 | } | ||
831 | |||
832 | static void mmcif_down_pwr(struct platform_device *pdev) | ||
833 | { | ||
834 | gpio_set_value(GPIO_PTB7, 0); | ||
835 | } | ||
836 | |||
837 | static struct resource sh_mmcif_resources[] = { | ||
838 | [0] = { | ||
839 | .name = "SH_MMCIF", | ||
840 | .start = 0xA4CA0000, | ||
841 | .end = 0xA4CA00FF, | ||
842 | .flags = IORESOURCE_MEM, | ||
843 | }, | ||
844 | [1] = { | ||
845 | /* MMC2I */ | ||
846 | .start = 29, | ||
847 | .flags = IORESOURCE_IRQ, | ||
848 | }, | ||
849 | [2] = { | ||
850 | /* MMC3I */ | ||
851 | .start = 30, | ||
852 | .flags = IORESOURCE_IRQ, | ||
853 | }, | ||
854 | }; | ||
855 | |||
856 | static struct sh_mmcif_plat_data sh_mmcif_plat = { | ||
857 | .set_pwr = mmcif_set_pwr, | ||
858 | .down_pwr = mmcif_down_pwr, | ||
859 | .sup_pclk = 0, /* SH7724: Max Pclk/2 */ | ||
860 | .caps = MMC_CAP_4_BIT_DATA | | ||
861 | MMC_CAP_8_BIT_DATA | | ||
862 | MMC_CAP_NEEDS_POLL, | ||
863 | .ocr = MMC_VDD_32_33 | MMC_VDD_33_34, | ||
864 | }; | ||
865 | |||
866 | static struct platform_device sh_mmcif_device = { | ||
867 | .name = "sh_mmcif", | ||
868 | .id = 0, | ||
869 | .dev = { | ||
870 | .platform_data = &sh_mmcif_plat, | ||
871 | }, | ||
872 | .num_resources = ARRAY_SIZE(sh_mmcif_resources), | ||
873 | .resource = sh_mmcif_resources, | ||
874 | }; | ||
875 | #endif | ||
876 | |||
822 | static struct platform_device *ecovec_devices[] __initdata = { | 877 | static struct platform_device *ecovec_devices[] __initdata = { |
823 | &heartbeat_device, | 878 | &heartbeat_device, |
824 | &nor_flash_device, | 879 | &nor_flash_device, |
@@ -831,7 +886,9 @@ static struct platform_device *ecovec_devices[] __initdata = { | |||
831 | &keysc_device, | 886 | &keysc_device, |
832 | #ifdef CONFIG_MFD_SH_MOBILE_SDHI | 887 | #ifdef CONFIG_MFD_SH_MOBILE_SDHI |
833 | &sdhi0_device, | 888 | &sdhi0_device, |
889 | #if !defined(CONFIG_MMC_SH_MMCIF) | ||
834 | &sdhi1_device, | 890 | &sdhi1_device, |
891 | #endif | ||
835 | #else | 892 | #else |
836 | &msiof0_device, | 893 | &msiof0_device, |
837 | #endif | 894 | #endif |
@@ -841,6 +898,9 @@ static struct platform_device *ecovec_devices[] __initdata = { | |||
841 | &fsi_device, | 898 | &fsi_device, |
842 | &irda_device, | 899 | &irda_device, |
843 | &vou_device, | 900 | &vou_device, |
901 | #if defined(CONFIG_MMC_SH_MMCIF) | ||
902 | &sh_mmcif_device, | ||
903 | #endif | ||
844 | }; | 904 | }; |
845 | 905 | ||
846 | #ifdef CONFIG_I2C | 906 | #ifdef CONFIG_I2C |
@@ -1134,6 +1194,7 @@ static int __init arch_setup(void) | |||
1134 | gpio_request(GPIO_PTB6, NULL); | 1194 | gpio_request(GPIO_PTB6, NULL); |
1135 | gpio_direction_output(GPIO_PTB6, 0); | 1195 | gpio_direction_output(GPIO_PTB6, 0); |
1136 | 1196 | ||
1197 | #if !defined(CONFIG_MMC_SH_MMCIF) | ||
1137 | /* enable SDHI1 on CN12 (needs DS2.6,7 set to ON,OFF) */ | 1198 | /* enable SDHI1 on CN12 (needs DS2.6,7 set to ON,OFF) */ |
1138 | gpio_request(GPIO_FN_SDHI1CD, NULL); | 1199 | gpio_request(GPIO_FN_SDHI1CD, NULL); |
1139 | gpio_request(GPIO_FN_SDHI1WP, NULL); | 1200 | gpio_request(GPIO_FN_SDHI1WP, NULL); |
@@ -1148,6 +1209,7 @@ static int __init arch_setup(void) | |||
1148 | 1209 | ||
1149 | /* I/O buffer drive ability is high for SDHI1 */ | 1210 | /* I/O buffer drive ability is high for SDHI1 */ |
1150 | __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA); | 1211 | __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA); |
1212 | #endif /* CONFIG_MMC_SH_MMCIF */ | ||
1151 | #else | 1213 | #else |
1152 | /* enable MSIOF0 on CN11 (needs DS2.4 set to OFF) */ | 1214 | /* enable MSIOF0 on CN11 (needs DS2.4 set to OFF) */ |
1153 | gpio_request(GPIO_FN_MSIOF0_TXD, NULL); | 1215 | gpio_request(GPIO_FN_MSIOF0_TXD, NULL); |
@@ -1223,6 +1285,25 @@ static int __init arch_setup(void) | |||
1223 | gpio_request(GPIO_PTU5, NULL); | 1285 | gpio_request(GPIO_PTU5, NULL); |
1224 | gpio_direction_output(GPIO_PTU5, 0); | 1286 | gpio_direction_output(GPIO_PTU5, 0); |
1225 | 1287 | ||
1288 | #if defined(CONFIG_MMC_SH_MMCIF) | ||
1289 | /* enable MMCIF (needs DS2.6,7 set to OFF,ON) */ | ||
1290 | gpio_request(GPIO_FN_MMC_D7, NULL); | ||
1291 | gpio_request(GPIO_FN_MMC_D6, NULL); | ||
1292 | gpio_request(GPIO_FN_MMC_D5, NULL); | ||
1293 | gpio_request(GPIO_FN_MMC_D4, NULL); | ||
1294 | gpio_request(GPIO_FN_MMC_D3, NULL); | ||
1295 | gpio_request(GPIO_FN_MMC_D2, NULL); | ||
1296 | gpio_request(GPIO_FN_MMC_D1, NULL); | ||
1297 | gpio_request(GPIO_FN_MMC_D0, NULL); | ||
1298 | gpio_request(GPIO_FN_MMC_CLK, NULL); | ||
1299 | gpio_request(GPIO_FN_MMC_CMD, NULL); | ||
1300 | gpio_request(GPIO_PTB7, NULL); | ||
1301 | gpio_direction_output(GPIO_PTB7, 0); | ||
1302 | |||
1303 | /* I/O buffer drive ability is high for MMCIF */ | ||
1304 | __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA); | ||
1305 | #endif | ||
1306 | |||
1226 | /* enable I2C device */ | 1307 | /* enable I2C device */ |
1227 | i2c_register_board_info(0, i2c0_devices, | 1308 | i2c_register_board_info(0, i2c0_devices, |
1228 | ARRAY_SIZE(i2c0_devices)); | 1309 | ARRAY_SIZE(i2c0_devices)); |
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c index 87185de20446..662debe4ead2 100644 --- a/arch/sh/boards/mach-migor/setup.c +++ b/arch/sh/boards/mach-migor/setup.c | |||
@@ -181,7 +181,7 @@ static int migor_nand_flash_ready(struct mtd_info *mtd) | |||
181 | return gpio_get_value(GPIO_PTA1); /* NAND_RBn */ | 181 | return gpio_get_value(GPIO_PTA1); /* NAND_RBn */ |
182 | } | 182 | } |
183 | 183 | ||
184 | struct platform_nand_data migor_nand_flash_data = { | 184 | static struct platform_nand_data migor_nand_flash_data = { |
185 | .chip = { | 185 | .chip = { |
186 | .nr_chips = 1, | 186 | .nr_chips = 1, |
187 | .partitions = migor_nand_flash_partitions, | 187 | .partitions = migor_nand_flash_partitions, |
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index f9b82546c2df..552ebd9ba82b 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -283,7 +283,7 @@ static struct clk fsimcka_clk = { | |||
283 | }; | 283 | }; |
284 | 284 | ||
285 | /* change J20, J21, J22 pin to 1-2 connection to use slave mode */ | 285 | /* change J20, J21, J22 pin to 1-2 connection to use slave mode */ |
286 | struct sh_fsi_platform_info fsi_info = { | 286 | static struct sh_fsi_platform_info fsi_info = { |
287 | .porta_flags = SH_FSI_BRS_INV | | 287 | .porta_flags = SH_FSI_BRS_INV | |
288 | SH_FSI_OUT_SLAVE_MODE | | 288 | SH_FSI_OUT_SLAVE_MODE | |
289 | SH_FSI_IN_SLAVE_MODE | | 289 | SH_FSI_IN_SLAVE_MODE | |
@@ -371,7 +371,7 @@ static struct resource sh_eth_resources[] = { | |||
371 | }, | 371 | }, |
372 | }; | 372 | }; |
373 | 373 | ||
374 | struct sh_eth_plat_data sh_eth_plat = { | 374 | static struct sh_eth_plat_data sh_eth_plat = { |
375 | .phy = 0x1f, /* SMSC LAN8187 */ | 375 | .phy = 0x1f, /* SMSC LAN8187 */ |
376 | .edmac_endian = EDMAC_LITTLE_ENDIAN, | 376 | .edmac_endian = EDMAC_LITTLE_ENDIAN, |
377 | }; | 377 | }; |
@@ -535,7 +535,7 @@ static struct platform_device irda_device = { | |||
535 | #include <media/ak881x.h> | 535 | #include <media/ak881x.h> |
536 | #include <media/sh_vou.h> | 536 | #include <media/sh_vou.h> |
537 | 537 | ||
538 | struct ak881x_pdata ak881x_pdata = { | 538 | static struct ak881x_pdata ak881x_pdata = { |
539 | .flags = AK881X_IF_MODE_SLAVE, | 539 | .flags = AK881X_IF_MODE_SLAVE, |
540 | }; | 540 | }; |
541 | 541 | ||
@@ -545,7 +545,7 @@ static struct i2c_board_info ak8813 = { | |||
545 | .platform_data = &ak881x_pdata, | 545 | .platform_data = &ak881x_pdata, |
546 | }; | 546 | }; |
547 | 547 | ||
548 | struct sh_vou_pdata sh_vou_pdata = { | 548 | static struct sh_vou_pdata sh_vou_pdata = { |
549 | .bus_fmt = SH_VOU_BUS_8BIT, | 549 | .bus_fmt = SH_VOU_BUS_8BIT, |
550 | .flags = SH_VOU_HSYNC_LOW | SH_VOU_VSYNC_LOW, | 550 | .flags = SH_VOU_HSYNC_LOW | SH_VOU_VSYNC_LOW, |
551 | .board_info = &ak8813, | 551 | .board_info = &ak8813, |
diff --git a/arch/sh/boot/compressed/vmlinux.scr b/arch/sh/boot/compressed/vmlinux.scr index f02382ae5c48..862d74808236 100644 --- a/arch/sh/boot/compressed/vmlinux.scr +++ b/arch/sh/boot/compressed/vmlinux.scr | |||
@@ -1,6 +1,6 @@ | |||
1 | SECTIONS | 1 | SECTIONS |
2 | { | 2 | { |
3 | .rodata.compressed : { | 3 | .rodata..compressed : { |
4 | input_len = .; | 4 | input_len = .; |
5 | LONG(input_data_end - input_data) input_data = .; | 5 | LONG(input_data_end - input_data) input_data = .; |
6 | *(.data) | 6 | *(.data) |
diff --git a/arch/sh/boot/romimage/Makefile b/arch/sh/boot/romimage/Makefile index f473a24a2d92..2216ee57f251 100644 --- a/arch/sh/boot/romimage/Makefile +++ b/arch/sh/boot/romimage/Makefile | |||
@@ -1,16 +1,21 @@ | |||
1 | # | 1 | # |
2 | # linux/arch/sh/boot/romimage/Makefile | 2 | # linux/arch/sh/boot/romimage/Makefile |
3 | # | 3 | # |
4 | # create an image suitable for burning to flash from zImage | 4 | # create an romImage file suitable for burning to flash/mmc from zImage |
5 | # | 5 | # |
6 | 6 | ||
7 | targets := vmlinux head.o zeropage.bin piggy.o | 7 | targets := vmlinux head.o zeropage.bin piggy.o |
8 | load-y := 0 | ||
8 | 9 | ||
9 | OBJECTS = $(obj)/head.o | 10 | mmcif-load-$(CONFIG_CPU_SUBTYPE_SH7724) := 0xe5200000 # ILRAM |
10 | LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext 0 -e romstart \ | 11 | mmcif-obj-$(CONFIG_CPU_SUBTYPE_SH7724) := $(obj)/mmcif-sh7724.o |
12 | load-$(CONFIG_ROMIMAGE_MMCIF) := $(mmcif-load-y) | ||
13 | obj-$(CONFIG_ROMIMAGE_MMCIF) := $(mmcif-obj-y) | ||
14 | |||
15 | LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext $(load-y) -e romstart \ | ||
11 | -T $(obj)/../../kernel/vmlinux.lds | 16 | -T $(obj)/../../kernel/vmlinux.lds |
12 | 17 | ||
13 | $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o FORCE | 18 | $(obj)/vmlinux: $(obj)/head.o $(obj-y) $(obj)/piggy.o FORCE |
14 | $(call if_changed,ld) | 19 | $(call if_changed,ld) |
15 | @: | 20 | @: |
16 | 21 | ||
diff --git a/arch/sh/boot/romimage/head.S b/arch/sh/boot/romimage/head.S index 93e779a405ec..4671d1b82150 100644 --- a/arch/sh/boot/romimage/head.S +++ b/arch/sh/boot/romimage/head.S | |||
@@ -12,8 +12,40 @@ romstart: | |||
12 | /* include board specific setup code */ | 12 | /* include board specific setup code */ |
13 | #include <mach/romimage.h> | 13 | #include <mach/romimage.h> |
14 | 14 | ||
15 | #ifdef CONFIG_ROMIMAGE_MMCIF | ||
16 | /* load the romImage to above the empty zero page */ | ||
17 | mov.l empty_zero_page_dst, r4 | ||
18 | mov.l empty_zero_page_dst_adj, r5 | ||
19 | add r5, r4 | ||
20 | mov.l bytes_to_load, r5 | ||
21 | mov.l loader_function, r7 | ||
22 | jsr @r7 | ||
23 | mov r4, r15 | ||
24 | |||
25 | mov.l empty_zero_page_dst, r4 | ||
26 | mov.l empty_zero_page_dst_adj, r5 | ||
27 | add r5, r4 | ||
28 | mov.l loaded_code_offs, r5 | ||
29 | add r5, r4 | ||
30 | jmp @r4 | ||
31 | nop | ||
32 | |||
33 | .balign 4 | ||
34 | empty_zero_page_dst_adj: | ||
35 | .long PAGE_SIZE | ||
36 | bytes_to_load: | ||
37 | .long end_data - romstart | ||
38 | loader_function: | ||
39 | .long mmcif_loader | ||
40 | loaded_code_offs: | ||
41 | .long loaded_code - romstart | ||
42 | loaded_code: | ||
43 | #endif /* CONFIG_ROMIMAGE_MMCIF */ | ||
44 | |||
15 | /* copy the empty_zero_page contents to where vmlinux expects it */ | 45 | /* copy the empty_zero_page contents to where vmlinux expects it */ |
16 | mova empty_zero_page_src, r0 | 46 | mova extra_data_pos, r0 |
47 | mov.l extra_data_size, r1 | ||
48 | add r1, r0 | ||
17 | mov.l empty_zero_page_dst, r1 | 49 | mov.l empty_zero_page_dst, r1 |
18 | mov #(PAGE_SHIFT - 4), r4 | 50 | mov #(PAGE_SHIFT - 4), r4 |
19 | mov #1, r3 | 51 | mov #1, r3 |
@@ -37,7 +69,9 @@ romstart: | |||
37 | mov #PAGE_SHIFT, r4 | 69 | mov #PAGE_SHIFT, r4 |
38 | mov #1, r1 | 70 | mov #1, r1 |
39 | shld r4, r1 | 71 | shld r4, r1 |
40 | mova empty_zero_page_src, r0 | 72 | mova extra_data_pos, r0 |
73 | add r1, r0 | ||
74 | mov.l extra_data_size, r1 | ||
41 | add r1, r0 | 75 | add r1, r0 |
42 | jmp @r0 | 76 | jmp @r0 |
43 | nop | 77 | nop |
@@ -45,4 +79,6 @@ romstart: | |||
45 | .align 2 | 79 | .align 2 |
46 | empty_zero_page_dst: | 80 | empty_zero_page_dst: |
47 | .long _text | 81 | .long _text |
48 | empty_zero_page_src: | 82 | extra_data_pos: |
83 | extra_data_size: | ||
84 | .long zero_page_pos - extra_data_pos | ||
diff --git a/arch/sh/boot/romimage/mmcif-sh7724.c b/arch/sh/boot/romimage/mmcif-sh7724.c new file mode 100644 index 000000000000..14863d7292cb --- /dev/null +++ b/arch/sh/boot/romimage/mmcif-sh7724.c | |||
@@ -0,0 +1,72 @@ | |||
1 | /* | ||
2 | * sh7724 MMCIF loader | ||
3 | * | ||
4 | * Copyright (C) 2010 Magnus Damm | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | |||
11 | #include <linux/mmc/sh_mmcif.h> | ||
12 | #include <mach/romimage.h> | ||
13 | |||
14 | #define MMCIF_BASE (void __iomem *)0xa4ca0000 | ||
15 | |||
16 | #define MSTPCR2 0xa4150038 | ||
17 | #define PTWCR 0xa4050146 | ||
18 | #define PTXCR 0xa4050148 | ||
19 | #define PSELA 0xa405014e | ||
20 | #define PSELE 0xa4050156 | ||
21 | #define HIZCRC 0xa405015c | ||
22 | #define DRVCRA 0xa405018a | ||
23 | |||
24 | enum { MMCIF_PROGRESS_ENTER, MMCIF_PROGRESS_INIT, | ||
25 | MMCIF_PROGRESS_LOAD, MMCIF_PROGRESS_DONE }; | ||
26 | |||
27 | /* SH7724 specific MMCIF loader | ||
28 | * | ||
29 | * loads the romImage from an MMC card starting from block 512 | ||
30 | * use the following line to write the romImage to an MMC card | ||
31 | * # dd if=arch/sh/boot/romImage of=/dev/sdx bs=512 seek=512 | ||
32 | */ | ||
33 | asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes) | ||
34 | { | ||
35 | mmcif_update_progress(MMCIF_PROGRESS_ENTER); | ||
36 | |||
37 | /* enable clock to the MMCIF hardware block */ | ||
38 | __raw_writel(__raw_readl(MSTPCR2) & ~0x20000000, MSTPCR2); | ||
39 | |||
40 | /* setup pins D7-D0 */ | ||
41 | __raw_writew(0x0000, PTWCR); | ||
42 | |||
43 | /* setup pins MMC_CLK, MMC_CMD */ | ||
44 | __raw_writew(__raw_readw(PTXCR) & ~0x000f, PTXCR); | ||
45 | |||
46 | /* select D3-D0 pin function */ | ||
47 | __raw_writew(__raw_readw(PSELA) & ~0x2000, PSELA); | ||
48 | |||
49 | /* select D7-D4 pin function */ | ||
50 | __raw_writew(__raw_readw(PSELE) & ~0x3000, PSELE); | ||
51 | |||
52 | /* disable Hi-Z for the MMC pins */ | ||
53 | __raw_writew(__raw_readw(HIZCRC) & ~0x0620, HIZCRC); | ||
54 | |||
55 | /* high drive capability for MMC pins */ | ||
56 | __raw_writew(__raw_readw(DRVCRA) | 0x3000, DRVCRA); | ||
57 | |||
58 | mmcif_update_progress(MMCIF_PROGRESS_INIT); | ||
59 | |||
60 | /* setup MMCIF hardware */ | ||
61 | sh_mmcif_boot_init(MMCIF_BASE); | ||
62 | |||
63 | mmcif_update_progress(MMCIF_PROGRESS_LOAD); | ||
64 | |||
65 | /* load kernel via MMCIF interface */ | ||
66 | sh_mmcif_boot_slurp(MMCIF_BASE, buf, no_bytes); | ||
67 | |||
68 | /* disable clock to the MMCIF hardware block */ | ||
69 | __raw_writel(__raw_readl(MSTPCR2) | 0x20000000, MSTPCR2); | ||
70 | |||
71 | mmcif_update_progress(MMCIF_PROGRESS_DONE); | ||
72 | } | ||
diff --git a/arch/sh/boot/romimage/vmlinux.scr b/arch/sh/boot/romimage/vmlinux.scr index 287c08f8b4bb..590394e2f5f2 100644 --- a/arch/sh/boot/romimage/vmlinux.scr +++ b/arch/sh/boot/romimage/vmlinux.scr | |||
@@ -1,6 +1,8 @@ | |||
1 | SECTIONS | 1 | SECTIONS |
2 | { | 2 | { |
3 | .text : { | 3 | .text : { |
4 | zero_page_pos = .; | ||
4 | *(.data) | 5 | *(.data) |
6 | end_data = .; | ||
5 | } | 7 | } |
6 | } | 8 | } |
diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h index e461d67f03c3..ef9e555aafba 100644 --- a/arch/sh/include/asm/cache.h +++ b/arch/sh/include/asm/cache.h | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | 15 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) |
16 | 16 | ||
17 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 17 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
18 | 18 | ||
19 | #ifndef __ASSEMBLY__ | 19 | #ifndef __ASSEMBLY__ |
20 | struct cache_info { | 20 | struct cache_info { |
diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h index f689554e17c1..b237d525d592 100644 --- a/arch/sh/include/asm/io.h +++ b/arch/sh/include/asm/io.h | |||
@@ -39,6 +39,8 @@ | |||
39 | #include <asm/io_generic.h> | 39 | #include <asm/io_generic.h> |
40 | #include <asm/io_trapped.h> | 40 | #include <asm/io_trapped.h> |
41 | 41 | ||
42 | #ifdef CONFIG_HAS_IOPORT | ||
43 | |||
42 | #define inb(p) sh_mv.mv_inb((p)) | 44 | #define inb(p) sh_mv.mv_inb((p)) |
43 | #define inw(p) sh_mv.mv_inw((p)) | 45 | #define inw(p) sh_mv.mv_inw((p)) |
44 | #define inl(p) sh_mv.mv_inl((p)) | 46 | #define inl(p) sh_mv.mv_inl((p)) |
@@ -60,6 +62,8 @@ | |||
60 | #define outsw(p,b,c) sh_mv.mv_outsw((p), (b), (c)) | 62 | #define outsw(p,b,c) sh_mv.mv_outsw((p), (b), (c)) |
61 | #define outsl(p,b,c) sh_mv.mv_outsl((p), (b), (c)) | 63 | #define outsl(p,b,c) sh_mv.mv_outsl((p), (b), (c)) |
62 | 64 | ||
65 | #endif | ||
66 | |||
63 | #define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile u8 __force *)(a) = (v)) | 67 | #define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile u8 __force *)(a) = (v)) |
64 | #define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile u16 __force *)(a) = (v)) | 68 | #define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile u16 __force *)(a) = (v)) |
65 | #define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile u32 __force *)(a) = (v)) | 69 | #define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile u32 __force *)(a) = (v)) |
@@ -240,6 +244,8 @@ __BUILD_MEMORY_STRING(q, u64) | |||
240 | 244 | ||
241 | #define IO_SPACE_LIMIT 0xffffffff | 245 | #define IO_SPACE_LIMIT 0xffffffff |
242 | 246 | ||
247 | #ifdef CONFIG_HAS_IOPORT | ||
248 | |||
243 | /* | 249 | /* |
244 | * This function provides a method for the generic case where a | 250 | * This function provides a method for the generic case where a |
245 | * board-specific ioport_map simply needs to return the port + some | 251 | * board-specific ioport_map simply needs to return the port + some |
@@ -255,6 +261,8 @@ static inline void __set_io_port_base(unsigned long pbase) | |||
255 | 261 | ||
256 | #define __ioport_map(p, n) sh_mv.mv_ioport_map((p), (n)) | 262 | #define __ioport_map(p, n) sh_mv.mv_ioport_map((p), (n)) |
257 | 263 | ||
264 | #endif | ||
265 | |||
258 | /* We really want to try and get these to memcpy etc */ | 266 | /* We really want to try and get these to memcpy etc */ |
259 | void memcpy_fromio(void *, const volatile void __iomem *, unsigned long); | 267 | void memcpy_fromio(void *, const volatile void __iomem *, unsigned long); |
260 | void memcpy_toio(volatile void __iomem *, const void *, unsigned long); | 268 | void memcpy_toio(volatile void __iomem *, const void *, unsigned long); |
diff --git a/arch/sh/include/asm/machvec.h b/arch/sh/include/asm/machvec.h index bc0218cb72e1..a0b0cf79cf8a 100644 --- a/arch/sh/include/asm/machvec.h +++ b/arch/sh/include/asm/machvec.h | |||
@@ -19,6 +19,10 @@ struct sh_machine_vector { | |||
19 | const char *mv_name; | 19 | const char *mv_name; |
20 | int mv_nr_irqs; | 20 | int mv_nr_irqs; |
21 | 21 | ||
22 | int (*mv_irq_demux)(int irq); | ||
23 | void (*mv_init_irq)(void); | ||
24 | |||
25 | #ifdef CONFIG_HAS_IOPORT | ||
22 | u8 (*mv_inb)(unsigned long); | 26 | u8 (*mv_inb)(unsigned long); |
23 | u16 (*mv_inw)(unsigned long); | 27 | u16 (*mv_inw)(unsigned long); |
24 | u32 (*mv_inl)(unsigned long); | 28 | u32 (*mv_inl)(unsigned long); |
@@ -40,12 +44,9 @@ struct sh_machine_vector { | |||
40 | void (*mv_outsw)(unsigned long, const void *src, unsigned long count); | 44 | void (*mv_outsw)(unsigned long, const void *src, unsigned long count); |
41 | void (*mv_outsl)(unsigned long, const void *src, unsigned long count); | 45 | void (*mv_outsl)(unsigned long, const void *src, unsigned long count); |
42 | 46 | ||
43 | int (*mv_irq_demux)(int irq); | ||
44 | |||
45 | void (*mv_init_irq)(void); | ||
46 | |||
47 | void __iomem *(*mv_ioport_map)(unsigned long port, unsigned int size); | 47 | void __iomem *(*mv_ioport_map)(unsigned long port, unsigned int size); |
48 | void (*mv_ioport_unmap)(void __iomem *); | 48 | void (*mv_ioport_unmap)(void __iomem *); |
49 | #endif | ||
49 | 50 | ||
50 | int (*mv_clk_init)(void); | 51 | int (*mv_clk_init)(void); |
51 | int (*mv_mode_pins)(void); | 52 | int (*mv_mode_pins)(void); |
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7724.h b/arch/sh/include/cpu-sh4/cpu/sh7724.h index fbbf550cc529..4c27b68789b3 100644 --- a/arch/sh/include/cpu-sh4/cpu/sh7724.h +++ b/arch/sh/include/cpu-sh4/cpu/sh7724.h | |||
@@ -9,6 +9,7 @@ | |||
9 | * MD3: BSC - Area0 Bus Width (16/32-bit) [CS0BCR.9,10] | 9 | * MD3: BSC - Area0 Bus Width (16/32-bit) [CS0BCR.9,10] |
10 | * MD5: BSC - Endian Mode (L: Big, H: Little) [CMNCR.3] | 10 | * MD5: BSC - Endian Mode (L: Big, H: Little) [CMNCR.3] |
11 | * MD8: Test Mode | 11 | * MD8: Test Mode |
12 | * BOOT: FBR - Boot Mode (L: MMCIF, H: Area0) | ||
12 | */ | 13 | */ |
13 | 14 | ||
14 | /* Pin Function Controller: | 15 | /* Pin Function Controller: |
diff --git a/arch/sh/include/mach-common/mach/romimage.h b/arch/sh/include/mach-common/mach/romimage.h index 267e24112d82..08fb42269ecd 100644 --- a/arch/sh/include/mach-common/mach/romimage.h +++ b/arch/sh/include/mach-common/mach/romimage.h | |||
@@ -1 +1,11 @@ | |||
1 | #ifdef __ASSEMBLY__ | ||
2 | |||
1 | /* do nothing here by default */ | 3 | /* do nothing here by default */ |
4 | |||
5 | #else /* __ASSEMBLY__ */ | ||
6 | |||
7 | extern inline void mmcif_update_progress(int nr) | ||
8 | { | ||
9 | } | ||
10 | |||
11 | #endif /* __ASSEMBLY__ */ | ||
diff --git a/arch/sh/include/mach-ecovec24/mach/romimage.h b/arch/sh/include/mach-ecovec24/mach/romimage.h index 1c8787ecb1c1..1dcf5e6c8d83 100644 --- a/arch/sh/include/mach-ecovec24/mach/romimage.h +++ b/arch/sh/include/mach-ecovec24/mach/romimage.h | |||
@@ -1,3 +1,5 @@ | |||
1 | #ifdef __ASSEMBLY__ | ||
2 | |||
1 | /* EcoVec board specific boot code: | 3 | /* EcoVec board specific boot code: |
2 | * converts the "partner-jet-script.txt" script into assembly | 4 | * converts the "partner-jet-script.txt" script into assembly |
3 | * the assembly code is the first code to be executed in the romImage | 5 | * the assembly code is the first code to be executed in the romImage |
@@ -18,3 +20,28 @@ | |||
18 | .align 2 | 20 | .align 2 |
19 | 1 : .long 0xa8000000 | 21 | 1 : .long 0xa8000000 |
20 | 2 : | 22 | 2 : |
23 | |||
24 | #else /* __ASSEMBLY__ */ | ||
25 | |||
26 | /* Ecovec board specific information: | ||
27 | * | ||
28 | * Set the following to enable MMCIF boot from the MMC card in CN12: | ||
29 | * | ||
30 | * DS1.5 = OFF (SH BOOT pin set to L) | ||
31 | * DS2.6 = OFF (Select MMCIF on CN12 instead of SDHI1) | ||
32 | * DS2.7 = ON (Select MMCIF on CN12 instead of SDHI1) | ||
33 | * | ||
34 | */ | ||
35 | #define HIZCRA 0xa4050158 | ||
36 | #define PGDR 0xa405012c | ||
37 | |||
38 | extern inline void mmcif_update_progress(int nr) | ||
39 | { | ||
40 | /* disable Hi-Z for LED pins */ | ||
41 | __raw_writew(__raw_readw(HIZCRA) & ~(1 << 1), HIZCRA); | ||
42 | |||
43 | /* update progress on LED4, LED5, LED6 and LED7 */ | ||
44 | __raw_writeb(1 << (nr - 1), PGDR); | ||
45 | } | ||
46 | |||
47 | #endif /* __ASSEMBLY__ */ | ||
diff --git a/arch/sh/include/mach-kfr2r09/mach/romimage.h b/arch/sh/include/mach-kfr2r09/mach/romimage.h index a110823f2bde..976256a323f2 100644 --- a/arch/sh/include/mach-kfr2r09/mach/romimage.h +++ b/arch/sh/include/mach-kfr2r09/mach/romimage.h | |||
@@ -1,3 +1,5 @@ | |||
1 | #ifdef __ASSEMBLY__ | ||
2 | |||
1 | /* kfr2r09 board specific boot code: | 3 | /* kfr2r09 board specific boot code: |
2 | * converts the "partner-jet-script.txt" script into assembly | 4 | * converts the "partner-jet-script.txt" script into assembly |
3 | * the assembly code is the first code to be executed in the romImage | 5 | * the assembly code is the first code to be executed in the romImage |
@@ -18,3 +20,11 @@ | |||
18 | .align 2 | 20 | .align 2 |
19 | 1: .long 0xa8000000 | 21 | 1: .long 0xa8000000 |
20 | 2: | 22 | 2: |
23 | |||
24 | #else /* __ASSEMBLY__ */ | ||
25 | |||
26 | extern inline void mmcif_update_progress(int nr) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | #endif /* __ASSEMBLY__ */ | ||
diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile index 650b92f00ee5..e25f3c69525d 100644 --- a/arch/sh/kernel/Makefile +++ b/arch/sh/kernel/Makefile | |||
@@ -12,7 +12,7 @@ endif | |||
12 | CFLAGS_REMOVE_return_address.o = -pg | 12 | CFLAGS_REMOVE_return_address.o = -pg |
13 | 13 | ||
14 | obj-y := clkdev.o debugtraps.o dma-nommu.o dumpstack.o \ | 14 | obj-y := clkdev.o debugtraps.o dma-nommu.o dumpstack.o \ |
15 | idle.o io.o io_generic.o irq.o \ | 15 | idle.o io.o irq.o \ |
16 | irq_$(BITS).o machvec.o nmi_debug.o process.o \ | 16 | irq_$(BITS).o machvec.o nmi_debug.o process.o \ |
17 | process_$(BITS).o ptrace_$(BITS).o \ | 17 | process_$(BITS).o ptrace_$(BITS).o \ |
18 | reboot.o return_address.o \ | 18 | reboot.o return_address.o \ |
@@ -39,6 +39,7 @@ obj-$(CONFIG_DUMP_CODE) += disassemble.o | |||
39 | obj-$(CONFIG_HIBERNATION) += swsusp.o | 39 | obj-$(CONFIG_HIBERNATION) += swsusp.o |
40 | obj-$(CONFIG_DWARF_UNWINDER) += dwarf.o | 40 | obj-$(CONFIG_DWARF_UNWINDER) += dwarf.o |
41 | obj-$(CONFIG_PERF_EVENTS) += perf_event.o perf_callchain.o | 41 | obj-$(CONFIG_PERF_EVENTS) += perf_event.o perf_callchain.o |
42 | obj-$(CONFIG_HAS_IOPORT) += io_generic.o | ||
42 | 43 | ||
43 | obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o | 44 | obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o |
44 | obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += localtimer.o | 45 | obj-$(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST) += localtimer.o |
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c index 886d7d83ace3..49c09c7d5b77 100644 --- a/arch/sh/kernel/dwarf.c +++ b/arch/sh/kernel/dwarf.c | |||
@@ -49,6 +49,8 @@ static DEFINE_SPINLOCK(dwarf_fde_lock); | |||
49 | 49 | ||
50 | static struct dwarf_cie *cached_cie; | 50 | static struct dwarf_cie *cached_cie; |
51 | 51 | ||
52 | static unsigned int dwarf_unwinder_ready; | ||
53 | |||
52 | /** | 54 | /** |
53 | * dwarf_frame_alloc_reg - allocate memory for a DWARF register | 55 | * dwarf_frame_alloc_reg - allocate memory for a DWARF register |
54 | * @frame: the DWARF frame whose list of registers we insert on | 56 | * @frame: the DWARF frame whose list of registers we insert on |
@@ -582,6 +584,13 @@ struct dwarf_frame *dwarf_unwind_stack(unsigned long pc, | |||
582 | unsigned long addr; | 584 | unsigned long addr; |
583 | 585 | ||
584 | /* | 586 | /* |
587 | * If we've been called in to before initialization has | ||
588 | * completed, bail out immediately. | ||
589 | */ | ||
590 | if (!dwarf_unwinder_ready) | ||
591 | return NULL; | ||
592 | |||
593 | /* | ||
585 | * If we're starting at the top of the stack we need get the | 594 | * If we're starting at the top of the stack we need get the |
586 | * contents of a physical register to get the CFA in order to | 595 | * contents of a physical register to get the CFA in order to |
587 | * begin the virtual unwinding of the stack. | 596 | * begin the virtual unwinding of the stack. |
@@ -1167,7 +1176,7 @@ void module_dwarf_cleanup(struct module *mod) | |||
1167 | */ | 1176 | */ |
1168 | static int __init dwarf_unwinder_init(void) | 1177 | static int __init dwarf_unwinder_init(void) |
1169 | { | 1178 | { |
1170 | int err; | 1179 | int err = -ENOMEM; |
1171 | 1180 | ||
1172 | dwarf_frame_cachep = kmem_cache_create("dwarf_frames", | 1181 | dwarf_frame_cachep = kmem_cache_create("dwarf_frames", |
1173 | sizeof(struct dwarf_frame), 0, | 1182 | sizeof(struct dwarf_frame), 0, |
@@ -1181,11 +1190,15 @@ static int __init dwarf_unwinder_init(void) | |||
1181 | mempool_alloc_slab, | 1190 | mempool_alloc_slab, |
1182 | mempool_free_slab, | 1191 | mempool_free_slab, |
1183 | dwarf_frame_cachep); | 1192 | dwarf_frame_cachep); |
1193 | if (!dwarf_frame_pool) | ||
1194 | goto out; | ||
1184 | 1195 | ||
1185 | dwarf_reg_pool = mempool_create(DWARF_REG_MIN_REQ, | 1196 | dwarf_reg_pool = mempool_create(DWARF_REG_MIN_REQ, |
1186 | mempool_alloc_slab, | 1197 | mempool_alloc_slab, |
1187 | mempool_free_slab, | 1198 | mempool_free_slab, |
1188 | dwarf_reg_cachep); | 1199 | dwarf_reg_cachep); |
1200 | if (!dwarf_reg_pool) | ||
1201 | goto out; | ||
1189 | 1202 | ||
1190 | err = dwarf_parse_section(__start_eh_frame, __stop_eh_frame, NULL); | 1203 | err = dwarf_parse_section(__start_eh_frame, __stop_eh_frame, NULL); |
1191 | if (err) | 1204 | if (err) |
@@ -1195,11 +1208,13 @@ static int __init dwarf_unwinder_init(void) | |||
1195 | if (err) | 1208 | if (err) |
1196 | goto out; | 1209 | goto out; |
1197 | 1210 | ||
1211 | dwarf_unwinder_ready = 1; | ||
1212 | |||
1198 | return 0; | 1213 | return 0; |
1199 | 1214 | ||
1200 | out: | 1215 | out: |
1201 | printk(KERN_ERR "Failed to initialise DWARF unwinder: %d\n", err); | 1216 | printk(KERN_ERR "Failed to initialise DWARF unwinder: %d\n", err); |
1202 | dwarf_unwinder_cleanup(); | 1217 | dwarf_unwinder_cleanup(); |
1203 | return -EINVAL; | 1218 | return err; |
1204 | } | 1219 | } |
1205 | early_initcall(dwarf_unwinder_init); | 1220 | early_initcall(dwarf_unwinder_init); |
diff --git a/arch/sh/kernel/io.c b/arch/sh/kernel/io.c index 4770c241c679..5c51b794ba2a 100644 --- a/arch/sh/kernel/io.c +++ b/arch/sh/kernel/io.c | |||
@@ -112,25 +112,3 @@ void memset_io(volatile void __iomem *dst, int c, unsigned long count) | |||
112 | } | 112 | } |
113 | } | 113 | } |
114 | EXPORT_SYMBOL(memset_io); | 114 | EXPORT_SYMBOL(memset_io); |
115 | |||
116 | #ifndef CONFIG_GENERIC_IOMAP | ||
117 | |||
118 | void __iomem *ioport_map(unsigned long port, unsigned int nr) | ||
119 | { | ||
120 | void __iomem *ret; | ||
121 | |||
122 | ret = __ioport_map_trapped(port, nr); | ||
123 | if (ret) | ||
124 | return ret; | ||
125 | |||
126 | return __ioport_map(port, nr); | ||
127 | } | ||
128 | EXPORT_SYMBOL(ioport_map); | ||
129 | |||
130 | void ioport_unmap(void __iomem *addr) | ||
131 | { | ||
132 | sh_mv.mv_ioport_unmap(addr); | ||
133 | } | ||
134 | EXPORT_SYMBOL(ioport_unmap); | ||
135 | |||
136 | #endif /* CONFIG_GENERIC_IOMAP */ | ||
diff --git a/arch/sh/kernel/io_generic.c b/arch/sh/kernel/io_generic.c index e1e1dbd19557..447d78f666f9 100644 --- a/arch/sh/kernel/io_generic.c +++ b/arch/sh/kernel/io_generic.c | |||
@@ -158,3 +158,23 @@ void __iomem *generic_ioport_map(unsigned long addr, unsigned int size) | |||
158 | void generic_ioport_unmap(void __iomem *addr) | 158 | void generic_ioport_unmap(void __iomem *addr) |
159 | { | 159 | { |
160 | } | 160 | } |
161 | |||
162 | #ifndef CONFIG_GENERIC_IOMAP | ||
163 | void __iomem *ioport_map(unsigned long port, unsigned int nr) | ||
164 | { | ||
165 | void __iomem *ret; | ||
166 | |||
167 | ret = __ioport_map_trapped(port, nr); | ||
168 | if (ret) | ||
169 | return ret; | ||
170 | |||
171 | return __ioport_map(port, nr); | ||
172 | } | ||
173 | EXPORT_SYMBOL(ioport_map); | ||
174 | |||
175 | void ioport_unmap(void __iomem *addr) | ||
176 | { | ||
177 | sh_mv.mv_ioport_unmap(addr); | ||
178 | } | ||
179 | EXPORT_SYMBOL(ioport_unmap); | ||
180 | #endif /* CONFIG_GENERIC_IOMAP */ | ||
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index 4a8bb4eeb8ad..2947d2bd1291 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c | |||
@@ -91,10 +91,14 @@ int register_trapped_io(struct trapped_io *tiop) | |||
91 | tiop->magic = IO_TRAPPED_MAGIC; | 91 | tiop->magic = IO_TRAPPED_MAGIC; |
92 | INIT_LIST_HEAD(&tiop->list); | 92 | INIT_LIST_HEAD(&tiop->list); |
93 | spin_lock_irq(&trapped_lock); | 93 | spin_lock_irq(&trapped_lock); |
94 | #ifdef CONFIG_HAS_IOPORT | ||
94 | if (flags & IORESOURCE_IO) | 95 | if (flags & IORESOURCE_IO) |
95 | list_add(&tiop->list, &trapped_io); | 96 | list_add(&tiop->list, &trapped_io); |
97 | #endif | ||
98 | #ifdef CONFIG_HAS_IOMEM | ||
96 | if (flags & IORESOURCE_MEM) | 99 | if (flags & IORESOURCE_MEM) |
97 | list_add(&tiop->list, &trapped_mem); | 100 | list_add(&tiop->list, &trapped_mem); |
101 | #endif | ||
98 | spin_unlock_irq(&trapped_lock); | 102 | spin_unlock_irq(&trapped_lock); |
99 | 103 | ||
100 | return 0; | 104 | return 0; |
diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c index 85cfaf916fdc..9f9bb63616ad 100644 --- a/arch/sh/kernel/machvec.c +++ b/arch/sh/kernel/machvec.c | |||
@@ -118,6 +118,14 @@ void __init sh_mv_setup(void) | |||
118 | sh_mv.mv_##elem = generic_##elem; \ | 118 | sh_mv.mv_##elem = generic_##elem; \ |
119 | } while (0) | 119 | } while (0) |
120 | 120 | ||
121 | #ifdef CONFIG_HAS_IOPORT | ||
122 | |||
123 | #ifdef P2SEG | ||
124 | __set_io_port_base(P2SEG); | ||
125 | #else | ||
126 | __set_io_port_base(0); | ||
127 | #endif | ||
128 | |||
121 | mv_set(inb); mv_set(inw); mv_set(inl); | 129 | mv_set(inb); mv_set(inw); mv_set(inl); |
122 | mv_set(outb); mv_set(outw); mv_set(outl); | 130 | mv_set(outb); mv_set(outw); mv_set(outl); |
123 | 131 | ||
@@ -129,16 +137,13 @@ void __init sh_mv_setup(void) | |||
129 | 137 | ||
130 | mv_set(ioport_map); | 138 | mv_set(ioport_map); |
131 | mv_set(ioport_unmap); | 139 | mv_set(ioport_unmap); |
140 | |||
141 | #endif | ||
142 | |||
132 | mv_set(irq_demux); | 143 | mv_set(irq_demux); |
133 | mv_set(mode_pins); | 144 | mv_set(mode_pins); |
134 | mv_set(mem_init); | 145 | mv_set(mem_init); |
135 | 146 | ||
136 | if (!sh_mv.mv_nr_irqs) | 147 | if (!sh_mv.mv_nr_irqs) |
137 | sh_mv.mv_nr_irqs = NR_IRQS; | 148 | sh_mv.mv_nr_irqs = NR_IRQS; |
138 | |||
139 | #ifdef P2SEG | ||
140 | __set_io_port_base(P2SEG); | ||
141 | #else | ||
142 | __set_io_port_base(0); | ||
143 | #endif | ||
144 | } | 149 | } |
diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c index d4104ce9fe53..6c4bbba2a675 100644 --- a/arch/sh/kernel/ptrace_32.c +++ b/arch/sh/kernel/ptrace_32.c | |||
@@ -436,29 +436,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
436 | 0, sizeof(struct pt_dspregs), | 436 | 0, sizeof(struct pt_dspregs), |
437 | (const void __user *)data); | 437 | (const void __user *)data); |
438 | #endif | 438 | #endif |
439 | #ifdef CONFIG_BINFMT_ELF_FDPIC | ||
440 | case PTRACE_GETFDPIC: { | ||
441 | unsigned long tmp = 0; | ||
442 | |||
443 | switch (addr) { | ||
444 | case PTRACE_GETFDPIC_EXEC: | ||
445 | tmp = child->mm->context.exec_fdpic_loadmap; | ||
446 | break; | ||
447 | case PTRACE_GETFDPIC_INTERP: | ||
448 | tmp = child->mm->context.interp_fdpic_loadmap; | ||
449 | break; | ||
450 | default: | ||
451 | break; | ||
452 | } | ||
453 | |||
454 | ret = 0; | ||
455 | if (put_user(tmp, datap)) { | ||
456 | ret = -EFAULT; | ||
457 | break; | ||
458 | } | ||
459 | break; | ||
460 | } | ||
461 | #endif | ||
462 | default: | 439 | default: |
463 | ret = ptrace_request(child, request, addr, data); | 440 | ret = ptrace_request(child, request, addr, data); |
464 | break; | 441 | break; |
diff --git a/arch/sh/kernel/return_address.c b/arch/sh/kernel/return_address.c index cbf1dd5372b2..5124aeb28c3f 100644 --- a/arch/sh/kernel/return_address.c +++ b/arch/sh/kernel/return_address.c | |||
@@ -24,6 +24,8 @@ void *return_address(unsigned int depth) | |||
24 | struct dwarf_frame *tmp; | 24 | struct dwarf_frame *tmp; |
25 | 25 | ||
26 | tmp = dwarf_unwind_stack(ra, frame); | 26 | tmp = dwarf_unwind_stack(ra, frame); |
27 | if (!tmp) | ||
28 | return NULL; | ||
27 | 29 | ||
28 | if (frame) | 30 | if (frame) |
29 | dwarf_free_frame(frame); | 31 | dwarf_free_frame(frame); |
diff --git a/arch/sh/math-emu/sfp-util.h b/arch/sh/math-emu/sfp-util.h index e8526021892f..8ae1bd310ad0 100644 --- a/arch/sh/math-emu/sfp-util.h +++ b/arch/sh/math-emu/sfp-util.h | |||
@@ -66,3 +66,7 @@ | |||
66 | } while (0) | 66 | } while (0) |
67 | 67 | ||
68 | #define abort() return 0 | 68 | #define abort() return 0 |
69 | |||
70 | #define __BYTE_ORDER __LITTLE_ENDIAN | ||
71 | |||
72 | |||
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index d6781ce687e2..6f1470baa314 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -133,6 +133,9 @@ config ZONE_DMA | |||
133 | config NEED_DMA_MAP_STATE | 133 | config NEED_DMA_MAP_STATE |
134 | def_bool y | 134 | def_bool y |
135 | 135 | ||
136 | config NEED_SG_DMA_LENGTH | ||
137 | def_bool y | ||
138 | |||
136 | config GENERIC_ISA_DMA | 139 | config GENERIC_ISA_DMA |
137 | bool | 140 | bool |
138 | default y if SPARC32 | 141 | default y if SPARC32 |
diff --git a/arch/sparc/boot/btfixupprep.c b/arch/sparc/boot/btfixupprep.c index bbf91b9c3d39..e7f2940bd270 100644 --- a/arch/sparc/boot/btfixupprep.c +++ b/arch/sparc/boot/btfixupprep.c | |||
@@ -325,7 +325,7 @@ main1: | |||
325 | (*rr)->next = NULL; | 325 | (*rr)->next = NULL; |
326 | } | 326 | } |
327 | printf("! Generated by btfixupprep. Do not edit.\n\n"); | 327 | printf("! Generated by btfixupprep. Do not edit.\n\n"); |
328 | printf("\t.section\t\".data.init\",#alloc,#write\n\t.align\t4\n\n"); | 328 | printf("\t.section\t\".data..init\",#alloc,#write\n\t.align\t4\n\n"); |
329 | printf("\t.global\t___btfixup_start\n___btfixup_start:\n\n"); | 329 | printf("\t.global\t___btfixup_start\n___btfixup_start:\n\n"); |
330 | for (i = 0; i < last; i++) { | 330 | for (i = 0; i < last; i++) { |
331 | f = array + i; | 331 | f = array + i; |
diff --git a/arch/sparc/include/asm/cache.h b/arch/sparc/include/asm/cache.h index 78b07009f60a..0588b8c7faa2 100644 --- a/arch/sparc/include/asm/cache.h +++ b/arch/sparc/include/asm/cache.h | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) | 22 | #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) |
23 | 23 | ||
24 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 24 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
25 | 25 | ||
26 | #ifdef CONFIG_SPARC32 | 26 | #ifdef CONFIG_SPARC32 |
27 | #include <asm/asi.h> | 27 | #include <asm/asi.h> |
diff --git a/arch/sparc/include/asm/scatterlist.h b/arch/sparc/include/asm/scatterlist.h index d1120257b033..433e45f05fd4 100644 --- a/arch/sparc/include/asm/scatterlist.h +++ b/arch/sparc/include/asm/scatterlist.h | |||
@@ -1,8 +1,9 @@ | |||
1 | #ifndef _SPARC_SCATTERLIST_H | 1 | #ifndef _SPARC_SCATTERLIST_H |
2 | #define _SPARC_SCATTERLIST_H | 2 | #define _SPARC_SCATTERLIST_H |
3 | 3 | ||
4 | #define sg_dma_len(sg) ((sg)->dma_length) | ||
5 | |||
6 | #include <asm-generic/scatterlist.h> | 4 | #include <asm-generic/scatterlist.h> |
7 | 5 | ||
6 | #define ISA_DMA_THRESHOLD (~0UL) | ||
7 | #define ARCH_HAS_SG_CHAIN | ||
8 | |||
8 | #endif /* !(_SPARC_SCATTERLIST_H) */ | 9 | #endif /* !(_SPARC_SCATTERLIST_H) */ |
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c index 2e1698332b6d..44faabc3c02c 100644 --- a/arch/sparc/kernel/perf_event.c +++ b/arch/sparc/kernel/perf_event.c | |||
@@ -92,6 +92,8 @@ struct cpu_hw_events { | |||
92 | 92 | ||
93 | /* Enabled/disable state. */ | 93 | /* Enabled/disable state. */ |
94 | int enabled; | 94 | int enabled; |
95 | |||
96 | unsigned int group_flag; | ||
95 | }; | 97 | }; |
96 | DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, }; | 98 | DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = { .enabled = 1, }; |
97 | 99 | ||
@@ -982,53 +984,6 @@ static int collect_events(struct perf_event *group, int max_count, | |||
982 | return n; | 984 | return n; |
983 | } | 985 | } |
984 | 986 | ||
985 | static void event_sched_in(struct perf_event *event) | ||
986 | { | ||
987 | event->state = PERF_EVENT_STATE_ACTIVE; | ||
988 | event->oncpu = smp_processor_id(); | ||
989 | event->tstamp_running += event->ctx->time - event->tstamp_stopped; | ||
990 | if (is_software_event(event)) | ||
991 | event->pmu->enable(event); | ||
992 | } | ||
993 | |||
994 | int hw_perf_group_sched_in(struct perf_event *group_leader, | ||
995 | struct perf_cpu_context *cpuctx, | ||
996 | struct perf_event_context *ctx) | ||
997 | { | ||
998 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
999 | struct perf_event *sub; | ||
1000 | int n0, n; | ||
1001 | |||
1002 | if (!sparc_pmu) | ||
1003 | return 0; | ||
1004 | |||
1005 | n0 = cpuc->n_events; | ||
1006 | n = collect_events(group_leader, perf_max_events - n0, | ||
1007 | &cpuc->event[n0], &cpuc->events[n0], | ||
1008 | &cpuc->current_idx[n0]); | ||
1009 | if (n < 0) | ||
1010 | return -EAGAIN; | ||
1011 | if (check_excludes(cpuc->event, n0, n)) | ||
1012 | return -EINVAL; | ||
1013 | if (sparc_check_constraints(cpuc->event, cpuc->events, n + n0)) | ||
1014 | return -EAGAIN; | ||
1015 | cpuc->n_events = n0 + n; | ||
1016 | cpuc->n_added += n; | ||
1017 | |||
1018 | cpuctx->active_oncpu += n; | ||
1019 | n = 1; | ||
1020 | event_sched_in(group_leader); | ||
1021 | list_for_each_entry(sub, &group_leader->sibling_list, group_entry) { | ||
1022 | if (sub->state != PERF_EVENT_STATE_OFF) { | ||
1023 | event_sched_in(sub); | ||
1024 | n++; | ||
1025 | } | ||
1026 | } | ||
1027 | ctx->nr_active += n; | ||
1028 | |||
1029 | return 1; | ||
1030 | } | ||
1031 | |||
1032 | static int sparc_pmu_enable(struct perf_event *event) | 987 | static int sparc_pmu_enable(struct perf_event *event) |
1033 | { | 988 | { |
1034 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 989 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
@@ -1046,11 +1001,20 @@ static int sparc_pmu_enable(struct perf_event *event) | |||
1046 | cpuc->events[n0] = event->hw.event_base; | 1001 | cpuc->events[n0] = event->hw.event_base; |
1047 | cpuc->current_idx[n0] = PIC_NO_INDEX; | 1002 | cpuc->current_idx[n0] = PIC_NO_INDEX; |
1048 | 1003 | ||
1004 | /* | ||
1005 | * If group events scheduling transaction was started, | ||
1006 | * skip the schedulability test here, it will be peformed | ||
1007 | * at commit time(->commit_txn) as a whole | ||
1008 | */ | ||
1009 | if (cpuc->group_flag & PERF_EVENT_TXN_STARTED) | ||
1010 | goto nocheck; | ||
1011 | |||
1049 | if (check_excludes(cpuc->event, n0, 1)) | 1012 | if (check_excludes(cpuc->event, n0, 1)) |
1050 | goto out; | 1013 | goto out; |
1051 | if (sparc_check_constraints(cpuc->event, cpuc->events, n0 + 1)) | 1014 | if (sparc_check_constraints(cpuc->event, cpuc->events, n0 + 1)) |
1052 | goto out; | 1015 | goto out; |
1053 | 1016 | ||
1017 | nocheck: | ||
1054 | cpuc->n_events++; | 1018 | cpuc->n_events++; |
1055 | cpuc->n_added++; | 1019 | cpuc->n_added++; |
1056 | 1020 | ||
@@ -1130,11 +1094,61 @@ static int __hw_perf_event_init(struct perf_event *event) | |||
1130 | return 0; | 1094 | return 0; |
1131 | } | 1095 | } |
1132 | 1096 | ||
1097 | /* | ||
1098 | * Start group events scheduling transaction | ||
1099 | * Set the flag to make pmu::enable() not perform the | ||
1100 | * schedulability test, it will be performed at commit time | ||
1101 | */ | ||
1102 | static void sparc_pmu_start_txn(const struct pmu *pmu) | ||
1103 | { | ||
1104 | struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); | ||
1105 | |||
1106 | cpuhw->group_flag |= PERF_EVENT_TXN_STARTED; | ||
1107 | } | ||
1108 | |||
1109 | /* | ||
1110 | * Stop group events scheduling transaction | ||
1111 | * Clear the flag and pmu::enable() will perform the | ||
1112 | * schedulability test. | ||
1113 | */ | ||
1114 | static void sparc_pmu_cancel_txn(const struct pmu *pmu) | ||
1115 | { | ||
1116 | struct cpu_hw_events *cpuhw = &__get_cpu_var(cpu_hw_events); | ||
1117 | |||
1118 | cpuhw->group_flag &= ~PERF_EVENT_TXN_STARTED; | ||
1119 | } | ||
1120 | |||
1121 | /* | ||
1122 | * Commit group events scheduling transaction | ||
1123 | * Perform the group schedulability test as a whole | ||
1124 | * Return 0 if success | ||
1125 | */ | ||
1126 | static int sparc_pmu_commit_txn(const struct pmu *pmu) | ||
1127 | { | ||
1128 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | ||
1129 | int n; | ||
1130 | |||
1131 | if (!sparc_pmu) | ||
1132 | return -EINVAL; | ||
1133 | |||
1134 | cpuc = &__get_cpu_var(cpu_hw_events); | ||
1135 | n = cpuc->n_events; | ||
1136 | if (check_excludes(cpuc->event, 0, n)) | ||
1137 | return -EINVAL; | ||
1138 | if (sparc_check_constraints(cpuc->event, cpuc->events, n)) | ||
1139 | return -EAGAIN; | ||
1140 | |||
1141 | return 0; | ||
1142 | } | ||
1143 | |||
1133 | static const struct pmu pmu = { | 1144 | static const struct pmu pmu = { |
1134 | .enable = sparc_pmu_enable, | 1145 | .enable = sparc_pmu_enable, |
1135 | .disable = sparc_pmu_disable, | 1146 | .disable = sparc_pmu_disable, |
1136 | .read = sparc_pmu_read, | 1147 | .read = sparc_pmu_read, |
1137 | .unthrottle = sparc_pmu_unthrottle, | 1148 | .unthrottle = sparc_pmu_unthrottle, |
1149 | .start_txn = sparc_pmu_start_txn, | ||
1150 | .cancel_txn = sparc_pmu_cancel_txn, | ||
1151 | .commit_txn = sparc_pmu_commit_txn, | ||
1138 | }; | 1152 | }; |
1139 | 1153 | ||
1140 | const struct pmu *hw_perf_event_init(struct perf_event *event) | 1154 | const struct pmu *hw_perf_event_init(struct perf_event *event) |
diff --git a/arch/sparc/math-emu/sfp-util_32.h b/arch/sparc/math-emu/sfp-util_32.h index 0ea35afbb914..d1b2aff3c259 100644 --- a/arch/sparc/math-emu/sfp-util_32.h +++ b/arch/sparc/math-emu/sfp-util_32.h | |||
@@ -107,3 +107,9 @@ | |||
107 | 107 | ||
108 | #define abort() \ | 108 | #define abort() \ |
109 | return 0 | 109 | return 0 |
110 | |||
111 | #ifdef __BIG_ENDIAN | ||
112 | #define __BYTE_ORDER __BIG_ENDIAN | ||
113 | #else | ||
114 | #define __BYTE_ORDER __LITTLE_ENDIAN | ||
115 | #endif | ||
diff --git a/arch/sparc/math-emu/sfp-util_64.h b/arch/sparc/math-emu/sfp-util_64.h index d17c9bc72181..425d3cf01af4 100644 --- a/arch/sparc/math-emu/sfp-util_64.h +++ b/arch/sparc/math-emu/sfp-util_64.h | |||
@@ -112,3 +112,9 @@ | |||
112 | 112 | ||
113 | #define abort() \ | 113 | #define abort() \ |
114 | return 0 | 114 | return 0 |
115 | |||
116 | #ifdef __BIG_ENDIAN | ||
117 | #define __BYTE_ORDER __BIG_ENDIAN | ||
118 | #else | ||
119 | #define __BYTE_ORDER __LITTLE_ENDIAN | ||
120 | #endif | ||
diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S index 7fcad58e216d..69268014dd8e 100644 --- a/arch/um/kernel/dyn.lds.S +++ b/arch/um/kernel/dyn.lds.S | |||
@@ -94,7 +94,7 @@ SECTIONS | |||
94 | .data : { | 94 | .data : { |
95 | INIT_TASK_DATA(KERNEL_STACK_SIZE) | 95 | INIT_TASK_DATA(KERNEL_STACK_SIZE) |
96 | . = ALIGN(KERNEL_STACK_SIZE); | 96 | . = ALIGN(KERNEL_STACK_SIZE); |
97 | *(.data.init_irqstack) | 97 | *(.data..init_irqstack) |
98 | DATA_DATA | 98 | DATA_DATA |
99 | *(.data.* .gnu.linkonce.d.*) | 99 | *(.data.* .gnu.linkonce.d.*) |
100 | SORT(CONSTRUCTORS) | 100 | SORT(CONSTRUCTORS) |
diff --git a/arch/um/kernel/init_task.c b/arch/um/kernel/init_task.c index 8aa77b61a5ff..ddc9698b66ed 100644 --- a/arch/um/kernel/init_task.c +++ b/arch/um/kernel/init_task.c | |||
@@ -34,5 +34,5 @@ union thread_union init_thread_union __init_task_data = | |||
34 | { INIT_THREAD_INFO(init_task) }; | 34 | { INIT_THREAD_INFO(init_task) }; |
35 | 35 | ||
36 | union thread_union cpu0_irqstack | 36 | union thread_union cpu0_irqstack |
37 | __attribute__((__section__(".data.init_irqstack"))) = | 37 | __attribute__((__section__(".data..init_irqstack"))) = |
38 | { INIT_THREAD_INFO(init_task) }; | 38 | { INIT_THREAD_INFO(init_task) }; |
diff --git a/arch/um/kernel/skas/uaccess.c b/arch/um/kernel/skas/uaccess.c index e22c96993db3..696634214dc6 100644 --- a/arch/um/kernel/skas/uaccess.c +++ b/arch/um/kernel/skas/uaccess.c | |||
@@ -81,7 +81,7 @@ static int do_op_one_page(unsigned long addr, int len, int is_write, | |||
81 | 81 | ||
82 | current->thread.fault_catcher = NULL; | 82 | current->thread.fault_catcher = NULL; |
83 | 83 | ||
84 | kunmap_atomic(page, KM_UML_USERCOPY); | 84 | kunmap_atomic((void *)addr, KM_UML_USERCOPY); |
85 | 85 | ||
86 | return n; | 86 | return n; |
87 | } | 87 | } |
diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S index e7a6cca667aa..ec6378550671 100644 --- a/arch/um/kernel/uml.lds.S +++ b/arch/um/kernel/uml.lds.S | |||
@@ -50,7 +50,7 @@ SECTIONS | |||
50 | { | 50 | { |
51 | INIT_TASK_DATA(KERNEL_STACK_SIZE) | 51 | INIT_TASK_DATA(KERNEL_STACK_SIZE) |
52 | . = ALIGN(KERNEL_STACK_SIZE); | 52 | . = ALIGN(KERNEL_STACK_SIZE); |
53 | *(.data.init_irqstack) | 53 | *(.data..init_irqstack) |
54 | DATA_DATA | 54 | DATA_DATA |
55 | *(.gnu.linkonce.d*) | 55 | *(.gnu.linkonce.d*) |
56 | CONSTRUCTORS | 56 | CONSTRUCTORS |
diff --git a/arch/x86/.gitignore b/arch/x86/.gitignore new file mode 100644 index 000000000000..028079065af6 --- /dev/null +++ b/arch/x86/.gitignore | |||
@@ -0,0 +1,3 @@ | |||
1 | boot/compressed/vmlinux | ||
2 | tools/test_get_len | ||
3 | |||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index e0c619c55b4e..dcb0593b4a66 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -109,6 +109,9 @@ config SBUS | |||
109 | config NEED_DMA_MAP_STATE | 109 | config NEED_DMA_MAP_STATE |
110 | def_bool (X86_64 || DMAR || DMA_API_DEBUG) | 110 | def_bool (X86_64 || DMAR || DMA_API_DEBUG) |
111 | 111 | ||
112 | config NEED_SG_DMA_LENGTH | ||
113 | def_bool y | ||
114 | |||
112 | config GENERIC_ISA_DMA | 115 | config GENERIC_ISA_DMA |
113 | def_bool y | 116 | def_bool y |
114 | 117 | ||
@@ -1703,6 +1706,10 @@ config HAVE_ARCH_EARLY_PFN_TO_NID | |||
1703 | def_bool X86_64 | 1706 | def_bool X86_64 |
1704 | depends on NUMA | 1707 | depends on NUMA |
1705 | 1708 | ||
1709 | config USE_PERCPU_NUMA_NODE_ID | ||
1710 | def_bool X86_64 | ||
1711 | depends on NUMA | ||
1712 | |||
1706 | menu "Power management and ACPI options" | 1713 | menu "Power management and ACPI options" |
1707 | 1714 | ||
1708 | config ARCH_HIBERNATION_HEADER | 1715 | config ARCH_HIBERNATION_HEADER |
diff --git a/arch/x86/boot/compressed/mkpiggy.c b/arch/x86/boot/compressed/mkpiggy.c index bcbd36c41432..5c228129d175 100644 --- a/arch/x86/boot/compressed/mkpiggy.c +++ b/arch/x86/boot/compressed/mkpiggy.c | |||
@@ -77,7 +77,7 @@ int main(int argc, char *argv[]) | |||
77 | offs += 32*1024 + 18; /* Add 32K + 18 bytes slack */ | 77 | offs += 32*1024 + 18; /* Add 32K + 18 bytes slack */ |
78 | offs = (offs+4095) & ~4095; /* Round to a 4K boundary */ | 78 | offs = (offs+4095) & ~4095; /* Round to a 4K boundary */ |
79 | 79 | ||
80 | printf(".section \".rodata.compressed\",\"a\",@progbits\n"); | 80 | printf(".section \".rodata..compressed\",\"a\",@progbits\n"); |
81 | printf(".globl z_input_len\n"); | 81 | printf(".globl z_input_len\n"); |
82 | printf("z_input_len = %lu\n", ilen); | 82 | printf("z_input_len = %lu\n", ilen); |
83 | printf(".globl z_output_len\n"); | 83 | printf(".globl z_output_len\n"); |
diff --git a/arch/x86/boot/compressed/relocs.c b/arch/x86/boot/compressed/relocs.c index 7b1aaa20c7b5..89bbf4e4d05d 100644 --- a/arch/x86/boot/compressed/relocs.c +++ b/arch/x86/boot/compressed/relocs.c | |||
@@ -195,11 +195,11 @@ static const char *sym_name(const char *sym_strtab, Elf32_Sym *sym) | |||
195 | 195 | ||
196 | 196 | ||
197 | 197 | ||
198 | #if __BYTE_ORDER == __LITTLE_ENDIAN | 198 | #if BYTE_ORDER == LITTLE_ENDIAN |
199 | #define le16_to_cpu(val) (val) | 199 | #define le16_to_cpu(val) (val) |
200 | #define le32_to_cpu(val) (val) | 200 | #define le32_to_cpu(val) (val) |
201 | #endif | 201 | #endif |
202 | #if __BYTE_ORDER == __BIG_ENDIAN | 202 | #if BYTE_ORDER == BIG_ENDIAN |
203 | #define le16_to_cpu(val) bswap_16(val) | 203 | #define le16_to_cpu(val) bswap_16(val) |
204 | #define le32_to_cpu(val) bswap_32(val) | 204 | #define le32_to_cpu(val) bswap_32(val) |
205 | #endif | 205 | #endif |
diff --git a/arch/x86/boot/compressed/vmlinux.lds.S b/arch/x86/boot/compressed/vmlinux.lds.S index a6f1a59a5b0c..5ddabceee124 100644 --- a/arch/x86/boot/compressed/vmlinux.lds.S +++ b/arch/x86/boot/compressed/vmlinux.lds.S | |||
@@ -26,8 +26,8 @@ SECTIONS | |||
26 | HEAD_TEXT | 26 | HEAD_TEXT |
27 | _ehead = . ; | 27 | _ehead = . ; |
28 | } | 28 | } |
29 | .rodata.compressed : { | 29 | .rodata..compressed : { |
30 | *(.rodata.compressed) | 30 | *(.rodata..compressed) |
31 | } | 31 | } |
32 | .text : { | 32 | .text : { |
33 | _text = .; /* Text */ | 33 | _text = .; /* Text */ |
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h index 56f462cf22d2..aa2c39d968fc 100644 --- a/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h | |||
@@ -85,7 +85,6 @@ extern int acpi_ioapic; | |||
85 | extern int acpi_noirq; | 85 | extern int acpi_noirq; |
86 | extern int acpi_strict; | 86 | extern int acpi_strict; |
87 | extern int acpi_disabled; | 87 | extern int acpi_disabled; |
88 | extern int acpi_ht; | ||
89 | extern int acpi_pci_disabled; | 88 | extern int acpi_pci_disabled; |
90 | extern int acpi_skip_timer_override; | 89 | extern int acpi_skip_timer_override; |
91 | extern int acpi_use_timer_override; | 90 | extern int acpi_use_timer_override; |
@@ -97,7 +96,6 @@ void acpi_pic_sci_set_trigger(unsigned int, u16); | |||
97 | static inline void disable_acpi(void) | 96 | static inline void disable_acpi(void) |
98 | { | 97 | { |
99 | acpi_disabled = 1; | 98 | acpi_disabled = 1; |
100 | acpi_ht = 0; | ||
101 | acpi_pci_disabled = 1; | 99 | acpi_pci_disabled = 1; |
102 | acpi_noirq = 1; | 100 | acpi_noirq = 1; |
103 | } | 101 | } |
diff --git a/arch/x86/include/asm/cache.h b/arch/x86/include/asm/cache.h index 2f9047cfaaca..48f99f15452e 100644 --- a/arch/x86/include/asm/cache.h +++ b/arch/x86/include/asm/cache.h | |||
@@ -7,7 +7,7 @@ | |||
7 | #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT) | 7 | #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT) |
8 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | 8 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) |
9 | 9 | ||
10 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 10 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
11 | 11 | ||
12 | #define INTERNODE_CACHE_SHIFT CONFIG_X86_INTERNODE_CACHE_SHIFT | 12 | #define INTERNODE_CACHE_SHIFT CONFIG_X86_INTERNODE_CACHE_SHIFT |
13 | #define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT) | 13 | #define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT) |
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index dca9c545f44e..468145914389 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h | |||
@@ -332,6 +332,7 @@ static __always_inline __pure bool __static_cpu_has(u8 bit) | |||
332 | #endif | 332 | #endif |
333 | } | 333 | } |
334 | 334 | ||
335 | #if __GNUC__ >= 4 | ||
335 | #define static_cpu_has(bit) \ | 336 | #define static_cpu_has(bit) \ |
336 | ( \ | 337 | ( \ |
337 | __builtin_constant_p(boot_cpu_has(bit)) ? \ | 338 | __builtin_constant_p(boot_cpu_has(bit)) ? \ |
@@ -340,6 +341,12 @@ static __always_inline __pure bool __static_cpu_has(u8 bit) | |||
340 | __static_cpu_has(bit) : \ | 341 | __static_cpu_has(bit) : \ |
341 | boot_cpu_has(bit) \ | 342 | boot_cpu_has(bit) \ |
342 | ) | 343 | ) |
344 | #else | ||
345 | /* | ||
346 | * gcc 3.x is too stupid to do the static test; fall back to dynamic. | ||
347 | */ | ||
348 | #define static_cpu_has(bit) boot_cpu_has(bit) | ||
349 | #endif | ||
343 | 350 | ||
344 | #endif /* defined(__KERNEL__) && !defined(__ASSEMBLY__) */ | 351 | #endif /* defined(__KERNEL__) && !defined(__ASSEMBLY__) */ |
345 | 352 | ||
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h index 6c3fdd631ed3..f32a4301c4d4 100644 --- a/arch/x86/include/asm/mce.h +++ b/arch/x86/include/asm/mce.h | |||
@@ -225,5 +225,13 @@ extern void mcheck_intel_therm_init(void); | |||
225 | static inline void mcheck_intel_therm_init(void) { } | 225 | static inline void mcheck_intel_therm_init(void) { } |
226 | #endif | 226 | #endif |
227 | 227 | ||
228 | /* | ||
229 | * Used by APEI to report memory error via /dev/mcelog | ||
230 | */ | ||
231 | |||
232 | struct cper_sec_mem_err; | ||
233 | extern void apei_mce_report_mem_error(int corrected, | ||
234 | struct cper_sec_mem_err *mem_err); | ||
235 | |||
228 | #endif /* __KERNEL__ */ | 236 | #endif /* __KERNEL__ */ |
229 | #endif /* _ASM_X86_MCE_H */ | 237 | #endif /* _ASM_X86_MCE_H */ |
diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index b49d8ca228f6..8c7ae4318629 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h | |||
@@ -110,6 +110,7 @@ | |||
110 | #define MSR_AMD64_PATCH_LOADER 0xc0010020 | 110 | #define MSR_AMD64_PATCH_LOADER 0xc0010020 |
111 | #define MSR_AMD64_OSVW_ID_LENGTH 0xc0010140 | 111 | #define MSR_AMD64_OSVW_ID_LENGTH 0xc0010140 |
112 | #define MSR_AMD64_OSVW_STATUS 0xc0010141 | 112 | #define MSR_AMD64_OSVW_STATUS 0xc0010141 |
113 | #define MSR_AMD64_DC_CFG 0xc0011022 | ||
113 | #define MSR_AMD64_IBSFETCHCTL 0xc0011030 | 114 | #define MSR_AMD64_IBSFETCHCTL 0xc0011030 |
114 | #define MSR_AMD64_IBSFETCHLINAD 0xc0011031 | 115 | #define MSR_AMD64_IBSFETCHLINAD 0xc0011031 |
115 | #define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032 | 116 | #define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032 |
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h index 8d8797eae5d7..cd2a31dc5fb8 100644 --- a/arch/x86/include/asm/pci_x86.h +++ b/arch/x86/include/asm/pci_x86.h | |||
@@ -53,6 +53,8 @@ extern int pcibios_last_bus; | |||
53 | extern struct pci_bus *pci_root_bus; | 53 | extern struct pci_bus *pci_root_bus; |
54 | extern struct pci_ops pci_root_ops; | 54 | extern struct pci_ops pci_root_ops; |
55 | 55 | ||
56 | void pcibios_scan_specific_bus(int busn); | ||
57 | |||
56 | /* pci-irq.c */ | 58 | /* pci-irq.c */ |
57 | 59 | ||
58 | struct irq_info { | 60 | struct irq_info { |
diff --git a/arch/x86/include/asm/perf_event_p4.h b/arch/x86/include/asm/perf_event_p4.h index b05400a542ff..64a8ebff06fc 100644 --- a/arch/x86/include/asm/perf_event_p4.h +++ b/arch/x86/include/asm/perf_event_p4.h | |||
@@ -89,7 +89,8 @@ | |||
89 | P4_CCCR_ENABLE) | 89 | P4_CCCR_ENABLE) |
90 | 90 | ||
91 | /* HT mask */ | 91 | /* HT mask */ |
92 | #define P4_CCCR_MASK_HT (P4_CCCR_MASK | P4_CCCR_THREAD_ANY) | 92 | #define P4_CCCR_MASK_HT \ |
93 | (P4_CCCR_MASK | P4_CCCR_OVF_PMI_T1 | P4_CCCR_THREAD_ANY) | ||
93 | 94 | ||
94 | #define P4_GEN_ESCR_EMASK(class, name, bit) \ | 95 | #define P4_GEN_ESCR_EMASK(class, name, bit) \ |
95 | class##__##name = ((1 << bit) << P4_ESCR_EVENTMASK_SHIFT) | 96 | class##__##name = ((1 << bit) << P4_ESCR_EVENTMASK_SHIFT) |
diff --git a/arch/x86/include/asm/rdc321x_defs.h b/arch/x86/include/asm/rdc321x_defs.h deleted file mode 100644 index c8e9c8bed3d0..000000000000 --- a/arch/x86/include/asm/rdc321x_defs.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #define PFX "rdc321x: " | ||
2 | |||
3 | /* General purpose configuration and data registers */ | ||
4 | #define RDC3210_CFGREG_ADDR 0x0CF8 | ||
5 | #define RDC3210_CFGREG_DATA 0x0CFC | ||
6 | |||
7 | #define RDC321X_GPIO_CTRL_REG1 0x48 | ||
8 | #define RDC321X_GPIO_CTRL_REG2 0x84 | ||
9 | #define RDC321X_GPIO_DATA_REG1 0x4c | ||
10 | #define RDC321X_GPIO_DATA_REG2 0x88 | ||
11 | |||
12 | #define RDC321X_MAX_GPIO 58 | ||
diff --git a/arch/x86/include/asm/scatterlist.h b/arch/x86/include/asm/scatterlist.h index 75af592677ec..fb0b1874396f 100644 --- a/arch/x86/include/asm/scatterlist.h +++ b/arch/x86/include/asm/scatterlist.h | |||
@@ -1,8 +1,9 @@ | |||
1 | #ifndef _ASM_X86_SCATTERLIST_H | 1 | #ifndef _ASM_X86_SCATTERLIST_H |
2 | #define _ASM_X86_SCATTERLIST_H | 2 | #define _ASM_X86_SCATTERLIST_H |
3 | 3 | ||
4 | #define ISA_DMA_THRESHOLD (0x00ffffff) | ||
5 | |||
6 | #include <asm-generic/scatterlist.h> | 4 | #include <asm-generic/scatterlist.h> |
7 | 5 | ||
6 | #define ISA_DMA_THRESHOLD (0x00ffffff) | ||
7 | #define ARCH_HAS_SG_CHAIN | ||
8 | |||
8 | #endif /* _ASM_X86_SCATTERLIST_H */ | 9 | #endif /* _ASM_X86_SCATTERLIST_H */ |
diff --git a/arch/x86/include/asm/suspend_32.h b/arch/x86/include/asm/suspend_32.h index 48dcfa62ea07..fd921c3a6841 100644 --- a/arch/x86/include/asm/suspend_32.h +++ b/arch/x86/include/asm/suspend_32.h | |||
@@ -15,6 +15,8 @@ static inline int arch_prepare_suspend(void) { return 0; } | |||
15 | struct saved_context { | 15 | struct saved_context { |
16 | u16 es, fs, gs, ss; | 16 | u16 es, fs, gs, ss; |
17 | unsigned long cr0, cr2, cr3, cr4; | 17 | unsigned long cr0, cr2, cr3, cr4; |
18 | u64 misc_enable; | ||
19 | bool misc_enable_saved; | ||
18 | struct desc_ptr gdt; | 20 | struct desc_ptr gdt; |
19 | struct desc_ptr idt; | 21 | struct desc_ptr idt; |
20 | u16 ldt; | 22 | u16 ldt; |
diff --git a/arch/x86/include/asm/suspend_64.h b/arch/x86/include/asm/suspend_64.h index 06284f42b759..8d942afae681 100644 --- a/arch/x86/include/asm/suspend_64.h +++ b/arch/x86/include/asm/suspend_64.h | |||
@@ -27,6 +27,8 @@ struct saved_context { | |||
27 | u16 ds, es, fs, gs, ss; | 27 | u16 ds, es, fs, gs, ss; |
28 | unsigned long gs_base, gs_kernel_base, fs_base; | 28 | unsigned long gs_base, gs_kernel_base, fs_base; |
29 | unsigned long cr0, cr2, cr3, cr4, cr8; | 29 | unsigned long cr0, cr2, cr3, cr4, cr8; |
30 | u64 misc_enable; | ||
31 | bool misc_enable_saved; | ||
30 | unsigned long efer; | 32 | unsigned long efer; |
31 | u16 gdt_pad; | 33 | u16 gdt_pad; |
32 | u16 gdt_limit; | 34 | u16 gdt_limit; |
diff --git a/arch/x86/include/asm/thread_info.h b/arch/x86/include/asm/thread_info.h index 62ba9400cc43..f0b6e5dbc5a0 100644 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h | |||
@@ -239,8 +239,8 @@ static inline struct thread_info *current_thread_info(void) | |||
239 | #define TS_USEDFPU 0x0001 /* FPU was used by this task | 239 | #define TS_USEDFPU 0x0001 /* FPU was used by this task |
240 | this quantum (SMP) */ | 240 | this quantum (SMP) */ |
241 | #define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/ | 241 | #define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/ |
242 | #define TS_POLLING 0x0004 /* true if in idle loop | 242 | #define TS_POLLING 0x0004 /* idle task polling need_resched, |
243 | and not sleeping */ | 243 | skip sending interrupt */ |
244 | #define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */ | 244 | #define TS_RESTORE_SIGMASK 0x0008 /* restore signal mask in do_signal() */ |
245 | 245 | ||
246 | #define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING) | 246 | #define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING) |
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h index c5087d796587..21899cc31e52 100644 --- a/arch/x86/include/asm/topology.h +++ b/arch/x86/include/asm/topology.h | |||
@@ -53,33 +53,29 @@ | |||
53 | extern int cpu_to_node_map[]; | 53 | extern int cpu_to_node_map[]; |
54 | 54 | ||
55 | /* Returns the number of the node containing CPU 'cpu' */ | 55 | /* Returns the number of the node containing CPU 'cpu' */ |
56 | static inline int cpu_to_node(int cpu) | 56 | static inline int __cpu_to_node(int cpu) |
57 | { | 57 | { |
58 | return cpu_to_node_map[cpu]; | 58 | return cpu_to_node_map[cpu]; |
59 | } | 59 | } |
60 | #define early_cpu_to_node(cpu) cpu_to_node(cpu) | 60 | #define early_cpu_to_node __cpu_to_node |
61 | #define cpu_to_node __cpu_to_node | ||
61 | 62 | ||
62 | #else /* CONFIG_X86_64 */ | 63 | #else /* CONFIG_X86_64 */ |
63 | 64 | ||
64 | /* Mappings between logical cpu number and node number */ | 65 | /* Mappings between logical cpu number and node number */ |
65 | DECLARE_EARLY_PER_CPU(int, x86_cpu_to_node_map); | 66 | DECLARE_EARLY_PER_CPU(int, x86_cpu_to_node_map); |
66 | 67 | ||
67 | /* Returns the number of the current Node. */ | ||
68 | DECLARE_PER_CPU(int, node_number); | ||
69 | #define numa_node_id() percpu_read(node_number) | ||
70 | |||
71 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS | 68 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS |
72 | extern int cpu_to_node(int cpu); | 69 | /* |
70 | * override generic percpu implementation of cpu_to_node | ||
71 | */ | ||
72 | extern int __cpu_to_node(int cpu); | ||
73 | #define cpu_to_node __cpu_to_node | ||
74 | |||
73 | extern int early_cpu_to_node(int cpu); | 75 | extern int early_cpu_to_node(int cpu); |
74 | 76 | ||
75 | #else /* !CONFIG_DEBUG_PER_CPU_MAPS */ | 77 | #else /* !CONFIG_DEBUG_PER_CPU_MAPS */ |
76 | 78 | ||
77 | /* Returns the number of the node containing CPU 'cpu' */ | ||
78 | static inline int cpu_to_node(int cpu) | ||
79 | { | ||
80 | return per_cpu(x86_cpu_to_node_map, cpu); | ||
81 | } | ||
82 | |||
83 | /* Same function but used if called before per_cpu areas are setup */ | 79 | /* Same function but used if called before per_cpu areas are setup */ |
84 | static inline int early_cpu_to_node(int cpu) | 80 | static inline int early_cpu_to_node(int cpu) |
85 | { | 81 | { |
@@ -170,6 +166,10 @@ static inline int numa_node_id(void) | |||
170 | { | 166 | { |
171 | return 0; | 167 | return 0; |
172 | } | 168 | } |
169 | /* | ||
170 | * indicate override: | ||
171 | */ | ||
172 | #define numa_node_id numa_node_id | ||
173 | 173 | ||
174 | static inline int early_cpu_to_node(int cpu) | 174 | static inline int early_cpu_to_node(int cpu) |
175 | { | 175 | { |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 488be461a380..60cc4058ed5f 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -63,7 +63,6 @@ EXPORT_SYMBOL(acpi_disabled); | |||
63 | int acpi_noirq; /* skip ACPI IRQ initialization */ | 63 | int acpi_noirq; /* skip ACPI IRQ initialization */ |
64 | int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */ | 64 | int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */ |
65 | EXPORT_SYMBOL(acpi_pci_disabled); | 65 | EXPORT_SYMBOL(acpi_pci_disabled); |
66 | int acpi_ht __initdata = 1; /* enable HT */ | ||
67 | 66 | ||
68 | int acpi_lapic; | 67 | int acpi_lapic; |
69 | int acpi_ioapic; | 68 | int acpi_ioapic; |
@@ -1501,9 +1500,8 @@ void __init acpi_boot_table_init(void) | |||
1501 | 1500 | ||
1502 | /* | 1501 | /* |
1503 | * If acpi_disabled, bail out | 1502 | * If acpi_disabled, bail out |
1504 | * One exception: acpi=ht continues far enough to enumerate LAPICs | ||
1505 | */ | 1503 | */ |
1506 | if (acpi_disabled && !acpi_ht) | 1504 | if (acpi_disabled) |
1507 | return; | 1505 | return; |
1508 | 1506 | ||
1509 | /* | 1507 | /* |
@@ -1534,9 +1532,8 @@ int __init early_acpi_boot_init(void) | |||
1534 | { | 1532 | { |
1535 | /* | 1533 | /* |
1536 | * If acpi_disabled, bail out | 1534 | * If acpi_disabled, bail out |
1537 | * One exception: acpi=ht continues far enough to enumerate LAPICs | ||
1538 | */ | 1535 | */ |
1539 | if (acpi_disabled && !acpi_ht) | 1536 | if (acpi_disabled) |
1540 | return 1; | 1537 | return 1; |
1541 | 1538 | ||
1542 | /* | 1539 | /* |
@@ -1554,9 +1551,8 @@ int __init acpi_boot_init(void) | |||
1554 | 1551 | ||
1555 | /* | 1552 | /* |
1556 | * If acpi_disabled, bail out | 1553 | * If acpi_disabled, bail out |
1557 | * One exception: acpi=ht continues far enough to enumerate LAPICs | ||
1558 | */ | 1554 | */ |
1559 | if (acpi_disabled && !acpi_ht) | 1555 | if (acpi_disabled) |
1560 | return 1; | 1556 | return 1; |
1561 | 1557 | ||
1562 | acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); | 1558 | acpi_table_parse(ACPI_SIG_BOOT, acpi_parse_sbf); |
@@ -1591,21 +1587,12 @@ static int __init parse_acpi(char *arg) | |||
1591 | /* acpi=force to over-ride black-list */ | 1587 | /* acpi=force to over-ride black-list */ |
1592 | else if (strcmp(arg, "force") == 0) { | 1588 | else if (strcmp(arg, "force") == 0) { |
1593 | acpi_force = 1; | 1589 | acpi_force = 1; |
1594 | acpi_ht = 1; | ||
1595 | acpi_disabled = 0; | 1590 | acpi_disabled = 0; |
1596 | } | 1591 | } |
1597 | /* acpi=strict disables out-of-spec workarounds */ | 1592 | /* acpi=strict disables out-of-spec workarounds */ |
1598 | else if (strcmp(arg, "strict") == 0) { | 1593 | else if (strcmp(arg, "strict") == 0) { |
1599 | acpi_strict = 1; | 1594 | acpi_strict = 1; |
1600 | } | 1595 | } |
1601 | /* Limit ACPI just to boot-time to enable HT */ | ||
1602 | else if (strcmp(arg, "ht") == 0) { | ||
1603 | if (!acpi_force) { | ||
1604 | printk(KERN_WARNING "acpi=ht will be removed in Linux-2.6.35\n"); | ||
1605 | disable_acpi(); | ||
1606 | } | ||
1607 | acpi_ht = 1; | ||
1608 | } | ||
1609 | /* acpi=rsdt use RSDT instead of XSDT */ | 1596 | /* acpi=rsdt use RSDT instead of XSDT */ |
1610 | else if (strcmp(arg, "rsdt") == 0) { | 1597 | else if (strcmp(arg, "rsdt") == 0) { |
1611 | acpi_rsdt_forced = 1; | 1598 | acpi_rsdt_forced = 1; |
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index f9961034e557..82e508677b91 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
@@ -162,8 +162,6 @@ static int __init acpi_sleep_setup(char *str) | |||
162 | #endif | 162 | #endif |
163 | if (strncmp(str, "old_ordering", 12) == 0) | 163 | if (strncmp(str, "old_ordering", 12) == 0) |
164 | acpi_old_suspend_ordering(); | 164 | acpi_old_suspend_ordering(); |
165 | if (strncmp(str, "sci_force_enable", 16) == 0) | ||
166 | acpi_set_sci_en_on_resume(); | ||
167 | str = strchr(str, ','); | 165 | str = strchr(str, ','); |
168 | if (str != NULL) | 166 | if (str != NULL) |
169 | str += strspn(str, ", \t"); | 167 | str += strspn(str, ", \t"); |
diff --git a/arch/x86/kernel/acpi/wakeup_32.S b/arch/x86/kernel/acpi/wakeup_32.S index 8ded418b0593..13ab720573e3 100644 --- a/arch/x86/kernel/acpi/wakeup_32.S +++ b/arch/x86/kernel/acpi/wakeup_32.S | |||
@@ -1,4 +1,4 @@ | |||
1 | .section .text.page_aligned | 1 | .section .text..page_aligned |
2 | #include <linux/linkage.h> | 2 | #include <linux/linkage.h> |
3 | #include <asm/segment.h> | 3 | #include <asm/segment.h> |
4 | #include <asm/page_types.h> | 4 | #include <asm/page_types.h> |
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index fa5a1474cd18..0d20286d78c6 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
@@ -1487,6 +1487,7 @@ static int __attach_device(struct device *dev, | |||
1487 | struct protection_domain *domain) | 1487 | struct protection_domain *domain) |
1488 | { | 1488 | { |
1489 | struct iommu_dev_data *dev_data, *alias_data; | 1489 | struct iommu_dev_data *dev_data, *alias_data; |
1490 | int ret; | ||
1490 | 1491 | ||
1491 | dev_data = get_dev_data(dev); | 1492 | dev_data = get_dev_data(dev); |
1492 | alias_data = get_dev_data(dev_data->alias); | 1493 | alias_data = get_dev_data(dev_data->alias); |
@@ -1498,13 +1499,14 @@ static int __attach_device(struct device *dev, | |||
1498 | spin_lock(&domain->lock); | 1499 | spin_lock(&domain->lock); |
1499 | 1500 | ||
1500 | /* Some sanity checks */ | 1501 | /* Some sanity checks */ |
1502 | ret = -EBUSY; | ||
1501 | if (alias_data->domain != NULL && | 1503 | if (alias_data->domain != NULL && |
1502 | alias_data->domain != domain) | 1504 | alias_data->domain != domain) |
1503 | return -EBUSY; | 1505 | goto out_unlock; |
1504 | 1506 | ||
1505 | if (dev_data->domain != NULL && | 1507 | if (dev_data->domain != NULL && |
1506 | dev_data->domain != domain) | 1508 | dev_data->domain != domain) |
1507 | return -EBUSY; | 1509 | goto out_unlock; |
1508 | 1510 | ||
1509 | /* Do real assignment */ | 1511 | /* Do real assignment */ |
1510 | if (dev_data->alias != dev) { | 1512 | if (dev_data->alias != dev) { |
@@ -1520,10 +1522,14 @@ static int __attach_device(struct device *dev, | |||
1520 | 1522 | ||
1521 | atomic_inc(&dev_data->bind); | 1523 | atomic_inc(&dev_data->bind); |
1522 | 1524 | ||
1525 | ret = 0; | ||
1526 | |||
1527 | out_unlock: | ||
1528 | |||
1523 | /* ready */ | 1529 | /* ready */ |
1524 | spin_unlock(&domain->lock); | 1530 | spin_unlock(&domain->lock); |
1525 | 1531 | ||
1526 | return 0; | 1532 | return ret; |
1527 | } | 1533 | } |
1528 | 1534 | ||
1529 | /* | 1535 | /* |
@@ -2324,10 +2330,6 @@ int __init amd_iommu_init_dma_ops(void) | |||
2324 | 2330 | ||
2325 | iommu_detected = 1; | 2331 | iommu_detected = 1; |
2326 | swiotlb = 0; | 2332 | swiotlb = 0; |
2327 | #ifdef CONFIG_GART_IOMMU | ||
2328 | gart_iommu_aperture_disabled = 1; | ||
2329 | gart_iommu_aperture = 0; | ||
2330 | #endif | ||
2331 | 2333 | ||
2332 | /* Make the driver finally visible to the drivers */ | 2334 | /* Make the driver finally visible to the drivers */ |
2333 | dma_ops = &amd_iommu_dma_ops; | 2335 | dma_ops = &amd_iommu_dma_ops; |
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c index 3bacb4d0844c..3cc63e2b8dd4 100644 --- a/arch/x86/kernel/amd_iommu_init.c +++ b/arch/x86/kernel/amd_iommu_init.c | |||
@@ -287,8 +287,12 @@ static u8 * __init iommu_map_mmio_space(u64 address) | |||
287 | { | 287 | { |
288 | u8 *ret; | 288 | u8 *ret; |
289 | 289 | ||
290 | if (!request_mem_region(address, MMIO_REGION_LENGTH, "amd_iommu")) | 290 | if (!request_mem_region(address, MMIO_REGION_LENGTH, "amd_iommu")) { |
291 | pr_err("AMD-Vi: Can not reserve memory region %llx for mmio\n", | ||
292 | address); | ||
293 | pr_err("AMD-Vi: This is a BIOS bug. Please contact your hardware vendor\n"); | ||
291 | return NULL; | 294 | return NULL; |
295 | } | ||
292 | 296 | ||
293 | ret = ioremap_nocache(address, MMIO_REGION_LENGTH); | 297 | ret = ioremap_nocache(address, MMIO_REGION_LENGTH); |
294 | if (ret != NULL) | 298 | if (ret != NULL) |
@@ -1314,7 +1318,7 @@ static int __init amd_iommu_init(void) | |||
1314 | ret = amd_iommu_init_dma_ops(); | 1318 | ret = amd_iommu_init_dma_ops(); |
1315 | 1319 | ||
1316 | if (ret) | 1320 | if (ret) |
1317 | goto free; | 1321 | goto free_disable; |
1318 | 1322 | ||
1319 | amd_iommu_init_api(); | 1323 | amd_iommu_init_api(); |
1320 | 1324 | ||
@@ -1332,9 +1336,10 @@ static int __init amd_iommu_init(void) | |||
1332 | out: | 1336 | out: |
1333 | return ret; | 1337 | return ret; |
1334 | 1338 | ||
1335 | free: | 1339 | free_disable: |
1336 | disable_iommus(); | 1340 | disable_iommus(); |
1337 | 1341 | ||
1342 | free: | ||
1338 | amd_iommu_uninit_devices(); | 1343 | amd_iommu_uninit_devices(); |
1339 | 1344 | ||
1340 | free_pages((unsigned long)amd_iommu_pd_alloc_bitmap, | 1345 | free_pages((unsigned long)amd_iommu_pd_alloc_bitmap, |
@@ -1353,6 +1358,15 @@ free: | |||
1353 | 1358 | ||
1354 | free_unity_maps(); | 1359 | free_unity_maps(); |
1355 | 1360 | ||
1361 | #ifdef CONFIG_GART_IOMMU | ||
1362 | /* | ||
1363 | * We failed to initialize the AMD IOMMU - try fallback to GART | ||
1364 | * if possible. | ||
1365 | */ | ||
1366 | gart_iommu_init(); | ||
1367 | |||
1368 | #endif | ||
1369 | |||
1356 | goto out; | 1370 | goto out; |
1357 | } | 1371 | } |
1358 | 1372 | ||
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index e5a4a1e01618..c02cc692985c 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c | |||
@@ -51,6 +51,7 @@ | |||
51 | #include <asm/smp.h> | 51 | #include <asm/smp.h> |
52 | #include <asm/mce.h> | 52 | #include <asm/mce.h> |
53 | #include <asm/kvm_para.h> | 53 | #include <asm/kvm_para.h> |
54 | #include <asm/tsc.h> | ||
54 | 55 | ||
55 | unsigned int num_processors; | 56 | unsigned int num_processors; |
56 | 57 | ||
@@ -1151,8 +1152,13 @@ static void __cpuinit lapic_setup_esr(void) | |||
1151 | */ | 1152 | */ |
1152 | void __cpuinit setup_local_APIC(void) | 1153 | void __cpuinit setup_local_APIC(void) |
1153 | { | 1154 | { |
1154 | unsigned int value; | 1155 | unsigned int value, queued; |
1155 | int i, j; | 1156 | int i, j, acked = 0; |
1157 | unsigned long long tsc = 0, ntsc; | ||
1158 | long long max_loops = cpu_khz; | ||
1159 | |||
1160 | if (cpu_has_tsc) | ||
1161 | rdtscll(tsc); | ||
1156 | 1162 | ||
1157 | if (disable_apic) { | 1163 | if (disable_apic) { |
1158 | arch_disable_smp_support(); | 1164 | arch_disable_smp_support(); |
@@ -1204,13 +1210,32 @@ void __cpuinit setup_local_APIC(void) | |||
1204 | * the interrupt. Hence a vector might get locked. It was noticed | 1210 | * the interrupt. Hence a vector might get locked. It was noticed |
1205 | * for timer irq (vector 0x31). Issue an extra EOI to clear ISR. | 1211 | * for timer irq (vector 0x31). Issue an extra EOI to clear ISR. |
1206 | */ | 1212 | */ |
1207 | for (i = APIC_ISR_NR - 1; i >= 0; i--) { | 1213 | do { |
1208 | value = apic_read(APIC_ISR + i*0x10); | 1214 | queued = 0; |
1209 | for (j = 31; j >= 0; j--) { | 1215 | for (i = APIC_ISR_NR - 1; i >= 0; i--) |
1210 | if (value & (1<<j)) | 1216 | queued |= apic_read(APIC_IRR + i*0x10); |
1211 | ack_APIC_irq(); | 1217 | |
1218 | for (i = APIC_ISR_NR - 1; i >= 0; i--) { | ||
1219 | value = apic_read(APIC_ISR + i*0x10); | ||
1220 | for (j = 31; j >= 0; j--) { | ||
1221 | if (value & (1<<j)) { | ||
1222 | ack_APIC_irq(); | ||
1223 | acked++; | ||
1224 | } | ||
1225 | } | ||
1212 | } | 1226 | } |
1213 | } | 1227 | if (acked > 256) { |
1228 | printk(KERN_ERR "LAPIC pending interrupts after %d EOI\n", | ||
1229 | acked); | ||
1230 | break; | ||
1231 | } | ||
1232 | if (cpu_has_tsc) { | ||
1233 | rdtscll(ntsc); | ||
1234 | max_loops = (cpu_khz << 10) - (ntsc - tsc); | ||
1235 | } else | ||
1236 | max_loops--; | ||
1237 | } while (queued && max_loops > 0); | ||
1238 | WARN_ON(max_loops <= 0); | ||
1214 | 1239 | ||
1215 | /* | 1240 | /* |
1216 | * Now that we are all set up, enable the APIC | 1241 | * Now that we are all set up, enable the APIC |
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index cc83a002786e..68e4a6f2211e 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -1121,9 +1121,9 @@ void __cpuinit cpu_init(void) | |||
1121 | oist = &per_cpu(orig_ist, cpu); | 1121 | oist = &per_cpu(orig_ist, cpu); |
1122 | 1122 | ||
1123 | #ifdef CONFIG_NUMA | 1123 | #ifdef CONFIG_NUMA |
1124 | if (cpu != 0 && percpu_read(node_number) == 0 && | 1124 | if (cpu != 0 && percpu_read(numa_node) == 0 && |
1125 | cpu_to_node(cpu) != NUMA_NO_NODE) | 1125 | early_cpu_to_node(cpu) != NUMA_NO_NODE) |
1126 | percpu_write(node_number, cpu_to_node(cpu)); | 1126 | set_numa_node(early_cpu_to_node(cpu)); |
1127 | #endif | 1127 | #endif |
1128 | 1128 | ||
1129 | me = current; | 1129 | me = current; |
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 6f3dc8fbbfdc..7ec2123838e6 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
@@ -1497,8 +1497,8 @@ static struct cpufreq_driver cpufreq_amd64_driver = { | |||
1497 | * simply keep the boost-disable flag in sync with the current global | 1497 | * simply keep the boost-disable flag in sync with the current global |
1498 | * state. | 1498 | * state. |
1499 | */ | 1499 | */ |
1500 | static int __cpuinit cpb_notify(struct notifier_block *nb, unsigned long action, | 1500 | static int cpb_notify(struct notifier_block *nb, unsigned long action, |
1501 | void *hcpu) | 1501 | void *hcpu) |
1502 | { | 1502 | { |
1503 | unsigned cpu = (long)hcpu; | 1503 | unsigned cpu = (long)hcpu; |
1504 | u32 lo, hi; | 1504 | u32 lo, hi; |
@@ -1528,7 +1528,7 @@ static int __cpuinit cpb_notify(struct notifier_block *nb, unsigned long action, | |||
1528 | return NOTIFY_OK; | 1528 | return NOTIFY_OK; |
1529 | } | 1529 | } |
1530 | 1530 | ||
1531 | static struct notifier_block __cpuinitdata cpb_nb = { | 1531 | static struct notifier_block cpb_nb = { |
1532 | .notifier_call = cpb_notify, | 1532 | .notifier_call = cpb_notify, |
1533 | }; | 1533 | }; |
1534 | 1534 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/Makefile b/arch/x86/kernel/cpu/mcheck/Makefile index 4ac6d48fe11b..bb34b03af252 100644 --- a/arch/x86/kernel/cpu/mcheck/Makefile +++ b/arch/x86/kernel/cpu/mcheck/Makefile | |||
@@ -7,3 +7,5 @@ obj-$(CONFIG_X86_MCE_THRESHOLD) += threshold.o | |||
7 | obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o | 7 | obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o |
8 | 8 | ||
9 | obj-$(CONFIG_X86_THERMAL_VECTOR) += therm_throt.o | 9 | obj-$(CONFIG_X86_THERMAL_VECTOR) += therm_throt.o |
10 | |||
11 | obj-$(CONFIG_ACPI_APEI) += mce-apei.o | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce-apei.c b/arch/x86/kernel/cpu/mcheck/mce-apei.c new file mode 100644 index 000000000000..745b54f9be89 --- /dev/null +++ b/arch/x86/kernel/cpu/mcheck/mce-apei.c | |||
@@ -0,0 +1,138 @@ | |||
1 | /* | ||
2 | * Bridge between MCE and APEI | ||
3 | * | ||
4 | * On some machine, corrected memory errors are reported via APEI | ||
5 | * generic hardware error source (GHES) instead of corrected Machine | ||
6 | * Check. These corrected memory errors can be reported to user space | ||
7 | * through /dev/mcelog via faking a corrected Machine Check, so that | ||
8 | * the error memory page can be offlined by /sbin/mcelog if the error | ||
9 | * count for one page is beyond the threshold. | ||
10 | * | ||
11 | * For fatal MCE, save MCE record into persistent storage via ERST, so | ||
12 | * that the MCE record can be logged after reboot via ERST. | ||
13 | * | ||
14 | * Copyright 2010 Intel Corp. | ||
15 | * Author: Huang Ying <ying.huang@intel.com> | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or | ||
18 | * modify it under the terms of the GNU General Public License version | ||
19 | * 2 as published by the Free Software Foundation. | ||
20 | * | ||
21 | * This program is distributed in the hope that it will be useful, | ||
22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
24 | * GNU General Public License for more details. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License | ||
27 | * along with this program; if not, write to the Free Software | ||
28 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
29 | */ | ||
30 | |||
31 | #include <linux/kernel.h> | ||
32 | #include <linux/acpi.h> | ||
33 | #include <linux/cper.h> | ||
34 | #include <acpi/apei.h> | ||
35 | #include <asm/mce.h> | ||
36 | |||
37 | #include "mce-internal.h" | ||
38 | |||
39 | void apei_mce_report_mem_error(int corrected, struct cper_sec_mem_err *mem_err) | ||
40 | { | ||
41 | struct mce m; | ||
42 | |||
43 | /* Only corrected MC is reported */ | ||
44 | if (!corrected) | ||
45 | return; | ||
46 | |||
47 | mce_setup(&m); | ||
48 | m.bank = 1; | ||
49 | /* Fake a memory read corrected error with unknown channel */ | ||
50 | m.status = MCI_STATUS_VAL | MCI_STATUS_EN | MCI_STATUS_ADDRV | 0x9f; | ||
51 | m.addr = mem_err->physical_addr; | ||
52 | mce_log(&m); | ||
53 | mce_notify_irq(); | ||
54 | } | ||
55 | EXPORT_SYMBOL_GPL(apei_mce_report_mem_error); | ||
56 | |||
57 | #define CPER_CREATOR_MCE \ | ||
58 | UUID_LE(0x75a574e3, 0x5052, 0x4b29, 0x8a, 0x8e, 0xbe, 0x2c, \ | ||
59 | 0x64, 0x90, 0xb8, 0x9d) | ||
60 | #define CPER_SECTION_TYPE_MCE \ | ||
61 | UUID_LE(0xfe08ffbe, 0x95e4, 0x4be7, 0xbc, 0x73, 0x40, 0x96, \ | ||
62 | 0x04, 0x4a, 0x38, 0xfc) | ||
63 | |||
64 | /* | ||
65 | * CPER specification (in UEFI specification 2.3 appendix N) requires | ||
66 | * byte-packed. | ||
67 | */ | ||
68 | struct cper_mce_record { | ||
69 | struct cper_record_header hdr; | ||
70 | struct cper_section_descriptor sec_hdr; | ||
71 | struct mce mce; | ||
72 | } __packed; | ||
73 | |||
74 | int apei_write_mce(struct mce *m) | ||
75 | { | ||
76 | struct cper_mce_record rcd; | ||
77 | |||
78 | memset(&rcd, 0, sizeof(rcd)); | ||
79 | memcpy(rcd.hdr.signature, CPER_SIG_RECORD, CPER_SIG_SIZE); | ||
80 | rcd.hdr.revision = CPER_RECORD_REV; | ||
81 | rcd.hdr.signature_end = CPER_SIG_END; | ||
82 | rcd.hdr.section_count = 1; | ||
83 | rcd.hdr.error_severity = CPER_SER_FATAL; | ||
84 | /* timestamp, platform_id, partition_id are all invalid */ | ||
85 | rcd.hdr.validation_bits = 0; | ||
86 | rcd.hdr.record_length = sizeof(rcd); | ||
87 | rcd.hdr.creator_id = CPER_CREATOR_MCE; | ||
88 | rcd.hdr.notification_type = CPER_NOTIFY_MCE; | ||
89 | rcd.hdr.record_id = cper_next_record_id(); | ||
90 | rcd.hdr.flags = CPER_HW_ERROR_FLAGS_PREVERR; | ||
91 | |||
92 | rcd.sec_hdr.section_offset = (void *)&rcd.mce - (void *)&rcd; | ||
93 | rcd.sec_hdr.section_length = sizeof(rcd.mce); | ||
94 | rcd.sec_hdr.revision = CPER_SEC_REV; | ||
95 | /* fru_id and fru_text is invalid */ | ||
96 | rcd.sec_hdr.validation_bits = 0; | ||
97 | rcd.sec_hdr.flags = CPER_SEC_PRIMARY; | ||
98 | rcd.sec_hdr.section_type = CPER_SECTION_TYPE_MCE; | ||
99 | rcd.sec_hdr.section_severity = CPER_SER_FATAL; | ||
100 | |||
101 | memcpy(&rcd.mce, m, sizeof(*m)); | ||
102 | |||
103 | return erst_write(&rcd.hdr); | ||
104 | } | ||
105 | |||
106 | ssize_t apei_read_mce(struct mce *m, u64 *record_id) | ||
107 | { | ||
108 | struct cper_mce_record rcd; | ||
109 | ssize_t len; | ||
110 | |||
111 | len = erst_read_next(&rcd.hdr, sizeof(rcd)); | ||
112 | if (len <= 0) | ||
113 | return len; | ||
114 | /* Can not skip other records in storage via ERST unless clear them */ | ||
115 | else if (len != sizeof(rcd) || | ||
116 | uuid_le_cmp(rcd.hdr.creator_id, CPER_CREATOR_MCE)) { | ||
117 | if (printk_ratelimit()) | ||
118 | pr_warning( | ||
119 | "MCE-APEI: Can not skip the unknown record in ERST"); | ||
120 | return -EIO; | ||
121 | } | ||
122 | |||
123 | memcpy(m, &rcd.mce, sizeof(*m)); | ||
124 | *record_id = rcd.hdr.record_id; | ||
125 | |||
126 | return sizeof(*m); | ||
127 | } | ||
128 | |||
129 | /* Check whether there is record in ERST */ | ||
130 | int apei_check_mce(void) | ||
131 | { | ||
132 | return erst_get_record_count(); | ||
133 | } | ||
134 | |||
135 | int apei_clear_mce(u64 record_id) | ||
136 | { | ||
137 | return erst_clear(record_id); | ||
138 | } | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce-internal.h b/arch/x86/kernel/cpu/mcheck/mce-internal.h index 32996f9fab67..fefcc69ee8b5 100644 --- a/arch/x86/kernel/cpu/mcheck/mce-internal.h +++ b/arch/x86/kernel/cpu/mcheck/mce-internal.h | |||
@@ -28,3 +28,26 @@ extern int mce_ser; | |||
28 | 28 | ||
29 | extern struct mce_bank *mce_banks; | 29 | extern struct mce_bank *mce_banks; |
30 | 30 | ||
31 | #ifdef CONFIG_ACPI_APEI | ||
32 | int apei_write_mce(struct mce *m); | ||
33 | ssize_t apei_read_mce(struct mce *m, u64 *record_id); | ||
34 | int apei_check_mce(void); | ||
35 | int apei_clear_mce(u64 record_id); | ||
36 | #else | ||
37 | static inline int apei_write_mce(struct mce *m) | ||
38 | { | ||
39 | return -EINVAL; | ||
40 | } | ||
41 | static inline ssize_t apei_read_mce(struct mce *m, u64 *record_id) | ||
42 | { | ||
43 | return 0; | ||
44 | } | ||
45 | static inline int apei_check_mce(void) | ||
46 | { | ||
47 | return 0; | ||
48 | } | ||
49 | static inline int apei_clear_mce(u64 record_id) | ||
50 | { | ||
51 | return -EINVAL; | ||
52 | } | ||
53 | #endif | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 7a355ddcc64b..18cc42562250 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/fs.h> | 36 | #include <linux/fs.h> |
37 | #include <linux/mm.h> | 37 | #include <linux/mm.h> |
38 | #include <linux/debugfs.h> | 38 | #include <linux/debugfs.h> |
39 | #include <linux/edac_mce.h> | ||
39 | 40 | ||
40 | #include <asm/processor.h> | 41 | #include <asm/processor.h> |
41 | #include <asm/hw_irq.h> | 42 | #include <asm/hw_irq.h> |
@@ -169,6 +170,15 @@ void mce_log(struct mce *mce) | |||
169 | entry = rcu_dereference_check_mce(mcelog.next); | 170 | entry = rcu_dereference_check_mce(mcelog.next); |
170 | for (;;) { | 171 | for (;;) { |
171 | /* | 172 | /* |
173 | * If edac_mce is enabled, it will check the error type | ||
174 | * and will process it, if it is a known error. | ||
175 | * Otherwise, the error will be sent through mcelog | ||
176 | * interface | ||
177 | */ | ||
178 | if (edac_mce_parse(mce)) | ||
179 | return; | ||
180 | |||
181 | /* | ||
172 | * When the buffer fills up discard new entries. | 182 | * When the buffer fills up discard new entries. |
173 | * Assume that the earlier errors are the more | 183 | * Assume that the earlier errors are the more |
174 | * interesting ones: | 184 | * interesting ones: |
@@ -264,7 +274,7 @@ static void wait_for_panic(void) | |||
264 | 274 | ||
265 | static void mce_panic(char *msg, struct mce *final, char *exp) | 275 | static void mce_panic(char *msg, struct mce *final, char *exp) |
266 | { | 276 | { |
267 | int i; | 277 | int i, apei_err = 0; |
268 | 278 | ||
269 | if (!fake_panic) { | 279 | if (!fake_panic) { |
270 | /* | 280 | /* |
@@ -287,8 +297,11 @@ static void mce_panic(char *msg, struct mce *final, char *exp) | |||
287 | struct mce *m = &mcelog.entry[i]; | 297 | struct mce *m = &mcelog.entry[i]; |
288 | if (!(m->status & MCI_STATUS_VAL)) | 298 | if (!(m->status & MCI_STATUS_VAL)) |
289 | continue; | 299 | continue; |
290 | if (!(m->status & MCI_STATUS_UC)) | 300 | if (!(m->status & MCI_STATUS_UC)) { |
291 | print_mce(m); | 301 | print_mce(m); |
302 | if (!apei_err) | ||
303 | apei_err = apei_write_mce(m); | ||
304 | } | ||
292 | } | 305 | } |
293 | /* Now print uncorrected but with the final one last */ | 306 | /* Now print uncorrected but with the final one last */ |
294 | for (i = 0; i < MCE_LOG_LEN; i++) { | 307 | for (i = 0; i < MCE_LOG_LEN; i++) { |
@@ -297,11 +310,17 @@ static void mce_panic(char *msg, struct mce *final, char *exp) | |||
297 | continue; | 310 | continue; |
298 | if (!(m->status & MCI_STATUS_UC)) | 311 | if (!(m->status & MCI_STATUS_UC)) |
299 | continue; | 312 | continue; |
300 | if (!final || memcmp(m, final, sizeof(struct mce))) | 313 | if (!final || memcmp(m, final, sizeof(struct mce))) { |
301 | print_mce(m); | 314 | print_mce(m); |
315 | if (!apei_err) | ||
316 | apei_err = apei_write_mce(m); | ||
317 | } | ||
302 | } | 318 | } |
303 | if (final) | 319 | if (final) { |
304 | print_mce(final); | 320 | print_mce(final); |
321 | if (!apei_err) | ||
322 | apei_err = apei_write_mce(final); | ||
323 | } | ||
305 | if (cpu_missing) | 324 | if (cpu_missing) |
306 | printk(KERN_EMERG "Some CPUs didn't answer in synchronization\n"); | 325 | printk(KERN_EMERG "Some CPUs didn't answer in synchronization\n"); |
307 | print_mce_tail(); | 326 | print_mce_tail(); |
@@ -1493,6 +1512,43 @@ static void collect_tscs(void *data) | |||
1493 | rdtscll(cpu_tsc[smp_processor_id()]); | 1512 | rdtscll(cpu_tsc[smp_processor_id()]); |
1494 | } | 1513 | } |
1495 | 1514 | ||
1515 | static int mce_apei_read_done; | ||
1516 | |||
1517 | /* Collect MCE record of previous boot in persistent storage via APEI ERST. */ | ||
1518 | static int __mce_read_apei(char __user **ubuf, size_t usize) | ||
1519 | { | ||
1520 | int rc; | ||
1521 | u64 record_id; | ||
1522 | struct mce m; | ||
1523 | |||
1524 | if (usize < sizeof(struct mce)) | ||
1525 | return -EINVAL; | ||
1526 | |||
1527 | rc = apei_read_mce(&m, &record_id); | ||
1528 | /* Error or no more MCE record */ | ||
1529 | if (rc <= 0) { | ||
1530 | mce_apei_read_done = 1; | ||
1531 | return rc; | ||
1532 | } | ||
1533 | rc = -EFAULT; | ||
1534 | if (copy_to_user(*ubuf, &m, sizeof(struct mce))) | ||
1535 | return rc; | ||
1536 | /* | ||
1537 | * In fact, we should have cleared the record after that has | ||
1538 | * been flushed to the disk or sent to network in | ||
1539 | * /sbin/mcelog, but we have no interface to support that now, | ||
1540 | * so just clear it to avoid duplication. | ||
1541 | */ | ||
1542 | rc = apei_clear_mce(record_id); | ||
1543 | if (rc) { | ||
1544 | mce_apei_read_done = 1; | ||
1545 | return rc; | ||
1546 | } | ||
1547 | *ubuf += sizeof(struct mce); | ||
1548 | |||
1549 | return 0; | ||
1550 | } | ||
1551 | |||
1496 | static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, | 1552 | static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, |
1497 | loff_t *off) | 1553 | loff_t *off) |
1498 | { | 1554 | { |
@@ -1506,15 +1562,19 @@ static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, | |||
1506 | return -ENOMEM; | 1562 | return -ENOMEM; |
1507 | 1563 | ||
1508 | mutex_lock(&mce_read_mutex); | 1564 | mutex_lock(&mce_read_mutex); |
1565 | |||
1566 | if (!mce_apei_read_done) { | ||
1567 | err = __mce_read_apei(&buf, usize); | ||
1568 | if (err || buf != ubuf) | ||
1569 | goto out; | ||
1570 | } | ||
1571 | |||
1509 | next = rcu_dereference_check_mce(mcelog.next); | 1572 | next = rcu_dereference_check_mce(mcelog.next); |
1510 | 1573 | ||
1511 | /* Only supports full reads right now */ | 1574 | /* Only supports full reads right now */ |
1512 | if (*off != 0 || usize < MCE_LOG_LEN*sizeof(struct mce)) { | 1575 | err = -EINVAL; |
1513 | mutex_unlock(&mce_read_mutex); | 1576 | if (*off != 0 || usize < MCE_LOG_LEN*sizeof(struct mce)) |
1514 | kfree(cpu_tsc); | 1577 | goto out; |
1515 | |||
1516 | return -EINVAL; | ||
1517 | } | ||
1518 | 1578 | ||
1519 | err = 0; | 1579 | err = 0; |
1520 | prev = 0; | 1580 | prev = 0; |
@@ -1562,10 +1622,15 @@ timeout: | |||
1562 | memset(&mcelog.entry[i], 0, sizeof(struct mce)); | 1622 | memset(&mcelog.entry[i], 0, sizeof(struct mce)); |
1563 | } | 1623 | } |
1564 | } | 1624 | } |
1625 | |||
1626 | if (err) | ||
1627 | err = -EFAULT; | ||
1628 | |||
1629 | out: | ||
1565 | mutex_unlock(&mce_read_mutex); | 1630 | mutex_unlock(&mce_read_mutex); |
1566 | kfree(cpu_tsc); | 1631 | kfree(cpu_tsc); |
1567 | 1632 | ||
1568 | return err ? -EFAULT : buf - ubuf; | 1633 | return err ? err : buf - ubuf; |
1569 | } | 1634 | } |
1570 | 1635 | ||
1571 | static unsigned int mce_poll(struct file *file, poll_table *wait) | 1636 | static unsigned int mce_poll(struct file *file, poll_table *wait) |
@@ -1573,6 +1638,8 @@ static unsigned int mce_poll(struct file *file, poll_table *wait) | |||
1573 | poll_wait(file, &mce_wait, wait); | 1638 | poll_wait(file, &mce_wait, wait); |
1574 | if (rcu_dereference_check_mce(mcelog.next)) | 1639 | if (rcu_dereference_check_mce(mcelog.next)) |
1575 | return POLLIN | POLLRDNORM; | 1640 | return POLLIN | POLLRDNORM; |
1641 | if (!mce_apei_read_done && apei_check_mce()) | ||
1642 | return POLLIN | POLLRDNORM; | ||
1576 | return 0; | 1643 | return 0; |
1577 | } | 1644 | } |
1578 | 1645 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c index 81c499eceb21..e1a0a3bf9716 100644 --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c | |||
@@ -190,7 +190,7 @@ thermal_throttle_cpu_callback(struct notifier_block *nfb, | |||
190 | mutex_unlock(&therm_cpu_lock); | 190 | mutex_unlock(&therm_cpu_lock); |
191 | break; | 191 | break; |
192 | } | 192 | } |
193 | return err ? NOTIFY_BAD : NOTIFY_OK; | 193 | return notifier_from_errno(err); |
194 | } | 194 | } |
195 | 195 | ||
196 | static struct notifier_block thermal_throttle_cpu_notifier __cpuinitdata = | 196 | static struct notifier_block thermal_throttle_cpu_notifier __cpuinitdata = |
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index fd4db0db3708..5db5b7d65a18 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
@@ -106,6 +106,7 @@ struct cpu_hw_events { | |||
106 | 106 | ||
107 | int n_events; | 107 | int n_events; |
108 | int n_added; | 108 | int n_added; |
109 | int n_txn; | ||
109 | int assign[X86_PMC_IDX_MAX]; /* event to counter assignment */ | 110 | int assign[X86_PMC_IDX_MAX]; /* event to counter assignment */ |
110 | u64 tags[X86_PMC_IDX_MAX]; | 111 | u64 tags[X86_PMC_IDX_MAX]; |
111 | struct perf_event *event_list[X86_PMC_IDX_MAX]; /* in enabled order */ | 112 | struct perf_event *event_list[X86_PMC_IDX_MAX]; /* in enabled order */ |
@@ -983,6 +984,7 @@ static int x86_pmu_enable(struct perf_event *event) | |||
983 | out: | 984 | out: |
984 | cpuc->n_events = n; | 985 | cpuc->n_events = n; |
985 | cpuc->n_added += n - n0; | 986 | cpuc->n_added += n - n0; |
987 | cpuc->n_txn += n - n0; | ||
986 | 988 | ||
987 | return 0; | 989 | return 0; |
988 | } | 990 | } |
@@ -1089,6 +1091,14 @@ static void x86_pmu_disable(struct perf_event *event) | |||
1089 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 1091 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
1090 | int i; | 1092 | int i; |
1091 | 1093 | ||
1094 | /* | ||
1095 | * If we're called during a txn, we don't need to do anything. | ||
1096 | * The events never got scheduled and ->cancel_txn will truncate | ||
1097 | * the event_list. | ||
1098 | */ | ||
1099 | if (cpuc->group_flag & PERF_EVENT_TXN_STARTED) | ||
1100 | return; | ||
1101 | |||
1092 | x86_pmu_stop(event); | 1102 | x86_pmu_stop(event); |
1093 | 1103 | ||
1094 | for (i = 0; i < cpuc->n_events; i++) { | 1104 | for (i = 0; i < cpuc->n_events; i++) { |
@@ -1379,6 +1389,7 @@ static void x86_pmu_start_txn(const struct pmu *pmu) | |||
1379 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 1389 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
1380 | 1390 | ||
1381 | cpuc->group_flag |= PERF_EVENT_TXN_STARTED; | 1391 | cpuc->group_flag |= PERF_EVENT_TXN_STARTED; |
1392 | cpuc->n_txn = 0; | ||
1382 | } | 1393 | } |
1383 | 1394 | ||
1384 | /* | 1395 | /* |
@@ -1391,6 +1402,11 @@ static void x86_pmu_cancel_txn(const struct pmu *pmu) | |||
1391 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); | 1402 | struct cpu_hw_events *cpuc = &__get_cpu_var(cpu_hw_events); |
1392 | 1403 | ||
1393 | cpuc->group_flag &= ~PERF_EVENT_TXN_STARTED; | 1404 | cpuc->group_flag &= ~PERF_EVENT_TXN_STARTED; |
1405 | /* | ||
1406 | * Truncate the collected events. | ||
1407 | */ | ||
1408 | cpuc->n_added -= cpuc->n_txn; | ||
1409 | cpuc->n_events -= cpuc->n_txn; | ||
1394 | } | 1410 | } |
1395 | 1411 | ||
1396 | /* | 1412 | /* |
@@ -1419,6 +1435,12 @@ static int x86_pmu_commit_txn(const struct pmu *pmu) | |||
1419 | */ | 1435 | */ |
1420 | memcpy(cpuc->assign, assign, n*sizeof(int)); | 1436 | memcpy(cpuc->assign, assign, n*sizeof(int)); |
1421 | 1437 | ||
1438 | /* | ||
1439 | * Clear out the txn count so that ->cancel_txn() which gets | ||
1440 | * run after ->commit_txn() doesn't undo things. | ||
1441 | */ | ||
1442 | cpuc->n_txn = 0; | ||
1443 | |||
1422 | return 0; | 1444 | return 0; |
1423 | } | 1445 | } |
1424 | 1446 | ||
@@ -1717,7 +1739,11 @@ void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int ski | |||
1717 | */ | 1739 | */ |
1718 | regs->bp = rewind_frame_pointer(skip + 1); | 1740 | regs->bp = rewind_frame_pointer(skip + 1); |
1719 | regs->cs = __KERNEL_CS; | 1741 | regs->cs = __KERNEL_CS; |
1720 | local_save_flags(regs->flags); | 1742 | /* |
1743 | * We abuse bit 3 to pass exact information, see perf_misc_flags | ||
1744 | * and the comment with PERF_EFLAGS_EXACT. | ||
1745 | */ | ||
1746 | regs->flags = 0; | ||
1721 | } | 1747 | } |
1722 | 1748 | ||
1723 | unsigned long perf_instruction_pointer(struct pt_regs *regs) | 1749 | unsigned long perf_instruction_pointer(struct pt_regs *regs) |
diff --git a/arch/x86/kernel/cpu/perf_event_p4.c b/arch/x86/kernel/cpu/perf_event_p4.c index 424fc8de68e4..ae85d69644d1 100644 --- a/arch/x86/kernel/cpu/perf_event_p4.c +++ b/arch/x86/kernel/cpu/perf_event_p4.c | |||
@@ -465,15 +465,21 @@ out: | |||
465 | return rc; | 465 | return rc; |
466 | } | 466 | } |
467 | 467 | ||
468 | static inline void p4_pmu_clear_cccr_ovf(struct hw_perf_event *hwc) | 468 | static inline int p4_pmu_clear_cccr_ovf(struct hw_perf_event *hwc) |
469 | { | 469 | { |
470 | unsigned long dummy; | 470 | int overflow = 0; |
471 | u32 low, high; | ||
471 | 472 | ||
472 | rdmsrl(hwc->config_base + hwc->idx, dummy); | 473 | rdmsr(hwc->config_base + hwc->idx, low, high); |
473 | if (dummy & P4_CCCR_OVF) { | 474 | |
475 | /* we need to check high bit for unflagged overflows */ | ||
476 | if ((low & P4_CCCR_OVF) || !(high & (1 << 31))) { | ||
477 | overflow = 1; | ||
474 | (void)checking_wrmsrl(hwc->config_base + hwc->idx, | 478 | (void)checking_wrmsrl(hwc->config_base + hwc->idx, |
475 | ((u64)dummy) & ~P4_CCCR_OVF); | 479 | ((u64)low) & ~P4_CCCR_OVF); |
476 | } | 480 | } |
481 | |||
482 | return overflow; | ||
477 | } | 483 | } |
478 | 484 | ||
479 | static inline void p4_pmu_disable_event(struct perf_event *event) | 485 | static inline void p4_pmu_disable_event(struct perf_event *event) |
@@ -584,21 +590,15 @@ static int p4_pmu_handle_irq(struct pt_regs *regs) | |||
584 | 590 | ||
585 | WARN_ON_ONCE(hwc->idx != idx); | 591 | WARN_ON_ONCE(hwc->idx != idx); |
586 | 592 | ||
587 | /* | 593 | /* it might be unflagged overflow */ |
588 | * FIXME: Redundant call, actually not needed | 594 | handled = p4_pmu_clear_cccr_ovf(hwc); |
589 | * but just to check if we're screwed | ||
590 | */ | ||
591 | p4_pmu_clear_cccr_ovf(hwc); | ||
592 | 595 | ||
593 | val = x86_perf_event_update(event); | 596 | val = x86_perf_event_update(event); |
594 | if (val & (1ULL << (x86_pmu.cntval_bits - 1))) | 597 | if (!handled && (val & (1ULL << (x86_pmu.cntval_bits - 1)))) |
595 | continue; | 598 | continue; |
596 | 599 | ||
597 | /* | 600 | /* event overflow for sure */ |
598 | * event overflow | 601 | data.period = event->hw.last_period; |
599 | */ | ||
600 | handled = 1; | ||
601 | data.period = event->hw.last_period; | ||
602 | 602 | ||
603 | if (!x86_perf_event_set_period(event)) | 603 | if (!x86_perf_event_set_period(event)) |
604 | continue; | 604 | continue; |
@@ -670,7 +670,7 @@ static void p4_pmu_swap_config_ts(struct hw_perf_event *hwc, int cpu) | |||
670 | 670 | ||
671 | /* | 671 | /* |
672 | * ESCR address hashing is tricky, ESCRs are not sequential | 672 | * ESCR address hashing is tricky, ESCRs are not sequential |
673 | * in memory but all starts from MSR_P4_BSU_ESCR0 (0x03e0) and | 673 | * in memory but all starts from MSR_P4_BSU_ESCR0 (0x03a0) and |
674 | * the metric between any ESCRs is laid in range [0xa0,0xe1] | 674 | * the metric between any ESCRs is laid in range [0xa0,0xe1] |
675 | * | 675 | * |
676 | * so we make ~70% filled hashtable | 676 | * so we make ~70% filled hashtable |
@@ -735,8 +735,9 @@ static int p4_get_escr_idx(unsigned int addr) | |||
735 | { | 735 | { |
736 | unsigned int idx = P4_ESCR_MSR_IDX(addr); | 736 | unsigned int idx = P4_ESCR_MSR_IDX(addr); |
737 | 737 | ||
738 | if (unlikely(idx >= P4_ESCR_MSR_TABLE_SIZE || | 738 | if (unlikely(idx >= P4_ESCR_MSR_TABLE_SIZE || |
739 | !p4_escr_table[idx])) { | 739 | !p4_escr_table[idx] || |
740 | p4_escr_table[idx] != addr)) { | ||
740 | WARN_ONCE(1, "P4 PMU: Wrong address passed: %x\n", addr); | 741 | WARN_ONCE(1, "P4 PMU: Wrong address passed: %x\n", addr); |
741 | return -1; | 742 | return -1; |
742 | } | 743 | } |
@@ -762,7 +763,7 @@ static int p4_pmu_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign | |||
762 | { | 763 | { |
763 | unsigned long used_mask[BITS_TO_LONGS(X86_PMC_IDX_MAX)]; | 764 | unsigned long used_mask[BITS_TO_LONGS(X86_PMC_IDX_MAX)]; |
764 | unsigned long escr_mask[BITS_TO_LONGS(P4_ESCR_MSR_TABLE_SIZE)]; | 765 | unsigned long escr_mask[BITS_TO_LONGS(P4_ESCR_MSR_TABLE_SIZE)]; |
765 | int cpu = raw_smp_processor_id(); | 766 | int cpu = smp_processor_id(); |
766 | struct hw_perf_event *hwc; | 767 | struct hw_perf_event *hwc; |
767 | struct p4_event_bind *bind; | 768 | struct p4_event_bind *bind; |
768 | unsigned int i, thread, num; | 769 | unsigned int i, thread, num; |
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c index 8b862d5900fe..1b7b31ab7d86 100644 --- a/arch/x86/kernel/cpuid.c +++ b/arch/x86/kernel/cpuid.c | |||
@@ -170,7 +170,7 @@ static int __cpuinit cpuid_class_cpu_callback(struct notifier_block *nfb, | |||
170 | cpuid_device_destroy(cpu); | 170 | cpuid_device_destroy(cpu); |
171 | break; | 171 | break; |
172 | } | 172 | } |
173 | return err ? NOTIFY_BAD : NOTIFY_OK; | 173 | return notifier_from_errno(err); |
174 | } | 174 | } |
175 | 175 | ||
176 | static struct notifier_block __refdata cpuid_class_cpu_notifier = | 176 | static struct notifier_block __refdata cpuid_class_cpu_notifier = |
diff --git a/arch/x86/kernel/init_task.c b/arch/x86/kernel/init_task.c index 3a54dcb9cd0e..43e9ccf44947 100644 --- a/arch/x86/kernel/init_task.c +++ b/arch/x86/kernel/init_task.c | |||
@@ -34,7 +34,7 @@ EXPORT_SYMBOL(init_task); | |||
34 | /* | 34 | /* |
35 | * per-CPU TSS segments. Threads are completely 'soft' on Linux, | 35 | * per-CPU TSS segments. Threads are completely 'soft' on Linux, |
36 | * no more per-task TSS's. The TSS size is kept cacheline-aligned | 36 | * no more per-task TSS's. The TSS size is kept cacheline-aligned |
37 | * so they are allowed to end up in the .data.cacheline_aligned | 37 | * so they are allowed to end up in the .data..cacheline_aligned |
38 | * section. Since TSS's are completely CPU-local, we want them | 38 | * section. Since TSS's are completely CPU-local, we want them |
39 | * on exact cacheline boundaries, to eliminate cacheline ping-pong. | 39 | * on exact cacheline boundaries, to eliminate cacheline ping-pong. |
40 | */ | 40 | */ |
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index 4d4468e9f47c..7bf2dc4c8f70 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c | |||
@@ -230,7 +230,7 @@ static int __cpuinit msr_class_cpu_callback(struct notifier_block *nfb, | |||
230 | msr_device_destroy(cpu); | 230 | msr_device_destroy(cpu); |
231 | break; | 231 | break; |
232 | } | 232 | } |
233 | return err ? NOTIFY_BAD : NOTIFY_OK; | 233 | return notifier_from_errno(err); |
234 | } | 234 | } |
235 | 235 | ||
236 | static struct notifier_block __refdata msr_class_cpu_notifier = { | 236 | static struct notifier_block __refdata msr_class_cpu_notifier = { |
diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c index 7d2829dde20e..a5bc528d4328 100644 --- a/arch/x86/kernel/pci-swiotlb.c +++ b/arch/x86/kernel/pci-swiotlb.c | |||
@@ -31,8 +31,6 @@ static struct dma_map_ops swiotlb_dma_ops = { | |||
31 | .free_coherent = swiotlb_free_coherent, | 31 | .free_coherent = swiotlb_free_coherent, |
32 | .sync_single_for_cpu = swiotlb_sync_single_for_cpu, | 32 | .sync_single_for_cpu = swiotlb_sync_single_for_cpu, |
33 | .sync_single_for_device = swiotlb_sync_single_for_device, | 33 | .sync_single_for_device = swiotlb_sync_single_for_device, |
34 | .sync_single_range_for_cpu = swiotlb_sync_single_range_for_cpu, | ||
35 | .sync_single_range_for_device = swiotlb_sync_single_range_for_device, | ||
36 | .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, | 34 | .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, |
37 | .sync_sg_for_device = swiotlb_sync_sg_for_device, | 35 | .sync_sg_for_device = swiotlb_sync_sg_for_device, |
38 | .map_sg = swiotlb_map_sg_attrs, | 36 | .map_sg = swiotlb_map_sg_attrs, |
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index e8029896309a..b4ae4acbd031 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -676,6 +676,17 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = { | |||
676 | DMI_MATCH(DMI_BOARD_NAME, "DG45FC"), | 676 | DMI_MATCH(DMI_BOARD_NAME, "DG45FC"), |
677 | }, | 677 | }, |
678 | }, | 678 | }, |
679 | /* | ||
680 | * The Dell Inspiron Mini 1012 has DMI_BIOS_VENDOR = "Dell Inc.", so | ||
681 | * match on the product name. | ||
682 | */ | ||
683 | { | ||
684 | .callback = dmi_low_memory_corruption, | ||
685 | .ident = "Phoenix BIOS", | ||
686 | .matches = { | ||
687 | DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1012"), | ||
688 | }, | ||
689 | }, | ||
679 | #endif | 690 | #endif |
680 | {} | 691 | {} |
681 | }; | 692 | }; |
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index ef6370b00e70..de3b63ae3da2 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
@@ -21,12 +21,6 @@ | |||
21 | #include <asm/cpu.h> | 21 | #include <asm/cpu.h> |
22 | #include <asm/stackprotector.h> | 22 | #include <asm/stackprotector.h> |
23 | 23 | ||
24 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS | ||
25 | # define DBG(fmt, ...) pr_dbg(fmt, ##__VA_ARGS__) | ||
26 | #else | ||
27 | # define DBG(fmt, ...) do { if (0) pr_dbg(fmt, ##__VA_ARGS__); } while (0) | ||
28 | #endif | ||
29 | |||
30 | DEFINE_PER_CPU(int, cpu_number); | 24 | DEFINE_PER_CPU(int, cpu_number); |
31 | EXPORT_PER_CPU_SYMBOL(cpu_number); | 25 | EXPORT_PER_CPU_SYMBOL(cpu_number); |
32 | 26 | ||
@@ -247,7 +241,7 @@ void __init setup_per_cpu_areas(void) | |||
247 | #endif | 241 | #endif |
248 | #endif | 242 | #endif |
249 | /* | 243 | /* |
250 | * Up to this point, the boot CPU has been using .data.init | 244 | * Up to this point, the boot CPU has been using .init.data |
251 | * area. Reload any changed state for the boot CPU. | 245 | * area. Reload any changed state for the boot CPU. |
252 | */ | 246 | */ |
253 | if (cpu == boot_cpu_id) | 247 | if (cpu == boot_cpu_id) |
@@ -265,10 +259,10 @@ void __init setup_per_cpu_areas(void) | |||
265 | 259 | ||
266 | #if defined(CONFIG_X86_64) && defined(CONFIG_NUMA) | 260 | #if defined(CONFIG_X86_64) && defined(CONFIG_NUMA) |
267 | /* | 261 | /* |
268 | * make sure boot cpu node_number is right, when boot cpu is on the | 262 | * make sure boot cpu numa_node is right, when boot cpu is on the |
269 | * node that doesn't have mem installed | 263 | * node that doesn't have mem installed |
270 | */ | 264 | */ |
271 | per_cpu(node_number, boot_cpu_id) = cpu_to_node(boot_cpu_id); | 265 | set_cpu_numa_node(boot_cpu_id, early_cpu_to_node(boot_cpu_id)); |
272 | #endif | 266 | #endif |
273 | 267 | ||
274 | /* Setup node to cpumask map */ | 268 | /* Setup node to cpumask map */ |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 763d815e27a0..c4f33b2e77d6 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
@@ -686,7 +686,7 @@ static void __cpuinit do_fork_idle(struct work_struct *work) | |||
686 | static void __cpuinit announce_cpu(int cpu, int apicid) | 686 | static void __cpuinit announce_cpu(int cpu, int apicid) |
687 | { | 687 | { |
688 | static int current_node = -1; | 688 | static int current_node = -1; |
689 | int node = cpu_to_node(cpu); | 689 | int node = early_cpu_to_node(cpu); |
690 | 690 | ||
691 | if (system_state == SYSTEM_BOOTING) { | 691 | if (system_state == SYSTEM_BOOTING) { |
692 | if (node != current_node) { | 692 | if (node != current_node) { |
@@ -1215,9 +1215,17 @@ __init void prefill_possible_map(void) | |||
1215 | if (!num_processors) | 1215 | if (!num_processors) |
1216 | num_processors = 1; | 1216 | num_processors = 1; |
1217 | 1217 | ||
1218 | if (setup_possible_cpus == -1) | 1218 | i = setup_max_cpus ?: 1; |
1219 | possible = num_processors + disabled_cpus; | 1219 | if (setup_possible_cpus == -1) { |
1220 | else | 1220 | possible = num_processors; |
1221 | #ifdef CONFIG_HOTPLUG_CPU | ||
1222 | if (setup_max_cpus) | ||
1223 | possible += disabled_cpus; | ||
1224 | #else | ||
1225 | if (possible > i) | ||
1226 | possible = i; | ||
1227 | #endif | ||
1228 | } else | ||
1221 | possible = setup_possible_cpus; | 1229 | possible = setup_possible_cpus; |
1222 | 1230 | ||
1223 | total_cpus = max_t(int, possible, num_processors + disabled_cpus); | 1231 | total_cpus = max_t(int, possible, num_processors + disabled_cpus); |
@@ -1230,11 +1238,23 @@ __init void prefill_possible_map(void) | |||
1230 | possible = nr_cpu_ids; | 1238 | possible = nr_cpu_ids; |
1231 | } | 1239 | } |
1232 | 1240 | ||
1241 | #ifdef CONFIG_HOTPLUG_CPU | ||
1242 | if (!setup_max_cpus) | ||
1243 | #endif | ||
1244 | if (possible > i) { | ||
1245 | printk(KERN_WARNING | ||
1246 | "%d Processors exceeds max_cpus limit of %u\n", | ||
1247 | possible, setup_max_cpus); | ||
1248 | possible = i; | ||
1249 | } | ||
1250 | |||
1233 | printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n", | 1251 | printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n", |
1234 | possible, max_t(int, possible - num_processors, 0)); | 1252 | possible, max_t(int, possible - num_processors, 0)); |
1235 | 1253 | ||
1236 | for (i = 0; i < possible; i++) | 1254 | for (i = 0; i < possible; i++) |
1237 | set_cpu_possible(i, true); | 1255 | set_cpu_possible(i, true); |
1256 | for (; i < NR_CPUS; i++) | ||
1257 | set_cpu_possible(i, false); | ||
1238 | 1258 | ||
1239 | nr_cpu_ids = possible; | 1259 | nr_cpu_ids = possible; |
1240 | } | 1260 | } |
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index 2cc249718c46..d0bb52296fa3 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S | |||
@@ -97,7 +97,7 @@ SECTIONS | |||
97 | HEAD_TEXT | 97 | HEAD_TEXT |
98 | #ifdef CONFIG_X86_32 | 98 | #ifdef CONFIG_X86_32 |
99 | . = ALIGN(PAGE_SIZE); | 99 | . = ALIGN(PAGE_SIZE); |
100 | *(.text.page_aligned) | 100 | *(.text..page_aligned) |
101 | #endif | 101 | #endif |
102 | . = ALIGN(8); | 102 | . = ALIGN(8); |
103 | _stext = .; | 103 | _stext = .; |
@@ -305,7 +305,7 @@ SECTIONS | |||
305 | . = ALIGN(PAGE_SIZE); | 305 | . = ALIGN(PAGE_SIZE); |
306 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { | 306 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { |
307 | __bss_start = .; | 307 | __bss_start = .; |
308 | *(.bss.page_aligned) | 308 | *(.bss..page_aligned) |
309 | *(.bss) | 309 | *(.bss) |
310 | . = ALIGN(4); | 310 | . = ALIGN(4); |
311 | __bss_stop = .; | 311 | __bss_stop = .; |
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 81563e76e28f..a6f695d76928 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -1815,6 +1815,9 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *sptep, | |||
1815 | 1815 | ||
1816 | spte |= PT_WRITABLE_MASK; | 1816 | spte |= PT_WRITABLE_MASK; |
1817 | 1817 | ||
1818 | if (!tdp_enabled && !(pte_access & ACC_WRITE_MASK)) | ||
1819 | spte &= ~PT_USER_MASK; | ||
1820 | |||
1818 | /* | 1821 | /* |
1819 | * Optimization: for pte sync, if spte was writable the hash | 1822 | * Optimization: for pte sync, if spte was writable the hash |
1820 | * lookup is unnecessary (and expensive). Write protection | 1823 | * lookup is unnecessary (and expensive). Write protection |
@@ -1870,6 +1873,8 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep, | |||
1870 | 1873 | ||
1871 | child = page_header(pte & PT64_BASE_ADDR_MASK); | 1874 | child = page_header(pte & PT64_BASE_ADDR_MASK); |
1872 | mmu_page_remove_parent_pte(child, sptep); | 1875 | mmu_page_remove_parent_pte(child, sptep); |
1876 | __set_spte(sptep, shadow_trap_nonpresent_pte); | ||
1877 | kvm_flush_remote_tlbs(vcpu->kvm); | ||
1873 | } else if (pfn != spte_to_pfn(*sptep)) { | 1878 | } else if (pfn != spte_to_pfn(*sptep)) { |
1874 | pgprintk("hfn old %lx new %lx\n", | 1879 | pgprintk("hfn old %lx new %lx\n", |
1875 | spte_to_pfn(*sptep), pfn); | 1880 | spte_to_pfn(*sptep), pfn); |
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 96dc232bfc56..ce438e0fdd26 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/ftrace_event.h> | 28 | #include <linux/ftrace_event.h> |
29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
30 | 30 | ||
31 | #include <asm/tlbflush.h> | ||
31 | #include <asm/desc.h> | 32 | #include <asm/desc.h> |
32 | 33 | ||
33 | #include <asm/virtext.h> | 34 | #include <asm/virtext.h> |
@@ -56,6 +57,8 @@ MODULE_LICENSE("GPL"); | |||
56 | 57 | ||
57 | #define DEBUGCTL_RESERVED_BITS (~(0x3fULL)) | 58 | #define DEBUGCTL_RESERVED_BITS (~(0x3fULL)) |
58 | 59 | ||
60 | static bool erratum_383_found __read_mostly; | ||
61 | |||
59 | static const u32 host_save_user_msrs[] = { | 62 | static const u32 host_save_user_msrs[] = { |
60 | #ifdef CONFIG_X86_64 | 63 | #ifdef CONFIG_X86_64 |
61 | MSR_STAR, MSR_LSTAR, MSR_CSTAR, MSR_SYSCALL_MASK, MSR_KERNEL_GS_BASE, | 64 | MSR_STAR, MSR_LSTAR, MSR_CSTAR, MSR_SYSCALL_MASK, MSR_KERNEL_GS_BASE, |
@@ -374,6 +377,31 @@ static void svm_queue_exception(struct kvm_vcpu *vcpu, unsigned nr, | |||
374 | svm->vmcb->control.event_inj_err = error_code; | 377 | svm->vmcb->control.event_inj_err = error_code; |
375 | } | 378 | } |
376 | 379 | ||
380 | static void svm_init_erratum_383(void) | ||
381 | { | ||
382 | u32 low, high; | ||
383 | int err; | ||
384 | u64 val; | ||
385 | |||
386 | /* Only Fam10h is affected */ | ||
387 | if (boot_cpu_data.x86 != 0x10) | ||
388 | return; | ||
389 | |||
390 | /* Use _safe variants to not break nested virtualization */ | ||
391 | val = native_read_msr_safe(MSR_AMD64_DC_CFG, &err); | ||
392 | if (err) | ||
393 | return; | ||
394 | |||
395 | val |= (1ULL << 47); | ||
396 | |||
397 | low = lower_32_bits(val); | ||
398 | high = upper_32_bits(val); | ||
399 | |||
400 | native_write_msr_safe(MSR_AMD64_DC_CFG, low, high); | ||
401 | |||
402 | erratum_383_found = true; | ||
403 | } | ||
404 | |||
377 | static int has_svm(void) | 405 | static int has_svm(void) |
378 | { | 406 | { |
379 | const char *msg; | 407 | const char *msg; |
@@ -429,6 +457,8 @@ static int svm_hardware_enable(void *garbage) | |||
429 | 457 | ||
430 | wrmsrl(MSR_VM_HSAVE_PA, page_to_pfn(sd->save_area) << PAGE_SHIFT); | 458 | wrmsrl(MSR_VM_HSAVE_PA, page_to_pfn(sd->save_area) << PAGE_SHIFT); |
431 | 459 | ||
460 | svm_init_erratum_383(); | ||
461 | |||
432 | return 0; | 462 | return 0; |
433 | } | 463 | } |
434 | 464 | ||
@@ -1410,8 +1440,59 @@ static int nm_interception(struct vcpu_svm *svm) | |||
1410 | return 1; | 1440 | return 1; |
1411 | } | 1441 | } |
1412 | 1442 | ||
1413 | static int mc_interception(struct vcpu_svm *svm) | 1443 | static bool is_erratum_383(void) |
1414 | { | 1444 | { |
1445 | int err, i; | ||
1446 | u64 value; | ||
1447 | |||
1448 | if (!erratum_383_found) | ||
1449 | return false; | ||
1450 | |||
1451 | value = native_read_msr_safe(MSR_IA32_MC0_STATUS, &err); | ||
1452 | if (err) | ||
1453 | return false; | ||
1454 | |||
1455 | /* Bit 62 may or may not be set for this mce */ | ||
1456 | value &= ~(1ULL << 62); | ||
1457 | |||
1458 | if (value != 0xb600000000010015ULL) | ||
1459 | return false; | ||
1460 | |||
1461 | /* Clear MCi_STATUS registers */ | ||
1462 | for (i = 0; i < 6; ++i) | ||
1463 | native_write_msr_safe(MSR_IA32_MCx_STATUS(i), 0, 0); | ||
1464 | |||
1465 | value = native_read_msr_safe(MSR_IA32_MCG_STATUS, &err); | ||
1466 | if (!err) { | ||
1467 | u32 low, high; | ||
1468 | |||
1469 | value &= ~(1ULL << 2); | ||
1470 | low = lower_32_bits(value); | ||
1471 | high = upper_32_bits(value); | ||
1472 | |||
1473 | native_write_msr_safe(MSR_IA32_MCG_STATUS, low, high); | ||
1474 | } | ||
1475 | |||
1476 | /* Flush tlb to evict multi-match entries */ | ||
1477 | __flush_tlb_all(); | ||
1478 | |||
1479 | return true; | ||
1480 | } | ||
1481 | |||
1482 | static void svm_handle_mce(struct vcpu_svm *svm) | ||
1483 | { | ||
1484 | if (is_erratum_383()) { | ||
1485 | /* | ||
1486 | * Erratum 383 triggered. Guest state is corrupt so kill the | ||
1487 | * guest. | ||
1488 | */ | ||
1489 | pr_err("KVM: Guest triggered AMD Erratum 383\n"); | ||
1490 | |||
1491 | set_bit(KVM_REQ_TRIPLE_FAULT, &svm->vcpu.requests); | ||
1492 | |||
1493 | return; | ||
1494 | } | ||
1495 | |||
1415 | /* | 1496 | /* |
1416 | * On an #MC intercept the MCE handler is not called automatically in | 1497 | * On an #MC intercept the MCE handler is not called automatically in |
1417 | * the host. So do it by hand here. | 1498 | * the host. So do it by hand here. |
@@ -1420,6 +1501,11 @@ static int mc_interception(struct vcpu_svm *svm) | |||
1420 | "int $0x12\n"); | 1501 | "int $0x12\n"); |
1421 | /* not sure if we ever come back to this point */ | 1502 | /* not sure if we ever come back to this point */ |
1422 | 1503 | ||
1504 | return; | ||
1505 | } | ||
1506 | |||
1507 | static int mc_interception(struct vcpu_svm *svm) | ||
1508 | { | ||
1423 | return 1; | 1509 | return 1; |
1424 | } | 1510 | } |
1425 | 1511 | ||
@@ -3088,6 +3174,14 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu) | |||
3088 | vcpu->arch.regs_avail &= ~(1 << VCPU_EXREG_PDPTR); | 3174 | vcpu->arch.regs_avail &= ~(1 << VCPU_EXREG_PDPTR); |
3089 | vcpu->arch.regs_dirty &= ~(1 << VCPU_EXREG_PDPTR); | 3175 | vcpu->arch.regs_dirty &= ~(1 << VCPU_EXREG_PDPTR); |
3090 | } | 3176 | } |
3177 | |||
3178 | /* | ||
3179 | * We need to handle MC intercepts here before the vcpu has a chance to | ||
3180 | * change the physical cpu | ||
3181 | */ | ||
3182 | if (unlikely(svm->vmcb->control.exit_code == | ||
3183 | SVM_EXIT_EXCP_BASE + MC_VECTOR)) | ||
3184 | svm_handle_mce(svm); | ||
3091 | } | 3185 | } |
3092 | 3186 | ||
3093 | #undef R | 3187 | #undef R |
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index 2bdf628066bd..9257510b4836 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -1390,7 +1390,6 @@ __init void lguest_init(void) | |||
1390 | #endif | 1390 | #endif |
1391 | #ifdef CONFIG_ACPI | 1391 | #ifdef CONFIG_ACPI |
1392 | acpi_disabled = 1; | 1392 | acpi_disabled = 1; |
1393 | acpi_ht = 0; | ||
1394 | #endif | 1393 | #endif |
1395 | 1394 | ||
1396 | /* | 1395 | /* |
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c index 550df481accd..787c52ca49c3 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c | |||
@@ -3,12 +3,6 @@ | |||
3 | #include <linux/module.h> | 3 | #include <linux/module.h> |
4 | #include <linux/bootmem.h> | 4 | #include <linux/bootmem.h> |
5 | 5 | ||
6 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS | ||
7 | # define DBG(x...) printk(KERN_DEBUG x) | ||
8 | #else | ||
9 | # define DBG(x...) | ||
10 | #endif | ||
11 | |||
12 | /* | 6 | /* |
13 | * Which logical CPUs are on which nodes | 7 | * Which logical CPUs are on which nodes |
14 | */ | 8 | */ |
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c index 8948f47fde05..a7bcc23ef96c 100644 --- a/arch/x86/mm/numa_64.c +++ b/arch/x86/mm/numa_64.c | |||
@@ -33,9 +33,6 @@ int numa_off __initdata; | |||
33 | static unsigned long __initdata nodemap_addr; | 33 | static unsigned long __initdata nodemap_addr; |
34 | static unsigned long __initdata nodemap_size; | 34 | static unsigned long __initdata nodemap_size; |
35 | 35 | ||
36 | DEFINE_PER_CPU(int, node_number) = 0; | ||
37 | EXPORT_PER_CPU_SYMBOL(node_number); | ||
38 | |||
39 | /* | 36 | /* |
40 | * Map cpu index to node index | 37 | * Map cpu index to node index |
41 | */ | 38 | */ |
@@ -809,7 +806,7 @@ void __cpuinit numa_set_node(int cpu, int node) | |||
809 | per_cpu(x86_cpu_to_node_map, cpu) = node; | 806 | per_cpu(x86_cpu_to_node_map, cpu) = node; |
810 | 807 | ||
811 | if (node != NUMA_NO_NODE) | 808 | if (node != NUMA_NO_NODE) |
812 | per_cpu(node_number, cpu) = node; | 809 | set_cpu_numa_node(cpu, node); |
813 | } | 810 | } |
814 | 811 | ||
815 | void __cpuinit numa_clear_node(int cpu) | 812 | void __cpuinit numa_clear_node(int cpu) |
@@ -867,7 +864,7 @@ void __cpuinit numa_remove_cpu(int cpu) | |||
867 | numa_set_cpumask(cpu, 0); | 864 | numa_set_cpumask(cpu, 0); |
868 | } | 865 | } |
869 | 866 | ||
870 | int cpu_to_node(int cpu) | 867 | int __cpu_to_node(int cpu) |
871 | { | 868 | { |
872 | if (early_per_cpu_ptr(x86_cpu_to_node_map)) { | 869 | if (early_per_cpu_ptr(x86_cpu_to_node_map)) { |
873 | printk(KERN_WARNING | 870 | printk(KERN_WARNING |
@@ -877,7 +874,7 @@ int cpu_to_node(int cpu) | |||
877 | } | 874 | } |
878 | return per_cpu(x86_cpu_to_node_map, cpu); | 875 | return per_cpu(x86_cpu_to_node_map, cpu); |
879 | } | 876 | } |
880 | EXPORT_SYMBOL(cpu_to_node); | 877 | EXPORT_SYMBOL(__cpu_to_node); |
881 | 878 | ||
882 | /* | 879 | /* |
883 | * Same function as cpu_to_node() but used if called before the | 880 | * Same function as cpu_to_node() but used if called before the |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index bbe5502ee1cb..acc15b23b743 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -336,6 +336,7 @@ int free_memtype(u64 start, u64 end) | |||
336 | { | 336 | { |
337 | int err = -EINVAL; | 337 | int err = -EINVAL; |
338 | int is_range_ram; | 338 | int is_range_ram; |
339 | struct memtype *entry; | ||
339 | 340 | ||
340 | if (!pat_enabled) | 341 | if (!pat_enabled) |
341 | return 0; | 342 | return 0; |
@@ -355,17 +356,20 @@ int free_memtype(u64 start, u64 end) | |||
355 | } | 356 | } |
356 | 357 | ||
357 | spin_lock(&memtype_lock); | 358 | spin_lock(&memtype_lock); |
358 | err = rbt_memtype_erase(start, end); | 359 | entry = rbt_memtype_erase(start, end); |
359 | spin_unlock(&memtype_lock); | 360 | spin_unlock(&memtype_lock); |
360 | 361 | ||
361 | if (err) { | 362 | if (!entry) { |
362 | printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n", | 363 | printk(KERN_INFO "%s:%d freeing invalid memtype %Lx-%Lx\n", |
363 | current->comm, current->pid, start, end); | 364 | current->comm, current->pid, start, end); |
365 | return -EINVAL; | ||
364 | } | 366 | } |
365 | 367 | ||
368 | kfree(entry); | ||
369 | |||
366 | dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end); | 370 | dprintk("free_memtype request 0x%Lx-0x%Lx\n", start, end); |
367 | 371 | ||
368 | return err; | 372 | return 0; |
369 | } | 373 | } |
370 | 374 | ||
371 | 375 | ||
diff --git a/arch/x86/mm/pat_internal.h b/arch/x86/mm/pat_internal.h index 4f39eefa3e61..77e5ba153fac 100644 --- a/arch/x86/mm/pat_internal.h +++ b/arch/x86/mm/pat_internal.h | |||
@@ -28,15 +28,15 @@ static inline char *cattr_name(unsigned long flags) | |||
28 | #ifdef CONFIG_X86_PAT | 28 | #ifdef CONFIG_X86_PAT |
29 | extern int rbt_memtype_check_insert(struct memtype *new, | 29 | extern int rbt_memtype_check_insert(struct memtype *new, |
30 | unsigned long *new_type); | 30 | unsigned long *new_type); |
31 | extern int rbt_memtype_erase(u64 start, u64 end); | 31 | extern struct memtype *rbt_memtype_erase(u64 start, u64 end); |
32 | extern struct memtype *rbt_memtype_lookup(u64 addr); | 32 | extern struct memtype *rbt_memtype_lookup(u64 addr); |
33 | extern int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos); | 33 | extern int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos); |
34 | #else | 34 | #else |
35 | static inline int rbt_memtype_check_insert(struct memtype *new, | 35 | static inline int rbt_memtype_check_insert(struct memtype *new, |
36 | unsigned long *new_type) | 36 | unsigned long *new_type) |
37 | { return 0; } | 37 | { return 0; } |
38 | static inline int rbt_memtype_erase(u64 start, u64 end) | 38 | static inline struct memtype *rbt_memtype_erase(u64 start, u64 end) |
39 | { return 0; } | 39 | { return NULL; } |
40 | static inline struct memtype *rbt_memtype_lookup(u64 addr) | 40 | static inline struct memtype *rbt_memtype_lookup(u64 addr) |
41 | { return NULL; } | 41 | { return NULL; } |
42 | static inline int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos) | 42 | static inline int rbt_memtype_copy_nth_element(struct memtype *out, loff_t pos) |
diff --git a/arch/x86/mm/pat_rbtree.c b/arch/x86/mm/pat_rbtree.c index 07de4cb8cc30..f537087bb740 100644 --- a/arch/x86/mm/pat_rbtree.c +++ b/arch/x86/mm/pat_rbtree.c | |||
@@ -231,16 +231,17 @@ int rbt_memtype_check_insert(struct memtype *new, unsigned long *ret_type) | |||
231 | return err; | 231 | return err; |
232 | } | 232 | } |
233 | 233 | ||
234 | int rbt_memtype_erase(u64 start, u64 end) | 234 | struct memtype *rbt_memtype_erase(u64 start, u64 end) |
235 | { | 235 | { |
236 | struct memtype *data; | 236 | struct memtype *data; |
237 | 237 | ||
238 | data = memtype_rb_exact_match(&memtype_rbroot, start, end); | 238 | data = memtype_rb_exact_match(&memtype_rbroot, start, end); |
239 | if (!data) | 239 | if (!data) |
240 | return -EINVAL; | 240 | goto out; |
241 | 241 | ||
242 | rb_erase(&data->rb, &memtype_rbroot); | 242 | rb_erase(&data->rb, &memtype_rbroot); |
243 | return 0; | 243 | out: |
244 | return data; | ||
244 | } | 245 | } |
245 | 246 | ||
246 | struct memtype *rbt_memtype_lookup(u64 addr) | 247 | struct memtype *rbt_memtype_lookup(u64 addr) |
diff --git a/arch/x86/mm/pf_in.c b/arch/x86/mm/pf_in.c index df3d5c861cda..308e32570d84 100644 --- a/arch/x86/mm/pf_in.c +++ b/arch/x86/mm/pf_in.c | |||
@@ -34,7 +34,7 @@ | |||
34 | /* IA32 Manual 3, 2-1 */ | 34 | /* IA32 Manual 3, 2-1 */ |
35 | static unsigned char prefix_codes[] = { | 35 | static unsigned char prefix_codes[] = { |
36 | 0xF0, 0xF2, 0xF3, 0x2E, 0x36, 0x3E, 0x26, 0x64, | 36 | 0xF0, 0xF2, 0xF3, 0x2E, 0x36, 0x3E, 0x26, 0x64, |
37 | 0x65, 0x2E, 0x3E, 0x66, 0x67 | 37 | 0x65, 0x66, 0x67 |
38 | }; | 38 | }; |
39 | /* IA32 Manual 3, 3-432*/ | 39 | /* IA32 Manual 3, 3-432*/ |
40 | static unsigned int reg_rop[] = { | 40 | static unsigned int reg_rop[] = { |
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 792854003ed3..cac718499256 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/pagemap.h> | 9 | #include <linux/pagemap.h> |
10 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/quicklist.h> | ||
13 | 12 | ||
14 | #include <asm/system.h> | 13 | #include <asm/system.h> |
15 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 31930fd30ea9..2ec04c424a62 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -207,10 +207,9 @@ get_current_resources(struct acpi_device *device, int busnum, | |||
207 | if (!info.res) | 207 | if (!info.res) |
208 | goto res_alloc_fail; | 208 | goto res_alloc_fail; |
209 | 209 | ||
210 | info.name = kmalloc(16, GFP_KERNEL); | 210 | info.name = kasprintf(GFP_KERNEL, "PCI Bus %04x:%02x", domain, busnum); |
211 | if (!info.name) | 211 | if (!info.name) |
212 | goto name_alloc_fail; | 212 | goto name_alloc_fail; |
213 | sprintf(info.name, "PCI Bus %04x:%02x", domain, busnum); | ||
214 | 213 | ||
215 | info.res_num = 0; | 214 | info.res_num = 0; |
216 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, setup_resource, | 215 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, setup_resource, |
@@ -224,8 +223,11 @@ res_alloc_fail: | |||
224 | return; | 223 | return; |
225 | } | 224 | } |
226 | 225 | ||
227 | struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int domain, int busnum) | 226 | struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root) |
228 | { | 227 | { |
228 | struct acpi_device *device = root->device; | ||
229 | int domain = root->segment; | ||
230 | int busnum = root->secondary.start; | ||
229 | struct pci_bus *bus; | 231 | struct pci_bus *bus; |
230 | struct pci_sysdata *sd; | 232 | struct pci_sysdata *sd; |
231 | int node; | 233 | int node; |
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c index 97da2ba9344b..6fdb3ec30c31 100644 --- a/arch/x86/pci/i386.c +++ b/arch/x86/pci/i386.c | |||
@@ -96,6 +96,7 @@ EXPORT_SYMBOL(pcibios_align_resource); | |||
96 | * the fact the PCI specs explicitly allow address decoders to be | 96 | * the fact the PCI specs explicitly allow address decoders to be |
97 | * shared between expansion ROMs and other resource regions, it's | 97 | * shared between expansion ROMs and other resource regions, it's |
98 | * at least dangerous) | 98 | * at least dangerous) |
99 | * - bad resource sizes or overlaps with other regions | ||
99 | * | 100 | * |
100 | * Our solution: | 101 | * Our solution: |
101 | * (1) Allocate resources for all buses behind PCI-to-PCI bridges. | 102 | * (1) Allocate resources for all buses behind PCI-to-PCI bridges. |
@@ -136,6 +137,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list) | |||
136 | * child resource allocations in this | 137 | * child resource allocations in this |
137 | * range. | 138 | * range. |
138 | */ | 139 | */ |
140 | r->start = r->end = 0; | ||
139 | r->flags = 0; | 141 | r->flags = 0; |
140 | } | 142 | } |
141 | } | 143 | } |
diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c index 0db5eaf54560..8d460eaf524f 100644 --- a/arch/x86/pci/legacy.c +++ b/arch/x86/pci/legacy.c | |||
@@ -11,28 +11,14 @@ | |||
11 | */ | 11 | */ |
12 | static void __devinit pcibios_fixup_peer_bridges(void) | 12 | static void __devinit pcibios_fixup_peer_bridges(void) |
13 | { | 13 | { |
14 | int n, devfn; | 14 | int n; |
15 | long node; | ||
16 | 15 | ||
17 | if (pcibios_last_bus <= 0 || pcibios_last_bus > 0xff) | 16 | if (pcibios_last_bus <= 0 || pcibios_last_bus > 0xff) |
18 | return; | 17 | return; |
19 | DBG("PCI: Peer bridge fixup\n"); | 18 | DBG("PCI: Peer bridge fixup\n"); |
20 | 19 | ||
21 | for (n=0; n <= pcibios_last_bus; n++) { | 20 | for (n=0; n <= pcibios_last_bus; n++) |
22 | u32 l; | 21 | pcibios_scan_specific_bus(n); |
23 | if (pci_find_bus(0, n)) | ||
24 | continue; | ||
25 | node = get_mp_bus_to_node(n); | ||
26 | for (devfn = 0; devfn < 256; devfn += 8) { | ||
27 | if (!raw_pci_read(0, n, devfn, PCI_VENDOR_ID, 2, &l) && | ||
28 | l != 0x0000 && l != 0xffff) { | ||
29 | DBG("Found device at %02x:%02x [%04x]\n", n, devfn, l); | ||
30 | printk(KERN_INFO "PCI: Discovered peer bus %02x\n", n); | ||
31 | pci_scan_bus_on_node(n, &pci_root_ops, node); | ||
32 | break; | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | } | 22 | } |
37 | 23 | ||
38 | int __init pci_legacy_init(void) | 24 | int __init pci_legacy_init(void) |
@@ -50,6 +36,28 @@ int __init pci_legacy_init(void) | |||
50 | return 0; | 36 | return 0; |
51 | } | 37 | } |
52 | 38 | ||
39 | void pcibios_scan_specific_bus(int busn) | ||
40 | { | ||
41 | int devfn; | ||
42 | long node; | ||
43 | u32 l; | ||
44 | |||
45 | if (pci_find_bus(0, busn)) | ||
46 | return; | ||
47 | |||
48 | node = get_mp_bus_to_node(busn); | ||
49 | for (devfn = 0; devfn < 256; devfn += 8) { | ||
50 | if (!raw_pci_read(0, busn, devfn, PCI_VENDOR_ID, 2, &l) && | ||
51 | l != 0x0000 && l != 0xffff) { | ||
52 | DBG("Found device at %02x:%02x [%04x]\n", busn, devfn, l); | ||
53 | printk(KERN_INFO "PCI: Discovered peer bus %02x\n", busn); | ||
54 | pci_scan_bus_on_node(busn, &pci_root_ops, node); | ||
55 | return; | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | EXPORT_SYMBOL_GPL(pcibios_scan_specific_bus); | ||
60 | |||
53 | int __init pci_subsys_init(void) | 61 | int __init pci_subsys_init(void) |
54 | { | 62 | { |
55 | /* | 63 | /* |
diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c index 0a979f3e5b8a..1290ba54b350 100644 --- a/arch/x86/power/cpu.c +++ b/arch/x86/power/cpu.c | |||
@@ -105,6 +105,8 @@ static void __save_processor_state(struct saved_context *ctxt) | |||
105 | ctxt->cr4 = read_cr4(); | 105 | ctxt->cr4 = read_cr4(); |
106 | ctxt->cr8 = read_cr8(); | 106 | ctxt->cr8 = read_cr8(); |
107 | #endif | 107 | #endif |
108 | ctxt->misc_enable_saved = !rdmsrl_safe(MSR_IA32_MISC_ENABLE, | ||
109 | &ctxt->misc_enable); | ||
108 | } | 110 | } |
109 | 111 | ||
110 | /* Needed by apm.c */ | 112 | /* Needed by apm.c */ |
@@ -152,6 +154,8 @@ static void fix_processor_context(void) | |||
152 | */ | 154 | */ |
153 | static void __restore_processor_state(struct saved_context *ctxt) | 155 | static void __restore_processor_state(struct saved_context *ctxt) |
154 | { | 156 | { |
157 | if (ctxt->misc_enable_saved) | ||
158 | wrmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable); | ||
155 | /* | 159 | /* |
156 | * control registers | 160 | * control registers |
157 | */ | 161 | */ |
diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c index 987267f79bf5..a9c661108034 100644 --- a/arch/x86/xen/suspend.c +++ b/arch/x86/xen/suspend.c | |||
@@ -60,6 +60,6 @@ static void xen_vcpu_notify_restore(void *data) | |||
60 | 60 | ||
61 | void xen_arch_resume(void) | 61 | void xen_arch_resume(void) |
62 | { | 62 | { |
63 | smp_call_function(xen_vcpu_notify_restore, | 63 | on_each_cpu(xen_vcpu_notify_restore, |
64 | (void *)CLOCK_EVT_NOTIFY_RESUME, 1); | 64 | (void *)CLOCK_EVT_NOTIFY_RESUME, 1); |
65 | } | 65 | } |
diff --git a/arch/xtensa/include/asm/scatterlist.h b/arch/xtensa/include/asm/scatterlist.h index 810080bb0a2b..b1f9fdc1d5ba 100644 --- a/arch/xtensa/include/asm/scatterlist.h +++ b/arch/xtensa/include/asm/scatterlist.h | |||
@@ -11,28 +11,7 @@ | |||
11 | #ifndef _XTENSA_SCATTERLIST_H | 11 | #ifndef _XTENSA_SCATTERLIST_H |
12 | #define _XTENSA_SCATTERLIST_H | 12 | #define _XTENSA_SCATTERLIST_H |
13 | 13 | ||
14 | #include <asm/types.h> | 14 | #include <asm-generic/scatterlist.h> |
15 | |||
16 | struct scatterlist { | ||
17 | #ifdef CONFIG_DEBUG_SG | ||
18 | unsigned long sg_magic; | ||
19 | #endif | ||
20 | unsigned long page_link; | ||
21 | unsigned int offset; | ||
22 | dma_addr_t dma_address; | ||
23 | unsigned int length; | ||
24 | }; | ||
25 | |||
26 | /* | ||
27 | * These macros should be used after a pci_map_sg call has been done | ||
28 | * to get bus addresses of each of the SG entries and their lengths. | ||
29 | * You should only work with the number of sg entries pci_map_sg | ||
30 | * returns, or alternatively stop on the first sg_dma_len(sg) which | ||
31 | * is 0. | ||
32 | */ | ||
33 | #define sg_dma_address(sg) ((sg)->dma_address) | ||
34 | #define sg_dma_len(sg) ((sg)->length) | ||
35 | |||
36 | 15 | ||
37 | #define ISA_DMA_THRESHOLD (~0UL) | 16 | #define ISA_DMA_THRESHOLD (~0UL) |
38 | 17 | ||
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c index bc0733359a88..e367e3026436 100644 --- a/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c | |||
@@ -105,7 +105,6 @@ good_area: | |||
105 | * make sure we exit gracefully rather than endlessly redo | 105 | * make sure we exit gracefully rather than endlessly redo |
106 | * the fault. | 106 | * the fault. |
107 | */ | 107 | */ |
108 | survive: | ||
109 | fault = handle_mm_fault(mm, vma, address, is_write ? FAULT_FLAG_WRITE : 0); | 108 | fault = handle_mm_fault(mm, vma, address, is_write ? FAULT_FLAG_WRITE : 0); |
110 | if (unlikely(fault & VM_FAULT_ERROR)) { | 109 | if (unlikely(fault & VM_FAULT_ERROR)) { |
111 | if (fault & VM_FAULT_OOM) | 110 | if (fault & VM_FAULT_OOM) |
@@ -146,15 +145,10 @@ bad_area: | |||
146 | */ | 145 | */ |
147 | out_of_memory: | 146 | out_of_memory: |
148 | up_read(&mm->mmap_sem); | 147 | up_read(&mm->mmap_sem); |
149 | if (is_global_init(current)) { | 148 | if (!user_mode(regs)) |
150 | yield(); | 149 | bad_page_fault(regs, address, SIGKILL); |
151 | down_read(&mm->mmap_sem); | 150 | else |
152 | goto survive; | 151 | pagefault_out_of_memory(); |
153 | } | ||
154 | printk("VM: killing process %s\n", current->comm); | ||
155 | if (user_mode(regs)) | ||
156 | do_group_exit(SIGKILL); | ||
157 | bad_page_fault(regs, address, SIGKILL); | ||
158 | return; | 152 | return; |
159 | 153 | ||
160 | do_sigbus: | 154 | do_sigbus: |